protected boolean executeInternal(RuleContext ruleContext)
  {
    Rule rule = ruleContext.getActiveRule();
    if (null == rule)
    {
      throw new RuntimeException("RulesEngine.execute: Active Rule object has not been loaded on the RuleContext");
    }

    // a_Load dependencies
    String ruleName = rule.getName();
    rule.loadDependencies(ruleContext.getLoader());

    // a_Execute rule
    if (ruleContext.getEvents().isInfoEnabled())
    {
      ruleContext.getTimer().set("Execute: " + ruleName + ": execute");
    }
    boolean result = true;
    try
    {
      // a_Execute the rule
      ruleContext.getEvents().event("RulesEngine.execute: Executing rule START: " + rule.getName());
      if (rule.execute(ruleContext) && ruleContext.isStopOnFirstTrue())
      {
        ruleContext.getEvents().event("RulesEngine.execute: First true detected and request to stop was requested: " + rule.getName());
        result = false;

      }
      ruleContext.getEvents().event("RulesEngine.execute: Executing rule END: " + rule.getName());
    }
    catch (Throwable e)
    {
      ruleContext.getEvents().error(e);
      result = false;
    }
    if (ruleContext.getEvents().isInfoEnabled())
    {
      ruleContext.getTimer().reset();
    }
    return result;
  }