Please add the following features:
- explicit casting from a function pointer to the corresponding delegate (with the obvious semantics)
- implicit casting from a function pointer to the corresponding delegate
- `cast(delegate) ...` that would also do this cast.
The state would be set to null by such casts.