Verify that each token in order does match the expected types.

        The list provided by `get_tokens` does have three more elements
        at the beginning of the list which should be always the same
        for a condition (Module and Expr). Those are automatically
        added first to the final list of expected types so you don't have
        to specify it yourself each time.

        >>> tokens = Condition.get_tokens('2 == 3')
        >>> Condition.match_tokens(tokens, [ast.Compare, ast.Num, ast.Eq, ast.Num])
        True

        Args:
            ast_entries (list): list of AST tokens parsers previously.
            ast_types (list): list of expected AST types.

        Returns:
            bool: when all tokes match the expected types

def match_tokens(ast_tokens, ast_types):
        """
        Verify that each token in order does match the expected types.

        The list provided by `get_tokens` does have three more elements
        at the beginning of the list which should be always the same
        for a condition (Module and Expr). Those are automatically
        added first to the final list of expected types so you don't have
        to specify it yourself each time.

        >>> tokens = Condition.get_tokens('2 == 3')
        >>> Condition.match_tokens(tokens, [ast.Compare, ast.Num, ast.Eq, ast.Num])
        True

        Args:
            ast_entries (list): list of AST tokens parsers previously.
            ast_types (list): list of expected AST types.

        Returns:
            bool: when all tokes match the expected types
        """
        ast_final_types = [ast.Module, ast.Expr] + ast_types
        return all(isinstance(ast_token, ast_type)
                   for ast_token, ast_type in zip(ast_tokens, ast_final_types))