I've seen this before, and my unproven conclusion was that `@(expression)` uses the type of the expression to generate the correct `+numberWith` variant. And the type of `!boolExpression` is `int`, which if my hypothesis is correct results in `+numberWithInt:` or similar.

```objc
@encode(__typeof__(YES)) == @encode(BOOL) 
@encode(__typeof__(!YES)) == @encode(int)
```

An alternative could be:

```objc
return @((BOOL)!value.boolValue);
```