def METHOD_NAME(self, operator, *args, node):
    """Helper method to lookup a method type given the operator and types of arguments.
    TODO: modify this implementation to use mro.
    """
    if args:
        # First try to do a direct lookup.
        if (
            isinstance(args[0], ForwardRef)
            and operator in self.classes[args[0].__forward_arg__]
        ):
            for func_type, _ in self.classes[args[0].__forward_arg__][operator]:
                if len(args) != len(func_type.__args__) - 1:
                    continue
                if self.type_constraints.can_unify(
                    Callable[list(args), Any], Callable[list(func_type.__args__[:-1]), Any]
                ):
                    return func_type
        # If that doesn't work, fall back on a brute force search.
        func_types_list = self.methods[operator]
        for func_type, _ in func_types_list:
            if len(args) != len(func_type.__args__) - 1:
                continue
            if self.type_constraints.can_unify(
                Callable[list(args), Any], Callable[list(func_type.__args__[:-1]), Any]
            ):
                return func_type
        return TypeFailFunction(tuple(func_types_list), None, node)