@Override
                public Integer visitDeclared(DeclaredType t, Set<Element> visiting) {
                    Element element = t.asElement();
                    if (visiting.contains(element)) {
                        return 0;
                    }
                    Set<Element> newVisiting = new HashSet<Element>(visiting);
                    newVisiting.add(element);
                    int result = hashKind(HASH_SEED, t);
                    result *= HASH_MULTIPLIER;
                    result += t.asElement().hashCode();
                    result *= HASH_MULTIPLIER;
                    result += t.getEnclosingType().accept(this, newVisiting);
                    result *= HASH_MULTIPLIER;
                    result += hashList(t.getTypeArguments(), newVisiting);
                    return result;
                }
Utilities related to {@link TypeMirror} instances.

@author Gregory Kick
@since 2.0
android/annotation_processors/permission-requester-compiler/src/main/java/github/tornaco/permission/compiler/common/MoreTypes.java