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;
    }