'As long as there is at most only one noncommutative term:
Hermitian*Hermitian         -> Hermitian
Hermitian*Antihermitian     -> !Hermitian
Antihermitian*Antihermitian -> Hermitian'

@staticmethod
def Mul(expr, assumptions):

    if expr.is_number:
        return AskRealHandler._number(expr, assumptions)
    nccount = 0
    result = True
    for arg in expr.args:
        if ask(Q.antihermitian(arg), assumptions):
            result = (result ^ True)
        elif (not ask(Q.hermitian(arg), assumptions)):
            break
        if ask((~ Q.commutative(arg)), assumptions):
            nccount += 1
            if (nccount > 1):
                break
    else:
        return result
