<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _check_diff_result(row, matches, tokenize, join):
 """Returns `row`, possibly with its count changed to 0, depending on the status of the n-grams that compose it. The n-gram represented in `row` can be decomposed into two (n-1)-grams. If neither sub-n-gram is present in `matches`, do not change the count since this is a new difference. If both sub-n-grams are present with a positive count, do not change the count as it is composed entirely of sub-ngrams and therefore not filler. Otherwise, change the count to 0 as the n-gram is filler. :param row: result row of the n-gram to check :type row: pandas.Series :param matches: (n-1)-grams and their associated counts to check against :type matches: `dict` :param tokenize: function to tokenize a string :type tokenize: `function` :param join: function to join tokens into a string :type join: `function` :rtype: pandas.Series """

        ngram_tokens = tokenize(row[constants.NGRAM_FIELDNAME])
        sub_ngram1 = join(ngram_tokens[:-1])
        sub_ngram2 = join(ngram_tokens[1:])
        count = constants.COUNT_FIELDNAME
        discard = False
        # For performance reasons, avoid searching through matches
        # unless necessary.
        status1 = matches.get(sub_ngram1)
        if status1 == 0:
            discard = True
        else:
            status2 = matches.get(sub_ngram2)
            if status2 == 0:
                discard = True
            elif (status1 is None) ^ (status2 is None):
                discard = True
        if discard:
            row[count] = 0
        return row