code: func (s *ServiceNode) PartialClone() *ServiceNode {
  	tags := make([]string, len(s.ServiceTags))
  	copy(tags, s.ServiceTags)
  	nsmeta := make(map[string]string)
  	for k, v := range s.ServiceMeta {
  		nsmeta[k] = v
  	}
  
  	return &ServiceNode{
  		// Skip ID, see above.
  		Node: s.Node,
  		// Skip Address, see above.
  		// Skip TaggedAddresses, see above.
  		ServiceKind:              s.ServiceKind,
  		ServiceID:                s.ServiceID,
  		ServiceName:              s.ServiceName,
  		ServiceTags:              tags,
  		ServiceAddress:           s.ServiceAddress,
  		ServicePort:              s.ServicePort,
  		ServiceMeta:              nsmeta,
  		ServiceWeights:           s.ServiceWeights,
  		ServiceEnableTagOverride: s.ServiceEnableTagOverride,
  		// DEPRECATED (ProxyDestination) - remove this when removing ProxyDestination
  		ServiceProxyDestination: s.ServiceProxyDestination,
  		ServiceProxy:            s.ServiceProxy,
  		ServiceConnect:          s.ServiceConnect,
  		RaftIndex: RaftIndex{
  			CreateIndex: s.CreateIndex,
  			ModifyIndex: s.ModifyIndex,
  		},
  	}
  }
docs: // PartialClone() returns a clone of the given service node, minus the node-
  // related fields that get filled in later, Address and TaggedAddresses.