]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-7.4'
authorChristoph M. Becker <cmbecker69@gmx.de>
Mon, 6 Apr 2020 10:03:01 +0000 (12:03 +0200)
committerChristoph M. Becker <cmbecker69@gmx.de>
Mon, 6 Apr 2020 10:04:12 +0000 (12:04 +0200)
* PHP-7.4:
  Fix #69264: __debugInfo() ignored while extending SPL classes

15 files changed:
1  2 
ext/spl/spl_array.c
ext/spl/spl_array.stub.php
ext/spl/spl_array_arginfo.h
ext/spl/spl_directory.c
ext/spl/spl_directory.stub.php
ext/spl/spl_directory_arginfo.h
ext/spl/spl_dllist.c
ext/spl/spl_dllist.stub.php
ext/spl/spl_dllist_arginfo.h
ext/spl/spl_heap.c
ext/spl/spl_heap.stub.php
ext/spl/spl_heap_arginfo.h
ext/spl/spl_observer.c
ext/spl/spl_observer.stub.php
ext/spl/spl_observer_arginfo.h

index 434dfc634f9cdc06609099e4d92ed905e88811cd,3803055d3023ccb36168f90347c20bc4eee71a08..cbc40eafe883493b794d97fa60677a89b8193a4c
@@@ -824,7 -822,7 +824,7 @@@ static HashTable *spl_array_get_propert
        return ht;
  } /* }}} */
  
- static HashTable* spl_array_get_debug_info(zend_object *obj, int *is_temp) /* {{{ */
 -static inline HashTable* spl_array_get_debug_info(zval *obj) /* {{{ */
++static inline HashTable* spl_array_get_debug_info(zend_object *obj) /* {{{ */
  {
        zval *storage;
        zend_string *zname;
@@@ -1893,63 -1881,128 +1891,75 @@@ SPL_METHOD(Array, __unserialize
  }
  /* }}} */
  
 -      RETURN_ARR(spl_array_get_debug_info(getThis()));
+ /* {{{ proto void Array::__debugInfo() */
+ SPL_METHOD(Array, __debugInfo)
+ {
+       if (zend_parse_parameters_none() == FAILURE) {
+               return;
+       }
 -/* {{{ arginfo and function table */
 -ZEND_BEGIN_ARG_INFO_EX(arginfo_array___construct, 0, 0, 0)
 -      ZEND_ARG_INFO(0, input)
 -      ZEND_ARG_INFO(0, flags)
 -      ZEND_ARG_INFO(0, iterator_class)
 -ZEND_END_ARG_INFO()
 -
 -/* ArrayIterator::__construct and ArrayObject::__construct have different signatures */
 -ZEND_BEGIN_ARG_INFO_EX(arginfo_array_iterator___construct, 0, 0, 0)
 -      ZEND_ARG_INFO(0, array)
 -      ZEND_ARG_INFO(0, flags)
 -ZEND_END_ARG_INFO()
 -
 -ZEND_BEGIN_ARG_INFO_EX(arginfo_array_offsetGet, 0, 0, 1)
 -      ZEND_ARG_INFO(0, index)
 -ZEND_END_ARG_INFO()
 -
 -ZEND_BEGIN_ARG_INFO_EX(arginfo_array_offsetSet, 0, 0, 2)
 -      ZEND_ARG_INFO(0, index)
 -      ZEND_ARG_INFO(0, newval)
 -ZEND_END_ARG_INFO()
 -
 -ZEND_BEGIN_ARG_INFO(arginfo_array_append, 0)
 -      ZEND_ARG_INFO(0, value)
 -ZEND_END_ARG_INFO()
 -
 -ZEND_BEGIN_ARG_INFO(arginfo_array_seek, 0)
 -      ZEND_ARG_INFO(0, position)
 -ZEND_END_ARG_INFO()
 -
 -ZEND_BEGIN_ARG_INFO(arginfo_array_exchangeArray, 0)
 -      ZEND_ARG_INFO(0, input)
 -ZEND_END_ARG_INFO()
 -
 -ZEND_BEGIN_ARG_INFO(arginfo_array_setFlags, 0)
 -      ZEND_ARG_INFO(0, flags)
 -ZEND_END_ARG_INFO()
 -
 -ZEND_BEGIN_ARG_INFO(arginfo_array_setIteratorClass, 0)
 -      ZEND_ARG_INFO(0, iteratorClass)
 -ZEND_END_ARG_INFO()
 -
 -ZEND_BEGIN_ARG_INFO(arginfo_array_uXsort, 0)
 -      ZEND_ARG_INFO(0, cmp_function)
 -ZEND_END_ARG_INFO();
 -
 -ZEND_BEGIN_ARG_INFO(arginfo_array_unserialize, 0)
 -      ZEND_ARG_INFO(0, serialized)
 -ZEND_END_ARG_INFO();
 -
 -ZEND_BEGIN_ARG_INFO(arginfo_array_void, 0)
 -ZEND_END_ARG_INFO()
 -
++      RETURN_ARR(spl_array_get_debug_info(Z_OBJ_P(ZEND_THIS)));
+ } /* }}} */
  static const zend_function_entry spl_funcs_ArrayObject[] = {
 -      SPL_ME(Array, __construct,      arginfo_array___construct,      ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, offsetExists,     arginfo_array_offsetGet,        ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, offsetGet,        arginfo_array_offsetGet,        ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, offsetSet,        arginfo_array_offsetSet,        ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, offsetUnset,      arginfo_array_offsetGet,        ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, append,           arginfo_array_append,           ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, getArrayCopy,     arginfo_array_void,             ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, count,            arginfo_array_void,             ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, getFlags,         arginfo_array_void,             ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, setFlags,         arginfo_array_setFlags,         ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, asort,            arginfo_array_void,             ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, ksort,            arginfo_array_void,             ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, uasort,           arginfo_array_uXsort,           ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, uksort,           arginfo_array_uXsort,           ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, natsort,          arginfo_array_void,             ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, natcasesort,      arginfo_array_void,             ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, unserialize,      arginfo_array_unserialize,      ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, serialize,        arginfo_array_void,             ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, __unserialize,    arginfo_array_unserialize,      ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, __serialize,      arginfo_array_void,             ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, __debugInfo,      arginfo_array_void,             ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, __construct,      arginfo_class_ArrayObject___construct,          ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, offsetExists,     arginfo_class_ArrayObject_offsetExists,         ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, offsetGet,        arginfo_class_ArrayObject_offsetGet,            ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, offsetSet,        arginfo_class_ArrayObject_offsetSet,            ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, offsetUnset,      arginfo_class_ArrayObject_offsetUnset,          ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, append,           arginfo_class_ArrayObject_append,                       ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, getArrayCopy,     arginfo_class_ArrayObject_getArrayCopy,         ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, count,            arginfo_class_ArrayObject_count,                        ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, getFlags,         arginfo_class_ArrayObject_getFlags,                     ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, setFlags,         arginfo_class_ArrayObject_setFlags,                     ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, asort,            arginfo_class_ArrayObject_asort,                        ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, ksort,            arginfo_class_ArrayObject_ksort,                        ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, uasort,           arginfo_class_ArrayObject_uasort,                       ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, uksort,           arginfo_class_ArrayObject_uksort,                       ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, natsort,          arginfo_class_ArrayObject_natsort,                      ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, natcasesort,      arginfo_class_ArrayObject_natcasesort,          ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, unserialize,      arginfo_class_ArrayObject_unserialize,          ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, serialize,        arginfo_class_ArrayObject_serialize,            ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, __unserialize,    arginfo_class_ArrayObject___unserialize,        ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, __serialize,      arginfo_class_ArrayObject___serialize,          ZEND_ACC_PUBLIC)
++      SPL_ME(Array, __debugInfo,      arginfo_class_ArrayObject___debugInfo,          ZEND_ACC_PUBLIC)
        /* ArrayObject specific */
 -      SPL_ME(Array, getIterator,      arginfo_array_void,             ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, exchangeArray,    arginfo_array_exchangeArray,    ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, setIteratorClass, arginfo_array_setIteratorClass, ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, getIteratorClass, arginfo_array_void,             ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, getIterator,      arginfo_class_ArrayObject_getIterator,          ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, exchangeArray,    arginfo_class_ArrayObject_exchangeArray,        ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, setIteratorClass, arginfo_class_ArrayObject_setIteratorClass,     ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, getIteratorClass, arginfo_class_ArrayObject_getIteratorClass,     ZEND_ACC_PUBLIC)
        PHP_FE_END
  };
  
  static const zend_function_entry spl_funcs_ArrayIterator[] = {
 -      SPL_ME(ArrayIterator, __construct, arginfo_array_iterator___construct,      ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, offsetExists,     arginfo_array_offsetGet,        ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, offsetGet,        arginfo_array_offsetGet,        ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, offsetSet,        arginfo_array_offsetSet,        ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, offsetUnset,      arginfo_array_offsetGet,        ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, append,           arginfo_array_append,           ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, getArrayCopy,     arginfo_array_void,             ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, count,            arginfo_array_void,             ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, getFlags,         arginfo_array_void,             ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, setFlags,         arginfo_array_setFlags,         ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, asort,            arginfo_array_void,             ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, ksort,            arginfo_array_void,             ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, uasort,           arginfo_array_uXsort,           ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, uksort,           arginfo_array_uXsort,           ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, natsort,          arginfo_array_void,             ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, natcasesort,      arginfo_array_void,             ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, unserialize,      arginfo_array_unserialize,      ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, serialize,        arginfo_array_void,             ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, __unserialize,    arginfo_array_unserialize,      ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, __serialize,      arginfo_array_void,             ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, __debugInfo,      arginfo_array_void,             ZEND_ACC_PUBLIC)
 +      SPL_ME(ArrayIterator, __construct, arginfo_class_ArrayIterator___construct,             ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, offsetExists,     arginfo_class_ArrayIterator_offsetExists,               ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, offsetGet,        arginfo_class_ArrayIterator_offsetGet,                  ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, offsetSet,        arginfo_class_ArrayIterator_offsetSet,                  ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, offsetUnset,      arginfo_class_ArrayIterator_offsetUnset,                ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, append,           arginfo_class_ArrayIterator_append,                             ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, getArrayCopy,     arginfo_class_ArrayIterator_getArrayCopy,               ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, count,            arginfo_class_ArrayIterator_count,                              ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, getFlags,         arginfo_class_ArrayIterator_getFlags,                   ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, setFlags,         arginfo_class_ArrayIterator_setFlags,                   ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, asort,            arginfo_class_ArrayIterator_asort,                              ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, ksort,            arginfo_class_ArrayIterator_ksort,                              ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, uasort,           arginfo_class_ArrayIterator_uasort,                             ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, uksort,           arginfo_class_ArrayIterator_uksort,                             ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, natsort,          arginfo_class_ArrayIterator_natsort,                    ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, natcasesort,      arginfo_class_ArrayIterator_natcasesort,                ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, unserialize,      arginfo_class_ArrayIterator_unserialize,                ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, serialize,        arginfo_class_ArrayIterator_serialize,                  ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, __unserialize,    arginfo_class_ArrayIterator___unserialize,              ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, __serialize,      arginfo_class_ArrayIterator___serialize,                ZEND_ACC_PUBLIC)
++      SPL_ME(Array, __debugInfo,      arginfo_class_ArrayIterator___debugInfo,                ZEND_ACC_PUBLIC)
        /* ArrayIterator specific */
 -      SPL_ME(Array, rewind,           arginfo_array_void,             ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, current,          arginfo_array_void,             ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, key,              arginfo_array_void,             ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, next,             arginfo_array_void,             ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, valid,            arginfo_array_void,             ZEND_ACC_PUBLIC)
 -      SPL_ME(Array, seek,             arginfo_array_seek,             ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, rewind,           arginfo_class_ArrayIterator_rewind,                             ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, current,          arginfo_class_ArrayIterator_current,                    ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, key,              arginfo_class_ArrayIterator_key,                                ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, next,             arginfo_class_ArrayIterator_next,                               ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, valid,            arginfo_class_ArrayIterator_valid,                              ZEND_ACC_PUBLIC)
 +      SPL_ME(Array, seek,             arginfo_class_ArrayIterator_seek,                               ZEND_ACC_PUBLIC)
        PHP_FE_END
  };
  
index aa9996c1931452155e6b5e64b7458ba8ed78037b,0000000000000000000000000000000000000000..a68a482edd022057a52a13d15528a74800ee3e59
mode 100755,000000..100755
--- /dev/null
@@@ -1,225 -1,0 +1,231 @@@
 +<?php
 +
 +class ArrayObject implements IteratorAggregate, ArrayAccess, Serializable, Countable
 +{
 +    /** @param array|object $input */
 +    public function __construct($input = [], int $flags = 0, string $iterator_class = ArrayIterator::class) {}
 +
 +    /**
 +     * @param mixed $index
 +     * @return bool
 +     */
 +    public function offsetExists($index) {}
 +
 +    /**
 +     * @param mixed $index
 +     * @return mixed
 +     */
 +    public function offsetGet($index) {}
 +
 +    /**
 +     * @param mixed $index
 +     * @param mixed $value
 +     * @return void
 +     */
 +    public function offsetSet($index, $value) {}
 +
 +    /**
 +     * @param mixed $index
 +     * @return void
 +     */
 +    public function offsetUnset($index) {}
 +
 +    /**
 +     * @param mixed $value
 +     * @return void
 +     */
 +    public function append($value) {}
 +
 +    /** @return array */
 +    public function getArrayCopy() {}
 +
 +    /** @return int */
 +    public function count() {}
 +
 +    /** @return int */
 +    public function getFlags() {}
 +
 +    /** @return void */
 +    public function setFlags(int $flags) {}
 +
 +    /**
 +     * @param int $sort_flags
 +     * @return bool
 +     */
 +    public function asort($sort_flags = SORT_REGULAR) {}
 +
 +    /**
 +     * @param int $sort_flags
 +     * @return bool
 +     */
 +    public function ksort($sort_flags = SORT_REGULAR) {}
 +
 +    /**
 +     * @param callback $cmp_function
 +     * @return bool
 +     */
 +    public function uasort($cmp_function) {}
 +
 +    /**
 +     * @param callback $cmp_function
 +     * @return bool
 +     */
 +    public function uksort($cmp_function) {}
 +
 +    /** @return bool */
 +    public function natsort() {}
 +
 +    /** @return bool */
 +    public function natcasesort() {}
 +
 +    /** @return void */
 +    public function unserialize(string $serialized) {}
 +
 +    /** @return string */
 +    public function serialize() {}
 +
 +    /** @return array */
 +    public function __serialize() {}
 +
 +    /** @return void */
 +    public function __unserialize(array $data) {}
 +
 +    /** @return Iterator */
 +    public function getIterator() {}
 +
 +    /**
 +     * @param array|object $input
 +     * @return array|null
 +     */
 +    public function exchangeArray($input) {}
 +
 +    /** @return void */
 +    public function setIteratorClass(string $iteratorClass) {}
 +
 +    /** @return string */
 +    public function getIteratorClass() {}
++
++    /** @return array */
++    public function __debugInfo() {}
 +}
 +
 +class ArrayIterator implements SeekableIterator, ArrayAccess, Serializable, Countable
 +{
 +    /** @param array|object $array */
 +    public function __construct($array = [], int $flags = 0) {}
 +
 +    /**
 +     * @param mixed $index
 +     * @return bool
 +     */
 +    public function offsetExists($index) {}
 +
 +    /**
 +     * @param mixed $index
 +     * @return mixed
 +     */
 +    public function offsetGet($index) {}
 +
 +    /**
 +     * @param mixed $index
 +     * @param mixed $value
 +     * @return void
 +     */
 +    public function offsetSet($index, $value) {}
 +
 +    /**
 +     * @param mixed $index
 +     * @return void
 +     */
 +    public function offsetUnset($index) {}
 +
 +    /**
 +     * @param mixed $value
 +     * @return void
 +     */
 +    public function append($value) {}
 +
 +    /** @return array */
 +    public function getArrayCopy() {}
 +
 +    /** @return int */
 +    public function count() {}
 +
 +    /** @return int */
 +    public function getFlags() {}
 +
 +    /** @return void */
 +    public function setFlags(int $flags) {}
 +
 +    /**
 +     * @param int $sort_flags
 +     * @return bool
 +     */
 +    public function asort($sort_flags = SORT_REGULAR) {}
 +
 +    /**
 +     * @param int $sort_flags
 +     * @return bool
 +     */
 +    public function ksort($sort_flags = SORT_REGULAR) {}
 +
 +    /**
 +     * @param callback $cmp_function
 +     * @return bool
 +     */
 +    public function uasort($cmp_function) {}
 +
 +    /**
 +     * @param callback $cmp_function
 +     * @return bool
 +     */
 +    public function uksort($cmp_function) {}
 +
 +    /** @return bool */
 +    public function natsort() {}
 +
 +    /** @return bool */
 +    public function natcasesort() {}
 +
 +    /** @return void */
 +    public function unserialize(string $serialized) {}
 +
 +    /** @return string */
 +    public function serialize() {}
 +
 +    /** @return array */
 +    public function __serialize() {}
 +
 +    /** @return void */
 +    public function __unserialize(array $data) {}
 +
 +    /** @return void */
 +    public function rewind() {}
 +
 +    /** @return mixed */
 +    public function current() {}
 +
 +    /** @return mixed */
 +    public function key() {}
 +
 +    /** @return void */
 +    public function next() {}
 +
 +    /** @return bool */
 +    public function valid() {}
 +
 +    /** @return void */
 +    public function seek(int $position) {}
++
++    /** @return array */
++    public function __debugInfo() {}
 +}
 +
 +class RecursiveArrayIterator extends ArrayIterator implements RecursiveIterator
 +{
 +    /** @return bool */
 +    public function hasChildren() {}
 +
 +    /** @return RecursiveArrayIterator|null */
 +    public function getChildren() {}
 +}
index 57cc430ca7d929f6e8c1590e88abbcbee59c4616,0000000000000000000000000000000000000000..fdd025aa2190d9b6c7726fd8ae6913e2435a3518
mode 100644,000000..100644
--- /dev/null
@@@ -1,136 -1,0 +1,140 @@@
 +/* This is a generated file, edit the .stub.php file instead. */
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ArrayObject___construct, 0, 0, 0)
 +      ZEND_ARG_INFO(0, input)
 +      ZEND_ARG_TYPE_INFO(0, flags, IS_LONG, 0)
 +      ZEND_ARG_TYPE_INFO(0, iterator_class, IS_STRING, 0)
 +ZEND_END_ARG_INFO()
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ArrayObject_offsetExists, 0, 0, 1)
 +      ZEND_ARG_INFO(0, index)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_ArrayObject_offsetGet arginfo_class_ArrayObject_offsetExists
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ArrayObject_offsetSet, 0, 0, 2)
 +      ZEND_ARG_INFO(0, index)
 +      ZEND_ARG_INFO(0, value)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_ArrayObject_offsetUnset arginfo_class_ArrayObject_offsetExists
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ArrayObject_append, 0, 0, 1)
 +      ZEND_ARG_INFO(0, value)
 +ZEND_END_ARG_INFO()
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ArrayObject_getArrayCopy, 0, 0, 0)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_ArrayObject_count arginfo_class_ArrayObject_getArrayCopy
 +
 +#define arginfo_class_ArrayObject_getFlags arginfo_class_ArrayObject_getArrayCopy
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ArrayObject_setFlags, 0, 0, 1)
 +      ZEND_ARG_TYPE_INFO(0, flags, IS_LONG, 0)
 +ZEND_END_ARG_INFO()
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ArrayObject_asort, 0, 0, 0)
 +      ZEND_ARG_INFO(0, sort_flags)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_ArrayObject_ksort arginfo_class_ArrayObject_asort
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ArrayObject_uasort, 0, 0, 1)
 +      ZEND_ARG_INFO(0, cmp_function)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_ArrayObject_uksort arginfo_class_ArrayObject_uasort
 +
 +#define arginfo_class_ArrayObject_natsort arginfo_class_ArrayObject_getArrayCopy
 +
 +#define arginfo_class_ArrayObject_natcasesort arginfo_class_ArrayObject_getArrayCopy
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ArrayObject_unserialize, 0, 0, 1)
 +      ZEND_ARG_TYPE_INFO(0, serialized, IS_STRING, 0)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_ArrayObject_serialize arginfo_class_ArrayObject_getArrayCopy
 +
 +#define arginfo_class_ArrayObject___serialize arginfo_class_ArrayObject_getArrayCopy
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ArrayObject___unserialize, 0, 0, 1)
 +      ZEND_ARG_TYPE_INFO(0, data, IS_ARRAY, 0)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_ArrayObject_getIterator arginfo_class_ArrayObject_getArrayCopy
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ArrayObject_exchangeArray, 0, 0, 1)
 +      ZEND_ARG_INFO(0, input)
 +ZEND_END_ARG_INFO()
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ArrayObject_setIteratorClass, 0, 0, 1)
 +      ZEND_ARG_TYPE_INFO(0, iteratorClass, IS_STRING, 0)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_ArrayObject_getIteratorClass arginfo_class_ArrayObject_getArrayCopy
 +
