private String javaBeanAttributeName(String raw) {
      for (Naming naming: styles.scheme().get) {
        String detected = naming.requireJavaBeanConvention().detect(raw);
        if (!detected.isEmpty()) {
          return detected;
        }
      }

      throw new IllegalArgumentException(String.format("%s it not a getter in %s", raw, type.name()));
    }
Get attribute name from java bean getter. Some examples:
<pre>
  getA -> a
  getAB -> AB (fist 2 chars are uppercase)
  getABC -> ABC (fist 2 chars are uppercase)
  getAb -> ab
  getAbc -> abc
  getFoo -> foo
</pre>

<p>See 8.8 Capitalization of inferred names in
<a href="https://download.oracle.com/otndocs/jcp/7224-javabeans-1.01-fr-spec-oth-JSpec/">javabean spec</a>
value-processor/src/org/immutables/value/processor/meta/JavaBeanAttributesCollector.java