@Override
   public void match(Object userContext, Object eventType, Object instance) {
      if (instance == null) {
         throw new IllegalArgumentException("instance cannot be null");
      }

      read.lock();
      try {
         MatcherEvalContext<TypeMetadata, AttributeMetadata, AttributeId> ctx = startMultiTypeContext(false, userContext, eventType, instance);
         if (ctx != null) {
            // try to match
            ctx.process(ctx.getRootNode());

            // notify
            ctx.notifySubscribers();
         }
      } finally {
         read.unlock();
      }
   }
@ Override public void match ( Object userContext , Object eventType , Object instance ) { if ( instance == null ) { throw new IllegalArgumentException ( "instance cannot be null" ) ; } read . lock ( ) ; try { MatcherEvalContext < TypeMetadata , AttributeMetadata , AttributeId > ctx = startMultiTypeContext ( false , userContext , eventType , instance ) ; if ( ctx != null ) { ctx . process ( ctx . getRootNode ( ) ) ; ctx . notifySubscribers ( ) ; } } finally { read . unlock ( ) ; } }
Executes the registered filters and notifies each one of them whether it was satisfied or not by the given
instance.

@param userContext an optional user provided object to be passed to matching subscribers along with the matching
instance; can be {@code null}
@param eventType   on optional event type discriminator that is matched against the even type specified when the
filter was registered; can be {@code null}
@param instance    the object to test against the registered filters; never {@code null}