code: public AttributeValueType getValueType() {
        if (valueType == AttributeValueType.DEFAULT) {
           synchronized (this) {
              if (valueType == AttributeValueType.DEFAULT) {
                 if (Config.hasProperty(typeName, name())) {
                    valueType = AttributeValueType.valueOf(Config.get(typeName, name()).asString());
                 } else {
                    return AttributeValueType.STRING;
                 }
              }
           }
        }
        return valueType;
     }
docs: Gets class information for the type of values this attribute is expected to have. Types are defined via
  configuration as follows: <code>Attribute.NAME.type = class</code>. If not defined String.class will be returned.
  
  @return The class associated with this attributes values