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