code: private void primAddMember(IGroupMember gm) throws GroupsException {
          final EntityIdentifier cacheKey = getUnderlyingEntityIdentifier();
          Element element = childrenCache.get(cacheKey);
  
          @SuppressWarnings("unchecked")
          final Set<IGroupMember> set =
                  element != null ? (Set<IGroupMember>) element.getObjectValue() : buildChildrenSet();
  
          final Set<IGroupMember> children = new HashSet<>(set);
          children.add(gm);
          childrenCache.put(new Element(cacheKey, children));
      }
docs: Adds the <code>IGroupMember</code> key to the appropriate member key cache by copying the
  cache, adding to the copy, and then replacing the original with the copy. At this point,
  <code>gm</code> does not yet have <code>this</code> in its containing group cache. That cache
  entry is not added until update(), when changes are committed to the store.
  
  @param gm org.apereo.portal.groups.IGroupMember