code: protected final void reduceToMatchingDescriptors( @Nonnull final List<BindingProperty> bindings,
                                                      @Nonnull final List<SelectionDescriptor> descriptors )
    {
      final Iterator<BindingProperty> iterator = bindings.iterator();
      while ( iterator.hasNext() )
      {
        final BindingProperty property = iterator.next();
  
        // Do any selectors match?
        boolean matched = false;
        for ( final SelectionDescriptor selection : descriptors )
        {
          final BindingProperty candidate =
            findMatchingBindingProperty( selection.getBindingProperties(), property );
          if ( null != candidate )
          {
            matched = true;
            break;
          }
        }
        if ( matched )
        {
          // if so we can remove binding property from candidates list
          iterator.remove();
  
          // and now remove any selections that don't match
          final Iterator<SelectionDescriptor> selections = descriptors.iterator();
          while ( selections.hasNext() )
          {
            final SelectionDescriptor selection = selections.next();
            if ( null == findSatisfiesBindingProperty( selection.getBindingProperties(), property ) )
            {
              selections.remove();
            }
          }
        }
      }
    }
docs: This method will restrict the list of descriptors so that it only contains selections valid for specified
  bindings. Bindings will be removed from the list as they are matched. Unmatched bindings will remain in the
  bindings list after the method completes.