What does this name even mean?! I walk a string, looking for a match to what you asked for that ISN'T inside a string declaration. e.g. Find the next closing parenthesis, starting from the first opening paren. MyFun(x, "some string ()"); This would find the last paren, NOT the one inside the string.
        public void FindsAMatchWhenThereIsOne()
        {
            string source = "Some!String";
            var matcher = new ExcludeStringMatcher(source);

            Assert.Equal(4, matcher.FindNextIndex('!'));
        }
        public void DoesntFindMatchIfMatchIsInsideStringLiteral()
        {
            string source = "Some \"!\" String";
            var matcher = new ExcludeStringMatcher(source);

            Assert.Null(matcher.FindNextIndex('!'));
        }
        public void DoesntFindAMatchIfThereIsntOne()
        {
            string source = "SomeString";
            var matcher = new ExcludeStringMatcher(source);

            Assert.Null(matcher.FindNextIndex('!'));
        }
        public void MatchIndexIsCorrectlyOffsetWhenUsingStartIndex()
        {
            string source = "Some St!ring";
            var matcher = new ExcludeStringMatcher(source);

            matcher.SetStartIndex(5);

            Assert.Equal(7, matcher.FindNextIndex('!'));
        }
        public void DoesntFindAMatchWhenMatchIsBeforeStartIndex()
        {
            string source = "Some!String";
            var matcher = new ExcludeStringMatcher(source);

            matcher.SetStartIndex(5);

            Assert.Null(matcher.FindNextIndex('!'));
        }