anchor.diff:      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;
  +    constructor Create(const AAutoMocker : IAutoMock = nil; const AIsStubOnly : boolean = false;
  +      const ACreateFunc: TFunc<T> = nil); reintroduce;
       destructor Destroy; override;
     end;
   
  
positive.code: 
  { TObjectProxy<T> }
  
  constructor TObjectProxy<T>.Create(const AAutoMocker : IAutoMock = nil; const AIsStubOnly : boolean = false);
  var
    ctx   : TRttiContext;
    rType : TRttiType;
  
negative.code:   if rType = nil then
      raise EMockNoRTTIException.Create('No TypeInfo found for T');
  
    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;
  