/**
  * @param mixed $val The value to be inspected.
  * @param mixed $alt If not null, a replacement for inspection; type information about $val is displayed but the
  *                   inspection is performed on this argument instead.
  * @return string
  */
 private function getInspection2($val, $alt = null)
 {
     $arg = $this->table(isset($alt) ? $alt : $val);
     if (is_scalar($val) || is_null($val)) {
         $arg = '<i>(' . Debug::getType($val) . ")</i>{$arg}";
         return "<#data>{$arg}</#data>";
     }
     if ($val instanceof \PowerString) {
         return Debug::toString($val);
     }
     return $this->formatType($val, $arg);
 }
 /**
  * Returns a formatted properties table.
  *
  * @param array $props
  * @return string
  */
 private static function properties(array $props)
 {
     return "<h6>Assigned properties</h6><table class=grid>\n" . str_replace(["'", '...'], ["<i>'</i>", '<i>...</i>'], implode('', map($props, function ($v, $k) {
         return "<tr><th>{$k}<td>" . (is_string($v) ? "'" . htmlspecialchars(trimText($v, 300, '...')) . "'" : Debug::toString($v));
     })), $o) . "\n</table>";
 }