private void parseArgs(ParseToken token, String[] args)
            throws CouldNotParseException {
        if (args.length > 2) {
            throw new CouldNotParseException();
        } else if (args.length == 1) {
            String arg = args[0].trim();
            if (Character.isLowerCase(arg.charAt(0))
                    && !this.parentIds.contains(arg)) {
                token.setId(arg);
                this.parentIds.add(arg);
            }

            else {
                throw new CouldNotParseException();
            }
        }

        else if (args.length == 2) {
            String arg1 = args[0].trim();
            String arg2 = args[1].trim();
            // Must have a parent in this case, the first argument is the ID of
            // the parent
            if (Character.isLowerCase(arg1.charAt(0))
                    && this.parentIds.contains(arg1.trim())) {
                token.setParent(arg1);

                // If it is a parent itself, the second argument will be a lower
                // case
                if (Character.isLowerCase(arg2.charAt(0))) {

                    // Can't have duplicates with the same ID
                    if (this.parentIds.contains(arg2)) {
                        throw new CouldNotParseException();
                    }

                    else {
                        token.setId(arg2);
                        this.parentIds.add(arg2);
                    }
                }

                else {
                    token.setValue(arg2.replace("\"", "").replace("'", "")
                            .trim());
                }
            }

            else {
                throw new CouldNotParseException();
            }
        }

        else {
            throw new CouldNotParseException();
        }
    }