code: func (r *RegisterRequest) ChangesNode(node *Node) bool {
  	// This means it's creating the node.
  	if node == nil {
  		return true
  	}
  
  	// If we've been asked to skip the node update, then say there are no
  	// changes.
  	if r.SkipNodeUpdate {
  		return false
  	}
  
  	// Check if any of the node-level fields are being changed.
  	if r.ID != node.ID ||
  		r.Node != node.Node ||
  		r.Address != node.Address ||
  		r.Datacenter != node.Datacenter ||
  		!reflect.DeepEqual(r.TaggedAddresses, node.TaggedAddresses) ||
  		!reflect.DeepEqual(r.NodeMeta, node.Meta) {
  		return true
  	}
  
  	return false
  }
docs: // ChangesNode returns true if the given register request changes the given
  // node, which can be nil. This only looks for changes to the node record itself,
  // not any of the health checks.