public function getNotationType(
        $notation,
        &$params = null,
        &$errors = null,
        $namespace = null
    ) {
        $type = gettype($notation);
        $params = null;

        switch ($type) {
            case 'string':
                return $this->getNotationTypeString($notation, $params, $errors, $namespace);
            case 'array':
                return $this->getNotationTypeArray($notation, $params);
            case 'integer':
                return 'integer';
            case 'double':
                return 'float';
            case 'boolean':
                return 'boolean';
            case 'NULL':
                return 'null';
        }

        $errors[] = "irrational type for '{$notation}'";
    }