private TypeMirror cloneReturnTypeMirror() {
    TypeElement object = typeElementOf(Object.class);
    ExecutableElement clone = null;
    for (Element element : object.getEnclosedElements()) {
      if (element.getSimpleName().contentEquals("clone")) {
        clone = (ExecutableElement) element;
        break;
      }
    }
    return clone.getReturnType();
  }
This test shows why we need to have TypeMirrorSet. The mirror of java.lang.Object obtained from
{@link Elements#getTypeElement Elements.getTypeElement("java.lang.Object")} does not compare
equal to the mirror of the return type of Object.clone(), even though that is also
java.lang.Object and {@link Types#isSameType} considers them the same.

<p>There's no requirement that this test must pass and if it starts failing or doesn't work in
another test environment then we can delete it. The specification of {@link TypeMirror#equals}
explicitly says that it cannot be used for type equality, so even if this particular case stops
being a problem (which means this test would fail), we would need TypeMirrorSet for complete
correctness.
value/src/test/java/com/google/auto/value/processor/TypeSimplifierTest.java