public virtual void Dispose()
{
// Release all allocated memories which must be disposed
foreach (var allocatedMemory in InternalRemoteAllocations.Where(m => m.MustBeDisposed).ToArray())
{
allocatedMemory.Dispose();
}
// Avoid the finalizer
GC.SuppressFinalize(this);
}