anchor.diff:  
   uses
     Classes, SysUtils, DB, Variants,
  +  James.Core.Base,
     James.Data.Base;
   
   type
  
positive.code:     FStream.LoadFromStream(Stream);
  end;
  
  constructor TDataStream.Create(const S: string);
  var
    F: TStringStream;
  begin
    F := TStringStream.Create(S);
    try
      Create(F);
    finally
      F.Free;
    end;
  end;
  
  class function TDataStream.New(Stream: TStream): IDataStream;
  begin
    Result := Create(Stream);
  end;
  
  class function TDataStream.New(const S: string): IDataStream;
  begin
    Result := Create(S);
  end;
  
  class function TDataStream.New(Strings: TStrings): IDataStream;
  var
    Buf: TMemoryStream;
  begin
    Buf := TMemoryStream.Create;
    try
      Strings.SaveToStream(Buf);
      Result := New(Buf);
    finally
      Buf.Free;
    end;
  end;
  
  
negative.code:     FStream: TMemoryStream;
    public
      constructor Create(Stream: TStream); overload;
      class function New(Stream: TStream): IDataStream; overload;
      class function New(const S: string): IDataStream; overload;
      class function New(const S: IAdapter<string>): IDataStream; overload;
      class function New(Strings: TStrings): IDataStream; overload;
      class function New: IDataStream; overload;
      destructor Destroy; override;
  