code: func NewTCPEntryPoint(ctx context.Context, configuration *static.EntryPoint) (*TCPEntryPoint, error) {
  	tracker := newConnectionTracker()
  
  	listener, err := buildListener(ctx, configuration)
  	if err != nil {
  		return nil, fmt.Errorf("error preparing server: %v", err)
  	}
  
  	router := &tcp.Router{}
  
  	httpServer, err := createHTTPServer(listener, configuration, true)
  	if err != nil {
  		return nil, fmt.Errorf("error preparing httpServer: %v", err)
  	}
  
  	router.HTTPForwarder(httpServer.Forwarder)
  
  	httpsServer, err := createHTTPServer(listener, configuration, false)
  	if err != nil {
  		return nil, fmt.Errorf("error preparing httpsServer: %v", err)
  	}
  
  	router.HTTPSForwarder(httpsServer.Forwarder)
  
  	tcpSwitcher := &tcp.HandlerSwitcher{}
  	tcpSwitcher.Switch(router)
  
  	return &TCPEntryPoint{
  		listener:               listener,
  		switcher:               tcpSwitcher,
  		transportConfiguration: configuration.Transport,
  		tracker:                tracker,
  		httpServer:             httpServer,
  		httpsServer:            httpsServer,
  	}, nil
  }
docs: // NewTCPEntryPoint creates a new TCPEntryPoint