code: func requireUnpackKind(v reflect.Value, t reflect.Type, k reflect.Kind,
  	args Arguments) error {
  
  	switch k {
  	case reflect.Struct:
  	case reflect.Slice, reflect.Array:
  		if minLen := args.LengthNonIndexed(); v.Len() < minLen {
  			return fmt.Errorf("abi: insufficient number of elements in the list/array for unpack, want %d, got %d",
  				minLen, v.Len())
  		}
  	default:
  		return fmt.Errorf("abi: cannot unmarshal tuple into %v", t)
  	}
  	return nil
  }
docs: // requireUnpackKind verifies preconditions for unpacking `args` into `kind`