++#define arginfo_class_ArrayObject___debugInfo arginfo_class_ArrayObject_getArrayCopy
++
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ArrayIterator___construct, 0, 0, 0)
 +      ZEND_ARG_INFO(0, array)
 +      ZEND_ARG_TYPE_INFO(0, flags, IS_LONG, 0)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_ArrayIterator_offsetExists arginfo_class_ArrayObject_offsetExists
 +
 +#define arginfo_class_ArrayIterator_offsetGet arginfo_class_ArrayObject_offsetExists
 +
 +#define arginfo_class_ArrayIterator_offsetSet arginfo_class_ArrayObject_offsetSet
 +
 +#define arginfo_class_ArrayIterator_offsetUnset arginfo_class_ArrayObject_offsetExists
 +
 +#define arginfo_class_ArrayIterator_append arginfo_class_ArrayObject_append
 +
 +#define arginfo_class_ArrayIterator_getArrayCopy arginfo_class_ArrayObject_getArrayCopy
 +
 +#define arginfo_class_ArrayIterator_count arginfo_class_ArrayObject_getArrayCopy
 +
 +#define arginfo_class_ArrayIterator_getFlags arginfo_class_ArrayObject_getArrayCopy
 +
 +#define arginfo_class_ArrayIterator_setFlags arginfo_class_ArrayObject_setFlags
 +
 +#define arginfo_class_ArrayIterator_asort arginfo_class_ArrayObject_asort
 +
 +#define arginfo_class_ArrayIterator_ksort arginfo_class_ArrayObject_asort
 +
 +#define arginfo_class_ArrayIterator_uasort arginfo_class_ArrayObject_uasort
 +
 +#define arginfo_class_ArrayIterator_uksort arginfo_class_ArrayObject_uasort
 +
 +#define arginfo_class_ArrayIterator_natsort arginfo_class_ArrayObject_getArrayCopy
 +
 +#define arginfo_class_ArrayIterator_natcasesort arginfo_class_ArrayObject_getArrayCopy
 +
 +#define arginfo_class_ArrayIterator_unserialize arginfo_class_ArrayObject_unserialize
 +
 +#define arginfo_class_ArrayIterator_serialize arginfo_class_ArrayObject_getArrayCopy
 +
 +#define arginfo_class_ArrayIterator___serialize arginfo_class_ArrayObject_getArrayCopy
 +
 +#define arginfo_class_ArrayIterator___unserialize arginfo_class_ArrayObject___unserialize
 +
 +#define arginfo_class_ArrayIterator_rewind arginfo_class_ArrayObject_getArrayCopy
 +
 +#define arginfo_class_ArrayIterator_current arginfo_class_ArrayObject_getArrayCopy
 +
 +#define arginfo_class_ArrayIterator_key arginfo_class_ArrayObject_getArrayCopy
 +
 +#define arginfo_class_ArrayIterator_next arginfo_class_ArrayObject_getArrayCopy
 +
 +#define arginfo_class_ArrayIterator_valid arginfo_class_ArrayObject_getArrayCopy
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ArrayIterator_seek, 0, 0, 1)
 +      ZEND_ARG_TYPE_INFO(0, position, IS_LONG, 0)
 +ZEND_END_ARG_INFO()
 +
++#define arginfo_class_ArrayIterator___debugInfo arginfo_class_ArrayObject_getArrayCopy
++
 +#define arginfo_class_RecursiveArrayIterator_hasChildren arginfo_class_ArrayObject_getArrayCopy
 +
 +#define arginfo_class_RecursiveArrayIterator_getChildren arginfo_class_ArrayObject_getArrayCopy
index ef7584ac583afcc4efb8d59b0ea8110a664f9bce,d42e6367c2f3e39a8953d8e6b70904ac359bef0c..af7185ac7113b51d65747c440089d88922f5efd3
@@@ -596,9 -598,9 +596,9 @@@ static char *spl_filesystem_object_get_
  }
  /* }}} */
  
- static HashTable *spl_filesystem_object_get_debug_info(zend_object *object, int *is_temp) /* {{{ */
 -static inline HashTable *spl_filesystem_object_get_debug_info(zval *object) /* {{{ */
