def _consistency_check(self):
    "\n        Required defintions:\n           -- WHITESPACE (Default done automatically) => Assert.\n           -- NEWLINE (Default done automatically)    => Assert.\n\n        Inadmissible 'eat-into'.\n           -- SUPPRESSOR shall not eat into [NEWLINE]\n           -- NEWLINE    shall not eat into [WHITESPACE, BADSPACE, SUSPEND, SUPPRESSOR]\n           -- WHITESPACE shall not eat into [SUPPRESSOR, NEWLINE, SUSPEND].\n           -- BADSPACE   shall not eat into [SUPPRESSOR, NEWLINE, SUSPEND].\n\n        No common lexemes:\n           -- WHITESPACE and BADSPACE may not have common lexemes.\n\n        Outrun:\n           -- NEWLINE    may not start with SUSPEND and vice versa\n           -- NEWLINE    may not start with SUPPRESSOR and vice versa\n           -- SUPPRESSOR may not start with SUSPEND and vice versa\n           -- WHITESPACE shall not outrun BADSPACE, but the contrary is ok.\n              (BADSPACE  may outrun WHITESPACE (e.g: lexeme with 'tab' after whitespace')\n        "
    assert self.sm_whitespace.set_f()
    assert self.sm_newline.set_f()
    whitespace = self.sm_whitespace
    newline = self.sm_newline
    badspace = self.sm_badspace
    suppressor = self.sm_newline_suppressor
    suspend_list = self.sm_suspend_list
    cmp_list = ((([(newline, badspace), (newline, whitespace), (newline, suppressor), (suppressor, newline), (whitespace, newline), (whitespace, suppressor), (badspace, newline), (badspace, suppressor)] + [(whitespace, x) for x in suspend_list]) + [(newline, x) for x in suspend_list]) + [(badspace, x) for x in suspend_list])

    def _error(FormatStr, Sro0, Sro1):
        error.log((FormatStr % (Sro0.name, Sro1.name)), Sro0.sr, DontExitF=True)
        error.log(("'%s' defined here." % Sro1.name), Sro1.sr)

    def _iterate(SroPairList):
        for (first_sro, second_sro) in cmp_list:
            (first, second) = (first_sro.get(), second_sro.get())
            if ((first is None) or (second is None)):
                continue
            (yield (first_sro, first, second_sro, second))
    for (first_sro, first, second_sro, second) in _iterate(cmp_list):
        if swallow.ending_A_beginning_B(first, second):
            _error("'%s' may eat into beginning of '%s'.", first_sro, second_sro)
        elif swallow.inside_A_match_B(first, second):
            _error("'%s' may swallow something matched by '%s'.", first_sro, second_sro)
    for sm_suspend in self.sm_suspend_list:
        (only_common_f, common_f) = tail.do(self.sm_newline.get(), sm_suspend.get())
        error_check.tail(only_common_f, common_f, "indentation handler's newline", self.sm_newline.sr, 'suspend', sm_suspend.sr)
    if (badspace.get() and (not intersection.do([badspace.get(), whitespace.get()]).is_Empty())):
        _error("'%s' and '%s' match on common lexemes.", whitespace, badspace)
    cmp_list = [(newline, suppressor), (suppressor, newline), (whitespace, badspace)]
    for x in suspend_list:
        cmp_list.extend([(newline, x), (x, newline), (suppressor, x), (x, suppressor)])
    for (first_sro, first, second_sro, second) in _iterate(cmp_list):
        if outrun.do(second, first):
            _error("'%s' may outrun '%s'.", first_sro, second_sro)
Required defintions:
   -- WHITESPACE (Default done automatically) => Assert.
   -- NEWLINE (Default done automatically)    => Assert.

Inadmissible 'eat-into'.
   -- SUPPRESSOR shall not eat into [NEWLINE]
   -- NEWLINE    shall not eat into [WHITESPACE, BADSPACE, SUSPEND, SUPPRESSOR]
   -- WHITESPACE shall not eat into [SUPPRESSOR, NEWLINE, SUSPEND].
   -- BADSPACE   shall not eat into [SUPPRESSOR, NEWLINE, SUSPEND].

