    Ext.define('Ext.rtl.dom.Element_insertion', {
        override: 'Ext.dom.Element',

        wrap: function() {
            var parent = this.parent(),
                rtlCls = Ext.baseCSSPrefix + 'rtl',
                ltrCls = Ext.baseCSSPrefix + 'ltr',
                wrapEl = this.callParent(arguments),
                cls;

            // if the parentNode of the element being wrapped has the "x-rtl" or "x-ltr" css
            // class, then add that class to the wrapper as well.  This ensures that descendant
            // and child selectors still apply e.g. ".x-rtl > .x-foo" or ".x-ltr .x-foo"
            if (parent.hasCls(rtlCls)) {
                cls = rtlCls;
            } else if (parent.hasCls(ltrCls)) {
                cls = ltrCls;
            }

            if (cls) {
                // superclass method may return dom, so use fly() to access the wrap el
                Ext.fly(wrapEl, '_wrap').addCls(cls);
            }

            return wrapEl;
        }
    });