/* protected */ public override void OnRecycle()
            {
                base.OnRecycle();
                TouchEvent touchEvent = this.mTouchEvent;

                touchEvent.GetMotionEvent().Recycle();
                touchEvent.Recycle();
            }
        protected bool FireTouchEvent(float pX, float pY, /* int pAction */ Android.Views.MotionEventActions pAction, int pPointerID, MotionEvent pMotionEvent)
        {
            bool handled;

            if (this.mRunOnUpdateThread)
            {
                TouchEvent touchEvent = TouchEvent.Obtain(pX, pY, pAction, pPointerID, MotionEvent.Obtain(pMotionEvent));

                TouchEventRunnablePoolItem touchEventRunnablePoolItem = this.mTouchEventRunnablePoolUpdateHandler.ObtainPoolItem();
                touchEventRunnablePoolItem.Set(touchEvent);
                this.mTouchEventRunnablePoolUpdateHandler.PostPoolItem(touchEventRunnablePoolItem);

                handled = true;
            }
            else
            {
                TouchEvent touchEvent = TouchEvent.Obtain(pX, pY, pAction, pPointerID, pMotionEvent);
                handled = this.mTouchEventCallback.OnTouchEvent(touchEvent);
                touchEvent.Recycle();
            }

            return(handled);
        }