No common lexemes:
   -- WHITESPACE and BADSPACE may not have common lexemes.

Outrun:
   -- NEWLINE    may not start with SUSPEND and vice versa
   -- NEWLINE    may not start with SUPPRESSOR and vice versa
   -- SUPPRESSOR may not start with SUSPEND and vice versa
   -- WHITESPACE shall not outrun BADSPACE, but the contrary is ok.
      (BADSPACE  may outrun WHITESPACE (e.g: lexeme with 'tab' after whitespace')
def _consistency_check(self):
    "\n        Required defintions:\n           -- WHITESPACE (Default done automatically) => Assert.\n           -- NEWLINE (Default done automatically)    => Assert.\n\n        Inadmissible 'eat-into'.\n           -- SUPPRESSOR shall not eat into [NEWLINE]\n           -- NEWLINE    shall not eat into [WHITESPACE, BADSPACE, SUSPEND, SUPPRESSOR]\n           -- WHITESPACE shall not eat into [SUPPRESSOR, NEWLINE, SUSPEND].\n           -- BADSPACE   shall not eat into [SUPPRESSOR, NEWLINE, SUSPEND].\n\n        No common lexemes:\n           -- WHITESPACE and BADSPACE may not have common lexemes.\n\n        Outrun:\n           -- NEWLINE    may not start with SUSPEND and vice versa\n           -- NEWLINE    may not start with SUPPRESSOR and vice versa\n           -- SUPPRESSOR may not start with SUSPEND and vice versa\n           -- WHITESPACE shall not outrun BADSPACE, but the contrary is ok.\n              (BADSPACE  may outrun WHITESPACE (e.g: lexeme with 'tab' after whitespace')\n        "
    assert self.sm_whitespace.set_f()
    assert self.sm_newline.set_f()
    whitespace = self.sm_whitespace
    newline = self.sm_newline
    badspace = self.sm_badspace
    suppressor = self.sm_newline_suppressor
    suspend_list = self.sm_suspend_list
    cmp_list = ((([(newline, badspace), (newline, whitespace), (newline, suppressor), (suppressor, newline), (whitespace, newline), (whitespace, suppressor), (badspace, newline), (badspace, suppressor)] + [(whitespace, x) for x in suspend_list]) + [(newline, x) for x in suspend_list]) + [(badspace, x) for x in suspend_list])

    def _error(FormatStr, Sro0, Sro1):
        error.log((FormatStr % (Sro0.name, Sro1.name)), Sro0.sr, DontExitF=True)
        error.log(("'%s' defined here." % Sro1.name), Sro1.sr)

    def _iterate(SroPairList):
        for (first_sro, second_sro) in cmp_list:
            (first, second) = (first_sro.get(), second_sro.get())
            if ((first is None) or (second is None)):
                continue
            (yield (first_sro, first, second_sro, second))
    for (first_sro, first, second_sro, second) in _iterate(cmp_list):
        if swallow.ending_A_beginning_B(first, second):
            _error("'%s' may eat into beginning of '%s'.", first_sro, second_sro)
        elif swallow.inside_A_match_B(first, second):
            _error("'%s' may swallow something matched by '%s'.", first_sro, second_sro)
    for sm_suspend in self.sm_suspend_list:
        (only_common_f, common_f) = tail.do(self.sm_newline.get(), sm_suspend.get())
        error_check.tail(only_common_f, common_f, "indentation handler's newline", self.sm_newline.sr, 'suspend', sm_suspend.sr)
    if (badspace.get() and (not intersection.do([badspace.get(), whitespace.get()]).is_Empty())):
        _error("'%s' and '%s' match on common lexemes.", whitespace, badspace)
    cmp_list = [(newline, suppressor), (suppressor, newline), (whitespace, badspace)]
    for x in suspend_list:
        cmp_list.extend([(newline, x), (x, newline), (suppressor, x), (x, suppressor)])
    for (first_sro, first, second_sro, second) in _iterate(cmp_list):
        if outrun.do(second, first):
            _error("'%s' may outrun '%s'.", first_sro, second_sro)