++static inline HashTable *spl_filesystem_object_get_debug_info(zend_object *object) /* {{{ */
  {
 -      spl_filesystem_object *intern = Z_SPLFILESYSTEM_P(object);
 +      spl_filesystem_object *intern = spl_filesystem_from_obj(object);
        zval tmp;
        HashTable *rv;
        zend_string *pnstr;
@@@ -1403,6 -1419,16 +1401,16 @@@ SPL_METHOD(SplFileInfo, getPathInfo
  }
  /* }}} */
  
 -      RETURN_ARR(spl_filesystem_object_get_debug_info(getThis()));
+ /* {{{ proto void SplFileInfo::__debugInfo() */
+ SPL_METHOD(SplFileInfo, __debugInfo)
+ {
+       if (zend_parse_parameters_none() == FAILURE) {
+               return;
+       }
++      RETURN_ARR(spl_filesystem_object_get_debug_info(Z_OBJ_P(ZEND_THIS)));
+ } /* }}} */
  /* {{{  proto SplFileInfo::_bad_state_ex(void) */
  SPL_METHOD(SplFileInfo, _bad_state_ex)
  {
@@@ -1876,36 -1902,62 +1884,37 @@@ static int spl_filesystem_object_cast(z
  /* the method table */
  /* each method can have its own parameters and visibility */
  static const zend_function_entry spl_SplFileInfo_functions[] = {
 -      SPL_ME(SplFileInfo,       __construct,   arginfo_info___construct, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplFileInfo,       getPath,       arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplFileInfo,       getFilename,   arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplFileInfo,       getExtension,  arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplFileInfo,       getBasename,   arginfo_optinalSuffix, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplFileInfo,       getPathname,   arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplFileInfo,       getPerms,      arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplFileInfo,       getInode,      arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplFileInfo,       getSize,       arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplFileInfo,       getOwner,      arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplFileInfo,       getGroup,      arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplFileInfo,       getATime,      arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplFileInfo,       getMTime,      arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplFileInfo,       getCTime,      arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplFileInfo,       getType,       arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplFileInfo,       isWritable,    arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplFileInfo,       isReadable,    arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplFileInfo,       isExecutable,  arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplFileInfo,       isFile,        arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplFileInfo,       isDir,         arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplFileInfo,       isLink,        arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplFileInfo,       getLinkTarget, arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
 -#if HAVE_REALPATH || defined(ZTS)
 -      SPL_ME(SplFileInfo,       getRealPath,   arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
 -#endif
 -      SPL_ME(SplFileInfo,       getFileInfo,   arginfo_info_optinalFileClass, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplFileInfo,       getPathInfo,   arginfo_info_optinalFileClass, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplFileInfo,       openFile,      arginfo_info_openFile,         ZEND_ACC_PUBLIC)
 -      SPL_ME(SplFileInfo,       setFileClass,  arginfo_info_optinalFileClass, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplFileInfo,       setInfoClass,  arginfo_info_optinalFileClass, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplFileInfo,       __debugInfo,   arginfo_splfileinfo_void,      ZEND_ACC_PUBLIC)
 -      SPL_ME(SplFileInfo,       _bad_state_ex, NULL,                                                  ZEND_ACC_PUBLIC|ZEND_ACC_FINAL)
 -      SPL_MA(SplFileInfo,       __toString, SplFileInfo, getPathname, arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
 +      SPL_ME(SplFileInfo,       __construct,   arginfo_class_SplFileInfo___construct, ZEND_ACC_PUBLIC)
 +      SPL_ME(SplFileInfo,       getPath,       arginfo_class_SplFileInfo_getPath, ZEND_ACC_PUBLIC)
 +      SPL_ME(SplFileInfo,       getFilename,   arginfo_class_SplFileInfo_getFilename, ZEND_ACC_PUBLIC)
 +      SPL_ME(SplFileInfo,       getExtension,  arginfo_class_SplFileInfo_getExtension, ZEND_ACC_PUBLIC)
 +      SPL_ME(SplFileInfo,       getBasename,   arginfo_class_SplFileInfo_getBasename, ZEND_ACC_PUBLIC)
 +      SPL_ME(SplFileInfo,       getPathname,   arginfo_class_SplFileInfo_getPathname, ZEND_ACC_PUBLIC)
 +      SPL_ME(SplFileInfo,       getPerms,      arginfo_class_SplFileInfo_getPerms, ZEND_ACC_PUBLIC)
 +      SPL_ME(SplFileInfo,       getInode,      arginfo_class_SplFileInfo_getInode, ZEND_ACC_PUBLIC)
 +      SPL_ME(SplFileInfo,       getSize,       arginfo_class_SplFileInfo_getSize, ZEND_ACC_PUBLIC)
 +      SPL_ME(SplFileInfo,       getOwner,      arginfo_class_SplFileInfo_getOwner, ZEND_ACC_PUBLIC)
 +      SPL_ME(SplFileInfo,       getGroup,      arginfo_class_SplFileInfo_getGroup, ZEND_ACC_PUBLIC)
 +      SPL_ME(SplFileInfo,       getATime,      arginfo_class_SplFileInfo_getATime, ZEND_ACC_PUBLIC)
 +      SPL_ME(SplFileInfo,       getMTime,      arginfo_class_SplFileInfo_getMTime, ZEND_ACC_PUBLIC)
 +      SPL_ME(SplFileInfo,       getCTime,      arginfo_class_SplFileInfo_getCTime, ZEND_ACC_PUBLIC)
 +      SPL_ME(SplFileInfo,       getType,       arginfo_class_SplFileInfo_getType, ZEND_ACC_PUBLIC)
 +      SPL_ME(SplFileInfo,       isWritable,    arginfo_class_SplFileInfo_isWritable, ZEND_ACC_PUBLIC)
 +      SPL_ME(SplFileInfo,       isReadable,    arginfo_class_SplFileInfo_isReadable, ZEND_ACC_PUBLIC)
 +      SPL_ME(SplFileInfo,       isExecutable,  arginfo_class_SplFileInfo_isExecutable, ZEND_ACC_PUBLIC)
 +      SPL_ME(SplFileInfo,       isFile,        arginfo_class_SplFileInfo_isFile, ZEND_ACC_PUBLIC)
 +      SPL_ME(SplFileInfo,       isDir,         arginfo_class_SplFileInfo_isDir, ZEND_ACC_PUBLIC)
 +      SPL_ME(SplFileInfo,       isLink,        arginfo_class_SplFileInfo_isLink, ZEND_ACC_PUBLIC)
 +      SPL_ME(SplFileInfo,       getLinkTarget, arginfo_class_SplFileInfo_getLinkTarget, ZEND_ACC_PUBLIC)
 +      SPL_ME(SplFileInfo,       getRealPath,   arginfo_class_SplFileInfo_getRealPath, ZEND_ACC_PUBLIC)
 +      SPL_ME(SplFileInfo,       getFileInfo,   arginfo_class_SplFileInfo_getFileInfo, ZEND_ACC_PUBLIC)
 +      SPL_ME(SplFileInfo,       getPathInfo,   arginfo_class_SplFileInfo_getPathInfo, ZEND_ACC_PUBLIC)
 +      SPL_ME(SplFileInfo,       openFile,      arginfo_class_SplFileInfo_openFile,         ZEND_ACC_PUBLIC)
 +      SPL_ME(SplFileInfo,       setFileClass,  arginfo_class_SplFileInfo_setFileClass, ZEND_ACC_PUBLIC)
 +      SPL_ME(SplFileInfo,       setInfoClass,  arginfo_class_SplFileInfo_setInfoClass, ZEND_ACC_PUBLIC)
++      SPL_ME(SplFileInfo,       __debugInfo,   arginfo_class_SplFileInfo___debugInfo, ZEND_ACC_PUBLIC)
 +      SPL_ME(SplFileInfo,       _bad_state_ex, arginfo_class_SplFileInfo__bad_state_ex,               ZEND_ACC_PUBLIC|ZEND_ACC_FINAL)
 +      SPL_MA(SplFileInfo,       __toString, SplFileInfo, getPathname, arginfo_class_SplFileInfo___toString, ZEND_ACC_PUBLIC)
        PHP_FE_END
  };
  
index c5a63ef1cd0d1d34c7b132c439975592f2f0dcc8,0000000000000000000000000000000000000000..6e8108b6a3dc2bdac19440e7fb03c41e47adca9e
mode 100755,000000..100755
--- /dev/null
@@@ -1,286 -1,0 +1,289 @@@
 +<?php
 +
 +class SplFileInfo
 +{
 +    public function __construct(string $file_name) {}
 +
 +    /** @return string */
 +    public function getPath() {}
 +
 +    /** @return string */
 +    public function getFilename() {}
 +
 +    /** @return string */
 +    public function getExtension() {}
 +
 +    /** @return string */
 +    public function getBasename(string $suffix = "") {}
 +
 +    /** @return string|false */
 +    public function getPathname() {}
 +
 +    /** @return int|false */
 +    public function getPerms() {}
 +
 +    /** @return int|false */
 +    public function getInode() {}
 +
 +    /** @return int|false */
 +    public function getSize() {}
 +
 +    /** @return int|false */
 +    public function getOwner() {}
 +
 +    /** @return int|false */
 +    public function getGroup() {}
 +
 +    /** @return int|false */
 +    public function getATime() {}
 +
 +    /** @return int|false */
 +    public function getMTime() {}
 +
 +    /** @return int|false */
 +    public function getCTime() {}
 +
 +    /** @return string|false */
 +    public function getType() {}
 +
 +    /** @return bool */
 +    public function isWritable() {}
 +
 +    /** @return bool */
 +    public function isReadable() {}
 +
 +    /** @return bool */
 +    public function isExecutable() {}
 +
 +    /** @return bool */
 +    public function isFile() {}
 +
 +    /** @return bool */
 +    public function isDir() {}
 +
 +    /** @return bool */
 +    public function isLink() {}
 +
 +    /** @return string|false */
 +    public function getLinkTarget() {}
 +
 +    /** @return string|false */
 +    public function getRealPath() {}
 +
 +    /** @return SplFileInfo */
 +    public function getFileInfo(string $class_name = UNKNOWN) {}
 +
 +    /** @return SplFileInfo|null */
 +    public function getPathInfo(string $class_name = UNKNOWN) {}
 +
 +    /**
 +     * @param resource $context
 +     * @return SplFileObject
 +     */
 +    public function openFile(string $open_mode = 'r', bool $use_include_path = false, $context = UNKNOWN) {}
 +
 +    /** @return void */
 +    public function setFileClass(string $class_name = SplFileObject::class) {}
 +
 +    /** @return void */
 +    public function setInfoClass(string $class_name = SplFileInfo::class) {}
 +
 +    public function __toString(): string {}
 +
++    /** @return array */
++    public function __debugInfo() {}
++
 +    /** @return void */
 +    final public function _bad_state_ex() {}
 +}
 +
 +class DirectoryIterator extends SplFileInfo implements SeekableIterator
 +{
 +    public function __construct(string $path) {}
 +
 +    /** @return string */
 +    public function getFilename() {}
 +
 +    /** @return string */
 +    public function getExtension() {}
 +
 +    /** @return string */
 +    public function getBasename(string $suffix = "") {}
 +
 +    /** @return bool */
 +    public function isDot() {}
 +
 +    /** @return void */
 +    public function rewind() {}
 +
 +    /** @return bool */
 +    public function valid() {}
 +
 +    /** @return int|false */
 +    public function key() {}
 +
 +    /** @return DirectoryIterator */
 +    public function current() {}
 +
 +    /** @return void */
 +    public function next() {}
 +
 +    /** @return void */
 +    public function seek(int $position) {}
 +
 +    public function __toString(): string {}
 +}
 +
 +class FilesystemIterator extends DirectoryIterator
 +{
 +    public function __construct(string $path, int $flags = FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::SKIP_DOTS) {}
 +
 +    /** @return void */
 +    public function rewind() {}
 +
 +    /** @return void */
 +    public function next() {}
 +
 +    /** @return string */
 +    public function key() {}
 +
 +    /** @return string|SplFileInfo|self */
 +    public function current() {}
 +
 +    /** @return int */
 +    public function getFlags() {}
 +
 +    /** @return void */
 +    public function setFlags(int $flags) {}
 +}
 +
 +class RecursiveDirectoryIterator extends FilesystemIterator implements RecursiveIterator
 +{
 +    public function __construct(string $path, int $flags = FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO) {}
 +
 +    /** @return bool */
 +    public function hasChildren(bool $allow_links = false) {}
 +
 +    /** @return RecursiveDirectoryIterator */
 +    public function getChildren() {}
 +
 +    /** @return string */
 +    public function getSubPath() {}
 +
 +    /** @return string */
 +    public function getSubPathname() {}
 +}
 +
 +class GlobIterator extends FilesystemIterator implements Countable
 +{
 +    public function __construct(string $path, int $flags = FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO) {}
 +
 +    /** @return int */
 +    public function count() {}
 +}
 +
 +class SplFileObject extends SplFileInfo implements RecursiveIterator, SeekableIterator
 +{
 +    /** @param resource|null $context */
 +    public function __construct(string $file_name, string $open_mode = 'r', bool $use_include_path = false, $context = null) {}
 +
 +    /** @return void */
 +    public function rewind() {}
 +
 +    /** @return bool */
 +    public function eof() {}
 +
 +    /** @return bool */
 +    public function valid() {}
 +
 +    /** @return string|false */
 +    public function fgets() {}
 +
 +    /** @return string|false */
 +    public function fread(int $length) {}
 +
 +    /** @return array|false */
 +    public function fgetcsv(string $delimiter = ",", string $enclosure = '"', $escape = "\\") {}
 +
 +    /** @return int|false */
 +    public function fputcsv(array $fields, string $delimiter = ',', string $enclosure = '"', string $escape = "\\") {}
 +
 +    /** @return null|false */
 +    public function setCsvControl(string $delimiter = ",", string $enclosure = "\"", string $escape = "\\") {}
 +
 +    /** @return array */
 +    public function getCsvControl() {}
 +
 +    /** @return bool */
 +    public function flock(int $operation, &$wouldblock = null) {}
 +
 +    /** @return bool */
 +    public function fflush() {}
 +
 +    /** @return int|false */
 +    public function ftell() {}
 +
 +    /** @return int */
 +    public function fseek(int $offset, int $whence = SEEK_SET) {}
 +
 +    /** @return string|false */
 +    public function fgetc() {}
 +
 +    /** @return int */
 +    public function fpassthru() {}
 +
 +    /**
 +     * @param string $format
 +     * @return array|int
 +     */
 +    public function fscanf(string $format, &...$params) {}
 +
 +    /** @return int|false */
 +    public function fwrite(string $str, int $length = 0) {}
 +
 +    /** @return array */
 +    public function fstat() {}
 +
 +    /** @return bool */
 +    public function ftruncate(int $size) {}
 +
 +    /** @return string|array|false */
 +    public function current() {}
 +
 +    /** @return int */
 +    public function key() {}
 +
 +    /** @return void */
 +    public function next() {}
 +
 +    /** @return void */
 +    public function setFlags(int $flags) {}
 +
 +    /** @return int */
 +    public function getFlags() {}
 +
 +    /** @return void */
 +    public function setMaxLineLen(int $max_len) {}
 +
 +    /** @return int */
 +    public function getMaxLineLen() {}
 +
 +    /** @return bool */
 +    public function hasChildren() {}
 +
 +    /** @return null */
 +    public function getChildren() {}
 +
 +    /** @return void */
 +    public function seek(int $line_pos) {}
 +
 +    /** @return string|false */
 +    public function getCurrentLine() {}
 +
 +    public function __toString(): string {}
 +}
 +
 +class SplTempFileObject extends SplFileObject
 +{
 +    public function __construct(int $max_memory = 2 * 1024 * 1024) {}
 +}
index daf1653dbfcfd9707ea1daa5c6bf804f2735ef19,0000000000000000000000000000000000000000..676749278b2b47516e4b12cbfe1ac99194ccfba6
mode 100644,000000..100644
--- /dev/null
@@@ -1,242 -1,0 +1,244 @@@
 +/* This is a generated file, edit the .stub.php file instead. */
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileInfo___construct, 0, 0, 1)
 +      ZEND_ARG_TYPE_INFO(0, file_name, IS_STRING, 0)
 +ZEND_END_ARG_INFO()
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileInfo_getPath, 0, 0, 0)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_SplFileInfo_getFilename arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_SplFileInfo_getExtension arginfo_class_SplFileInfo_getPath
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileInfo_getBasename, 0, 0, 0)
 +      ZEND_ARG_TYPE_INFO(0, suffix, IS_STRING, 0)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_SplFileInfo_getPathname arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_SplFileInfo_getPerms arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_SplFileInfo_getInode arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_SplFileInfo_getSize arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_SplFileInfo_getOwner arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_SplFileInfo_getGroup arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_SplFileInfo_getATime arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_SplFileInfo_getMTime arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_SplFileInfo_getCTime arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_SplFileInfo_getType arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_SplFileInfo_isWritable arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_SplFileInfo_isReadable arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_SplFileInfo_isExecutable arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_SplFileInfo_isFile arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_SplFileInfo_isDir arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_SplFileInfo_isLink arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_SplFileInfo_getLinkTarget arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_SplFileInfo_getRealPath arginfo_class_SplFileInfo_getPath
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileInfo_getFileInfo, 0, 0, 0)
 +      ZEND_ARG_TYPE_INFO(0, class_name, IS_STRING, 0)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_SplFileInfo_getPathInfo arginfo_class_SplFileInfo_getFileInfo
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileInfo_openFile, 0, 0, 0)
 +      ZEND_ARG_TYPE_INFO(0, open_mode, IS_STRING, 0)
 +      ZEND_ARG_TYPE_INFO(0, use_include_path, _IS_BOOL, 0)
 +      ZEND_ARG_INFO(0, context)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_SplFileInfo_setFileClass arginfo_class_SplFileInfo_getFileInfo
 +
 +#define arginfo_class_SplFileInfo_setInfoClass arginfo_class_SplFileInfo_getFileInfo
 +
 +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_SplFileInfo___toString, 0, 0, IS_STRING, 0)
 +ZEND_END_ARG_INFO()
 +
