'Real*Imaginary      -> Imaginary
Imaginary*Imaginary -> Real'

@staticmethod
def Mul(expr, assumptions):

    if expr.is_number:
        return AskImaginaryHandler._number(expr, assumptions)
    result = False
    reals = 0
    for arg in expr.args:
        if ask(Q.imaginary(arg), assumptions):
            result = (result ^ True)
        elif (not ask(Q.real(arg), assumptions)):
            break
    else:
        if (reals == len(expr.args)):
            return False
        return result
