ImmutablePrivilegeDefinition implements PrivilegeDefinition { @Override public int hashCode() { return Objects.hashCode(name, isAbstract(), declaredAggregateNames); } ImmutablePrivilegeDefinition(@NotNull String name, boolean isAbstract, @Nullable Iterable<String> declaredAggregateNames); @NotNull @Override String getName(); @Override boolean isAbstract(); @NotNull @Override Set<String> getDeclaredAggregateNames(); @Override int hashCode(); @Override boolean equals(Object o); @Override String toString();  }
@Test public void testHashCode() { assertEquals(def.hashCode(), def.hashCode()); assertEquals(def.hashCode(), new ImmutablePrivilegeDefinition(def.getName(), def.isAbstract(), def.getDeclaredAggregateNames()).hashCode()); }