public NodeList readCEWWTitleEntries(String input, String type) throws IOException, CWRCException {
        List<Title> output = new ArrayList<Title>();

        if (!StringUtils.isBlank(input)) {
            Reader reader = new StringReader(input);
            int val = 0;
            StringBuilder builder = new StringBuilder();
            Title lastTitle = null;
            Title title = new Title();

            // Read the input.
            String bracketData;
            while ((val = reader.read()) > -1) {
                switch (val) {
                    case '[':
                        bracketData = readCEWWSquareBracket(title, reader);
                        if (bracketData != null) {
                            builder.append('[');
                            builder.append(bracketData);
                            builder.append(']');
                        }
                        break;

                    case '(':
                        bracketData = readCEWWBracket(title, reader, type);
                        if (bracketData != null) {
                            builder.append('(');
                            builder.append(bracketData);
                            builder.append(')');
                        }
                        break;

                    case ';':
                        title.title = WordUtils.capitalizeFully(builder.toString().trim());
                        if (title.title.toLowerCase().startsWith("also titled")) {
                            addAlternateTitle(lastTitle, title, 11);
                        } else {
                            output.add(title);
                            lastTitle = title;
                        }

                        title = new Title();
                        builder.setLength(0);
                        break;

                    default:
                        builder.append((char) val);
                }
            }

            title.title = WordUtils.capitalizeFully(builder.toString().trim());
            if (title.title.toLowerCase().startsWith("also titled")) {
                addAlternateTitle(lastTitle, title, 11);
            } else {
                output.add(title);
            }
        }

        return new TitleNodes(output);
    }