@Override
    public int hashCode() {
      return Objects.hash(simpleName, sameNameIndex, enclosingTypeElementFactory);
    }
The index of the element among all elements of the same kind within the enclosing type. If
this is method {@code foo(...)} and the index is 0, that means that the method is the first
method called {@code foo} in the enclosing type.
common/src/main/java/com/google/auto/common/BasicAnnotationProcessor.java