private void propertyChangePostProcess(final Group group, final String key, final String originalValue)
    {
        switch (key) {
            case Group.SHARED_ROSTER_SHOW_IN_ROSTER_PROPERTY_KEY: {
                clearGroupNameCache();

                // Check to see if the definition of people to which the shared group is shared has changed
                final String newValue = group.getProperties().get(Group.SHARED_ROSTER_SHOW_IN_ROSTER_PROPERTY_KEY);
                if (!StringUtils.equals(originalValue, newValue)) {
                    if ("everybody".equals(originalValue) || "everybody".equals(newValue)) {
                        evictCachedUserSharedGroups();
                    }
                }
                break;
            }

            case Group.SHARED_ROSTER_GROUP_LIST_PROPERTY_KEY: {
                // Check to see if the list of groups to which the shared group is shared has changed
                final String newValue = group.getProperties().get(Group.SHARED_ROSTER_GROUP_LIST_PROPERTY_KEY);

                if (!StringUtils.equals(originalValue, newValue)) {
                    evictCachedUsersForGroup(group);

                    // Also clear the cache for groups that have been removed from the shared list.
                    if (originalValue != null) {
                        final Set<String> newGroupNames = newValue == null ? new HashSet<>() : splitGroupList(newValue);
                        final Set<String> oldGroupNames = splitGroupList(originalValue);

                        // The 'new' group names are already handled by the evictCachedUserForGroup call above. No need to do that twice.
                        oldGroupNames.removeAll(newGroupNames);
                        oldGroupNames.forEach(this::evictCachedUsersForGroup);
                    }
                }
                break;
            }
        }
    }
Updates the caches maintained by this manager and dispatches events that reflect a group having all of its
properties removed.

This method is intended to be invoked to update the internal state of GroupManager after a group has been
updated. It should rarely be invoked by code that is not part of the GroupManager implementation.

@param group The group that was modified.
@param originalProperties The properties of the group prior to the removal.
xmppserver/src/main/java/org/jivesoftware/openfire/group/GroupManager.java