code: func TCPRemoteForwardListener(addr string, chain *Chain) (Listener, error) {
  	laddr, err := net.ResolveTCPAddr("tcp", addr)
  	if err != nil {
  		return nil, err
  	}
  
  	ln := &tcpRemoteForwardListener{
  		addr:     laddr,
  		chain:    chain,
  		connChan: make(chan net.Conn, 1024),
  		closed:   make(chan struct{}),
  		errChan:  make(chan error),
  	}
  
  	if !ln.isChainValid() {
  		ln.ln, err = net.Listen("tcp", ln.addr.String())
  		return ln, err
  	}
  
  	go ln.listenLoop()
  
  	return ln, err
  }
docs: // TCPRemoteForwardListener creates a Listener for TCP remote port forwarding server.