code: func Equal(a, b interface{}) bool {
  	if reflect.TypeOf(a) == reflect.TypeOf(b) {
  		return reflect.DeepEqual(a, b)
  	}
  	switch a.(type) {
  	case int, int8, int16, int32, int64:
  		switch b.(type) {
  		case int, int8, int16, int32, int64:
  			return reflect.ValueOf(a).Int() == reflect.ValueOf(b).Int()
  		}
  	case uint, uint8, uint16, uint32, uint64:
  		switch b.(type) {
  		case uint, uint8, uint16, uint32, uint64:
  			return reflect.ValueOf(a).Uint() == reflect.ValueOf(b).Uint()
  		}
  	case float32, float64:
  		switch b.(type) {
  		case float32, float64:
  			return reflect.ValueOf(a).Float() == reflect.ValueOf(b).Float()
  		}
  	case string:
  		switch b.(type) {
  		case []byte:
  			return a.(string) == string(b.([]byte))
  		}
  	case []byte:
  		switch b.(type) {
  		case string:
  			return b.(string) == string(a.([]byte))
  		}
  	}
  	return false
  }
docs: // Equal is a helper for comparing value equality, following these rules:
  //  - Values with equivalent types are compared with reflect.DeepEqual
  //  - int, uint, and float values are compared without regard to the type width.
  //    for example, Equal(int32(5), int64(5)) == true
  //  - strings and byte slices are converted to strings before comparison.
  //  - else, return false.