@classmethod
def group_tokens(cls, tokens):
    """ Take a list of ChordSpecTokens and group them into related pairs """
    for token in tokens:
        if token not in cls.valid_tokens():
            raise ValueError('{} is not a valid ChordSpec token')
    groups = []
    cursor = 0
    while cursor < len(tokens):
        advance = 1
        if tokens[cursor].token_type == 'interval':
            groups.append([cls.TOKEN_DOMINANT, tokens[cursor]])
        elif cursor != len(tokens) - 1 and tokens[cursor + 1
            ].token_type == 'interval':
            groups.append(tokens[cursor:cursor + 2])
            advance += 1
        else:
            groups.append([tokens[cursor]])
        cursor += advance
    return groups
