src/Debug/AbstractObject.php
private function addPropertiesDebug(Event $abs)
    {
        if (!$abs['collectPropertyValues']) {
            return;
        }
        if (!$abs['viaDebugInfo']) {
            // using __debugInfo is disabled, or object does not have __debugInfo method
            return;
        }
        $obj = $abs->getSubject();
        $debugInfo = \call_user_func(array($obj, '__debugInfo'));
        $properties = $abs['properties'];
        foreach ($properties as $name => $info) {
            if (\array_key_exists($name, $abs['propertyOverrideValues'])) {
                // we're using override value
                unset($debugInfo[$name]);
                continue;
            }
            if (\array_key_exists($name, $debugInfo)) {
                if ($debugInfo[$name] !== $info['value']) {
                    $properties[$name]['value'] = $debugInfo[$name];
                    $properties[$name]['valueFrom'] = 'debugInfo';
                }
                unset($debugInfo[$name]);
                continue;
            }
            $isPrivateAncestor = \in_array('private', (array) $info['visibility']) && $info['inheritedFrom'];
            if ($isPrivateAncestor) {
                // exempt from isExcluded
                continue;
            }
            $properties[$name]['isExcluded'] = true;
        }
        foreach ($debugInfo as $name => $value) {
            $properties[$name] = \array_merge(
                static::$basePropInfo,
                array(
                    'value' => $value,
                    'valueFrom' => 'debugInfo',
                    'visibility' => 'debug',    // indicates this property is exclusive to debugInfo
                )
            );
        }
        $abs['properties'] = $properties;
    }
private function addPropertiesDebug(Event $abs)
    {
        if (!$abs['collectPropertyValues']) {
            return;
        }
        if (!$abs['viaDebugInfo']) {
            // using __debugInfo is disabled, or object does not have __debugInfo method
            return;
        }
        $obj = $abs->getSubject();
        $debugInfo = \call_user_func(array($obj, '__debugInfo'));
        $properties = $abs['properties'];
        foreach ($properties as $name => $info) {
            if (\array_key_exists($name, $abs['propertyOverrideValues'])) {
                // we're using override value
                unset($debugInfo[$name]);
                continue;
            }
            if (\array_key_exists($name, $debugInfo)) {
                if ($debugInfo[$name] !== $info['value']) {
                    $properties[$name]['value'] = $debugInfo[$name];
                    $properties[$name]['valueFrom'] = 'debugInfo';
                }
                unset($debugInfo[$name]);
                continue;
            }
            $isPrivateAncestor = \in_array('private', (array) $info['visibility']) && $info['inheritedFrom'];
            if ($isPrivateAncestor) {
                // exempt from isExcluded
                continue;
            }
            $properties[$name]['isExcluded'] = true;
        }
        foreach ($debugInfo as $name => $value) {
            $properties[$name] = \array_merge(
                static::$basePropInfo,
                array(
                    'value' => $value,
                    'valueFrom' => 'debugInfo',
                    'visibility' => 'debug',    // indicates this property is exclusive to debugInfo
                )
            );
        }
        $abs['properties'] = $properties;
    }
Add/Update properties with info from __debugInfo method

@param Event $abs Abstraction event object

@return void