code: func (v *Variable) inferTypeFromDefault() VariableType {
  	if v.Default == nil {
  		return VariableTypeString
  	}
  
  	var s string
  	if err := hilmapstructure.WeakDecode(v.Default, &s); err == nil {
  		v.Default = s
  		return VariableTypeString
  	}
  
  	var m map[string]interface{}
  	if err := hilmapstructure.WeakDecode(v.Default, &m); err == nil {
  		v.Default = m
  		return VariableTypeMap
  	}
  
  	var l []interface{}
  	if err := hilmapstructure.WeakDecode(v.Default, &l); err == nil {
  		v.Default = l
  		return VariableTypeList
  	}
  
  	return VariableTypeUnknown
  }
docs: // inferTypeFromDefault contains the logic for the old method of inferring
  // variable types - we can also use this for validating that the declared
  // type matches the type of the default value