@Test
  public void testQuirkyTypeMirrors() {
    TypeMirror objectMirror = objectMirror();
    TypeMirror cloneReturnTypeMirror = cloneReturnTypeMirror();
    assertThat(objectMirror).isNotEqualTo(cloneReturnTypeMirror);
    assertThat(typeUtils.isSameType(objectMirror, cloneReturnTypeMirror)).isTrue();
  }
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