protected function _dump($data, $name = '...')
    {
        $varType = strtolower(getType($data));

        $advType = false;
        if ($varType == 'string' && preg_match('#(.*)::(.*)#', $name, $matches)) {
            $matches[2] = trim(strToLower($matches[2]));
            if ($this->_strlen($matches[2]) > 0) {
                $advType = $matches[2];
            }
            $name = $matches[1];
        }

        if ($this->_strlen($name) > 80) {
            $name = substr($name, 0, 80) . '...';
        }

        if ($varType == 'null') {
            $this->_null($name);

        } elseif ($varType == 'boolean') {
            $this->_boolean($data, $name, $advType);

        } elseif ($varType == 'integer') {
            $this->_integer($data, $name, $advType);

        } elseif ($varType == 'double') {
            $this->_float($data, $name, $advType);

        } elseif ($varType == 'string') {
            $this->_string($data, $name, $advType);

        } elseif ($varType == 'array') {
            if ($this->_currentDepth <= self::$_config['dump']['maxDepth']) {
                $this->_currentDepth++;
                $this->_array($data, $name, $advType);
                $this->_currentDepth--;
            } else {
                $this->_maxDepth($data, $name, $advType);
            }

        } elseif ($varType == 'object') {
            if ($this->_currentDepth <= self::$_config['dump']['maxDepth']) {
                $this->_currentDepth++;

                if (get_class($data) == 'Closure') {
                    $this->_closure($data, $name, $advType);
                } else {
                    $this->_object($data, $name, $advType);
                }

                $this->_currentDepth--;
            } else {
                $this->_maxDepth($data, $name);
            }

        } elseif ($varType == 'resource') {
            $this->_resource($data, $name, $advType);

        } else {
            $this->_undefined($data, $name, $advType);
        }

        return $this;
    }