code: public static String decapitalize(final String property) {
          if (property == null || property.isEmpty()) return property;
          if (property.length() > 2 && isUpperCase(property.charAt(1)) && isUpperCase(property.charAt(0))) return property;
          final char c[] = property.toCharArray();
          c[0] = Character.toLowerCase(c[0]);
          return new String(c);
      }
docs: Returns a new String which is the same as the original except the first letter
  will be lowercase except for some special cases as per JavaBean handling.
  In particular, if the first two letters are both uppercase, e.g. URL,
  then no change of case occurs.
  
  Originally inspired by the method with the same name in java.lang.Introspector.
  See also:
  https://stackoverflow.com/questions/4052840/most-efficient-way-to-make-the-first-character-of-a-string-lower-case/4052914
  
  @param property a string representing the name of a JavaBean-like property
  @return the decapitalized string