Mono actually generates a RuntimeBinderException for this case. I left it as a plain Exception to maintain the existing logic from PSBinaryOperation.ThrowOnInvalidOp, though switching to RuntimeBinderException is probably called for.