anchor.diff:    FillFileFromData;
   end;
   
  +function TConfigManager.GetPropDefaultValue<T>(const Prop : TRttiProperty) : T;
  +  var
  +    Attr : TCustomAttribute;
  +    V : TValue;
  +begin
  +  Result := Default(T);
  +
  +  for Attr in Prop.GetAttributes do
  +    if Attr is TDefaultValueAttribute then
  +    begin
  +      V := TDefaultValueAttribute(Attr).Value;
  +
  +      if not V.IsEmpty then
  +      begin
  +        Result := V.AsType<T>;
  +        Break;
  +      end;
  +    end;
  +end;
  +
   procedure TConfigManager.ReadObjectFromConfig(const Instance : TObject; Filter : TFilterPropPredicate);
     var
       Ctx : TRttiContext;
  
positive.code: 
  procedure TConfigManager.SetDefaults;
  begin
  
  end;
  
  procedure TConfigManager.WriteObjectToConfig(const Instance : TObject; Filter : TFilterPropPredicate);
  
negative.code:         TFilterPropPredicate = reference to function (const Instance : TObject; const Prop : TRttiProperty) : Boolean;
      private
        function  FilterConfigProp(const Instance : TObject; const Prop : TRttiProperty) : Boolean;
        function  GetPropDefaultValue<T>(const Prop : TRttiProperty) : T;
        procedure ReadObjectFromConfig(const Instance : TObject; Filter : TFilterPropPredicate);
        procedure SetObjectPropsDefaults(const Instance : TObject);
        procedure WriteObjectToConfig(const Instance : TObject; Filter : TFilterPropPredicate);
      protected
        procedure FillDataFromFile;
        procedure FillFileFromData;
        procedure GenerateDefaultConfig;
        procedure SetDefaults;
      public
        constructor Create(const ConfigFileName : TFileName; GenerateConfig, Validate : Boolean);
  