docs: public void applyFilterChanges(Filter declarationFilter) {
          this.declarationFilter = declarationFilter;
          Set<ServiceReference<D>> added = new HashSet<ServiceReference<D>>();
          Set<ServiceReference<D>> removed = new HashSet<ServiceReference<D>>();
  
          for (Map.Entry<ServiceReference<D>, Boolean> e : declarations.entrySet()) {
              Map<String, Object> metadata = getDeclaration(e.getKey()).getMetadata();
              boolean matchFilter = declarationFilter.matches(metadata);
              if (matchFilter != e.getValue() && matchFilter) {
                  added.add(e.getKey());
              } else if (matchFilter != e.getValue() && !matchFilter) {
                  removed.add(e.getKey());
              }
              e.setValue(matchFilter);
          }
          for (ServiceReference<D> declarationSRef : removed) {
              removeLinks(declarationSRef);
          }
          for (ServiceReference<D> declarationSRef : added) {
              createLinks(declarationSRef);
          }
      }