++#define arginfo_class_SplFileInfo___debugInfo arginfo_class_SplFileInfo_getPath
++
 +#define arginfo_class_SplFileInfo__bad_state_ex arginfo_class_SplFileInfo_getPath
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_DirectoryIterator___construct, 0, 0, 1)
 +      ZEND_ARG_TYPE_INFO(0, path, IS_STRING, 0)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_DirectoryIterator_getFilename arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_DirectoryIterator_getExtension arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_DirectoryIterator_getBasename arginfo_class_SplFileInfo_getBasename
 +
 +#define arginfo_class_DirectoryIterator_isDot arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_DirectoryIterator_rewind arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_DirectoryIterator_valid arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_DirectoryIterator_key arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_DirectoryIterator_current arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_DirectoryIterator_next arginfo_class_SplFileInfo_getPath
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_DirectoryIterator_seek, 0, 0, 1)
 +      ZEND_ARG_TYPE_INFO(0, position, IS_LONG, 0)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_DirectoryIterator___toString arginfo_class_SplFileInfo___toString
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_FilesystemIterator___construct, 0, 0, 1)
 +      ZEND_ARG_TYPE_INFO(0, path, IS_STRING, 0)
 +      ZEND_ARG_TYPE_INFO(0, flags, IS_LONG, 0)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_FilesystemIterator_rewind arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_FilesystemIterator_next arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_FilesystemIterator_key arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_FilesystemIterator_current arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_FilesystemIterator_getFlags arginfo_class_SplFileInfo_getPath
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_FilesystemIterator_setFlags, 0, 0, 1)
 +      ZEND_ARG_TYPE_INFO(0, flags, IS_LONG, 0)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_RecursiveDirectoryIterator___construct arginfo_class_FilesystemIterator___construct
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RecursiveDirectoryIterator_hasChildren, 0, 0, 0)
 +      ZEND_ARG_TYPE_INFO(0, allow_links, _IS_BOOL, 0)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_RecursiveDirectoryIterator_getChildren arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_RecursiveDirectoryIterator_getSubPath arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_RecursiveDirectoryIterator_getSubPathname arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_GlobIterator___construct arginfo_class_FilesystemIterator___construct
 +
 +#define arginfo_class_GlobIterator_count arginfo_class_SplFileInfo_getPath
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileObject___construct, 0, 0, 1)
 +      ZEND_ARG_TYPE_INFO(0, file_name, IS_STRING, 0)
 +      ZEND_ARG_TYPE_INFO(0, open_mode, IS_STRING, 0)
 +      ZEND_ARG_TYPE_INFO(0, use_include_path, _IS_BOOL, 0)
 +      ZEND_ARG_INFO(0, context)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_SplFileObject_rewind arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_SplFileObject_eof arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_SplFileObject_valid arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_SplFileObject_fgets arginfo_class_SplFileInfo_getPath
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileObject_fread, 0, 0, 1)
 +      ZEND_ARG_TYPE_INFO(0, length, IS_LONG, 0)
 +ZEND_END_ARG_INFO()
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileObject_fgetcsv, 0, 0, 0)
 +      ZEND_ARG_TYPE_INFO(0, delimiter, IS_STRING, 0)
 +      ZEND_ARG_TYPE_INFO(0, enclosure, IS_STRING, 0)
 +      ZEND_ARG_INFO(0, escape)
 +ZEND_END_ARG_INFO()
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileObject_fputcsv, 0, 0, 1)
 +      ZEND_ARG_TYPE_INFO(0, fields, IS_ARRAY, 0)
 +      ZEND_ARG_TYPE_INFO(0, delimiter, IS_STRING, 0)
 +      ZEND_ARG_TYPE_INFO(0, enclosure, IS_STRING, 0)
 +      ZEND_ARG_TYPE_INFO(0, escape, IS_STRING, 0)
 +ZEND_END_ARG_INFO()
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileObject_setCsvControl, 0, 0, 0)
 +      ZEND_ARG_TYPE_INFO(0, delimiter, IS_STRING, 0)
 +      ZEND_ARG_TYPE_INFO(0, enclosure, IS_STRING, 0)
 +      ZEND_ARG_TYPE_INFO(0, escape, IS_STRING, 0)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_SplFileObject_getCsvControl arginfo_class_SplFileInfo_getPath
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileObject_flock, 0, 0, 1)
 +      ZEND_ARG_TYPE_INFO(0, operation, IS_LONG, 0)
 +      ZEND_ARG_INFO(1, wouldblock)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_SplFileObject_fflush arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_SplFileObject_ftell arginfo_class_SplFileInfo_getPath
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileObject_fseek, 0, 0, 1)
 +      ZEND_ARG_TYPE_INFO(0, offset, IS_LONG, 0)
 +      ZEND_ARG_TYPE_INFO(0, whence, IS_LONG, 0)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_SplFileObject_fgetc arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_SplFileObject_fpassthru arginfo_class_SplFileInfo_getPath
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileObject_fscanf, 0, 0, 1)
 +      ZEND_ARG_TYPE_INFO(0, format, IS_STRING, 0)
 +      ZEND_ARG_VARIADIC_INFO(1, params)
 +ZEND_END_ARG_INFO()
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileObject_fwrite, 0, 0, 1)
 +      ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0)
 +      ZEND_ARG_TYPE_INFO(0, length, IS_LONG, 0)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_SplFileObject_fstat arginfo_class_SplFileInfo_getPath
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileObject_ftruncate, 0, 0, 1)
 +      ZEND_ARG_TYPE_INFO(0, size, IS_LONG, 0)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_SplFileObject_current arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_SplFileObject_key arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_SplFileObject_next arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_SplFileObject_setFlags arginfo_class_FilesystemIterator_setFlags
 +
 +#define arginfo_class_SplFileObject_getFlags arginfo_class_SplFileInfo_getPath
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileObject_setMaxLineLen, 0, 0, 1)
 +      ZEND_ARG_TYPE_INFO(0, max_len, IS_LONG, 0)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_SplFileObject_getMaxLineLen arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_SplFileObject_hasChildren arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_SplFileObject_getChildren arginfo_class_SplFileInfo_getPath
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFileObject_seek, 0, 0, 1)
 +      ZEND_ARG_TYPE_INFO(0, line_pos, IS_LONG, 0)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_SplFileObject_getCurrentLine arginfo_class_SplFileInfo_getPath
 +
 +#define arginfo_class_SplFileObject___toString arginfo_class_SplFileInfo___toString
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplTempFileObject___construct, 0, 0, 0)
 +      ZEND_ARG_TYPE_INFO(0, max_memory, IS_LONG, 0)
 +ZEND_END_ARG_INFO()
index 0aa4250fe468bcde38b96661587b86d039438f28,ce5504da7e56035152048413c87b620e35a27785..c4fb6f292ed907d8cdfc9b8e3d95a2878b53358e
@@@ -488,9 -492,9 +488,9 @@@ static int spl_dllist_object_count_elem
  }
  /* }}} */
  
- static HashTable* spl_dllist_object_get_debug_info(zend_object *obj, int *is_temp) /* {{{{ */
 -static inline HashTable* spl_dllist_object_get_debug_info(zval *obj) /* {{{{ */
++static inline HashTable* spl_dllist_object_get_debug_info(zend_object *obj) /* {{{{ */
  {
 -      spl_dllist_object     *intern  = Z_SPLDLLIST_P(obj);
 +      spl_dllist_object     *intern  = spl_dllist_from_obj(obj);
        spl_ptr_llist_element *current = intern->llist->head, *next;
        zval tmp, dllist_array;
        zend_string *pnstr;
@@@ -1331,6 -1343,16 +1330,16 @@@ SPL_METHOD(SplDoublyLinkedList, add
        }
  } /* }}} */
  
 -      RETURN_ARR(spl_dllist_object_get_debug_info(getThis()));
