code: protected function dumpObject($abs)
      {
          if ($abs['isRecursion']) {
              $return = '(object) '.$abs['className'].' *RECURSION*';
          } elseif ($abs['isExcluded']) {
              $return = '(object) '.$abs['className'].' (not inspected)';
          } else {
              $return = array(
                  '___class_name' => $abs['className'],
              );
              foreach ($abs['properties'] as $name => $info) {
                  $vis = (array) $info['visibility'];
                  foreach ($vis as $i => $v) {
                      if (\in_array($v, array('magic','magic-read','magic-write'))) {
                          $vis[$i] = '✨ '.$v;    // "sparkles": there is no magic-want unicode char
                      } elseif ($v == 'private' && $info['inheritedFrom']) {
                          $vis[$i] = '🔒 '.$v;
                      }
                  }
                  if ($info['isExcluded']) {
                      $vis[] = 'excluded';
                  }
                  $name = '('.\implode(' ', $vis).') '.$name;
                  $return[$name] = $this->dump($info['value']);
              }
          }
          return $return;
      }
docs: Dump object
  
  @param array $abs object abstraction
  
  @return mixed