code: func (c *Conn) Serve(fs FS) error {
  	if c.req != nil {
  		panic("fuse: Serve called twice")
  	}
  	c.req = map[RequestID]*serveRequest{}
  
  	root, err := fs.Root()
  	if err != nil {
  		return fmt.Errorf("cannot obtain root node: %v", syscall.Errno(err.(Errno)).Error())
  	}
  	c.node = append(c.node, nil, &serveNode{name: "/", node: root})
  	c.handle = append(c.handle, nil)
  
  	for {
  		req, err := c.ReadRequest()
  		if err != nil {
  			if err == io.EOF {
  				break
  			}
  			return err
  		}
  
  		go c.serve(fs, req)
  	}
  	return nil
  }
docs: // Serve serves the FUSE connection by making calls to the methods
  // of fs and the Nodes and Handles it makes available.  It returns only
  // when the connection has been closed or an unexpected error occurs.