anchor.diff:  
   function TBooleanDataProvider.FindDatumByKey(aKey: IVDDatumKey): IVDDatum;
   begin
  -  Result := nil;
  +  Result := FindDatumByStringKey(aKey.AsString);
  +end;
  +
  +function TBooleanDataProvider.FindDatumByStringKey(aStringKey: string): IVDDatum;
  +begin
  +  if aStringKey = BoolToStr(true, true) then
  +    Result := FTrueValue
  +  else
  +    Result := FFalseValue;
   end;
   
   { TBooleanDatum }
   
   constructor TBooleanDatum.Create(aValue: boolean);
   begin
  -  FValue := aValue;
  +  FKey := TBooleanDatumKey.Create(aValue);
  +end;
  +
  +destructor TBooleanDatum.Destroy;
  +begin
  +  FKey.Free;
   end;
   
   function TBooleanDatum.GetDatumKey: IVDDatumKey;
   begin
  -  Result := nil;
  +  Result := Key;
   end;
   
   class procedure TBooleanDatum.FillVirtualFieldDefs(aFieldDefs: TVirtualFieldDefs; aPrefix: String);
  
positive.code:     function Count : integer;
      function GetDatum(aIndex : integer) : IVDDatum;
      function FindDatumByKey (aKey : IVDDatumKey) : IVDDatum;
    end;
  
  implementation
  
  uses
    SysUtils;
  
  { TBooleanDataProvider }
  
  
negative.code: 
  function TBooleanDatum.GetPropertyByFieldName(aFieldName: String): Variant;
  begin
    Result := BoolToStr(FKey.Value, true);
  end;
  
  end.
  