code: func marshalVertexID(v Vertex) string {
  	val := reflect.ValueOf(v)
  	switch val.Kind() {
  	case reflect.Chan, reflect.Func, reflect.Map, reflect.Ptr, reflect.Slice, reflect.UnsafePointer:
  		return strconv.Itoa(int(val.Pointer()))
  	case reflect.Interface:
  		return strconv.Itoa(int(val.InterfaceData()[1]))
  	}
  
  	if v, ok := v.(Hashable); ok {
  		h := v.Hashcode()
  		if h, ok := h.(string); ok {
  			return h
  		}
  	}
  
  	// fallback to a name, which we hope is unique.
  	return VertexName(v)
  
  	// we could try harder by attempting to read the arbitrary value from the
  	// interface, but we shouldn't get here from terraform right now.
  }
docs: // Attempt to return a unique ID for any vertex.