code: static String convertValidPropertyMethodSuffix(String suffix) {
          if (suffix.length() == 0) return null;
  
          // We assume all characters are Character.isJavaIdentifierPart, but the first one may not be a valid
          // starting character.
          if (!Character.isJavaIdentifierStart(suffix.charAt(0))) return null;
  
          if (suffix.length() == 1) {
              return Character.isUpperCase(suffix.charAt(0)) ? suffix.toLowerCase() : null;
          }
          if (Character.isUpperCase(suffix.charAt(1))) {
              // "aProperty", "AProperty"
              return suffix;
          }
          if (Character.isUpperCase(suffix.charAt(0))) {
              return Character.toLowerCase(suffix.charAt(0)) + suffix.substring(1);
          }
          if('_' == suffix.charAt(0)) {
              return suffix;
          }
          return null;
      }
docs: This method functions the same as {@link #isPropertyMethodSuffix(String)},
  but in addition returns the property name, or null if not a valid property.
  
  @param suffix The suffix to inspect
  @return The property name or null