Construct() private method

private Construct ( Object e ) : ErrorObject
e Object
return ErrorObject
        public static object JScriptExceptionValue(object e, VsaEngine engine)
        {
            if (engine == null)
            {
                engine = new VsaEngine(true);
                engine.InitVsaEngine("JS7://Microsoft.JScript.Vsa.VsaEngine", new DefaultVsaSite());
            }
            ErrorConstructor originalError = engine.Globals.globalObject.originalError;

            if (e is JScriptException)
            {
                object obj2 = ((JScriptException)e).value;
                if ((!(obj2 is Exception) && !(obj2 is Microsoft.JScript.Missing)) && ((((JScriptException)e).Number & 0xffff) == 0x139e))
                {
                    return(obj2);
                }
                return(originalError.Construct((Exception)e));
            }
            if (e is StackOverflowException)
            {
                return(originalError.Construct(new JScriptException(JSError.OutOfStack)));
            }
            if (e is OutOfMemoryException)
            {
                return(originalError.Construct(new JScriptException(JSError.OutOfMemory)));
            }
            return(originalError.Construct(e));
        }
        public static Object JScriptExceptionValue(Object e, VsaEngine engine)
        {
            if (engine == null)
            {
                engine = new VsaEngine(true);
                engine.InitVsaEngine("JS7://Microsoft.JScript.Vsa.VsaEngine", new DefaultVsaSite());
            }
            ErrorConstructor originalError = engine.Globals.globalObject.originalError;

            if (e is JScriptException)
            {
                Object value = ((JScriptException)e).value;
                if (value is Exception || value is Missing || (((JScriptException)e).Number & 0xFFFF) != (int)JSError.UncaughtException)
                {
                    return(originalError.Construct((Exception)e));
                }
                return(value); //The exception wraps a non-exception value
            }
            else if (e is StackOverflowException)
            {
                return(originalError.Construct(new JScriptException(JSError.OutOfStack)));
            }
            else if (e is OutOfMemoryException)
            {
                return(originalError.Construct(new JScriptException(JSError.OutOfMemory)));
            }
            return(originalError.Construct(e));
        }