class ThrowsParser extends AbstractParser<ThrowsAST> {
	private static final int THROWS_LEN = "THROWS ".length();

	@Override
	public ThrowsAST visit(int lineNo, String line) throws ASTParseException {<FILL_FUNCTION_BODY>}

	@Override
	public List<String> suggest(ParseResult<RootAST> lastParse, String text) {
		if (text.length() <= THROWS_LEN)
			return Collections.emptyList();
		return new TypeParser().suggest(lastParse, text.substring(THROWS_LEN));
	}
}

		try {
			String trim = line.trim();
			int start = line.indexOf(trim);
			// Sub-parser, set offset so it starts after THROWS's ' ', so error reporting yields
			// the correct character offset.
			TypeParser typeParser = new TypeParser();
			typeParser.setOffset(start + THROWS_LEN);
			TypeAST type = typeParser.visit(lineNo, trim.substring(THROWS_LEN));
			return new ThrowsAST(lineNo, start, type);
		} catch(Exception ex) {
			throw new ASTParseException(ex, lineNo, "Bad format for THROWS");
		}
	
<methods>public void <init>() ,public void <init>(AbstractParser#RAW) ,public int getOffset() ,public void setOffset(int) ,public List<java.lang.String> suggest(ParseResult<me.coley.recaf.parse.bytecode.ast.RootAST>, java.lang.String) ,public abstract me.coley.recaf.parse.bytecode.ast.ThrowsAST visit(int, java.lang.String) throws me.coley.recaf.parse.bytecode.exception.ASTParseException<variables>private int offset,protected final non-sealed AbstractParser#RAW parent