anchor.diff:      FCriticalSection: TCriticalSection;
       FParameters: TMARSParameters;
       FName: string;
  +    FOnBeforeHandleRequest: TMARSEngineBeforeHandleRequestEvent;
   
       function GetCurrentRequest: TWebRequest;
       function GetCurrentResponse: TWebResponse;
  
positive.code:         , LApplication.Parameters.ByName(TMARSToken.JWT_SECRET_PARAM, TMARSToken.JWT_SECRET_PARAM_DEFAULT).AsString
        );
        try
          DoBeforeHandleRequest(LApplication);
          LStopWatch := TStopwatch.StartNew;
          LApplication.HandleRequest(ARequest, AResponse, LURL);
          LStopWatch.Stop;
          DoAfterHandleRequest(LApplication, LStopWatch);
        finally
          FToken.Free;
        end;
  
negative.code:   TMARSEngine = class;
  
    IMARSHandleRequestEventListener = interface
      procedure BeforeHandleRequest(const ASender: TMARSEngine; const AApplication: TMARSApplication; var AIsAllowed: Boolean);
      procedure AfterHandleRequest(const ASender: TMARSEngine; const AApplication: TMARSApplication; const AStopWatch: TStopWatch);
    end;
  
    TMARSEngineBeforeHandleRequestEvent = TFunc<TMARSEngine, TMARSURL, Boolean>;
  
    TMARSEngine = class
    private
  