private ImmutableList<TypeElement> superinterfaces(TypeElement type) {
      ImmutableList.Builder<TypeElement> types = ImmutableList.builder();
      for (TypeMirror sup : type.getInterfaces()) {
        /*
         * All interfaces implemented/extended are DECLARED types, for which asElement returns
         * non-null.
         */
        types.add(MoreElements.asType(requireNonNull(typeUtils.asElement(sup))));
      }
      return types.build();
    }
Returns the method from within the given type that has the same erased signature as the given
method, or null if there is no such method.
common/src/main/java/com/google/auto/common/Overrides.java