    /**
     * @private
     */
    Ext.define('Ext.event.recognizer.MultiTouch', {
        extend: 'Ext.event.recognizer.Touch',

        requiredTouchesCount: 2,

        isTracking: false,

        isStarted: false,

        onTouchStart: function(e) {
            var requiredTouchesCount = this.requiredTouchesCount,
                touches = e.touches,
                touchesCount = touches.length;

            if (touchesCount === requiredTouchesCount) {
                this.start(e);
            }
            else if (touchesCount > requiredTouchesCount) {
                this.end(e);
            }
        },

        onTouchEnd: function(e) {
            this.end(e);
        },

        start: function() {
            if (!this.isTracking) {
                this.isTracking = true;
                this.isStarted = false;
            }
        },

        end: function(e) {
            if (this.isTracking) {
                this.isTracking = false;

                if (this.isStarted) {
                    this.isStarted = false;

                    this.fireEnd(e);
                }
            }
        }
    });