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: function TDataStream.Size: Int64;
  begin
    Result := fStream.Size;
  end;
  
  { TDataStream.TAggregated }
  
  constructor TDataStream.TAggregated.Create(const aController: IUnknown;
    Origin: IDataStream);
  begin
    inherited Create(aController);
    FOrigin := Origin;
  end;
  
  function TDataStream.TAggregated.Save(Stream: TStream): IDataStream;
  begin
    Result := FOrigin.Save(Stream);
  end;
  
  function TDataStream.TAggregated.AsString: string;
  begin
    Result := FOrigin.AsString;
  end;
  
  function TDataStream.TAggregated.Size: Int64;
  begin
    Result := FOrigin.Size;
  end;
  
  { TDataStrings }
  
negative.code:     function Save(Stream: TStream): IDataStream; overload;
      function AsString: string;
      function Size: Int64;
    end;
  
    TDataStrings = class(TInterfacedObject, IDataStrings)
  