anchor.diff:      FCriticalSection: TCriticalSection;
       FParameters: TMARSParameters;
       FName: string;
  +    FOnBeforeHandleRequest: TMARSEngineBeforeHandleRequestEvent;
   
       function GetCurrentRequest: TWebRequest;
       function GetCurrentResponse: TWebResponse;
  
positive.code:   TMARSEngine = class;
  
    IMARSHandleRequestEventListener = interface
      procedure BeforeHandleRequest(const ASender: TMARSEngine; const AApplication: TMARSApplication);
      procedure AfterHandleRequest(const ASender: TMARSEngine; const AApplication: TMARSApplication; const AStopWatch: TStopWatch);
    end;
  
    TMARSEngine = class
    private
  
negative.code:     LSubscriber.AfterHandleRequest(Self, AApplication, AStopWatch);
  end;
  
  function TMARSEngine.DoBeforeHandleRequest(const AApplication: TMARSApplication): Boolean;
  var
    LSubscriber: IMARSHandleRequestEventListener;
  begin
    Result := True;
    for LSubscriber in FSubscribers do
      LSubscriber.BeforeHandleRequest(Self, AApplication, Result);
  end;
  
  procedure TMARSEngine.EnumerateApplications(
  