code: func (h *Hash) MakeMap(m map[interface{}]interface{}) interface{} {
  	hash := reflect.MakeMap(toReflectType(h))
  	for key, value := range m {
  		hash.SetMapIndex(reflect.ValueOf(key), reflect.ValueOf(value))
  	}
  	return hash.Interface()
  }
docs: // MakeMap examines the key type from a Hash and create a map with builtin type if possible.
  // The idea is to avoid generating map[interface{}]interface{}, which cannot be handled by json.Marshal.