Clazz { @Override public int hashCode() { return Objects.hashCode(name, package1, fields, constructors, methods, visibility, finalModifier, abstractModifier, interfaces, imports, annotations); } Clazz(@Nonnull final String name, @Nonnull final Package package1, @Nonnull final List<Field> fields,
			@Nonnull final List<Constructor> constructors, @Nonnull final List<Method> methods, @Nonnull final Visibility visibility,
			@Nonnull final Final final1, @Nonnull final Abstract abstract1, @Nonnull final List<Interface> interfaces,
			@Nonnull final List<Import> imports, @Nonnull final List<Annotation> annotations); @Override boolean equals(final Object obj); @Nonnull Abstract getAbstract(); @Nonnull List<Annotation> getAnnotations(); @Nonnull List<Constructor> getConstructors(); @Nonnull List<Field> getFields(); @Nonnull Final getFinal(); @Nonnull List<Import> getImports(); @Nonnull List<Interface> getInterfaces(); @Nonnull List<Method> getMethods(); @Nonnull String getName(); @Nonnull Package getPackage(); @Nonnull Visibility getVisibility(); @Override int hashCode(); @Override String toString();  }
@Test public void equals_identical() { final Clazz a = new Blueprint().build(); final Clazz b = new Blueprint().build(); assertEquals(a, b); assertTrue(a.hashCode() == b.hashCode()); }
@Test public void equals_same() { final Clazz a = new Blueprint().build(); assertEquals(a, a); assertSame(a, a); assertTrue(a.hashCode() == a.hashCode()); }