public void match (List<LexPattern> branches)
    {
        boolean matched = false;
        int current = this.from;
        for (LexPattern b : branches)
        {
            int p = b.match(code, current, this.dest);
            if (p < 0)
            {
                continue;
            }
            if (p >= current && p <= this.dest)
            {
                current = p;
                matched = true;
                int delta = b.getSliceDelta();
                if (delta >= 0)
                {
                    trySpawnChild(current, p - delta, b.getTokenType());
                }
            }
        }
        if (current < this.dest && matched)
        {
            match(branches);
        }
    }