public void sendContent(Object target, Filter filter) throws IllegalArgumentException {

          MeemContentClient meemContentClient = (MeemContentClient) target;
          Collection<MeemPath> valueSet;
          synchronized (meemPaths) {
            valueSet = meemPaths.values();

            if (filter == null) {
              logger.info("!!!! No filter for meem content client");

              for (MeemPath meemPath : valueSet) {
                meemContentClient.meemContentChanged(meemPath, contentStore.load(meemPath));
              }
            } else if (filter instanceof ExactMatchFilter) {
              /*
               * If it is an exact match filter, grab the MeemPath out of it.
               * If that MeemPath isn't in the list, send back an empty MeemContent
               */
              Object filterObject = ((ExactMatchFilter) filter).getTemplate();
              if (filterObject instanceof MeemPath) {
                MeemPath filterPath = (MeemPath) filterObject;
                if (valueSet.contains(filterPath)) {
                  meemContentClient.meemContentChanged(filterPath, contentStore.load(filterPath));
                } else {
                  meemContentClient.meemContentChanged(filterPath, new MeemContent());
                }
              }
            }
          }
        }
        public void sendContent(Object target, Filter filter) throws IllegalArgumentException {

          MeemDefinitionClient meemDefinitionClient = (MeemDefinitionClient) target;
          Collection<MeemPath> valueSet;
          synchronized (meemPaths) {
            valueSet = meemPaths.values();

            if (filter == null) {
              logger.info("!!!! No filter for meem definition client");
              for (MeemPath meemPath : valueSet) {
                meemDefinitionClient.meemDefinitionChanged(
                    meemPath, definitionStore.load(meemPath));
              }
            } else if (filter instanceof ExactMatchFilter) {
              Object filterObject = ((ExactMatchFilter) filter).getTemplate();
              if (filterObject instanceof MeemPath) {
                MeemPath filterPath = (MeemPath) filterObject;
                if (valueSet.contains(filterPath)) {
                  meemDefinitionClient.meemDefinitionChanged(
                      filterPath, definitionStore.load(filterPath));
                } else {
                  meemDefinitionClient.meemDefinitionChanged(filterPath, null);
                }
              }
            }
          }
        }
        public void sendContent(Object target, Filter filter) throws IllegalArgumentException {

          MeemStoreClient meemStoreClient = (MeemStoreClient) target;
          Collection<MeemPath> valueSet;

          synchronized (meemPaths) {
            valueSet = meemPaths.values();

            if (filter == null) {
              // send paths of all stored meems
              for (MeemPath meemPath : valueSet) {
                meemStoreClient.meemStored(meemPath);
              }
            } else if (filter instanceof ExactMatchFilter) {
              // determine whether the meem is stored in this MeemStore
              MeemPath meemPath = (MeemPath) ((ExactMatchFilter) filter).getTemplate();
              if (valueSet.contains(meemPath)) {
                meemStoreClient.meemStored(meemPath);
              }
            }
          }
        }