@Override public void setRoles( ListSnapshot<RoleRecord> rolesSnapshot ) throws InvalidArgumentsException { for ( RoleRecord role : rolesSnapshot.values() ) { assertValidRoleName( role.name() ); } synchronized ( this ) { roles.clear(); this.roles.addAll( rolesSnapshot.values() ); this.lastLoaded.set( rolesSnapshot.timestamp() ); trimToList( rolesByName, roles, RoleRecord::name ); trimToFlattenedList( rolesByUsername, roles, r -> r.users().stream() ); for ( RoleRecord role : roles ) { rolesByName.put( role.name(), role ); populateUserMap( role ); } } }