public void Parse()
        {
            bool ignoreNext = false;

            while (MoveNext())
            {
                if (ignoreNext)
                {
                    _exactStart ??= _index;
                    ignoreNext = false;
                    continue;
                }

                switch (*_chars)
                {
                case '`': MaybeAddPendingExact(); ignoreNext = true; break;

                case '*': MaybeAddPendingExact(); Steps.Add(WildcardInstruction.AnyAny); break;

                case '?': MaybeAddPendingExact(); Steps.Add(WildcardInstruction.AnyOne); break;

                case '[': ProcessAnyOf(); break;

                default: _exactStart ??= _index; break;
                }
            }

            if (_exactStart == null)
            {
                return;
            }

            Steps.Add(WildcardInstruction.Exact(_pattern.Slice(_exactStart.Value)));
            _exactStart = null;
        }
        private void MaybeAddPendingExact()
        {
            if (_exactStart == null)
            {
                return;
            }

            Steps.Add(
                WildcardInstruction.Exact(
                    _pattern.Slice(
                        _exactStart.Value,
                        _index - _exactStart.Value)));
            _exactStart = null;
        }