ForcedRoot implements JsonObjectConvertible, Comparable<ForcedRoot> { @Override public int hashCode() { return Objects.hash(path, primaryType, mixinTypes); }  @NotNull static ForcedRoot.JsonKeys keys(); @Nullable String getPath(); void setPath(final @Nullable String path); @Nullable String getPrimaryType(); void setPrimaryType(final @Nullable String primaryType); @NotNull List<String> getMixinTypes(); void setMixinTypes(final @Nullable List<String> mixinTypes); @SuppressWarnings("WeakerAccess") ForcedRoot withPath(final @Nullable String path); @SuppressWarnings("WeakerAccess") ForcedRoot withPrimaryType(final @Nullable String primaryType); @SuppressWarnings("WeakerAccess") ForcedRoot withMixinTypes(final @NotNull String... mixinTypes); final boolean hasPath(); static @NotNull ForcedRoot fromJson(final @NotNull JsonObject json); @NotNull String[] getNamespacePrefixes(); @Override JsonObject toJson(); @Override int compareTo(final @NotNull ForcedRoot o); @Override boolean equals(Object o); @Override int hashCode(); @Override String toString();  }
@Test public void testHashCode() { final ForcedRoot initial = new ForcedRoot().withPath("/some/path") .withPrimaryType("nt:folder").withMixinTypes("mix:title"); assertEquals("same equals for same objects", initial, initial); assertEquals("same hash for same objects", initial.hashCode(), initial.hashCode()); final ForcedRoot equalToInitial = new ForcedRoot().withPath("/some/path") .withPrimaryType("nt:folder").withMixinTypes("mix:title"); assertEquals("same equals for equal objects", initial, equalToInitial); assertEquals("same hash for equals objects", initial.hashCode(), equalToInitial.hashCode()); final ForcedRoot notEqual = new ForcedRoot().withPath("/other/path") .withPrimaryType("nt:folder").withMixinTypes("mix:title"); assertNotEquals("different equals for nonequal objects", initial, notEqual); assertNotEquals("different hash for nonequal objects", initial.hashCode(), notEqual.hashCode()); }