docs: public static String fixCapitalization(String string)
      {
          if (string != null)
          {
              for (int i = 0; i < string.length(); i++)
              {
                  if (Character.isLowerCase(string.charAt(i)))
                      return string;  // Already lower case
              }
              StringBuffer sb = new StringBuffer();
              boolean bPreviousSpace = true;
              for (int i = 0; i < string.length(); i++)
              {
                  Character character = string.charAt(i);
                  if (!bPreviousSpace)
                  {
                      character = Character.toLowerCase(character);
                  }
                  bPreviousSpace = false;
                  if (Character.isSpaceChar(character))
                      bPreviousSpace = true;
                  if (!Character.isLetterOrDigit(character))
                      bPreviousSpace = true;
                  if (character == 'c')
                      if (i > 0)
                          if (string.charAt(i - 1) == 'M')
                              bPreviousSpace = true;  // McName
                  if (!bPreviousSpace)
                      bPreviousSpace = BaseFixData.checkAbreviations(string, i);
                  sb.append(character);
              }
              string = sb.toString();
          }        
          return string;
      }