public boolean offer(E event,int taskId) throws InterruptedException {
  assertNotDone();
  if (predicate.match(event)) {
    this.matched[taskId]=true;
    for (    boolean match : matched) {
      if (!match)       return true;
    }
    responseQueue.put(new EventHolder(event));
    done=true;
    return true;
  }
 else   return false;
}

public boolean offer ( E event , int taskId ) throws InterruptedException { assertNotDone ( ) ; if ( predicate . match ( event ) ) { this . matched [ taskId ] = true ; for ( boolean match : matched ) { if ( ! match ) return true ; } responseQueue . put ( new EventHolder ( event ) ) ; done = true ; return true ; } else return false ; }
offer an event to this watch instance . if it accepts the event we note the task id and return true .
