docs: public static String lispToCamel(final String pString, final boolean pFirstUpperCase) {
          if (pString == null) {
              throw new IllegalArgumentException("string == null");
          }
          if (pString.length() == 0) {
              return pString;
          }
  
          StringBuilder buf = null;
          int lastPos = 0;
  
          for (int i = 0; i < pString.length(); i++) {
              char current = pString.charAt(i);
              if (current == '-') {
  
                  // Init buffer if necessary
                  if (buf == null) {
                      buf = new StringBuilder(pString.length() - 1);// Can't be larger
                  }
  
                  // Append with upper case
                  if (lastPos != 0 || pFirstUpperCase) {
                      buf.append(Character.toUpperCase(pString.charAt(lastPos)));
                      lastPos++;
                  }
  
                  buf.append(pString.substring(lastPos, i).toLowerCase());
                  lastPos = i + 1;
              }
          }
  
          if (buf != null) {
              buf.append(Character.toUpperCase(pString.charAt(lastPos)));
              buf.append(pString.substring(lastPos + 1).toLowerCase());
              return buf.toString();
          }
          else {
              if (pFirstUpperCase && !Character.isUpperCase(pString.charAt(0))) {
                  return capitalize(pString, 0);
              }
              else
              if (!pFirstUpperCase && Character.isUpperCase(pString.charAt(0))) {
                  return Character.toLowerCase(pString.charAt(0)) + pString.substring(1);
              }
  
              return pString;
          }
      }