anchor.diff:      FStream: TMemoryStream;
     public
       constructor Create(Stream: TStream); overload;
  -    constructor Create(const S: string); 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;
  
positive.code: 
  uses
    Classes, SysUtils, DB, Variants,
    James.Data.Base;
  
  type
  
negative.code:     FStream.LoadFromStream(Stream);
  end;
  
  class function TDataStream.New(Stream: TStream): IDataStream;
  begin
    Result := Create(Stream);
  end;
  
  class function TDataStream.New(const S: string): IDataStream;
  var
    M: TStringStream;
  begin
    M := TStringStream.Create(S);
    try
      Result := New(M);
    finally
      M.Free;
    end;
  end;
  
  class function TDataStream.New(const S: IAdapter<string>): IDataStream;
  begin
    Result := New(S.Value);
  end;
  
  class function TDataStream.New(Strings: TStrings): IDataStream;
  var
    M: TMemoryStream;
  begin
    M := TMemoryStream.Create;
    try
      Strings.SaveToStream(M);
      Result := New(M);
    finally
      M.Free;
    end;
  end;
  
  