anchor.diff:      LSubscriber(Self, Result);
   end;
   
  +{ TMARSAuthorizationInfo }
  +
  +constructor TMARSAuthorizationInfo.Create(const ADenyAll, APermitAll: Boolean; const AAllowedRoles: TArray<string>);
  +begin
  +  DenyAll := ADenyAll;
  +  PermitAll := APermitAll;
  +  AllowedRoles := AAllowedRoles;
  +end;
  +
  +function TMARSAuthorizationInfo.NeedsAuthentication: Boolean;
  +begin
  +  Result := Length(AllowedRoles) > 0;
  +end;
  +
  +function TMARSAuthorizationInfo.NeedsAuthorization: Boolean;
  +begin
  +  Result := (Length(AllowedRoles) > 0) or DenyAll;
  +end;
  +
   end.
  
positive.code:     FWriter: IMessageBodyWriter;
      FWriterMediaType: TMediaType;
      FInvocationTime: TStopWatch;
  
      procedure FreeContext; virtual;
      procedure CleanupGarbage(const AValue: TValue); virtual;
  
negative.code: 
      procedure CheckResource; virtual;
      procedure CheckMethod; virtual;
      procedure ReadAuthorizationInfo; virtual;
      procedure CheckAuthentication; virtual;
      procedure CheckAuthorization; virtual;
    public
  