def METHOD_NAME(self):
    CASES = [
        ([], '', True),
        (['a', 'b'], 'a_b', True),
        (['a', 'b'], ' a b ', True),
        (['a', 'b'], 'a _ b', True),
        (['a', 'b'], '  a _ b  ', True),
        (['a', '', 'b'], 'a _ _ b', True),
        (['a', '', 'b'], 'a __ b', True),
        (['a', '', '', 'b'], 'a _  _ _  b', True),
        (['a'], '  a _ ', True),
        # NOTES:
        # - This cases REQUIRES ignoring leading whitespace.  The state machine
        # can't handle it.  Contrast with the case above.
        # - We get three spans with index 1 because of the initial rule to
        # ignore whitespace, and then EMIT_EMPTY.  Seems harmless for now?
        (['', 'a'], ' _ a _ ', True),
        # Backslash escape
        (['a b'], r'a\ b', True),
        (['a\\', 'b'], r'a\ b', False),
    ]
    # IFS='_ '
    sp = split.IfsSplitter(' ', '_')
    _RunSplitCases(self, sp, CASES)
    self.assertEqual('a\ \_b', sp.Escape('a _b'))