if ((lastIsLower || curChar == separator) && currentWord.length() > 0)
if (lastIsLower && currentWord.length() > 1 || curChar == separator && currentWord.length() > 0)
  protected List parseName(String sourceName, char separator)  {    List result = new ArrayList();    if (sourceName != null)    {      StringBuffer currentWord = new StringBuffer();      boolean lastIsLower = false;      for (int index = 0, length = sourceName.length(); index < length; ++index)      {        char curChar = sourceName.charAt(index);        if (!Character.isJavaIdentifierPart(curChar))        {          curChar = separator;        }        if (Character.isUpperCase(curChar) || (!lastIsLower && Character.isDigit(curChar)) || curChar == separator)        {          if ((lastIsLower || curChar == separator) && currentWord.length() > 0)          {            result.add(currentWord.toString());            currentWord = new StringBuffer();          }          lastIsLower = false;        }        else        {          if (!lastIsLower)          {            int currentWordLength = currentWord.length();            if (currentWordLength > 1)            {              char lastChar = currentWord.charAt(--currentWordLength);              currentWord.setLength(currentWordLength);              result.add(currentWord.toString());              currentWord = new StringBuffer();              currentWord.append(lastChar);            }          }          lastIsLower = true;        }        if (curChar != separator)        {          currentWord.append(curChar);        }      }      result.add(currentWord.toString());    }    return result;  }