+ /* {{{ proto void SplDoublyLinkedList::__debugInfo() */
+ SPL_METHOD(SplDoublyLinkedList, __debugInfo)
+ {
+       if (zend_parse_parameters_none() == FAILURE) {
+               return;
+       }
++      RETURN_ARR(spl_dllist_object_get_debug_info(Z_OBJ_P(ZEND_THIS)));
+ } /* }}} */
  /* {{{ iterator handler table */
  static const zend_object_iterator_funcs spl_dllist_it_funcs = {
        spl_dllist_it_dtor,
@@@ -1378,37 -1425,38 +1387,38 @@@ static const zend_function_entry spl_fu
  };
  
  static const zend_function_entry spl_funcs_SplDoublyLinkedList[] = {
 -      SPL_ME(SplDoublyLinkedList, pop,             arginfo_dllist_void,            ZEND_ACC_PUBLIC)
 -      SPL_ME(SplDoublyLinkedList, shift,           arginfo_dllist_void,            ZEND_ACC_PUBLIC)
 -      SPL_ME(SplDoublyLinkedList, push,            arginfo_dllist_push,            ZEND_ACC_PUBLIC)
 -      SPL_ME(SplDoublyLinkedList, unshift,         arginfo_dllist_push,            ZEND_ACC_PUBLIC)
 -      SPL_ME(SplDoublyLinkedList, top,             arginfo_dllist_void,            ZEND_ACC_PUBLIC)
 -      SPL_ME(SplDoublyLinkedList, bottom,          arginfo_dllist_void,            ZEND_ACC_PUBLIC)
 -      SPL_ME(SplDoublyLinkedList, isEmpty,         arginfo_dllist_void,            ZEND_ACC_PUBLIC)
 -      SPL_ME(SplDoublyLinkedList, setIteratorMode, arginfo_dllist_setiteratormode, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplDoublyLinkedList, getIteratorMode, arginfo_dllist_void,            ZEND_ACC_PUBLIC)
 -      SPL_ME(SplDoublyLinkedList, __debugInfo,     arginfo_dllist_void,            ZEND_ACC_PUBLIC)
 +      SPL_ME(SplDoublyLinkedList, pop,             arginfo_class_SplDoublyLinkedList_pop,            ZEND_ACC_PUBLIC)
 +      SPL_ME(SplDoublyLinkedList, shift,           arginfo_class_SplDoublyLinkedList_shift,            ZEND_ACC_PUBLIC)
 +      SPL_ME(SplDoublyLinkedList, push,            arginfo_class_SplDoublyLinkedList_push,            ZEND_ACC_PUBLIC)
 +      SPL_ME(SplDoublyLinkedList, unshift,         arginfo_class_SplDoublyLinkedList_unshift,            ZEND_ACC_PUBLIC)
 +      SPL_ME(SplDoublyLinkedList, top,             arginfo_class_SplDoublyLinkedList_top,            ZEND_ACC_PUBLIC)
 +      SPL_ME(SplDoublyLinkedList, bottom,          arginfo_class_SplDoublyLinkedList_bottom,            ZEND_ACC_PUBLIC)
 +      SPL_ME(SplDoublyLinkedList, isEmpty,         arginfo_class_SplDoublyLinkedList_isEmpty,            ZEND_ACC_PUBLIC)
 +      SPL_ME(SplDoublyLinkedList, setIteratorMode, arginfo_class_SplDoublyLinkedList_setIteratorMode, ZEND_ACC_PUBLIC)
 +      SPL_ME(SplDoublyLinkedList, getIteratorMode, arginfo_class_SplDoublyLinkedList_getIteratorMode,            ZEND_ACC_PUBLIC)
++      SPL_ME(SplDoublyLinkedList, __debugInfo,     arginfo_class_SplDoublyLinkedList___debugInfo,            ZEND_ACC_PUBLIC)
        /* Countable */
 -      SPL_ME(SplDoublyLinkedList, count,           arginfo_dllist_void,            ZEND_ACC_PUBLIC)
 +      SPL_ME(SplDoublyLinkedList, count,           arginfo_class_SplDoublyLinkedList_count,            ZEND_ACC_PUBLIC)
        /* ArrayAccess */
 -      SPL_ME(SplDoublyLinkedList, offsetExists,    arginfo_dllist_offsetGet,       ZEND_ACC_PUBLIC)
 -      SPL_ME(SplDoublyLinkedList, offsetGet,       arginfo_dllist_offsetGet,       ZEND_ACC_PUBLIC)
 -      SPL_ME(SplDoublyLinkedList, offsetSet,       arginfo_dllist_offsetSet,       ZEND_ACC_PUBLIC)
 -      SPL_ME(SplDoublyLinkedList, offsetUnset,     arginfo_dllist_offsetGet,       ZEND_ACC_PUBLIC)
 +      SPL_ME(SplDoublyLinkedList, offsetExists,    arginfo_class_SplDoublyLinkedList_offsetExists,       ZEND_ACC_PUBLIC)
 +      SPL_ME(SplDoublyLinkedList, offsetGet,       arginfo_class_SplDoublyLinkedList_offsetGet,       ZEND_ACC_PUBLIC)
 +      SPL_ME(SplDoublyLinkedList, offsetSet,       arginfo_class_SplDoublyLinkedList_offsetSet,       ZEND_ACC_PUBLIC)
 +      SPL_ME(SplDoublyLinkedList, offsetUnset,     arginfo_class_SplDoublyLinkedList_offsetUnset,       ZEND_ACC_PUBLIC)
  
 -      SPL_ME(SplDoublyLinkedList, add,             arginfo_dllist_offsetSet,       ZEND_ACC_PUBLIC)
 +      SPL_ME(SplDoublyLinkedList, add,             arginfo_class_SplDoublyLinkedList_add,       ZEND_ACC_PUBLIC)
  
        /* Iterator */
 -      SPL_ME(SplDoublyLinkedList, rewind,          arginfo_dllist_void,            ZEND_ACC_PUBLIC)
 -      SPL_ME(SplDoublyLinkedList, current,         arginfo_dllist_void,            ZEND_ACC_PUBLIC)
 -      SPL_ME(SplDoublyLinkedList, key,             arginfo_dllist_void,            ZEND_ACC_PUBLIC)
 -      SPL_ME(SplDoublyLinkedList, next,            arginfo_dllist_void,            ZEND_ACC_PUBLIC)
 -      SPL_ME(SplDoublyLinkedList, prev,            arginfo_dllist_void,            ZEND_ACC_PUBLIC)
 -      SPL_ME(SplDoublyLinkedList, valid,           arginfo_dllist_void,            ZEND_ACC_PUBLIC)
 +      SPL_ME(SplDoublyLinkedList, rewind,          arginfo_class_SplDoublyLinkedList_rewind,            ZEND_ACC_PUBLIC)
 +      SPL_ME(SplDoublyLinkedList, current,         arginfo_class_SplDoublyLinkedList_current,            ZEND_ACC_PUBLIC)
 +      SPL_ME(SplDoublyLinkedList, key,             arginfo_class_SplDoublyLinkedList_key,            ZEND_ACC_PUBLIC)
 +      SPL_ME(SplDoublyLinkedList, next,            arginfo_class_SplDoublyLinkedList_next,            ZEND_ACC_PUBLIC)
 +      SPL_ME(SplDoublyLinkedList, prev,            arginfo_class_SplDoublyLinkedList_prev,            ZEND_ACC_PUBLIC)
 +      SPL_ME(SplDoublyLinkedList, valid,           arginfo_class_SplDoublyLinkedList_valid,            ZEND_ACC_PUBLIC)
        /* Serializable */
 -      SPL_ME(SplDoublyLinkedList,  unserialize,    arginfo_dllist_serialized,      ZEND_ACC_PUBLIC)
 -      SPL_ME(SplDoublyLinkedList,  serialize,      arginfo_dllist_void,            ZEND_ACC_PUBLIC)
 -      SPL_ME(SplDoublyLinkedList,  __unserialize,    arginfo_dllist_serialized,    ZEND_ACC_PUBLIC)
 -      SPL_ME(SplDoublyLinkedList,  __serialize,      arginfo_dllist_void,          ZEND_ACC_PUBLIC)
 +      SPL_ME(SplDoublyLinkedList,  unserialize,    arginfo_class_SplDoublyLinkedList_unserialize,      ZEND_ACC_PUBLIC)
 +      SPL_ME(SplDoublyLinkedList,  serialize,      arginfo_class_SplDoublyLinkedList_serialize,            ZEND_ACC_PUBLIC)
 +      SPL_ME(SplDoublyLinkedList,  __unserialize,    arginfo_class_SplDoublyLinkedList___unserialize,    ZEND_ACC_PUBLIC)
 +      SPL_ME(SplDoublyLinkedList,  __serialize,      arginfo_class_SplDoublyLinkedList___serialize,          ZEND_ACC_PUBLIC)
        PHP_FE_END
  };
  /* }}} */
index c4101cc75c3873b66a761d37666b26c2143f3a40,0000000000000000000000000000000000000000..0cb91d8ddf5489df513597ee4d009a31b602e914
mode 100755,000000..100755
--- /dev/null
@@@ -1,118 -1,0 +1,121 @@@
 +<?php
 +
 +class SplDoublyLinkedList implements Iterator, Countable, ArrayAccess, Serializable
 +{
 +    /**
 +     * @param mixed $index
 +     * @param mixed $value
 +     * @return void
 +     */
 +    public function add($index, $value) {}
 +
 +    /** @return mixed */
 +    public function pop() {}
 +
 +    /** @return mixed */
 +    public function shift() {}
 +
 +    /**
 +     * @param mixed $value
 +     * @return void
 +     */
 +    public function push($value) {}
 +
 +    /**
 +     * @param mixed $value
 +     * @return void
 +     */
 +    public function unshift($value) {}
 +
 +    /** @return mixed */
 +    public function top() {}
 +
 +    /** @return mixed */
 +    public function bottom() {}
 +
++    /** @return array */
++    public function __debugInfo() {}
++
 +    /** @return int */
 +    public function count() {}
 +
 +    /** @return bool */
 +    public function isEmpty() {}
 +
 +    /** @return int */
 +    public function setIteratorMode(int $mode) {}
 +
 +    /** @return int */
 +    public function getIteratorMode() {}
 +
 +    /**
 +     * @param int $index
 +     * @return bool
 +     */
 +    public function offsetExists($index) {}
 +
 +    /**
 +     * @param mixed $index
 +     * @return mixed
 +     */
 +    public function offsetGet($index) {}
 +
 +    /**
 +     * @param mixed $index
 +     * @param mixed $value
 +     * @return void
 +     */
 +    public function offsetSet($index, $value) {}
 +
 +    /**
 +     * @param mixed $index
 +     * @return void
 +     */
 +    public function offsetUnset($index) {}
 +
 +    /** @return void */
 +    public function rewind() {}
 +
 +    /** @return mixed */
 +    public function current() {}
 +
 +    /** @return int */
 +    public function key() {}
 +
 +    /** @return void */
 +    public function prev() {}
 +
 +    /** @return void */
 +    public function next() {}
 +
 +    /** @return bool */
 +    public function valid() {}
 +
 +    /** @return void */
 +    public function unserialize(string $serialized) {}
 +
 +    /** @return string */
 +    public function serialize() {}
 +
 +    /** @return array */
 +    public function __serialize() {}
 +
 +    /** @return void */
 +    public function __unserialize(array $data) {}
 +}
 +
 +class SplQueue extends SplDoublyLinkedList
 +{
 +    /**
 +     * @param mixed $value
 +     * @return void
 +     */
 +    public function enqueue($value) {}
 +
 +    /** @return mixed */
 +    public function dequeue() {}
 +}
 +
 +class SplStack extends SplDoublyLinkedList
 +{
 +}
index 5085ca34577cdaf4c236666baa1109712d545c79,0000000000000000000000000000000000000000..c5741cd120f7bc8e660e8e049bbb34050ebfb583
mode 100644,000000..100644
--- /dev/null
@@@ -1,69 -1,0 +1,71 @@@
 +/* This is a generated file, edit the .stub.php file instead. */
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplDoublyLinkedList_add, 0, 0, 2)
 +      ZEND_ARG_INFO(0, index)
 +      ZEND_ARG_INFO(0, value)
 +ZEND_END_ARG_INFO()
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplDoublyLinkedList_pop, 0, 0, 0)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_SplDoublyLinkedList_shift arginfo_class_SplDoublyLinkedList_pop
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplDoublyLinkedList_push, 0, 0, 1)
 +      ZEND_ARG_INFO(0, value)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_SplDoublyLinkedList_unshift arginfo_class_SplDoublyLinkedList_push
 +
 +#define arginfo_class_SplDoublyLinkedList_top arginfo_class_SplDoublyLinkedList_pop
 +
 +#define arginfo_class_SplDoublyLinkedList_bottom arginfo_class_SplDoublyLinkedList_pop
 +
++#define arginfo_class_SplDoublyLinkedList___debugInfo arginfo_class_SplDoublyLinkedList_pop
++
 +#define arginfo_class_SplDoublyLinkedList_count arginfo_class_SplDoublyLinkedList_pop
 +
 +#define arginfo_class_SplDoublyLinkedList_isEmpty arginfo_class_SplDoublyLinkedList_pop
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplDoublyLinkedList_setIteratorMode, 0, 0, 1)
 +      ZEND_ARG_TYPE_INFO(0, mode, IS_LONG, 0)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_SplDoublyLinkedList_getIteratorMode arginfo_class_SplDoublyLinkedList_pop
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplDoublyLinkedList_offsetExists, 0, 0, 1)
 +      ZEND_ARG_INFO(0, index)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_SplDoublyLinkedList_offsetGet arginfo_class_SplDoublyLinkedList_offsetExists
 +
 +#define arginfo_class_SplDoublyLinkedList_offsetSet arginfo_class_SplDoublyLinkedList_add
 +
 +#define arginfo_class_SplDoublyLinkedList_offsetUnset arginfo_class_SplDoublyLinkedList_offsetExists
 +
 +#define arginfo_class_SplDoublyLinkedList_rewind arginfo_class_SplDoublyLinkedList_pop
 +
 +#define arginfo_class_SplDoublyLinkedList_current arginfo_class_SplDoublyLinkedList_pop
 +
 +#define arginfo_class_SplDoublyLinkedList_key arginfo_class_SplDoublyLinkedList_pop
 +
 +#define arginfo_class_SplDoublyLinkedList_prev arginfo_class_SplDoublyLinkedList_pop
 +
 +#define arginfo_class_SplDoublyLinkedList_next arginfo_class_SplDoublyLinkedList_pop
 +
 +#define arginfo_class_SplDoublyLinkedList_valid arginfo_class_SplDoublyLinkedList_pop
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplDoublyLinkedList_unserialize, 0, 0, 1)
 +      ZEND_ARG_TYPE_INFO(0, serialized, IS_STRING, 0)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_SplDoublyLinkedList_serialize arginfo_class_SplDoublyLinkedList_pop
 +
 +#define arginfo_class_SplDoublyLinkedList___serialize arginfo_class_SplDoublyLinkedList_pop
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplDoublyLinkedList___unserialize, 0, 0, 1)
 +      ZEND_ARG_TYPE_INFO(0, data, IS_ARRAY, 0)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_SplQueue_enqueue arginfo_class_SplDoublyLinkedList_push
 +
 +#define arginfo_class_SplQueue_dequeue arginfo_class_SplDoublyLinkedList_pop
index 6f756507b6f9c1cc07fed98b5eecd27e662ba12d,4aea640c71ece1fa10609a98453d5900976eeb2f..dcef01b5eb560e848bcd6b3b41923c9e4f9cb5f0
@@@ -490,8 -501,8 +490,8 @@@ static int spl_heap_object_count_elemen
  }
  /* }}} */
  
