code: public static String getterIntoProperty(String getterName) {
          if (getterName == null) {
              return getterName;
          }
          int length = getterName.length();
          if (!getterName.startsWith(GETTER_PREFIX) || length <= GETTER_PREFIX.length()) {
              return getterName;
          }
  
          String propertyName = getterName.substring(GETTER_PREFIX.length(), length);
          char firstChar = propertyName.charAt(0);
          if (isLetter(firstChar)) {
              if (isLowerCase(firstChar)) {
                  //ok, apparently this is not a JavaBean getter, better leave it untouched
                  return getterName;
              }
              propertyName = toLowerCase(firstChar) + propertyName.substring(1, propertyName.length());
          }
          return propertyName;
      }
docs: Convert getter into a property name
  Example: 'getFoo' is converted into 'foo'
  
  It's written defensively, when output is not a getter then it
  returns the original name.
  
  It only converts names starting with a get- prefix. When a getter
  starts with an is- prefix (=boolean) then it does not convert it.
  
  @param getterName
  @return property matching the given getter