@Override
 public void removeAllRoleActorsByKeyAndType(final String key, final String type) {
   delegate.removeAllRoleActorsByKeyAndType(key, type);
   // Nuke the whole cache since we don't know which projects/roles this will effect
   defaultRoleActors.removeAll();
   projectRoleActors.removeAll();
 }
 public ProjectRole addProjectRole(final ProjectRole projectRole) {
   try {
     return delegate.addProjectRole(projectRole);
   } finally {
     projectRoles.reset();
   }
 }
 public void updateProjectRole(final ProjectRole projectRole) {
   try {
     delegate.updateProjectRole(projectRole);
   } finally {
     projectRoles.reset();
   }
 }
 public List<Long> roleActorOfTypeExistsForProjects(
     final List<Long> projectsToLimitBy,
     final ProjectRole projectRole,
     final String projectRoleType,
     final String projectRoleParameter) {
   return delegate.roleActorOfTypeExistsForProjects(
       projectsToLimitBy, projectRole, projectRoleType, projectRoleParameter);
 }
 @Override
 public Map<Long, List<String>> getProjectIdsForUserInGroupsBecauseOfRole(
     final List<Long> projectsToLimitBy,
     final ProjectRole projectRole,
     final String projectRoleType,
     final String userKey) {
   return delegate.getProjectIdsForUserInGroupsBecauseOfRole(
       projectsToLimitBy, projectRole, projectRoleType, userKey);
 }
 public void updateProjectRoleActors(final ProjectRoleActors projectRoleActors) {
   if (projectRoleActors.getProjectId() == null) {
     // Really the default role actors...
     updateDefaultRoleActors(projectRoleActors);
     return;
   }
   delegate.updateProjectRoleActors(projectRoleActors);
   this.projectRoleActors.remove(toKey(projectRoleActors));
 }
 public void deleteProjectRole(final ProjectRole projectRole) {
   final long projectRoleId =
       notNull("projectRole.getId()", notNull("projectRole", projectRole).getId());
   try {
     delegate.deleteProjectRole(projectRole);
   } finally {
     projectRoles.reset();
     defaultRoleActors.remove(projectRoleId);
     projectRoleActors.removeAll();
   }
 }
 @Override
 public Collection<Long> getProjectIdsContainingRoleActorByKeyAndType(
     final String key, final String type) {
   return delegate.getProjectIdsContainingRoleActorByKeyAndType(key, type);
 }
 public void removeAllRoleActorsByProject(final Project project) {
   delegate.removeAllRoleActorsByProject(project);
   projectRoleActors.removeAll();
 }
 public void applyDefaultsRolesToProject(final Project project) {
   delegate.applyDefaultsRolesToProject(project);
 }
 public void updateDefaultRoleActors(final DefaultRoleActors defaultRoleActors) {
   delegate.updateDefaultRoleActors(defaultRoleActors);
   this.defaultRoleActors.remove(defaultRoleActors.getProjectRoleId());
 }