- static HashTable* spl_heap_object_get_debug_info_helper(zend_class_entry *ce, zend_object *obj, int *is_temp) { /* {{{ */
 -static inline HashTable* spl_heap_object_get_debug_info(zend_class_entry *ce, zval *obj) { /* {{{ */
 -      spl_heap_object *intern = Z_SPLHEAP_P(obj);
++static inline HashTable* spl_heap_object_get_debug_info(zend_class_entry *ce, zend_object *obj) { /* {{{ */
 +      spl_heap_object *intern = spl_heap_from_obj(obj);
        zval tmp, heap_array;
        zend_string *pnstr;
        HashTable *debug_info;
@@@ -1054,6 -1051,26 +1040,26 @@@ SPL_METHOD(SplPriorityQueue, current
  }
  /* }}} */
  
 -      RETURN_ARR(spl_heap_object_get_debug_info(spl_ce_SplHeap, getThis()));
+ /* {{{ proto void SplHeap::__debugInfo() */
+ SPL_METHOD(SplHeap, __debugInfo)
+ {
+       if (zend_parse_parameters_none() == FAILURE) {
+               return;
+       }
 -      RETURN_ARR(spl_heap_object_get_debug_info(spl_ce_SplPriorityQueue, getThis()));
++      RETURN_ARR(spl_heap_object_get_debug_info(spl_ce_SplHeap, Z_OBJ_P(ZEND_THIS)));
+ } /* }}} */
+ /* {{{ proto void SplPriorityQueue::__debugInfo() */
+ SPL_METHOD(SplPriorityQueue, __debugInfo)
+ {
+       if (zend_parse_parameters_none() == FAILURE) {
+               return;
+       }
++      RETURN_ARR(spl_heap_object_get_debug_info(spl_ce_SplPriorityQueue, Z_OBJ_P(ZEND_THIS)));
+ } /* }}} */
  /* iterator handler table */
  static const zend_object_iterator_funcs spl_heap_it_funcs = {
        spl_heap_it_dtor,
@@@ -1136,38 -1174,40 +1142,40 @@@ static const zend_function_entry spl_fu
  };
  
  static const zend_function_entry spl_funcs_SplPriorityQueue[] = {
 -      SPL_ME(SplPriorityQueue, compare,               arginfo_heap_compare,    ZEND_ACC_PUBLIC)
 -      SPL_ME(SplPriorityQueue, insert,                arginfo_pqueue_insert,   ZEND_ACC_PUBLIC)
 -      SPL_ME(SplPriorityQueue, setExtractFlags,       arginfo_pqueue_setflags, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplPriorityQueue, getExtractFlags,       arginfo_splheap_void,    ZEND_ACC_PUBLIC)
 -      SPL_ME(SplPriorityQueue, top,                   arginfo_splheap_void,    ZEND_ACC_PUBLIC)
 -      SPL_ME(SplPriorityQueue, extract,               arginfo_splheap_void,    ZEND_ACC_PUBLIC)
 -      SPL_ME(SplHeap,          count,                 arginfo_splheap_void,    ZEND_ACC_PUBLIC)
 -      SPL_ME(SplHeap,          isEmpty,               arginfo_splheap_void,    ZEND_ACC_PUBLIC)
 -      SPL_ME(SplHeap,          rewind,                arginfo_splheap_void,    ZEND_ACC_PUBLIC)
 -      SPL_ME(SplPriorityQueue, current,               arginfo_splheap_void,    ZEND_ACC_PUBLIC)
 -      SPL_ME(SplHeap,          key,                   arginfo_splheap_void,    ZEND_ACC_PUBLIC)
 -      SPL_ME(SplHeap,          next,                  arginfo_splheap_void,    ZEND_ACC_PUBLIC)
 -      SPL_ME(SplHeap,          valid,                 arginfo_splheap_void,    ZEND_ACC_PUBLIC)
 -      SPL_ME(SplHeap,          recoverFromCorruption, arginfo_splheap_void,    ZEND_ACC_PUBLIC)
 -      SPL_ME(SplHeap,          isCorrupted,           arginfo_splheap_void,    ZEND_ACC_PUBLIC)
 -      SPL_ME(SplPriorityQueue, __debugInfo,           arginfo_splheap_void,    ZEND_ACC_PUBLIC)
 +      SPL_ME(SplPriorityQueue, compare,               arginfo_class_SplPriorityQueue_compare,                 ZEND_ACC_PUBLIC)
 +      SPL_ME(SplPriorityQueue, insert,                arginfo_class_SplPriorityQueue_insert,                  ZEND_ACC_PUBLIC)
 +      SPL_ME(SplPriorityQueue, setExtractFlags,       arginfo_class_SplPriorityQueue_setExtractFlags, ZEND_ACC_PUBLIC)
 +      SPL_ME(SplPriorityQueue, getExtractFlags,       arginfo_class_SplPriorityQueue_getExtractFlags, ZEND_ACC_PUBLIC)
 +      SPL_ME(SplPriorityQueue, top,                   arginfo_class_SplPriorityQueue_top,                             ZEND_ACC_PUBLIC)
 +      SPL_ME(SplPriorityQueue, extract,               arginfo_class_SplPriorityQueue_extract,                 ZEND_ACC_PUBLIC)
 +      SPL_ME(SplHeap,          count,                 arginfo_class_SplPriorityQueue_count,                   ZEND_ACC_PUBLIC)
 +      SPL_ME(SplHeap,          isEmpty,               arginfo_class_SplPriorityQueue_isEmpty,                 ZEND_ACC_PUBLIC)
 +      SPL_ME(SplHeap,          rewind,                arginfo_class_SplPriorityQueue_rewind,                  ZEND_ACC_PUBLIC)
 +      SPL_ME(SplPriorityQueue, current,               arginfo_class_SplPriorityQueue_current,                 ZEND_ACC_PUBLIC)
 +      SPL_ME(SplHeap,          key,                   arginfo_class_SplPriorityQueue_key,                             ZEND_ACC_PUBLIC)
 +      SPL_ME(SplHeap,          next,                  arginfo_class_SplPriorityQueue_next,                    ZEND_ACC_PUBLIC)
 +      SPL_ME(SplHeap,          valid,                 arginfo_class_SplPriorityQueue_valid,                   ZEND_ACC_PUBLIC)
 +      SPL_ME(SplHeap,          recoverFromCorruption, arginfo_class_SplPriorityQueue_recoverFromCorruption, ZEND_ACC_PUBLIC)
 +      SPL_ME(SplHeap,          isCorrupted,           arginfo_class_SplPriorityQueue_isCorrupted,             ZEND_ACC_PUBLIC)
++      SPL_ME(SplPriorityQueue, __debugInfo,           arginfo_class_SplPriorityQueue___debugInfo,             ZEND_ACC_PUBLIC)
        PHP_FE_END
  };
  
  static const zend_function_entry spl_funcs_SplHeap[] = {
 -      SPL_ME(SplHeap, extract,               arginfo_splheap_void, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplHeap, insert,                arginfo_heap_insert, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplHeap, top,                   arginfo_splheap_void, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplHeap, count,                 arginfo_splheap_void, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplHeap, isEmpty,               arginfo_splheap_void, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplHeap, rewind,                arginfo_splheap_void, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplHeap, current,               arginfo_splheap_void, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplHeap, key,                   arginfo_splheap_void, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplHeap, next,                  arginfo_splheap_void, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplHeap, valid,                 arginfo_splheap_void, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplHeap, recoverFromCorruption, arginfo_splheap_void, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplHeap, isCorrupted,           arginfo_splheap_void, ZEND_ACC_PUBLIC)
 -      SPL_ME(SplHeap, __debugInfo,           arginfo_splheap_void, ZEND_ACC_PUBLIC)
 -      ZEND_FENTRY(compare, NULL, NULL, ZEND_ACC_PROTECTED|ZEND_ACC_ABSTRACT)
 +      SPL_ME(SplHeap, extract,               arginfo_class_SplHeap_extract,                           ZEND_ACC_PUBLIC)
 +      SPL_ME(SplHeap, insert,                arginfo_class_SplHeap_insert,                            ZEND_ACC_PUBLIC)
 +      SPL_ME(SplHeap, top,                   arginfo_class_SplHeap_top,                                       ZEND_ACC_PUBLIC)
 +      SPL_ME(SplHeap, count,                 arginfo_class_SplHeap_count,                                     ZEND_ACC_PUBLIC)
 +      SPL_ME(SplHeap, isEmpty,               arginfo_class_SplHeap_isEmpty,                           ZEND_ACC_PUBLIC)
 +      SPL_ME(SplHeap, rewind,                arginfo_class_SplHeap_rewind,                            ZEND_ACC_PUBLIC)
 +      SPL_ME(SplHeap, current,               arginfo_class_SplHeap_current,                           ZEND_ACC_PUBLIC)
 +      SPL_ME(SplHeap, key,                   arginfo_class_SplHeap_key,                                       ZEND_ACC_PUBLIC)
 +      SPL_ME(SplHeap, next,                  arginfo_class_SplHeap_next,                                      ZEND_ACC_PUBLIC)
 +      SPL_ME(SplHeap, valid,                 arginfo_class_SplHeap_valid,                                     ZEND_ACC_PUBLIC)
 +      SPL_ME(SplHeap, recoverFromCorruption, arginfo_class_SplHeap_recoverFromCorruption, ZEND_ACC_PUBLIC)
 +      SPL_ME(SplHeap, isCorrupted,           arginfo_class_SplHeap_isCorrupted,                       ZEND_ACC_PUBLIC)
++      SPL_ME(SplHeap, __debugInfo,           arginfo_class_SplHeap___debugInfo,                       ZEND_ACC_PUBLIC)
 +      ZEND_FENTRY(compare, NULL, arginfo_class_SplHeap_compare, ZEND_ACC_PROTECTED|ZEND_ACC_ABSTRACT)
        PHP_FE_END
  };
  /* }}} */
index d86894ec087af4d159cae8a1b8400fff608c30dd,0000000000000000000000000000000000000000..e98bed6cb2b41f73248fc077a77aed41304f0687
mode 100644,000000..100644
--- /dev/null
@@@ -1,126 -1,0 +1,132 @@@
 +<?php
 +
 +class SplPriorityQueue implements Iterator, Countable
 +{
 +    /**
 +     * @param mixed $priority1
 +     * @param mixed $priority2
 +     * @return int
 +     */
 +    public function compare($priority1, $priority2) {}
 +
 +    /**
 +     * @param mixed $value
 +     * @param mixed $priority
 +     * @return bool
 +     */
 +    public function insert($value, $priority) {}
 +
 +    /** @return int */
 +    public function setExtractFlags(int $flags) {}
 +
 +    /** @return mixed */
 +    public function top() {}
 +
 +    /** @return mixed */
 +    public function extract() {}
 +
 +    /** @return int */
 +    public function count() {}
 +
 +    /** @return bool */
 +    public function isEmpty() {}
 +
 +    /** @return void */
 +    public function rewind() {}
 +
 +    /** @return mixed */
 +    public function current() {}
 +
 +    /** @return int */
 +    public function key() {}
 +
 +    /** @return void */
 +    public function next() {}
 +
 +    /** @return bool */
 +    public function valid() {}
 +
 +    /** @return bool */
 +    public function recoverFromCorruption() {}
 +
 +    /** @return bool */
 +    public function isCorrupted() {}
 +
 +    /** @return int */
 +    public function getExtractFlags() {}
++
++    /** @return array */
++    public function __debugInfo() {}
 +}
 +
 +abstract class SplHeap implements Iterator, Countable
 +{
 +    /** @return mixed */
 +    public function extract() {}
 +
 +    /**
 +     * @param mixed $value
 +     * @return bool
 +     */
 +    public function insert($value) {}
 +
 +    /** @return mixed */
 +    public function top() {}
 +
 +    /** @return int */
 +    public function count() {}
 +
 +    /** @return bool */
 +    public function isEmpty() {}
 +
 +    /** @return void */
 +    public function rewind() {}
 +
 +    /** @return mixed */
 +    public function current() {}
 +
 +    /** @return int */
 +    public function key() {}
 +
 +    /** @return void */
 +    public function next() {}
 +
 +    /** @return bool */
 +    public function valid() {}
 +
 +    /** @return bool */
 +    public function recoverFromCorruption() {}
 +
 +    /**
 +     * @param mixed $value1
 +     * @param mixed $value2
 +     * @return int
 +     */
 +    abstract protected function compare($value1, $value2);
 +
 +    /** @return bool */
 +    public function isCorrupted() {}
++
++    /** @return array */
++    public function __debugInfo() {}
 +}
 +
 +class SplMinHeap extends SplHeap
 +{
 +    /**
 +     * @param mixed $value1
 +     * @param mixed $value2
 +     * @return int
 +     */
 +    protected function compare($value1, $value2) {}
 +}
 +
 +class SplMaxHeap extends SplHeap
 +{
 +    /**
 +     * @param mixed $value1
 +     * @param mixed $value2
 +     * @return int
 +     */
 +    protected function compare($value1, $value2) {}
 +}
index 574b7eb9fbf180106fd635b4281a199baa771e45,0000000000000000000000000000000000000000..5d8b96bf14107f9ef53fb87d55dbda06aea575a0
mode 100644,000000..100644
--- /dev/null
@@@ -1,75 -1,0 +1,79 @@@
 +/* This is a generated file, edit the .stub.php file instead. */
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplPriorityQueue_compare, 0, 0, 2)
 +      ZEND_ARG_INFO(0, priority1)
 +      ZEND_ARG_INFO(0, priority2)
 +ZEND_END_ARG_INFO()
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplPriorityQueue_insert, 0, 0, 2)
 +      ZEND_ARG_INFO(0, value)
 +      ZEND_ARG_INFO(0, priority)
 +ZEND_END_ARG_INFO()
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplPriorityQueue_setExtractFlags, 0, 0, 1)
 +      ZEND_ARG_TYPE_INFO(0, flags, IS_LONG, 0)
 +ZEND_END_ARG_INFO()
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplPriorityQueue_top, 0, 0, 0)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_SplPriorityQueue_extract arginfo_class_SplPriorityQueue_top
 +
 +#define arginfo_class_SplPriorityQueue_count arginfo_class_SplPriorityQueue_top
 +
 +#define arginfo_class_SplPriorityQueue_isEmpty arginfo_class_SplPriorityQueue_top
 +
 +#define arginfo_class_SplPriorityQueue_rewind arginfo_class_SplPriorityQueue_top
 +
 +#define arginfo_class_SplPriorityQueue_current arginfo_class_SplPriorityQueue_top
 +
 +#define arginfo_class_SplPriorityQueue_key arginfo_class_SplPriorityQueue_top
 +
 +#define arginfo_class_SplPriorityQueue_next arginfo_class_SplPriorityQueue_top
 +
 +#define arginfo_class_SplPriorityQueue_valid arginfo_class_SplPriorityQueue_top
 +
 +#define arginfo_class_SplPriorityQueue_recoverFromCorruption arginfo_class_SplPriorityQueue_top
 +
 +#define arginfo_class_SplPriorityQueue_isCorrupted arginfo_class_SplPriorityQueue_top
 +
 +#define arginfo_class_SplPriorityQueue_getExtractFlags arginfo_class_SplPriorityQueue_top
 +
