code: func (c *Comm) Remote(channel string, id uint64) (*RemoteContext, error) {
  	c.Lock.RLock()
  	defer c.Lock.RUnlock()
  
  	if c.shutdown {
  		return nil, errors.New("communication has been shut down")
  	}
  
  	mapping, exists := c.Chan2Members[channel]
  	if !exists {
  		return nil, errors.Errorf("channel %s doesn't exist", channel)
  	}
  	stub := mapping.ByID(id)
  	if stub == nil {
  		return nil, errors.Errorf("node %d doesn't exist in channel %s's membership", id, channel)
  	}
  
  	if stub.Active() {
  		return stub.RemoteContext, nil
  	}
  
  	err := stub.Activate(c.createRemoteContext(stub, channel))
  	if err != nil {
  		return nil, errors.WithStack(err)
  	}
  	return stub.RemoteContext, nil
  }
docs: // Remote obtains a RemoteContext linked to the destination node on the context
  // of a given channel