private Arglist parseNotEmptyArglist() throws IOException {
        Arglist a = new Arglist();

        Arglist.Argument arg = new Arglist.Argument();
        arg.setType(parseType());

        if (curToken.type == Lexer.Type.NAME) {
            arg.setName(curToken.c);
            curToken = lexer.getToken();
        } else {
            throw new IOException("argument name expected");
        }
        a.getArgumentList().add(arg);

        while (curToken.type == Lexer.Type.COMMA) {
            curToken = lexer.getToken();

            arg = new Arglist.Argument();
            arg.setType(parseType());

            if (curToken.type == Lexer.Type.NAME) {
                arg.setName(curToken.c);
                curToken = lexer.getToken();
            } else {
                throw new IOException("argument name expected");
            }
            a.getArgumentList().add(arg);
        }

        return a;

    }