code: func (vm *VM) getMetadata() *compute.Metadata {
  	if len(vm.Attributes.GetMetadata()) == 0 {
  		return nil
  	}
  	meta := &compute.Metadata{
  		Items: make([]*compute.MetadataItems, len(vm.Attributes.Metadata)),
  	}
  	for i, data := range vm.Attributes.Metadata {
  		// Implicitly rejects FromFile, which is only supported in configs.
  		spl := strings.SplitN(data.GetFromText(), ":", 2)
  		// Per strings.SplitN semantics, len(spl) > 0 when splitting on a non-empty separator.
  		// Therefore we can be sure the spl[0] exists (even if it's an empty string).
  		key := spl[0]
  		var val *string
  		if len(spl) > 1 {
  			val = &spl[1]
  		}
  		meta.Items[i] = &compute.MetadataItems{
  			Key:   key,
  			Value: val,
  		}
  	}
  	return meta
  }
docs: // getMetadata returns a *compute.Metadata representation of this VM's metadata.