internal ErrorObject Construct(Object e){
if (!(e is JScriptException) || this != this.globalObject.originalError){
switch (this.type){
case ErrorType.EvalError: return new EvalErrorObject(this.originalPrototype, e);
case ErrorType.RangeError: return new RangeErrorObject(this.originalPrototype, e);
case ErrorType.ReferenceError: return new ReferenceErrorObject(this.originalPrototype, e);
case ErrorType.SyntaxError: return new SyntaxErrorObject(this.originalPrototype, e);
case ErrorType.TypeError: return new TypeErrorObject(this.originalPrototype, e);
case ErrorType.URIError: return new URIErrorObject(this.originalPrototype, e);
default: return new ErrorObject(this.originalPrototype, e);
}
}
switch (((JScriptException)e).GetErrorType()){
case ErrorType.EvalError: return this.globalObject.originalEvalError.Construct(e);
case ErrorType.RangeError: return this.globalObject.originalRangeError.Construct(e);
case ErrorType.ReferenceError: return this.globalObject.originalReferenceError.Construct(e);
case ErrorType.SyntaxError: return this.globalObject.originalSyntaxError.Construct(e);
case ErrorType.TypeError: return this.globalObject.originalTypeError.Construct(e);
case ErrorType.URIError: return this.globalObject.originalURIError.Construct(e);
default: return new ErrorObject(this.originalPrototype, e);
}
}