-//impl_val *psi_let_arrval(impl_val *tmp, decl_type *spec, decl_var *spec_var, token_t impl_type, impl_val *ival, zval *zvalue, void **to_free)
-//{
-// decl_type *real = real_decl_type(spec);
-// HashTable *arr;
-// zval *zv;
-// size_t i, sz;
-// decl_arg tmp_arg = {0};
-//
-// if (impl_type != PSI_T_ARRAY) {
-// SEPARATE_ARG_IF_REF(zvalue);
-// convert_to_array(zvalue);
-// }
-// arr = HASH_OF(zvalue);
-//
-// switch (real->type) {
-// case PSI_T_STRUCT:
-// *to_free = tmp = psi_array_to_struct(real->real.strct, arr);
-// break;
-// case PSI_T_UNION:
-// *to_free = tmp = psi_array_to_union(real->real.unn, arr);
-// break;
-// default:
-// sz = psi_t_size(real->type);
-// tmp = *to_free = ecalloc(zend_hash_num_elements(arr), sz);
-// tmp_arg.type = spec;
-// tmp_arg.var = spec_var;
-// ZEND_HASH_FOREACH_VAL_IND(arr, zv)
-// {
-// void *ptr = ((char *) tmp) + (i++ * sz);
-// psi_from_zval_ex(NULL, (impl_val **) &ptr, &tmp_arg, 0, zv, NULL);
-// }
-// ZEND_HASH_FOREACH_END();
-// }
-//
-// return tmp;
-//}
-