`Function.eval` doesn't check that though. Is this actually meant to call `BooleanFunction.eval`? In that case, it should be `super(Not, cls).eval(arg)`, but it's confusing to call a method that's meant to return something only for its side-effects. It would be better to do the check directly, I think.