private void ProcessOutParameter(CimMethodResult methodResult, MethodParameter methodParameter, IDictionary <string, MethodParameter> cmdletOutput)
        {
            object             value;
            CimMethodParameter item = methodResult.OutParameters[methodParameter.Name];

            if (item == null)
            {
                value = null;
            }
            else
            {
                value = item.Value;
            }
            object obj    = value;
            object dotNet = CimValueConverter.ConvertFromCimToDotNet(obj, methodParameter.ParameterType);

            if (MethodParameterBindings.Out != (methodParameter.Bindings & MethodParameterBindings.Out))
            {
                if (MethodParameterBindings.Error == (methodParameter.Bindings & MethodParameterBindings.Error))
                {
                    bool flag = (bool)LanguagePrimitives.ConvertTo(dotNet, typeof(bool), CultureInfo.InvariantCulture);
                    if (flag)
                    {
                        string          str             = (string)LanguagePrimitives.ConvertTo(dotNet, typeof(string), CultureInfo.InvariantCulture);
                        CimJobException cimJobException = CimJobException.CreateFromMethodErrorCode(base.GetDescription(), base.JobContext, base.MethodName, str);
                        throw cimJobException;
                    }
                }
            }
            else
            {
                methodParameter.Value = dotNet;
                cmdletOutput.Add(methodParameter.Name, methodParameter);
                CimInstance[] cimInstanceArray = dotNet as CimInstance[];
                if (cimInstanceArray != null)
                {
                    CimInstance[] cimInstanceArray1 = cimInstanceArray;
                    for (int i = 0; i < (int)cimInstanceArray1.Length; i++)
                    {
                        CimInstance cimInstance = cimInstanceArray1[i];
                        CimCmdletAdapter.AssociateSessionOfOriginWithInstance(cimInstance, this.JobContext.Session);
                    }
                }
                CimInstance cimInstance1 = dotNet as CimInstance;
                if (cimInstance1 != null)
                {
                    CimCmdletAdapter.AssociateSessionOfOriginWithInstance(cimInstance1, this.JobContext.Session);
                    return;
                }
            }
        }
        private void ProcessOutParameter(CimMethodResult methodResult, MethodParameter methodParameter, IDictionary <string, MethodParameter> cmdletOutput)
        {
            Dbg.Assert(methodResult != null, "Caller should verify methodResult != null");
            Dbg.Assert(methodParameter != null, "Caller should verify methodParameter != null");
            Dbg.Assert(0 != (methodParameter.Bindings & (MethodParameterBindings.Out | MethodParameterBindings.Error)), "Caller should verify that this is an out parameter");
            Dbg.Assert(cmdletOutput != null, "Caller should verify cmdletOutput != null");

            Dbg.Assert(this.MethodSubject != null, "MethodSubject property should be initialized before starting main job processing");

            CimMethodParameter outParameter            = methodResult.OutParameters[methodParameter.Name];
            object             valueReturnedFromMethod = (outParameter == null) ? null : outParameter.Value;

            object dotNetValue = CimValueConverter.ConvertFromCimToDotNet(valueReturnedFromMethod, methodParameter.ParameterType);

            if (MethodParameterBindings.Out == (methodParameter.Bindings & MethodParameterBindings.Out))
            {
                methodParameter.Value = dotNetValue;
                cmdletOutput.Add(methodParameter.Name, methodParameter);

                var cimInstances = dotNetValue as CimInstance[];
                if (cimInstances != null)
                {
                    foreach (var instance in cimInstances)
                    {
                        CimCmdletAdapter.AssociateSessionOfOriginWithInstance(instance, this.JobContext.Session);
                    }
                }

                var cimInstance = dotNetValue as CimInstance;
                if (cimInstance != null)
                {
                    CimCmdletAdapter.AssociateSessionOfOriginWithInstance(cimInstance, this.JobContext.Session);
                }
            }
            else if (MethodParameterBindings.Error == (methodParameter.Bindings & MethodParameterBindings.Error))
            {
                var gotError = (bool)LanguagePrimitives.ConvertTo(dotNetValue, typeof(bool), CultureInfo.InvariantCulture);
                if (gotError)
                {
                    var             errorCodeAsString = (string)LanguagePrimitives.ConvertTo(dotNetValue, typeof(string), CultureInfo.InvariantCulture);
                    CimJobException cje = CimJobException.CreateFromMethodErrorCode(this.GetDescription(), this.JobContext, this.MethodName, errorCodeAsString);
                    throw cje;
                }
            }
        }