private int getIListCount(Expression targetObject, DebugType iListType)
        {
            PropertyInfo countProperty = iListType.GetGenericInterface("System.Collections.Generic.ICollection").GetProperty("Count");

            try {
                // Do not get string representation since it can be printed in hex later
                Value countValue = targetObject.Evaluate(WindowsDebugger.CurrentProcess).GetPropertyValue(countProperty);
                return((int)countValue.PrimitiveValue);
            } catch (GetValueException) {
                return(-1);
            }
        }
        /// <summary>
        /// Resolves implementation of a single-generic-argument interface on this type.
        /// </summary>
        /// <param name="fullNamePrefix">Interface name to search for (eg. "System.Collections.Generic.IList")</param>
        /// <param name="implementation">Result found implementation.</param>
        /// <param name="itemType">The only generic argument of <paramref name="implementation"/></param>
        /// <returns>True if found, false otherwise.</returns>
        public static bool ResolveGenericInterfaceImplementation(this DebugType type, string fullNamePrefix, out DebugType implementation, out DebugType itemType)
        {
            if (type == null)
            {
                throw new ArgumentNullException("type");
            }

            implementation = null;
            itemType       = null;

            implementation = type.GetGenericInterface(fullNamePrefix);
            if (implementation != null)
            {
                if (implementation.GetGenericArguments().Length == 1)
                {
                    itemType = (DebugType)implementation.GetGenericArguments()[0];
                    return(true);
                }
            }
            return(false);
        }