public DeclaredType getDeclaredType(Type.ClassType t) {
        return
            hasFlag(t.tsym, Flags.ANNOTATION) ? new AnnotationTypeImpl(env, t) :
            hasFlag(t.tsym, Flags.INTERFACE)  ? new InterfaceTypeImpl(env, t) :
            hasFlag(t.tsym, Flags.ENUM)       ? new EnumTypeImpl(env, t) :
                                                new ClassTypeImpl(env, t);
    }