anchor.diff:    ARequest: TWebRequest; AMediaType: TMediaType);
   var
     LMethodResult: TValue;
  -  LArgumentArray: TArgumentArray;
  +  LArgumentArray: TArray<TValue>;
     LMARSResponse: TMARSResponse;
     LStream: TBytesStream;
     LContentType: AnsiString;
     LCustomAtributeProcessor: TProc<CustomHeaderAttribute>;
  -  LArgument: TValue;
   begin
     // The returned object MUST be initially nil (needs to be consistent with the Free method)
     LMethodResult := nil;
  
positive.code: 
      function FillAnnotatedParam(const AParam: TRttiParameter;
        const AResourceInstance: TObject; const AMethod: TRttiMethod): TValue;
      procedure FillResourceMethodParameters(AInstance: TObject; AMethod: TRttiMethod; var AArgumentArray: TArgumentArray);
  
      /// <summary>
      ///   Invoke the resource's method filling it's parameters (if any)
  
negative.code:   finally
      LAllowedRoles.Free;
    end;
  end;
  
  procedure TMARSApplication.CleanupResourceMethodParameters(
    const AMethod: TRttiMethod; const AArguments: TArray<TValue>);
  var
    LArgument: TValue;
    LParam: TRttiParameter;
    LParams: TArray<TRttiParameter>;
    LIndex: Integer;
    LCollect: Boolean;
  begin
    LParams := AMethod.GetParameters;
    for LIndex := 0 to Length(LParams)-1 do
    begin
      LParam := LParams[LIndex];
      LArgument := AArguments[LIndex];
      LCollect := True;
      LParam.HasAttribute<ContextAttribute>(
        procedure (AAttr: ContextAttribute)
        begin
          LCollect := False;
        end
      );
      if LCollect then
        CollectGarbage(LArgument);
    end;
  
  end;
  
  procedure TMARSApplication.CollectGarbage(const AValue: TValue);
  