anchor.diff:    end;
   end;
   
  +class function TypeRegistry.ConstructFromTypeInfo(const aTypeInfo: PTypeInfo): IBase;
  +var
  +  Factory      : Pointer;
  +begin
  +  Result := nil;
  +  if FTypeInfoToFactoryLookup.TryGetValue(aTypeInfo, Factory)
  +  then Result := IBase(TFactoryMethod<IBase>(Factory)());
  +end;
  +
  +
  +
   
   end.
  
positive.code: interface
  
  uses
    Generics.Collections;
  
  type
    TFactoryMethod<T> = function:T;
  
negative.code:     class destructor Destroy;
      class procedure RegisterTypeFactory<F>(const aFactoryMethod: TFactoryMethod<F>);
      class function  Construct<F>: F;
      class function  ConstructFromTypeInfo(const aTypeInfo: PTypeInfo): IBase;
    end;
  
  implementation
  
  
  { TypeRegistration }
  
  