private String[] parseArgumentNames() throws IOException, LexerException, ParserException {
		Token token = this.nextToken();
		
		if (!(token != null && token.getType()==TokenType.SEPARATOR && token.getValue().equals(":"))) {
			this.pushToken(token);
			return null;
		}
		
		List<String> names = new ArrayList<String>();
		
		names.add(this.parseId());
		
		for (token = this.nextToken(); token != null && token.getType()==TokenType.SEPARATOR && token.getValue().equals(":"); token = this.nextToken())
			names.add(this.parseId());
		
		if (token == null || token.getType() != TokenType.SEPARATOR || !token.getValue().equals("|"))
			throw new ParserException("Expected '|'");
		
		String[] argnames = new String[names.size()];
		return names.toArray(argnames);
	}