anchor.diff:      _state = stopped;
     }
   
  -  void _forEachConnection(f(PooledConnectionImpl pconn)) {
  +  void _forEachConnection(f(PooledConnectionImpl pconn, int i)) {
       for (int i = _connections.length; --i >= 0;) //reverse since it might be removed
  -      f(_connections[i]);
  +      f(_connections[i], i);
     }
   }
  
positive.code:     }
    }
  
    void _checkIdleTimeout(PooledConnectionImpl pconn) {
      if (pconn._state == available
      && _isExpired(pconn._released ?? pconn._established, settings.idleTimeout)) {
        _destroyConnection(pconn);
      }
    }
    
    void _checkIfLeaked(PooledConnectionImpl pconn) {
      if (!pconn._isLeaked
          && pconn._state != available
          && pconn._obtained != null
  
negative.code:   bool _isExpired(DateTime time, Duration timeout) 
      => new DateTime.now().difference(time) > timeout;
    
    void _destroyConnection(PooledConnectionImpl pconn, [int i]) {
      if (pconn._connection != null) pconn._connection.close();
      pconn._state = connClosed;
  
      //revere order since we clean up from the end
      if (i != null && identical(pconn, _connections[i])) {
        _connections.removeAt(i);
      } else {
        for (int i = _connections.length; --i >= 0;)
          if (identical(pconn, _connections[i])) {
            _connections.removeAt(i);
            break;
          }
      }
    }
    
    Future stop() {
  