### Question:
Acl { @Override public int hashCode() { return Objects.hash( inheritFrom, inheritType, inheritFromFragment, readers, deniedReaders, owners); } private  Acl(Builder builder); Set<Principal> getReaders(); Set<Principal> getDeniedReaders(); Set<Principal> getOwners(); String getInheritFrom(); String getInheritFromFragment(); InheritanceType getInheritanceType(); Item createFragmentItemOf(String id, String fragment); Item applyTo(Item item); static String fragmentId(String id, String fragment); static String getPrincipalName(String name, String namespace); static Principal getGoogleUserPrincipal(String userId); static Principal getGoogleGroupPrincipal(String groupId); static Principal getCustomerPrincipal(); static Principal getUserPrincipal(String userId); static Principal getUserPrincipal(String userId, String identitySourceId); static Principal getGroupPrincipal(String groupId); static Principal getGroupPrincipal(String groupId, String identitySourceId); static boolean addResourcePrefixUser(Principal user, String identitySourceId); static boolean addResourcePrefixGroup(Principal group, String identitySourceId); static PrincipalType getPrincipalType(Principal p); static Acl createAcl(String permittedUsers, String permittedGroups, String deniedUsers,
      String deniedGroups); @Override int hashCode(); @Override boolean equals(Object obj); @Override String toString(); static final String IDENTITY_SOURCES_PREFIX; static final String IDENTITY_RESOURCE_NAME_FORMAT; static final String USER_RESOURCE_NAME_FORMAT; static final String GROUP_NAME_FORMAT; static final UserPrincipalParser USER_PARSER; static final GroupPrincipalParser GROUP_PARSER; static final String GOOGLE_ACCOUNT_PREFIX; }### Answer:
@Test public void testCopyConstructor_equals() { Acl acl1 = new Acl.Builder() .setReaders(user("AllowedUser1", "AllowedUser2")) .setDeniedReaders(group("DeniedGroup")) .setOwners(user("AllowedUser1")) .build(); Acl acl2 = new Acl.Builder(acl1).build(); assertEquals(acl1, acl2); assertEquals(acl1.hashCode(), acl2.hashCode()); }
@Test public void testCopyConstructor_modified() { Acl acl1 = new Acl.Builder() .setReaders(user("AllowedUser1", "AllowedUser2")) .setDeniedReaders(group("DeniedGroup")) .setOwners(user("AllowedUser1")) .build(); Acl acl2 = new Acl.Builder(acl1).setOwners(user("AllowedUser2")).build(); assertThat(acl1, not(equalTo(acl2))); assertThat(acl1.hashCode(), not(equalTo(acl2.hashCode()))); }