public RamlType newProperty(String name, String type, boolean required, String... values) {
    """
	Defines a new property.
	
	@param name Property name.
	@param type Property type.
	@param required True for required.
	@param values Enum values.
	@return This type.
    """
    if (properties == null) {
      properties = new LinkedHashMap<>();
    }
    if (values.length > 0) {
      properties.put(required ? name : name + "?", ImmutableMap.of("enum", values));
    } else {
      properties.put(required ? name : name + "?", type);
    }
    return this;
  }
public RamlType newProperty(String name, String type, boolean required, String... values) {
    if (properties == null) {
      properties = new LinkedHashMap<>();
    }
    if (values.length > 0) {
      properties.put(required ? name : name + "?", ImmutableMap.of("enum", values));
    } else {
      properties.put(required ? name : name + "?", type);
    }
    return this;
  }
public RamlType newProperty ( String name , String type , boolean required , String ... values ) { if ( properties == null ) { properties = new LinkedHashMap <> ( ) ; } if ( values . length > 0 ) { properties . put ( required ? name : name + "?" , ImmutableMap . of ( "enum" , values ) ) ; } else { properties . put ( required ? name : name + "?" , type ) ; } return this ; }
Defines a new property.

@param name Property name.
@param type Property type.
@param required True for required.
@param values Enum values.
@return This type.
Defines a new property .