public override object Execute(IContextProvider provider, object[] dataPool) { try { object value1 = CoreFuncs.CastToNumber1(Context, CoreFuncs.Atomize(this[0].Execute(provider, dataPool))); if (value1 != Undefined.Value) { object value2 = CoreFuncs.CastToNumber1(Context, CoreFuncs.Atomize(this[1].Execute(provider, dataPool))); if (value2 != Undefined.Value) { return(_binaryOper(provider, value1, value2)); } } return(Undefined.Value); } catch (DivideByZeroException ex) { throw new XPath2Exception("", ex.Message, ex); } catch (OverflowException ex) { throw new XPath2Exception("", ex.Message, ex); } }