I use delegates (a method acting as a variable) everywhere. In C#, you cannot set/pass a delegate with different arguments. However, it seems that StartCoroutine(IEnumerator routine) gets around this somehow since the "IEnumerator routine" argument can accept any coroutine that can have any combination of arguments. Does anyone know why this works? Is it something special/specific about coroutines? Is it finding the method by its name via Reflection or something like that?