*  @return the normalized string
     *  @throws IllegalArgumentException if the title is invalid
     *  @since 0.27
     */
    public String normalize(String s)
    {
        if (s.isEmpty())
            return s;
        char[] temp = s.toCharArray();
        temp[0] = Character.toUpperCase(temp[0]);
        for (int i = 0; i < temp.length; i++)
        {
            switch (temp[i])
            {
                // illegal characters
                case '{':
                case '}':
                case '[':
                case ']':
                case '|':
                    throw new IllegalArgumentException(s + " is an illegal title");
                case ' ':
                    temp[i] = '_';
                    break;
            }
        }
        return new String(temp);
    }