code: public function getAbstraction(&$array, $method = null, &$hist = array())
      {
          if (\in_array($array, $hist, true)) {
              return $this->abstracter->RECURSION;
          }
          if (self::isCallable($array)) {
              // this appears to be a "callable"
              return array(
                  'debug' => $this->abstracter->ABSTRACTION,
                  'type' => 'callable',
                  'values' => array(\get_class($array[0]), $array[1]),
              );
          }
          $return = array();
          $hist[] = $array;
          foreach ($array as $k => $v) {
              if ($this->abstracter->needsAbstraction($v)) {
                  $v = $this->abstracter->getAbstraction($array[$k], $method, $hist);
              }
              $return[$k] = $v;
          }
          return $return;
      }
docs: returns information about an array
  
  @param array  $array  Array to inspect
  @param string $method Method requesting abstraction
  @param array  $hist   (@internal) array/object history
  
  @return array