code: static String decapitalizeLikeJavaBeans(String propertyName) {
      if (propertyName != null
          && propertyName.length() >= 2
          && Character.isUpperCase(propertyName.charAt(0))
          && Character.isUpperCase(propertyName.charAt(1))) {
        return propertyName;
      }
      return decapitalizeNormally(propertyName);
    }
docs: Returns the {@code propertyName} with its first character in lower case, but leaves it intact
  if it starts with two capitals.
  
  <p>For consistency with JavaBeans, a getter called {@code getHTMLPage()} defines a property
  called {@code HTMLPage}. The <a
  href="https://docs.oracle.com/javase/8/docs/api/java/beans/Introspector.html#decapitalize-java.lang.String-">
  rule</a> is: the name of the property is the part after {@code get} or {@code
  is}, with the first letter lowercased <i>unless</i> the first two letters are uppercase. This
  works well for the {@code HTMLPage} example, but in these more enlightened times we use {@code
  HtmlPage} anyway, so the special behaviour is not useful, and of course it behaves poorly with
  examples like {@code OAuth}. Nevertheless, we preserve it for compatibility.