An ``++IDisposable++`` object should be disposed (there are some rare exceptions where not disposing is fine, most notably ``++Task++``). If a class has an ``++IDisposable++`` field, there can be two situations:
In the second case, the safest way for the class to ensure ``++Dispose++`` is called is to call it in its own ``++Dispose++`` function, and therefore to be itself ``++IDisposable++``. A class is considered to own an ``++IDisposable++`` field resource if it created the object referenced by the field.