public void Dispose()
		{
			using(@lock.ForWriting())
			{
				var burdens = new KeyValuePair<object, Burden>[instance2Burden.Count];
				instance2Burden.CopyTo(burdens, 0);

				// NOTE: This is relying on a undocumented behavior that order of items when enumerating Dictionary<> will be oldest --> latest
				foreach (var burden in burdens.Reverse())
				{
					if (instance2Burden.ContainsKey(burden.Key))
					{
						burden.Value.Release(this);
						instance2Burden.Remove(burden.Key);
					}
				}
			}
		}