code: public <T extends OccupantInfo> boolean updateOccupantInfo (
          int bodyOid, OccupantInfo.Updater<T> updater)
      {
          @SuppressWarnings("unchecked") T info = (T)_occInfo.get(bodyOid);
          if (info == null || !updater.update(info)) {
              return false;
          }
          // update the canonical copy
          _occInfo.put(info.getBodyOid(), info);
          // clone the canonical copy and send an event updating the distributed set with that clone
          _plobj.updateOccupantInfo(info.clone());
          return true;
      }
docs: Calls the supplied updater on the canonical occupant info record for the specified body
  (which must be an occupant of this place) and broadcasts the update to all other occupants.
  
  @return true if the updater was called and the update sent, false if the body could not be
  located (was not an occupant of this place) or the updater made no modifications.
  
  @exception ClassCastException thrown if the type of the supplied updater does not match the
  type of {@link OccupantInfo} record used for the occupant. Caveat utilitor.