anchor.diff:   *     dispose();
    */
   class TcpServer {
  -  static bool _inited = false;
  +  /**
  +   * A map from server socketIds to StreamControllers. We're notified about
  +   * incoming `accept` connections based on the socketId. We want to use that
  +   * information to notify the correct StreamController.
  +   */
  +  static Map<int, StreamController> _serverMap;
   
     final int _socketId;
     final int port;
  
positive.code:     });
    }
  
    TcpClient._fromSocketId(this._socketId, [bool unpause = false]) {
      _clientMap[_socketId] = new StreamController();
  
      if (!_inited) {
        chrome.sockets.tcp.onReceive.listen((chrome.ReceiveInfo info) {
          StreamController controller = _clientMap[info.socketId];
          if (controller != null) {
            controller.add(info.data.getBytes());
          }
        });
  
        chrome.sockets.tcp.onReceiveError.listen((chrome.ReceiveErrorInfo info) {
          StreamController controller = _clientMap[info.socketId];
          if (controller != null) {
            controller.addError(
                new SocketException("error reading stream: ${info.resultCode}"));
          }
        });
      }
  
      if (unpause) {
        chrome.sockets.tcp.setPaused(_socketId, false);
  
negative.code:  *     dispose();
   */
  class TcpClient {
    /**
     * A map from client socketIds to StreamControllers. We're notified about
     * incoming data based on the socketId. We want to use that information to
     * notify the correct StreamController.
     */
    static Map<int, StreamController> _clientMap;
  
    Future _lastWrite = new Future.value();
    final int _socketId;
  