anchor.diff:      class function GetAttributesOfType<T: class>(const ARttiObject: TRttiObject): TArray<T>;
       class function GetAttributeOfType<T: class>(const ARttiObject: TRttiObject): T;
   
  -    class procedure SetValue<T>(const APropertyName: string; const AObject: T; const AValue: TValue);
  +    class procedure SetValue<T>(const APropertyOrFieldName: string; const ATo: T; const AValue: TValue); overload;
  +    class procedure SetValue(const APropertyOrFieldName: string; const AToObject: TObject; const AValue: TValue); overload;
       class procedure SetValueFromString(const AObject: TObject; const AValue: string; AField: TRttiField); overload;
       class procedure SetValueFromString(const AObject: TObject; const AValue: string; AProp: TRttiProperty); overload;
     end;
  
positive.code:     Exit(rProp.PropertyType.IsInstance);
  end;
  
  class procedure TSvRtti.SetValue<T>(const APropertyName: string; const AObject: T; const AValue: TValue);
  var
    rType: TRttiType;
    rField: TRttiField;
  
negative.code:     else
      begin
        raise ESvRttiException.Create(Format('Property or field %S does not exist for a value %S',
          [APropertyOrFieldName, obj.ToString]));
      end;
    end;
  end;
  