```
- (void) doSomething: (id)with {
    int a;
    a = [with doSomething];
}

```

How does the compiler know what type `[with doSomething]` is going to return? Does it assume an `int`, since that's what I'm assigning to?