ExecutableDeclaration getExecutableDeclaration(MethodSymbol m) {
        ExecutableDeclaration res = executableDecls.get(m);
        if (res == null) {
            if (m.isConstructor()) {
                res = new ConstructorDeclarationImpl(env, m);
            } else if (isAnnotationTypeElement(m)) {
                res = new AnnotationTypeElementDeclarationImpl(env, m);
            } else {
                res = new MethodDeclarationImpl(env, m);
            }
            executableDecls.put(m, res);
        }
        return res;
    }