anchor.diff:  interface
   
   uses
  -  System.Generics.Collections, System.Rtti,
  +  System.SysUtils, System.Rtti, System.Generics.Collections,
     FIToolkit.Config.Types;
   
   type
  
positive.code:       function GetValue : TValue;
      strict protected
        FValue : TValue;
      protected
        constructor Create(AValueKind : TDefaultValueKind);
  
        function CalculateValue : TValue; virtual;
      public
        property Value : TValue read GetValue;
  
negative.code:       class property StaticInstance : TDefaultsMap read GetStaticInstance;
    end;
  
    procedure RegisterDefaultValue(DefValAttribClass : TDefaultValueAttributeClass; Value : TValue); overload;
    procedure RegisterDefaultValue(DefValAttribClass : TDefaultValueAttributeClass; Evaluator : TFunc<TValue>); overload;
    procedure RegisterDefaultValue(DefValAttribClass : TDefaultValueAttributeClass;
      Evaluator : TFunc<TDefaultValueAttributeClass, TValue>); overload;
  
  implementation
  
  { Utils }
  
  procedure RegisterDefaultValue(DefValAttribClass : TDefaultValueAttributeClass; Value : TValue);
  begin
    TDefaultsMap.StaticInstance.AddValue(DefValAttribClass, Value);
  end;
  
  procedure RegisterDefaultValue(DefValAttribClass : TDefaultValueAttributeClass; Evaluator : TFunc<TValue>);
  begin
    RegisterDefaultValue(DefValAttribClass, Evaluator);
  end;
  
  procedure RegisterDefaultValue(DefValAttribClass : TDefaultValueAttributeClass;
    Evaluator : TFunc<TDefaultValueAttributeClass, TValue>);
  begin
    RegisterDefaultValue(DefValAttribClass, Evaluator(DefValAttribClass));
  end;
  
  { TDefaultValueAttribute }
  