### Question:
PermissionManagementBlock { public PermissionManagementBlock addPermission(@Nonnull JtalksPermission permission) { return new PermissionManagementBlock(permission, allowRow, restrictRow); } PermissionManagementBlock(@Nonnull JtalksPermission permission);  PermissionManagementBlock(JtalksPermission permission, PermissionRow allowRow, PermissionRow restrictRow); <T extends JtalksPermission> PermissionManagementBlock(T permission,
                 @Nonnull GroupsPermissions<T> groupsPermissions, String allowedRowLabel, String restrictedRowLabel); JtalksPermission getPermission(); PermissionManagementBlock addPermission(@Nonnull JtalksPermission permission); PermissionRow getAllowRow(); PermissionManagementBlock addAllowRow(@Nonnull PermissionRow allowRow); PermissionRow getRestrictRow(); PermissionManagementBlock addRestrictRow(@Nonnull PermissionRow restrictRow);  }### Answer:
@Test public void testAddPermission() { PermissionManagementBlock block = new PermissionManagementBlock(permission); PermissionManagementBlock newBlock = block.addPermission(newPermission); assertNotSame(block, newBlock); assertSame(block.getAllowRow(), newBlock.getAllowRow()); assertSame(block.getRestrictRow(), newBlock.getRestrictRow()); }