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