code: func getPotentialTypeValues(typeValue reflect.Type) (map[string]reflect.Type, error) {
  	if typeValue.Kind() == reflect.Ptr {
  		typeValue = typeValue.Elem()
  	}
  
  	if typeValue.Kind() != reflect.Struct {
  		return nil, fmt.Errorf("%v is not of type struct", typeValue)
  	}
  
  	ret := make(map[string]reflect.Type)
  
  	for fieldIndex := 0; fieldIndex < typeValue.NumField(); fieldIndex++ {
  		fieldType := typeValue.Field(fieldIndex)
  		yamlTag := fieldType.Tag.Get("json")
  		yamlTagName := strings.Split(yamlTag, ",")[0]
  
  		ret[yamlTagName] = fieldType.Type
  	}
  
  	return ret, nil
  }
docs: // getPotentialTypeValues takes a type and looks up the tags used to represent its fields when serialized.