code: 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;
      }
docs: Add/Update properties with info from __debugInfo method
  
  @param Event $abs Abstraction event object
  
  @return void