anchor.diff:            ReadObjectFromConfig(Prop.GetValue(Instance).AsObject, Filter)
           else
           if Prop.PropertyType.IsOrdinal then
  -          //TODO: third patameter must be a routine for getting the default value (parameterized?)
             Prop.SetValue(Instance, FConfigFile.Config.ReadInteger(Instance.QualifiedClassName, Prop.Name,
  -                                                                 GetPropDefaultValue<Integer>(Prop)))
  +                                                                 GetPropDefaultValue(Prop).AsVariant))
           else
             case Prop.PropertyType.TypeKind of
               tkString, tkLString, tkWString, tkUString:
  -              //TODO: third patameter must be a routine for getting the default value (parameterized?)
                 Prop.SetValue(Instance, FConfigFile.Config.ReadString(Instance.QualifiedClassName, Prop.Name,
  -                                                                    GetPropDefaultValue<String>(Prop)));
  +                                                                    GetPropDefaultValue(Prop).AsVariant));
             else
               Assert(False, 'Unhandled property type kind while deserializing object from config.');
             end;
  
positive.code:   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;
  
  
negative.code:       if Prop.PropertyType.IsInstance then
          SetObjectPropsDefaults(Prop.GetValue(Instance).AsObject)
        else
          Prop.SetValue(Instance, GetPropDefaultValue(Prop));
    finally
      Ctx.Free;
    end;
  