@Override
    public Integer visitTypeVariable(TypeVariable t, Set<Element> visiting) {
      int result = hashKind(HASH_SEED, t);
      result *= HASH_MULTIPLIER;
      result += t.getLowerBound().accept(this, visiting);
      TypeParameterElement element = (TypeParameterElement) t.asElement();
      for (TypeMirror bound : element.getBounds()) {
        result *= HASH_MULTIPLIER;
        result += bound.accept(this, visiting);
      }
      return result;
    }
Returns the type of the innermost enclosing instance, or null if there is none. This is the
same as {@link DeclaredType#getEnclosingType()} except that it returns null rather than NoType
for a static type. We need this because of <a
href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=508222">this bug</a> whereby the Eclipse
compiler returns a value for static classes that is not NoType.
common/src/main/java/com/google/auto/common/MoreTypes.java