++#define arginfo_class_SplPriorityQueue___debugInfo arginfo_class_SplPriorityQueue_top
++
 +#define arginfo_class_SplHeap_extract arginfo_class_SplPriorityQueue_top
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplHeap_insert, 0, 0, 1)
 +      ZEND_ARG_INFO(0, value)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_SplHeap_top arginfo_class_SplPriorityQueue_top
 +
 +#define arginfo_class_SplHeap_count arginfo_class_SplPriorityQueue_top
 +
 +#define arginfo_class_SplHeap_isEmpty arginfo_class_SplPriorityQueue_top
 +
 +#define arginfo_class_SplHeap_rewind arginfo_class_SplPriorityQueue_top
 +
 +#define arginfo_class_SplHeap_current arginfo_class_SplPriorityQueue_top
 +
 +#define arginfo_class_SplHeap_key arginfo_class_SplPriorityQueue_top
 +
 +#define arginfo_class_SplHeap_next arginfo_class_SplPriorityQueue_top
 +
 +#define arginfo_class_SplHeap_valid arginfo_class_SplPriorityQueue_top
 +
 +#define arginfo_class_SplHeap_recoverFromCorruption arginfo_class_SplPriorityQueue_top
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplHeap_compare, 0, 0, 2)
 +      ZEND_ARG_INFO(0, value1)
 +      ZEND_ARG_INFO(0, value2)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_SplHeap_isCorrupted arginfo_class_SplPriorityQueue_top
 +
++#define arginfo_class_SplHeap___debugInfo arginfo_class_SplPriorityQueue_top
++
 +#define arginfo_class_SplMinHeap_compare arginfo_class_SplHeap_compare
 +
 +#define arginfo_class_SplMaxHeap_compare arginfo_class_SplHeap_compare
index ad00a12e4bd5b4a320dab195637fe7adc12bf81b,f7dd7ef2e074222f240e01fd769666bd09e24767..05f529e0d7f76323b024ca8f6a4e59d17aa8e28e
@@@ -262,9 -279,9 +262,9 @@@ static zend_object *spl_object_storage_
  }
  /* }}} */
  
- static HashTable* spl_object_storage_debug_info(zend_object *obj, int *is_temp) /* {{{ */
 -static inline HashTable* spl_object_storage_debug_info(zval *obj) /* {{{ */
