'Performs token-based classification over a pair of contiguous tokens
updating the first.'

def _second_pass_annotation(self, aug_tok1, aug_tok2):

    if (not aug_tok2):
        return
    tok = aug_tok1.tok
    if (not aug_tok1.period_final):
        return
    typ = aug_tok1.type_no_period
    next_tok = aug_tok2.tok
    next_typ = aug_tok2.type_no_sentperiod
    tok_is_initial = aug_tok1.is_initial
    if ((typ, next_typ) in self._params.collocations):
        aug_tok1.sentbreak = False
        aug_tok1.abbr = True
        return REASON_KNOWN_COLLOCATION
    if ((aug_tok1.abbr or aug_tok1.ellipsis) and (not tok_is_initial)):
        is_sent_starter = self._ortho_heuristic(aug_tok2)
        if (is_sent_starter == True):
            aug_tok1.sentbreak = True
            return REASON_ABBR_WITH_ORTHOGRAPHIC_HEURISTIC
        if (aug_tok2.first_upper and (next_typ in self._params.sent_starters)):
            aug_tok1.sentbreak = True
            return REASON_ABBR_WITH_SENTENCE_STARTER
    if (tok_is_initial or (typ == u'##number##')):
        is_sent_starter = self._ortho_heuristic(aug_tok2)
        if (is_sent_starter == False):
            aug_tok1.sentbreak = False
            aug_tok1.abbr = True
            if tok_is_initial:
                return REASON_INITIAL_WITH_ORTHOGRAPHIC_HEURISTIC
            else:
                return REASON_NUMBER_WITH_ORTHOGRAPHIC_HEURISTIC
        if ((is_sent_starter == u'unknown') and tok_is_initial and aug_tok2.first_upper and (not (self._params.ortho_context[next_typ] & _ORTHO_LC))):
            aug_tok1.sentbreak = False
            aug_tok1.abbr = True
            return REASON_INITIAL_WITH_SPECIAL_ORTHOGRAPHIC_HEURISTIC
    return
