public static function parse($file, $target, $included = false)
    {
        if (in_array($file, static::$stack)) {
            throw new InfiniteRecursion;
        }

        static::$stack[] = $file;
        $parser = new static($file, $target, $included);
        array_pop(static::$stack);
        return $parser;
    }