++static inline HashTable* spl_object_storage_debug_info(zend_object *obj) /* {{{ */
  {
 -      spl_SplObjectStorage *intern = Z_SPLOBJSTORAGE_P(obj);
 +      spl_SplObjectStorage *intern = spl_object_storage_from_obj(obj);
        spl_SplObjectStorageElement *element;
        HashTable *props;
        zval tmp, storage;
        zend_string *zname;
        HashTable *debug_info;
  
-       *is_temp = 1;
 -      props = Z_OBJPROP_P(obj);
 +      props = obj->handlers->get_properties(obj);
  
        debug_info = zend_new_array(zend_hash_num_elements(props) + 1);
        zend_hash_copy(debug_info, props, (copy_ctor_func_t)zval_add_ref);
@@@ -923,34 -943,74 +921,46 @@@ SPL_METHOD(SplObjectStorage, __unserial
        object_properties_load(&intern->std, Z_ARRVAL_P(members_zv));
  }
  
 -      RETURN_ARR(spl_object_storage_debug_info(getThis()));
+ /* {{{ proto array SplObjectStorage::__debugInfo() */
+ SPL_METHOD(SplObjectStorage, __debugInfo)
+ {
+       if (zend_parse_parameters_none() == FAILURE) {
+               return;
+       }
 -ZEND_BEGIN_ARG_INFO(arginfo_Object, 0)
 -      ZEND_ARG_INFO(0, object)
 -ZEND_END_ARG_INFO();
 -
 -ZEND_BEGIN_ARG_INFO_EX(arginfo_attach, 0, 0, 1)
 -      ZEND_ARG_INFO(0, object)
 -      ZEND_ARG_INFO(0, data)
 -ZEND_END_ARG_INFO();
 -
 -ZEND_BEGIN_ARG_INFO(arginfo_Serialized, 0)
 -      ZEND_ARG_INFO(0, serialized)
 -ZEND_END_ARG_INFO();
 -
 -ZEND_BEGIN_ARG_INFO(arginfo_setInfo, 0)
 -      ZEND_ARG_INFO(0, info)
 -ZEND_END_ARG_INFO();
 -
 -ZEND_BEGIN_ARG_INFO(arginfo_getHash, 0)
 -      ZEND_ARG_INFO(0, object)
 -ZEND_END_ARG_INFO();
 -
 -ZEND_BEGIN_ARG_INFO_EX(arginfo_offsetGet, 0, 0, 1)
 -      ZEND_ARG_INFO(0, object)
 -ZEND_END_ARG_INFO()
 -
 -ZEND_BEGIN_ARG_INFO(arginfo_splobject_void, 0)
 -ZEND_END_ARG_INFO()
 -
++      RETURN_ARR(spl_object_storage_debug_info(Z_OBJ_P(ZEND_THIS)));
+ }
+ /* }}} */
  static const zend_function_entry spl_funcs_SplObjectStorage[] = {
 -      SPL_ME(SplObjectStorage,  attach,      arginfo_attach,        0)
 -      SPL_ME(SplObjectStorage,  detach,      arginfo_Object,        0)
 -      SPL_ME(SplObjectStorage,  contains,    arginfo_Object,        0)
 -      SPL_ME(SplObjectStorage,  addAll,      arginfo_Object,        0)
 -      SPL_ME(SplObjectStorage,  removeAll,   arginfo_Object,        0)
 -      SPL_ME(SplObjectStorage,  removeAllExcept,   arginfo_Object,  0)
 -      SPL_ME(SplObjectStorage,  getInfo,     arginfo_splobject_void,0)
 -      SPL_ME(SplObjectStorage,  setInfo,     arginfo_setInfo,       0)
 -      SPL_ME(SplObjectStorage,  getHash,     arginfo_getHash,       0)
 -      SPL_ME(SplObjectStorage,  __debugInfo, arginfo_splobject_void,0)
 +      SPL_ME(SplObjectStorage,  attach,      arginfo_class_SplObjectStorage_attach,        0)
 +      SPL_ME(SplObjectStorage,  detach,      arginfo_class_SplObjectStorage_detach,        0)
 +      SPL_ME(SplObjectStorage,  contains,    arginfo_class_SplObjectStorage_contains,        0)
 +      SPL_ME(SplObjectStorage,  addAll,      arginfo_class_SplObjectStorage_addAll,        0)
 +      SPL_ME(SplObjectStorage,  removeAll,   arginfo_class_SplObjectStorage_removeAll,        0)
 +      SPL_ME(SplObjectStorage,  removeAllExcept,   arginfo_class_SplObjectStorage_removeAllExcept,  0)
 +      SPL_ME(SplObjectStorage,  getInfo,     arginfo_class_SplObjectStorage_getInfo,0)
 +      SPL_ME(SplObjectStorage,  setInfo,     arginfo_class_SplObjectStorage_setInfo,       0)
 +      SPL_ME(SplObjectStorage,  getHash,     arginfo_class_SplObjectStorage_getHash,       0)
++      SPL_ME(SplObjectStorage,  __debugInfo, arginfo_class_SplObjectStorage___debugInfo, 0)
        /* Countable */
 -      SPL_ME(SplObjectStorage,  count,       arginfo_splobject_void,0)
 +      SPL_ME(SplObjectStorage,  count,       arginfo_class_SplObjectStorage_count,0)
        /* Iterator */
 -      SPL_ME(SplObjectStorage,  rewind,      arginfo_splobject_void,0)
 -      SPL_ME(SplObjectStorage,  valid,       arginfo_splobject_void,0)
 -      SPL_ME(SplObjectStorage,  key,         arginfo_splobject_void,0)
 -      SPL_ME(SplObjectStorage,  current,     arginfo_splobject_void,0)
 -      SPL_ME(SplObjectStorage,  next,        arginfo_splobject_void,0)
 +      SPL_ME(SplObjectStorage,  rewind,      arginfo_class_SplObjectStorage_rewind,0)
 +      SPL_ME(SplObjectStorage,  valid,       arginfo_class_SplObjectStorage_valid,0)
 +      SPL_ME(SplObjectStorage,  key,         arginfo_class_SplObjectStorage_key,0)
 +      SPL_ME(SplObjectStorage,  current,     arginfo_class_SplObjectStorage_current,0)
 +      SPL_ME(SplObjectStorage,  next,        arginfo_class_SplObjectStorage_next,0)
        /* Serializable */
 -      SPL_ME(SplObjectStorage,  unserialize, arginfo_Serialized,    0)
 -      SPL_ME(SplObjectStorage,  serialize,   arginfo_splobject_void,0)
 -      SPL_ME(SplObjectStorage,  __unserialize, arginfo_Serialized,    0)
 -      SPL_ME(SplObjectStorage,  __serialize,   arginfo_splobject_void,0)
 +      SPL_ME(SplObjectStorage,  unserialize, arginfo_class_SplObjectStorage_unserialize,    0)
 +      SPL_ME(SplObjectStorage,  serialize,   arginfo_class_SplObjectStorage_serialize,0)
 +      SPL_ME(SplObjectStorage,  __unserialize, arginfo_class_SplObjectStorage___unserialize,    0)
 +      SPL_ME(SplObjectStorage,  __serialize,   arginfo_class_SplObjectStorage___serialize,0)
        /* ArrayAccess */
 -      SPL_MA(SplObjectStorage, offsetExists, SplObjectStorage, contains, arginfo_offsetGet, 0)
 -      SPL_MA(SplObjectStorage, offsetSet,    SplObjectStorage, attach,   arginfo_attach, 0)
 -      SPL_MA(SplObjectStorage, offsetUnset,  SplObjectStorage, detach,   arginfo_offsetGet, 0)
 -      SPL_ME(SplObjectStorage, offsetGet,    arginfo_offsetGet,     0)
 +      SPL_MA(SplObjectStorage, offsetExists, SplObjectStorage, contains, arginfo_class_SplObjectStorage_offsetExists, 0)
 +      SPL_MA(SplObjectStorage, offsetSet,    SplObjectStorage, attach,   arginfo_class_SplObjectStorage_offsetSet, 0)
 +      SPL_MA(SplObjectStorage, offsetUnset,  SplObjectStorage, detach,   arginfo_class_SplObjectStorage_offsetUnset, 0)
 +      SPL_ME(SplObjectStorage, offsetGet,    arginfo_class_SplObjectStorage_offsetGet,     0)
        PHP_FE_END
  };
  
@@@ -1258,20 -1289,38 +1268,21 @@@ SPL_METHOD(MultipleIterator, key
  }
  /* }}} */
  
 -ZEND_BEGIN_ARG_INFO_EX(arginfo_MultipleIterator_attachIterator, 0, 0, 1)
 -      ZEND_ARG_OBJ_INFO(0, iterator, Iterator, 0)
 -      ZEND_ARG_INFO(0, infos)
 -ZEND_END_ARG_INFO();
 -
 -ZEND_BEGIN_ARG_INFO_EX(arginfo_MultipleIterator_detachIterator, 0, 0, 1)
 -      ZEND_ARG_OBJ_INFO(0, iterator, Iterator, 0)
 -ZEND_END_ARG_INFO();
 -
 -ZEND_BEGIN_ARG_INFO_EX(arginfo_MultipleIterator_containsIterator, 0, 0, 1)
 -      ZEND_ARG_OBJ_INFO(0, iterator, Iterator, 0)
 -ZEND_END_ARG_INFO();
 -
 -ZEND_BEGIN_ARG_INFO_EX(arginfo_MultipleIterator_setflags, 0, 0, 1)
 -      ZEND_ARG_INFO(0, flags)
 -ZEND_END_ARG_INFO();
 -
  static const zend_function_entry spl_funcs_MultipleIterator[] = {
 -      SPL_ME(MultipleIterator,  __construct,            arginfo_MultipleIterator_setflags,          0)
 -      SPL_ME(MultipleIterator,  getFlags,               arginfo_splobject_void,                     0)
 -      SPL_ME(MultipleIterator,  setFlags,               arginfo_MultipleIterator_setflags,          0)
 -      SPL_ME(MultipleIterator,  attachIterator,         arginfo_MultipleIterator_attachIterator,    0)
 -      SPL_MA(MultipleIterator,  detachIterator,         SplObjectStorage, detach,      arginfo_MultipleIterator_detachIterator,   0)
 -      SPL_MA(MultipleIterator,  containsIterator,       SplObjectStorage, contains,    arginfo_MultipleIterator_containsIterator, 0)
 -      SPL_MA(MultipleIterator,  countIterators,         SplObjectStorage, count,       arginfo_splobject_void,                    0)
 -      SPL_MA(MultipleIterator, __debugInfo,             SplObjectStorage, __debugInfo, arginfo_splobject_void,                    0)
 +      SPL_ME(MultipleIterator,  __construct,            arginfo_class_MultipleIterator___construct,           0)
 +      SPL_ME(MultipleIterator,  getFlags,               arginfo_class_MultipleIterator_getFlags,                      0)
 +      SPL_ME(MultipleIterator,  setFlags,               arginfo_class_MultipleIterator_setFlags,          0)
 +      SPL_ME(MultipleIterator,  attachIterator,         arginfo_class_MultipleIterator_attachIterator,    0)
 +      SPL_ME(MultipleIterator,  detachIterator,         arginfo_class_MultipleIterator_detachIterator,        0)
 +      SPL_ME(MultipleIterator,  containsIterator,       arginfo_class_MultipleIterator_containsIterator,      0)
 +      SPL_MA(MultipleIterator,  countIterators,         SplObjectStorage, count,    arginfo_class_MultipleIterator_countIterators,    0)
++      SPL_MA(MultipleIterator, __debugInfo,             SplObjectStorage, __debugInfo, arginfo_class_MultipleIterator___debugInfo,    0)
        /* Iterator */
 -      SPL_ME(MultipleIterator,  rewind,                 arginfo_splobject_void,                     0)
 -      SPL_ME(MultipleIterator,  valid,                  arginfo_splobject_void,                     0)
 -      SPL_ME(MultipleIterator,  key,                    arginfo_splobject_void,                     0)
 -      SPL_ME(MultipleIterator,  current,                arginfo_splobject_void,                     0)
 -      SPL_ME(MultipleIterator,  next,                   arginfo_splobject_void,                     0)
 +      SPL_ME(MultipleIterator,  rewind,                 arginfo_class_MultipleIterator_rewind,                        0)
 +      SPL_ME(MultipleIterator,  valid,                  arginfo_class_MultipleIterator_valid,                         0)
 +      SPL_ME(MultipleIterator,  key,                    arginfo_class_MultipleIterator_key,                           0)
 +      SPL_ME(MultipleIterator,  current,                arginfo_class_MultipleIterator_current,                       0)
 +      SPL_ME(MultipleIterator,  next,                   arginfo_class_MultipleIterator_next,                          0)
        PHP_FE_END
  };
  
@@@ -1285,8 -1334,7 +1296,7 @@@ PHP_MINIT_FUNCTION(spl_observer
        memcpy(&spl_handler_SplObjectStorage, &std_object_handlers, sizeof(zend_object_handlers));
  
        spl_handler_SplObjectStorage.offset          = XtOffsetOf(spl_SplObjectStorage, std);
-       spl_handler_SplObjectStorage.get_debug_info  = spl_object_storage_debug_info;
 -      spl_handler_SplObjectStorage.compare_objects = spl_object_storage_compare_objects;
 +      spl_handler_SplObjectStorage.compare         = spl_object_storage_compare_objects;
        spl_handler_SplObjectStorage.clone_obj       = spl_object_storage_clone;
        spl_handler_SplObjectStorage.get_gc          = spl_object_storage_get_gc;
        spl_handler_SplObjectStorage.dtor_obj        = zend_objects_destroy_object;
index bba3860d2360ee734f1ad9bc9e971cb721fa11ac,0000000000000000000000000000000000000000..3c717c0770efb346210190cce4db3f983ad1a72d
mode 100644,000000..100644
--- /dev/null
@@@ -1,152 -1,0 +1,158 @@@
 +<?php
 +
 +interface SplObserver
 +{
 +    /** @return void */
 +    public function update(SplSubject $subject);
 +}
 +
 +interface SplSubject
 +{
 +    /** @return void */
 +    public function attach(SplObserver $observer);
 +
 +    /** @return void */
 +    public function detach(SplObserver $observer);
 +
 +    /** @return void */
 +    public function notify();
 +}
 +
 +class SplObjectStorage implements Countable, Iterator, Serializable, ArrayAccess
 +{
 +    /**
 +     * @param mixed $info
 +     * @return void
 +     */
 +    public function attach(object $object, $info = null) {}
 +
 +    /** @return void */
 +    public function detach(object $object) {}
 +
 +    /** @return bool */
 +    public function contains(object $object) {}
 +
 +    /** @return int */
 +    public function addAll(SplObjectStorage $storage) {}
 +
 +    /** @return void */
 +    public function removeAll(SplObjectStorage $storage) {}
 +
 +    /** @return void */
 +    public function removeAllExcept(SplObjectStorage $storage) {}
 +
 +    /** @return mixed */
 +    public function getInfo() {}
 +
 +    /**
 +     * @param mixed $info
 +     * @return void
 +     */
 +    public function setInfo($info) {}
 +
 +    /** @return int */
 +    public function count(int $mode = COUNT_NORMAL) {}
 +
 +    /** @return void */
 +    public function rewind() {}
 +
 +    /** @return bool */
 +    public function valid() {}
 +
 +    /** @return int */
 +    public function key() {}
 +
 +    /** @return object */
 +    public function current() {}
 +
 +    /** @return void */
 +    public function next() {}
 +
 +    /** @return void */
 +    public function unserialize(string $serialized) {}
 +
 +    /** @return string */
 +    public function serialize() {}
 +
 +    /**
 +     * @param object $object
 +     * @return bool
 +     */
 +    public function offsetExists($object) {}
 +
 +    /**
 +     * @param object $object
 +     * @return mixed
 +     */
 +    public function offsetGet($object) {}
 +
 +    /**
 +     * @param object $object
 +     * @param mixed $info
 +     * @return void
 +     */
 +    public function offsetSet($object, $info = null) {}
 +
 +    /**
 +     * @param object $object
 +     * @return void
 +     */
 +    public function offsetUnset($object) {}
 +
 +    /** @return string */
 +    public function getHash(object $object) {}
 +
 +    /** @return array */
 +    public function __serialize() {}
 +
 +    /** @return void */
 +    public function __unserialize(array $data) {}
++
++    /** @return array */
++    public function __debugInfo() {}
 +}
 +
 +class MultipleIterator implements Iterator
 +{
 +    public function __construct(int $flags = MultipleIterator::MIT_NEED_ALL|MultipleIterator::MIT_KEYS_NUMERIC) {}
 +
 +    /** @return int */
 +    public function getFlags() {}
 +
 +    /** @return void */
 +    public function setFlags(int $flags) {}
 +
 +    /**
 +    * @param Iterator $iterator
 +    * @param int|string|null $info
 +    * @return void
 +    */
 +    public function attachIterator(Iterator $iterator, $info = null) {}
 +
 +    /** @return void */
 +    public function detachIterator(Iterator $iterator) {}
 +
 +    /** @return bool */
 +    public function containsIterator(Iterator $iterator) {}
 +
 +    /** @return int */
 +    public function countIterators() {}
 +
 +    /** @return void */
 +    public function rewind() {}
 +
 +    /** @return bool */
 +    public function valid() {}
 +
 +    /** @return array */
 +    public function key() {}
 +
 +    /** @return array */
 +    public function current() {}
 +
 +    /** @return void */
 +    public function next() {}
++
++    /** @return array */
++    public function __debugInfo() {}
 +}
index 4b35041b6f8347283720ac4c8489df6d478fd8c9,0000000000000000000000000000000000000000..5d6be3776d57bad387848ec660053136fccef129
mode 100644,000000..100644
--- /dev/null
@@@ -1,113 -1,0 +1,117 @@@
 +/* This is a generated file, edit the .stub.php file instead. */
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplObserver_update, 0, 0, 1)
 +      ZEND_ARG_OBJ_INFO(0, subject, SplSubject, 0)
 +ZEND_END_ARG_INFO()
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplSubject_attach, 0, 0, 1)
 +      ZEND_ARG_OBJ_INFO(0, observer, SplObserver, 0)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_SplSubject_detach arginfo_class_SplSubject_attach
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplSubject_notify, 0, 0, 0)
 +ZEND_END_ARG_INFO()
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplObjectStorage_attach, 0, 0, 1)
 +      ZEND_ARG_TYPE_INFO(0, object, IS_OBJECT, 0)
 +      ZEND_ARG_INFO(0, info)
 +ZEND_END_ARG_INFO()
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplObjectStorage_detach, 0, 0, 1)
 +      ZEND_ARG_TYPE_INFO(0, object, IS_OBJECT, 0)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_SplObjectStorage_contains arginfo_class_SplObjectStorage_detach
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplObjectStorage_addAll, 0, 0, 1)
 +      ZEND_ARG_OBJ_INFO(0, storage, SplObjectStorage, 0)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_SplObjectStorage_removeAll arginfo_class_SplObjectStorage_addAll
 +
 +#define arginfo_class_SplObjectStorage_removeAllExcept arginfo_class_SplObjectStorage_addAll
 +
 +#define arginfo_class_SplObjectStorage_getInfo arginfo_class_SplSubject_notify
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplObjectStorage_setInfo, 0, 0, 1)
 +      ZEND_ARG_INFO(0, info)
 +ZEND_END_ARG_INFO()
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplObjectStorage_count, 0, 0, 0)
 +      ZEND_ARG_TYPE_INFO(0, mode, IS_LONG, 0)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_SplObjectStorage_rewind arginfo_class_SplSubject_notify
 +
 +#define arginfo_class_SplObjectStorage_valid arginfo_class_SplSubject_notify
 +
 +#define arginfo_class_SplObjectStorage_key arginfo_class_SplSubject_notify
 +
 +#define arginfo_class_SplObjectStorage_current arginfo_class_SplSubject_notify
 +
 +#define arginfo_class_SplObjectStorage_next arginfo_class_SplSubject_notify
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplObjectStorage_unserialize, 0, 0, 1)
 +      ZEND_ARG_TYPE_INFO(0, serialized, IS_STRING, 0)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_SplObjectStorage_serialize arginfo_class_SplSubject_notify
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplObjectStorage_offsetExists, 0, 0, 1)
 +      ZEND_ARG_INFO(0, object)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_SplObjectStorage_offsetGet arginfo_class_SplObjectStorage_offsetExists
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplObjectStorage_offsetSet, 0, 0, 1)
 +      ZEND_ARG_INFO(0, object)
 +      ZEND_ARG_INFO(0, info)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_SplObjectStorage_offsetUnset arginfo_class_SplObjectStorage_offsetExists
 +
 +#define arginfo_class_SplObjectStorage_getHash arginfo_class_SplObjectStorage_detach
 +
 +#define arginfo_class_SplObjectStorage___serialize arginfo_class_SplSubject_notify
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplObjectStorage___unserialize, 0, 0, 1)
 +      ZEND_ARG_TYPE_INFO(0, data, IS_ARRAY, 0)
 +ZEND_END_ARG_INFO()
 +
++#define arginfo_class_SplObjectStorage___debugInfo arginfo_class_SplSubject_notify
++
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_MultipleIterator___construct, 0, 0, 0)
 +      ZEND_ARG_TYPE_INFO(0, flags, IS_LONG, 0)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_MultipleIterator_getFlags arginfo_class_SplSubject_notify
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_MultipleIterator_setFlags, 0, 0, 1)
 +      ZEND_ARG_TYPE_INFO(0, flags, IS_LONG, 0)
 +ZEND_END_ARG_INFO()
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_MultipleIterator_attachIterator, 0, 0, 1)
 +      ZEND_ARG_OBJ_INFO(0, iterator, Iterator, 0)
 +      ZEND_ARG_INFO(0, info)
 +ZEND_END_ARG_INFO()
 +
 +ZEND_BEGIN_ARG_INFO_EX(arginfo_class_MultipleIterator_detachIterator, 0, 0, 1)
 +      ZEND_ARG_OBJ_INFO(0, iterator, Iterator, 0)
 +ZEND_END_ARG_INFO()
 +
 +#define arginfo_class_MultipleIterator_containsIterator arginfo_class_MultipleIterator_detachIterator
 +
 +#define arginfo_class_MultipleIterator_countIterators arginfo_class_SplSubject_notify
 +
 +#define arginfo_class_MultipleIterator_rewind arginfo_class_SplSubject_notify
 +
 +#define arginfo_class_MultipleIterator_valid arginfo_class_SplSubject_notify
 +
 +#define arginfo_class_MultipleIterator_key arginfo_class_SplSubject_notify
 +
 +#define arginfo_class_MultipleIterator_current arginfo_class_SplSubject_notify
 +
 +#define arginfo_class_MultipleIterator_next arginfo_class_SplSubject_notify
++
++#define arginfo_class_MultipleIterator___debugInfo arginfo_class_SplSubject_notify