code: func (c *Coordinate) Update(args *structs.CoordinateUpdateRequest, reply *struct{}) (err error) {
  	if done, err := c.srv.forward("Coordinate.Update", args, args, reply); done {
  		return err
  	}
  
  	// Older clients can send coordinates with invalid numeric values like
  	// NaN and Inf. We guard against these coming in, though newer clients
  	// should never send these.
  	if !args.Coord.IsValid() {
  		return fmt.Errorf("invalid coordinate")
  	}
  
  	// Since this is a coordinate coming from some place else we harden this
  	// and look for dimensionality problems proactively.
  	coord, err := c.srv.serfLAN.GetCoordinate()
  	if err != nil {
  		return err
  	}
  	if !coord.IsCompatibleWith(args.Coord) {
  		return fmt.Errorf("incompatible coordinate")
  	}
  
  	// Fetch the ACL token, if any, and enforce the node policy if enabled.
  	rule, err := c.srv.ResolveToken(args.Token)
  	if err != nil {
  		return err
  	}
  	if rule != nil && c.srv.config.ACLEnforceVersion8 {
  		if !rule.NodeWrite(args.Node, nil) {
  			return acl.ErrPermissionDenied
  		}
  	}
  
  	// Add the coordinate to the map of pending updates.
  	key := fmt.Sprintf("%s:%s", args.Node, args.Segment)
  	c.updatesLock.Lock()
  	c.updates[key] = args
  	c.updatesLock.Unlock()
  	return nil
  }
docs: // Update inserts or updates the LAN coordinate of a node.