Mutability is all about object state. We are familiar with object state of ordinary objects, but delegate objects are different – subtle.
A delegate’s object state is its inv list. More specifically, the state is the ordered list of 2-pointer thingies.
So immutability means that the collection and ordering are permanent. Each 2-pointer thingy is naturally immutable given that object pointer  and the function pointer are just addresses rather than “pointer variables”. In other words, each 2-pointer thingy holds 2 addresses and there’s no way to “edit” any address.
Immutability doesn’t cover the Target object. Target object is fully mutable. This is what confuses folks like me. If an immutable Student object HAS-A professor field, then the professor pointee object is presented as immutable. Here’s the key — Every time a Student method returns the professor, the professor is cloned, so the original professor instance is never exposed/leaked. No such cloning underlies the immutable delegate instance.
 This is actually the Target property of the dlg instance. For a static method, Target is null.