anchor.diff:    Result := Create(nil);
   end;
   
  -class function TMock<T>.Create(const AAutoMock : IAutoMock): TMock<T>;
  +class function TMock<T>.Create(const ACreateObjectFunc: TFunc<T>): TMock<T>;
  +begin
  +  Result := Create(nil, ACreateObjectFunc);
  +end;
  +
  +
  +class function TMock<T>.Create(const AAutoMock: IAutoMock; const ACreateObjectFunc: TFunc<T>): TMock<T>;
   var
     proxy : IInterface;
     pInfo : PTypeInfo;
  
positive.code: 
    case pInfo.Kind of
      //Create our proxy object, which will implement our object T
      tkClass : proxy := TObjectProxy<T>.Create(Result.FAutomocker, false);
      //Create our proxy interface object, which will implement our interface T
      tkInterface : proxy := TProxy<T>.Create(Result.FAutomocker, false);
    end;
  
negative.code:     function Setup : IStubSetup<T>;
      function Instance : T;
      function InstanceAsValue : TValue;
      class function Create(const ACreateObjectFunc: TFunc<T> = nil): TStub<T>; static;
      // explicit cleanup. Not sure if we really need this.
      procedure Free;
    end;
  