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);
  }
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}.
value/src/main/java/com/google/auto/value/processor/AutoValueishProcessor.java