anchor.diff:    Result := Parameters['ThreadPoolSize'].AsInteger;
   end;
   
  +{ TMARSEngineRegistry }
  +
  +constructor TMARSEngineRegistry.Create;
  +begin
  +  inherited Create;
  +  FItems := TDictionary<string, TMARSEngine>.Create;
  +end;
  +
  +destructor TMARSEngineRegistry.Destroy;
  +begin
  +  FItems.Free;
  +  inherited;
  +end;
  +
  +function TMARSEngineRegistry.GetCount: Integer;
  +begin
  +  Result := FItems.Count;
  +end;
  +
  +class function TMARSEngineRegistry.GetDefaultEngine: TMARSEngine;
  +begin
  +  Result := Instance.Engine[DEFAULT_ENGINE_NAME];
  +end;
  +
  +function TMARSEngineRegistry.GetEngine(const AName: string): TMARSEngine;
  +begin
  +  if not FItems.TryGetValue(AName, Result) then
  +    Result := nil;
  +end;
  +
  +class function TMARSEngineRegistry.GetInstance: TMARSEngineRegistry;
  +begin
  +  if not Assigned(_Instance) then
  +    _Instance := TMARSEngineRegistry.Create;
  +  Result := _Instance;
  +end;
  +
  +procedure TMARSEngineRegistry.RegisterEngine(const AEngine: TMARSEngine);
  +begin
  +  Assert(Assigned(AEngine));
  +  FItems.AddOrSetValue(AEngine.Name, AEngine);
  +end;
  +
  +procedure TMARSEngineRegistry.UnregisterEngine(const AEngine: TMARSEngine);
  +begin
  +  Assert(Assigned(AEngine));
  +  UnregisterEngine(AEngine.Name);
  +end;
  +
  +procedure TMARSEngineRegistry.UnregisterEngine(const AEngineName: string);
  +begin
  +  FItems.Remove(AEngineName);
  +end;
  +
   end.
  
positive.code:     procedure DoBeforeHandleRequest(const AApplication: TMARSApplication); virtual;
      procedure DoAfterHandleRequest(const AApplication: TMARSApplication; const AStopWatch: TStopWatch); virtual;
    public
      constructor Create(const AName: string = 'DefaultEngine'); virtual;
      destructor Destroy; override;
  
      function HandleRequest(ARequest: TWebRequest; AResponse: TWebResponse): Boolean;
  
negative.code: 
  {$M+}
  
  const
    DEFAULT_ENGINE_NAME = 'DefaultEngine';
  
  type
    TMARSEngine = class;
  
  