Parse Annotations using Eclipse JDT

もっと単純な実装望む…

private static Annotation annotation(String str) {
    Map<String, String> options = new HashMap<String, String>();
    options.put(JavaCore.COMPILER_SOURCE, "1.5");
    ASTParser parser = ASTParser.newParser(AST.JLS3);
    parser.setCompilerOptions(options);
    parser.setKind(ASTParser.K_STATEMENTS);
    parser.setSource((str + " int $;").toCharArray());
    Block block = (Block) parser.createAST(null);
    List<?> stmts = block.statements();
    if (stmts.size() != 1) {
        throw new IllegalArgumentException(str);
    }
    VariableDeclarationStatement stmt = (VariableDeclarationStatement) stmts.get(0);
    List<?> modifiers = stmt.modifiers();
    if (modifiers.size() != 1) {
        throw new IllegalArgumentException(str);
    }
    return (Annotation) modifiers.get(0);
}