anchor.diff:    if rType = nil then
       raise EMockNoRTTIException.Create('No TypeInfo found for T');
   
  -  ctor := rType.FindConstructor;
  -  if ctor = nil then
  -    raise EMockException.Create('Could not find constructor Create on type ' + rType.Name);
  -
  -  instance := ctor.Invoke(rType.AsInstance.MetaclassType, []);
  -
  -  FInstance := instance.AsType<T>();
  -  FVMInterceptor := TVirtualMethodInterceptor.Create(rType.AsInstance.MetaclassType);
  +  if not Assigned(ACreateFunc) then
  +  begin
  +    ctor := rType.FindConstructor;
  +    if ctor = nil then
  +      raise EMockException.Create('Could not find constructor Create on type ' + rType.Name);
  +
  +    instance := ctor.Invoke(rType.AsInstance.MetaclassType, []);
  +  end
  +  else
  +    instance := TValue.From<T>(ACreateFunc);
  +  FInstance := instance.AsType<T>();
  +  FVMInterceptor := TVirtualMethodInterceptor.Create(rType.AsInstance.MetaclassType);
   
     FVMInterceptor.Proxify(instance.AsObject);
     FVMInterceptor.OnBefore := DoBefore;
  
positive.code:     procedure DoBefore(Instance: TObject; Method: TRttiMethod; const Args: TArray<TValue>; out DoInvoke: Boolean; out Result: TValue);
      function Proxy : T; override;
    public
      constructor Create(const AAutoMocker : IAutoMock = nil; const AIsStubOnly : boolean = false); override;
      destructor Destroy; override;
    end;
  
  
negative.code: 
  { TObjectProxy<T> }
  
  constructor TObjectProxy<T>.Create(const AAutoMocker : IAutoMock = nil; const AIsStubOnly : boolean = false; const
    ACreateFunc: TFunc<T> = nil);
  var
    ctx   : TRttiContext;
    rType : TRttiType;
  