anchor.diff:      procedure RegisterReader(const AReaderClass: TClass; const ASubjectClass: TClass;
         const AGetAffinity: TGetAffinityFunction); overload;
   
  -    procedure RegisterReader<T: class>(const AReaderClass: TClass); overload;
  +    procedure RegisterReader<T>(const AReaderClass: TClass); overload;
   
       procedure FindReader(const ADestination: TRttiObject;
         out AReader: IMessageBodyReader; out AMediaType: TMediaType);
  
positive.code: begin
    Result :=
      function (AType: TRttiType; const AAttributes: TAttributeArray; AMediaType: string): Integer
      begin
        if Assigned(AType) and AType.IsObjectOfType<T>(False) then
          Result := 100
        else if Assigned(AType) and AType.IsObjectOfType<T> then
          Result := 99
        else
          Result := 0;
      end
  end;
  
  
negative.code:   RegisterReader(
      AReaderClass
      , function (AType: TRttiType; const AAttributes: TAttributeArray; AMediaType: string): Boolean
        var
          LType: TRttiType;
        begin
          LType := TRttiContext.Create.GetType(TypeInfo(T));
          Result := False;
          if Assigned(AType) then
          begin
            Result := (AType = LType);
            if not Result then
              Result := AType.IsObjectOfType<T>();
          end;
        end
      , Self.GetDefaultClassAffinityFunc<T>()
    );
  