public List<Type> directSupertypes(TypeMirror t) {
        validateTypeNotIn(t, EXEC_OR_PKG);
        Type type = (Type) t;
        Type sup = types.supertype(type);
        return (sup == Type.noType || sup == type || sup == null)
              ? types.interfaces(type)
              : types.interfaces(type).prepend(sup);
    }