anchor.diff:      function Stream: IDataStream;
     end;
   
  -  TDataFileAsStream = class(TInterfacedObject, IDataStream)
  -  private
  -    FFile: IDataFile;
  -    FStream: TDataStream.TAggregated;
  -    function GetStream: TDataStream.TAggregated;
  -  public
  -    constructor Create(const AFile: IDataFile);
  -    class function New(const AFile: IDataFile): IDataStream;
  -    destructor Destroy; override;
  -    property Stream: TDataStream.TAggregated
  -        read GetStream implements IDataStream;
  -  end;
  -
   implementation
   
   { TDataStream }
  
positive.code:   end;
  end;
  
  { TDataFileAsStream }
  
  function TDataFileAsStream.GetStream: TDataStream.TAggregated;
  begin
    if not Assigned(FStream) then
      FStream := TDataStream.TAggregated.Create(Self, FFile.Stream);
    Result := FStream;
  end;
  
  constructor TDataFileAsStream.Create(const AFile: IDataFile);
  begin
    inherited Create;
    FFile := AFile;
  end;
  
  class function TDataFileAsStream.New(const AFile: IDataFile): IDataStream;
  begin
    Result := Create(AFile);
  end;
  
  destructor TDataFileAsStream.Destroy;
  begin
    FStream.Free;
    inherited Destroy;
  end;
  
  end.
  
negative.code: function TDataStream.Size: Int64;
  begin
    Result := fStream.Size;
  end;
  
  { TDataStrings }
  