public static int eval(cef_v8context_t* self, cef_string_t* code, cef_v8value_t** retval, cef_v8exception_t** exception)
 {
     eval_delegate d;
     var p = self->_eval;
     if (p == _pb) { d = _db; }
     else
     {
         d = (eval_delegate)Marshal.GetDelegateForFunctionPointer(p, typeof(eval_delegate));
         if (_pb == IntPtr.Zero) { _db = d; _pb = p; }
     }
     return d(self, code, retval, exception);
 }
 internal static CefV8Exception FromNativeOrNull(cef_v8exception_t* ptr)
 {
     if (ptr == null) return null;
     return new CefV8Exception(ptr);
 }
 private CefV8Exception(cef_v8exception_t* ptr)
 {
     if (ptr == null) throw new ArgumentNullException("ptr");
     _self = ptr;
 }
 public static int add_ref(cef_v8exception_t* self)
 {
     add_ref_delegate d;
     var p = self->_base._add_ref;
     if (p == _p0) { d = _d0; }
     else
     {
         d = (add_ref_delegate)Marshal.GetDelegateForFunctionPointer(p, typeof(add_ref_delegate));
         if (_p0 == IntPtr.Zero) { _d0 = d; _p0 = p; }
     }
     return d(self);
 }
 internal static CefV8Exception FromNative(cef_v8exception_t* ptr)
 {
     return new CefV8Exception(ptr);
 }
 public static int get_start_position(cef_v8exception_t* self)
 {
     get_start_position_delegate d;
     var p = self->_get_start_position;
     if (p == _p7) { d = _d7; }
     else
     {
         d = (get_start_position_delegate)Marshal.GetDelegateForFunctionPointer(p, typeof(get_start_position_delegate));
         if (_p7 == IntPtr.Zero) { _d7 = d; _p7 = p; }
     }
     return d(self);
 }
 public static int get_end_column(cef_v8exception_t* self)
 {
     get_end_column_delegate d;
     var p = self->_get_end_column;
     if (p == _pa) { d = _da; }
     else
     {
         d = (get_end_column_delegate)Marshal.GetDelegateForFunctionPointer(p, typeof(get_end_column_delegate));
         if (_pa == IntPtr.Zero) { _da = d; _pa = p; }
     }
     return d(self);
 }
 public static cef_string_userfree* get_script_resource_name(cef_v8exception_t* self)
 {
     get_script_resource_name_delegate d;
     var p = self->_get_script_resource_name;
     if (p == _p5) { d = _d5; }
     else
     {
         d = (get_script_resource_name_delegate)Marshal.GetDelegateForFunctionPointer(p, typeof(get_script_resource_name_delegate));
         if (_p5 == IntPtr.Zero) { _d5 = d; _p5 = p; }
     }
     return d(self);
 }
 public static int get_line_number(cef_v8exception_t* self)
 {
     get_line_number_delegate d;
     var p = self->_get_line_number;
     if (p == _p6) { d = _d6; }
     else
     {
         d = (get_line_number_delegate)Marshal.GetDelegateForFunctionPointer(p, typeof(get_line_number_delegate));
         if (_p6 == IntPtr.Zero) { _d6 = d; _p6 = p; }
     }
     return d(self);
 }
 public static cef_string_userfree* get_source_line(cef_v8exception_t* self)
 {
     get_source_line_delegate d;
     var p = self->_get_source_line;
     if (p == _p4) { d = _d4; }
     else
     {
         d = (get_source_line_delegate)Marshal.GetDelegateForFunctionPointer(p, typeof(get_source_line_delegate));
         if (_p4 == IntPtr.Zero) { _d4 = d; _p4 = p; }
     }
     return d(self);
 }
 public static cef_string_userfree* get_message(cef_v8exception_t* self)
 {
     get_message_delegate d;
     var p = self->_get_message;
     if (p == _p3) { d = _d3; }
     else
     {
         d = (get_message_delegate)Marshal.GetDelegateForFunctionPointer(p, typeof(get_message_delegate));
         if (_p3 == IntPtr.Zero) { _d3 = d; _p3 = p; }
     }
     return d(self);
 }
 public static int get_refct(cef_v8exception_t* self)
 {
     get_refct_delegate d;
     var p = self->_base._get_refct;
     if (p == _p2) { d = _d2; }
     else
     {
         d = (get_refct_delegate)Marshal.GetDelegateForFunctionPointer(p, typeof(get_refct_delegate));
         if (_p2 == IntPtr.Zero) { _d2 = d; _p2 = p; }
     }
     return d(self);
 }
 public static int release(cef_v8exception_t* self)
 {
     release_delegate d;
     var p = self->_base._release;
     if (p == _p1) { d = _d1; }
     else
     {
         d = (release_delegate)Marshal.GetDelegateForFunctionPointer(p, typeof(release_delegate));
         if (_p1 == IntPtr.Zero) { _d1 = d; _p1 = p; }
     }
     return d(self);
 }
        private void on_uncaught_exception(cef_render_process_handler_t* self, cef_browser_t* browser, cef_frame_t* frame, cef_v8context_t* context, cef_v8exception_t* exception, cef_v8stack_trace_t* stackTrace)
        {
            CheckSelf(self);

            var mBrowser = CefBrowser.FromNative(browser);
            var mFrame = CefFrame.FromNative(frame);
            var mContext = CefV8Context.FromNative(context);
            var mException = CefV8Exception.FromNative(exception);
            var mStackTrace = CefV8StackTrace.FromNative(stackTrace);

            OnUncaughtException(mBrowser, mFrame, mContext, mException, mStackTrace);
        }