internal static Expansion CreateExpansion( ResultProvider resultProvider, DkmInspectionContext inspectionContext, string name, TypeAndCustomInfo typeDeclaringMemberAndInfoOpt, TypeAndCustomInfo declaredTypeAndInfo, DkmClrValue value, bool childShouldParenthesize, string fullName, string childFullNamePrefix, ReadOnlyCollection <string> formatSpecifiers, DkmEvaluationResultFlags flags, string editableValue) { Debug.Assert((inspectionContext.EvaluationFlags & DkmEvaluationFlags.NoExpansion) == 0); // Note: The native EE uses the proxy type, even for // null instances, so statics on the proxy type are // displayed. That case is not supported currently. if (!value.IsNull) { var proxyType = value.Type.GetProxyType(); if (proxyType != null) { if ((inspectionContext.EvaluationFlags & DkmEvaluationFlags.ShowValueRaw) != 0) { var rawView = CreateRawView(resultProvider, inspectionContext, declaredTypeAndInfo, value); Debug.Assert(rawView != null); return(rawView); } DkmClrValue proxyValue; try { proxyValue = value.InstantiateProxyType(inspectionContext, proxyType); } catch { proxyValue = null; } if (proxyValue != null) { return(new DebuggerTypeProxyExpansion( inspectionContext, proxyValue, name, typeDeclaringMemberAndInfoOpt, declaredTypeAndInfo, value, childShouldParenthesize, fullName, childFullNamePrefix, formatSpecifiers, flags, editableValue, resultProvider)); } } } return(null); }