1. Default operations 2. Declaring a stack size 3. Redirecting the context allocation to something that takes arguments.
The last one may seem like overkill, we could have easily not substituted anything and had the caller entry point cast the ThreadContext to the ArgumentContext and extract any arguments, but then you wouldn't have a live example!