code: private static String nameWithoutPrefix(String name) {
      if (name.startsWith("get")) {
        name = name.substring(3);
      } else {
        assert name.startsWith("is");
        name = name.substring(2);
      }
      return PropertyNames.decapitalizeLikeJavaBeans(name);
    }
docs: Returns the name of the property defined by the given getter. A getter called {@code getFoo()}
  or {@code isFoo()} defines a property called {@code foo}. 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}.