func (v *Value) IsMSI() bool {
	_, ok := v.data.(map[string]interface{})
	if !ok {
		_, ok = v.data.(Map)
	}
	return ok
}
IsMSI gets whether the object contained is a map[string]interface{} or not.
package objx
func (v *Value) MSI(optionalDefault ...map[string]interface{}) map[string]interface{} {
	if s, ok := v.data.(map[string]interface{}); ok {
		return s
	}
	if s, ok := v.data.(Map); ok {
		return map[string]interface{}(s)
	}
	if len(optionalDefault) == 1 {
		return optionalDefault[0]
	}
	return nil
}
func (v *Value) MustMSI() map[string]interface{} {
	if s, ok := v.data.(Map); ok {
		return map[string]interface{}(s)
	}
	return v.data.(map[string]interface{})
}
func (v *Value) MSISlice(optionalDefault ...[]map[string]interface{}) []map[string]interface{} {
	if s, ok := v.data.([]map[string]interface{}); ok {
		return s
	}
	s := v.ObjxMapSlice()
	if s == nil {
		if len(optionalDefault) == 1 {
			return optionalDefault[0]
		}
		return nil
	}
	result := make([]map[string]interface{}, len(s))
	for i := range s {
		result[i] = s[i].Value().MSI()
	}
	return result
}
func (v *Value) MustMSISlice() []map[string]interface{} {
	if s := v.MSISlice(); s != nil {
		return s
	}
	return v.data.([]map[string]interface{})
}