api/src/main/java/org/ocpsoft/rewrite/config/Subset.java
@Override
   public void perform(Rewrite event, EvaluationContext context)
   {
      /*
       * Highly optimized loop - for performance reasons. Think before you change this!
       */
      List<Rule> rules = config.getRules();

      Rule rule = null;
      final EvaluationContextImpl subContext = new EvaluationContextImpl();
      for (int i = 0; i < rules.size(); i++)
      {
         rule = rules.get(i);
         event.getEvaluatedRules().add(rule);

         subContext.clear();
         subContext.put(ParameterStore.class, context.get(ParameterStore.class));
         ParameterValueStore values = (ParameterValueStore) context.get(ParameterValueStore.class);
         subContext.put(ParameterValueStore.class, values);
         subContext.setState(RewriteState.EVALUATING);

         if (rule.evaluate(event, subContext))
         {
            if (handleBindings(event, subContext, values))
            {
               subContext.setState(RewriteState.PERFORMING);

               if (log.isDebugEnabled())
                  log.debug("Rule [" + rule + "] matched and will be performed.");

               List<Operation> preOperations = subContext.getPreOperations();
               for (int k = 0; k < preOperations.size(); k++) {
                  preOperations.get(k).perform(event, subContext);
               }

               if (event.getFlow().isHandled())
               {
                  break;
               }

               rule.perform(event, subContext);

               if (event.getFlow().isHandled())
               {
                  break;
               }

               List<Operation> postOperations = subContext.getPostOperations();
               for (int k = 0; k < postOperations.size(); k++) {
                  postOperations.get(k).perform(event, subContext);
               }

               if (event.getFlow().isHandled())
               {
                  break;
               }
            }
         }
         else
         {
            event.getEvaluatedRules().remove(rule);
         }
      }
   }
@Override
   public void perform(Rewrite event, EvaluationContext context)
   {
      /*
       * Highly optimized loop - for performance reasons. Think before you change this!
       */
      List<Rule> rules = config.getRules();

      Rule rule = null;
      final EvaluationContextImpl subContext = new EvaluationContextImpl();
      for (int i = 0; i < rules.size(); i++)
      {
         rule = rules.get(i);
         event.getEvaluatedRules().add(rule);

         subContext.clear();
         subContext.put(ParameterStore.class, context.get(ParameterStore.class));
         ParameterValueStore values = (ParameterValueStore) context.get(ParameterValueStore.class);
         subContext.put(ParameterValueStore.class, values);
         subContext.setState(RewriteState.EVALUATING);

         if (rule.evaluate(event, subContext))
         {
            if (handleBindings(event, subContext, values))
            {
               subContext.setState(RewriteState.PERFORMING);

               if (log.isDebugEnabled())
                  log.debug("Rule [" + rule + "] matched and will be performed.");

               List<Operation> preOperations = subContext.getPreOperations();
               for (int k = 0; k < preOperations.size(); k++) {
                  preOperations.get(k).perform(event, subContext);
               }

               if (event.getFlow().isHandled())
               {
                  break;
               }

               rule.perform(event, subContext);

               if (event.getFlow().isHandled())
               {
                  break;
               }

               List<Operation> postOperations = subContext.getPostOperations();
               for (int k = 0; k < postOperations.size(); k++) {
                  postOperations.get(k).perform(event, subContext);
               }

               if (event.getFlow().isHandled())
               {
                  break;
               }
            }
         }
         else
         {
            event.getEvaluatedRules().remove(rule);
         }
      }
   }
/*
Executors