code: protected String tryGetAsPropertyName(String name) {
  		if (name.length() == 1) { // e.g. Point.getX()
  			if (Character.isUpperCase(name.charAt(0))) {
  				// X is not a valid sugar for getX()
  				return null;
  			}
  			// x is a valid sugar for getX
  			return name.toUpperCase(Locale.ENGLISH);
  		} else if (name.length() > 1) {
  			if (Character.isUpperCase(name.charAt(1))) { // e.g. Resource.getURI
  				// if second char is uppercase, the name itself is the sugar variant
  				// URI is the property name for getURI
  				if (Character.isUpperCase(name.charAt(0))) {
  					return name;
  				}
  				// if the first character is not upper case, it's not a valid sugar variant
  				// e.g. uRI is no sugar access for getURI
  				return null;
  			} else if (Character.isUpperCase(name.charAt(0))) {
  				// the first character is upper case, it is not valid property sugar, e.g.
  				// Class.CanonicalName does not map to Class.getCanonicalName
  				return null;
  			} else {
  				// code from java.beans.NameGenerator.capitalize()
  				return name.substring(0, 1).toUpperCase(Locale.ENGLISH) + name.substring(1);
  			}
  		}
  		// length 0 is invalid
  		return null;
  	}
docs: /* @Nullable