anchor.diff:  part of redis_client;
   
  -abstract class RedisConnection {
  -  factory RedisConnection([String connStr]) => new _RedisConnection(connStr);
  +
  +abstract class RedisConnectionINT {
  +
   
     String password;
     String hostName;
  
positive.code:     hostName = parts[0];
      if (hasPort) {
        parts = $(parts.last).splitOnLast("/");
        port = Math.parseInt(parts[0]);
        db = parts.length == 2 ? Math.parseInt(parts[1]) : 0;
      }
    }
  
  
negative.code:   void close();
  }
  
  
  /// The [RedisConnection] wraps the Socket, and provides an API to communicate
  /// to redis.
  ///
  /// You instantiate a [RedisConnection] with:
  ///
  ///     new RedisConnection(connectionString);
  ///
  /// where `connectionString` can be any of following:
  ///
  /// - `'pass@host:port/db'`
  /// - `'pass@host:port'`
  /// - `'pass@host'`
  /// - `'host'`
  /// - `null` defaults to `'localhost:6379/0'`
  class RedisConnection {
  
    /// The wrapped [Socket].
    Socket _socket;
  
    SocketWrapper _wrapper;
  
    String hostName = "localhost";
  
    String password;
  
    int port = 6379;
  
    int db = 0;
  
    /// Whether there is an active connection to the socket.
    bool connected;
  
  
    /// The character sequence that ends data.
    ///
    /// `\r\n`
    const List<int> _endData = [ 13, 10 ];
  
  
    int logLevel = LogLevel.Error;
  
    Int8List _cmdBuffer = new Int8List(32 * 1024);
  
    int _cmdBufferIndex = 0;
  
    // To Reduce Reallocations
    static final int breathingSpace = 32 * 1024;
  
    Pipeline pipeline;
  
    Queue<ExpectRead> _pendingReads = new Queue<ExpectRead>();
  
    /// Statistics
    int totalBuffersWrites = 0;
  
    /// Statistics
    int totalBufferFlushes = 0;
  
    /// Statistics
    int totalBufferResizes = 0;
  
    /// Statistics
    int totalBytesWritten = 0;
  
    Map get stats => $(_wrapper.stats).addAll({
  