/// <summary>
        /// Dispose of the <paramref name="host"/>.
        /// </summary>
        /// <param name="host"></param>
        /// <returns></returns>
        internal static IClrObjectHost DisposeHost(this IClrObjectHost host)
        {
            foreach (var o in host.ClrCreatedObjects.OfType <IDisposable>().ToArray())
            {
                o.Dispose();
            }

            host.ClrCreatedObjects.Clear();

            return(host);
        }
 /// <summary>
 /// Tracks the <paramref name="obj"/> given the <paramref name="host"/>. Returns the
 /// <paramref name="obj"/> for use afterwards.
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="obj"></param>
 /// <param name="host"></param>
 /// <returns></returns>
 public static T TrackClrObject <T>(this T obj, IClrObjectHost host)
 {
     host.ClrCreatedObjects.Add(obj);
     return(obj);
 }