"no use strict";

var console = {
    log: function(msgs) {
        postMessage({type: "log", data: arguments.join(" ")});
    }
};
var window = {
    console: console
};

var normalizeModule = function(parentId, moduleName) {
    // normalize plugin requires
    if (moduleName.indexOf("!") !== -1) {
        var chunks = moduleName.split("!");
        return normalizeModule(parentId, chunks[0]) + "!" + normalizeModule(parentId, chunks[1]);
    }
    // normalize relative requires
    if (moduleName.charAt(0) == ".") {
        var base = parentId.split("/").slice(0, -1).join("/");
        var moduleName = base + "/" + moduleName;
        
        while(moduleName.indexOf(".") !== -1 && previous != moduleName) {
            var previous = moduleName;
            var moduleName = moduleName.replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, "");
        }
    }
    
    return moduleName;
};

var require = function(parentId, id) {
    if (!id.charAt)
        throw new Error("worker.js require() accepts only (parentId, id) as arguments");

    var id = normalizeModule(parentId, id);
    
    var module = require.modules[id];
    if (module) {
        if (!module.initialized) {
            module.initialized = true;
            module.exports = module.factory().exports;
        }
        return module.exports;
    }
    
    var chunks = id.split("/");
    chunks[0] = require.tlns[chunks[0]] || chunks[0];
    var path = chunks.join("/") + ".js";
    
    require.id = id;
    importScripts(path);
    return require(parentId, id);    
};

require.modules = {};
require.tlns = {};

var define = function(id, deps, factory) {
    if (arguments.length == 2) {
        factory = deps;
        if (typeof id != "string") {
            deps = id;
            id = require.id;
        }
    } else if (arguments.length == 1) {
        factory = id;
        id = require.id;
    }

    if (id.indexOf("text!") === 0) 
        return;
    
    var req = function(deps, factory) {
        return require(id, deps, factory);
    };

    require.modules[id] = {
        factory: function() {
            var module = {
                exports: {}
            };
            var returnExports = factory(req, module.exports, module);
            if (returnExports)
                module.exports = returnExports;
            return module;
        }
    };
};

function initBaseUrls(topLevelNamespaces) {
    require.tlns = topLevelNamespaces;
}

function initSender() {

    var EventEmitter = require(null, "ace/lib/event_emitter").EventEmitter;
    var oop = require(null, "ace/lib/oop");
    
    var Sender = function() {};
    
    (function() {
        
        oop.implement(this, EventEmitter);
                
        this.callback = function(data, callbackId) {
            postMessage({
                type: "call",
                id: callbackId,
                data: data
            });
        };
    
        this.emit = function(name, data) {
            postMessage({
                type: "event",
                name: name,
                data: data
            });
        };
        
    }).call(Sender.prototype);
    
    return new Sender();
}

var main;
var sender;

onmessage = function(e) {
    var msg = e.data;
    if (msg.command) {
        main[msg.command].apply(main, msg.args);
    }
    else if (msg.init) {        
        initBaseUrls(msg.tlns);
        require(null, "ace/lib/fixoldbrowsers");
        sender = initSender();
        var clazz = require(null, msg.module)[msg.classname];
        main = new clazz(sender);
    } 
    else if (msg.event && sender) {
        sender._emit(msg.event, msg.data);
    }
};
// vim:set ts=4 sts=4 sw=4 st:
// -- kriskowal Kris Kowal Copyright (C) 2009-2010 MIT License
// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
// -- dantman Daniel Friesen Copyright(C) 2010 XXX No License Specified
// -- fschaefer Florian Schäfer Copyright (C) 2010 MIT License
// -- Irakli Gozalishvili Copyright (C) 2010 MIT License

/*!
    Copyright (c) 2009, 280 North Inc. http://280north.com/
    MIT License. http://github.com/280north/narwhal/blob/master/README.md
*/

define('ace/lib/fixoldbrowsers', ['require', 'exports', 'module' , 'ace/lib/regexp', 'ace/lib/es5-shim'], function(require, exports, module) {


require("./regexp");
require("./es5-shim");

});
 
define('ace/lib/regexp', ['require', 'exports', 'module' ], function(require, exports, module) {


    //---------------------------------
    //  Private variables
    //---------------------------------

    var real = {
            exec: RegExp.prototype.exec,
            test: RegExp.prototype.test,
            match: String.prototype.match,
            replace: String.prototype.replace,
            split: String.prototype.split
        },
        compliantExecNpcg = real.exec.call(/()??/, "")[1] === undefined, // check `exec` handling of nonparticipating capturing groups
        compliantLastIndexIncrement = function () {
            var x = /^/g;
            real.test.call(x, "");
            return !x.lastIndex;
        }();

    if (compliantLastIndexIncrement && compliantExecNpcg)
        return;

    //---------------------------------
    //  Overriden native methods
    //---------------------------------

    // Adds named capture support (with backreferences returned as `result.name`), and fixes two
    // cross-browser issues per ES3:
    // - Captured values for nonparticipating capturing groups should be returned as `undefined`,
    //   rather than the empty string.
    // - `lastIndex` should not be incremented after zero-length matches.
    RegExp.prototype.exec = function (str) {
        var match = real.exec.apply(this, arguments),
            name, r2;
        if ( typeof(str) == 'string' && match) {
            // Fix browsers whose `exec` methods don't consistently return `undefined` for
            // nonparticipating capturing groups
            if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
                r2 = RegExp(this.source, real.replace.call(getNativeFlags(this), "g", ""));
                // Using `str.slice(match.index)` rather than `match[0]` in case lookahead allowed
                // matching due to characters outside the match
                real.replace.call(str.slice(match.index), r2, function () {
                    for (var i = 1; i < arguments.length - 2; i++) {
                        if (arguments[i] === undefined)
                            match[i] = undefined;
                    }
                });
            }
            // Attach named capture properties
            if (this._xregexp && this._xregexp.captureNames) {
                for (var i = 1; i < match.length; i++) {
                    name = this._xregexp.captureNames[i - 1];
                    if (name)
                       match[name] = match[i];
                }
            }
            // Fix browsers that increment `lastIndex` after zero-length matches
            if (!compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index))
                this.lastIndex--;
        }
        return match;
    };

    // Don't override `test` if it won't change anything
    if (!compliantLastIndexIncrement) {
        // Fix browser bug in native method
        RegExp.prototype.test = function (str) {
            // Use the native `exec` to skip some processing overhead, even though the overriden
            // `exec` would take care of the `lastIndex` fix
            var match = real.exec.call(this, str);
            // Fix browsers that increment `lastIndex` after zero-length matches
            if (match && this.global && !match[0].length && (this.lastIndex > match.index))
                this.lastIndex--;
            return !!match;
        };
    }

    //---------------------------------
    //  Private helper functions
    //---------------------------------

    function getNativeFlags (regex) {
        return (regex.global     ? "g" : "") +
               (regex.ignoreCase ? "i" : "") +
               (regex.multiline  ? "m" : "") +
               (regex.extended   ? "x" : "") + // Proposed for ES4; included in AS3
               (regex.sticky     ? "y" : "");
    }

    function indexOf (array, item, from) {
        if (Array.prototype.indexOf) // Use the native array method if available
            return array.indexOf(item, from);
        for (var i = from || 0; i < array.length; i++) {
            if (array[i] === item)
                return i;
        }
        return -1;
    }

});
// vim: ts=4 sts=4 sw=4 expandtab
// -- kriskowal Kris Kowal Copyright (C) 2009-2011 MIT License
// -- tlrobinson Tom Robinson Copyright (C) 2009-2010 MIT License (Narwhal Project)
// -- dantman Daniel Friesen Copyright (C) 2010 XXX TODO License or CLA
// -- fschaefer Florian Schäfer Copyright (C) 2010 MIT License
// -- Gozala Irakli Gozalishvili Copyright (C) 2010 MIT License
// -- kitcambridge Kit Cambridge Copyright (C) 2011 MIT License
// -- kossnocorp Sasha Koss XXX TODO License or CLA
// -- bryanforbes Bryan Forbes XXX TODO License or CLA
// -- killdream Quildreen Motta Copyright (C) 2011 MIT Licence
// -- michaelficarra Michael Ficarra Copyright (C) 2011 3-clause BSD License
// -- sharkbrainguy Gerard Paapu Copyright (C) 2011 MIT License
// -- bbqsrc Brendan Molloy (C) 2011 Creative Commons Zero (public domain)
// -- iwyg XXX TODO License or CLA
// -- DomenicDenicola Domenic Denicola Copyright (C) 2011 MIT License
// -- xavierm02 Montillet Xavier XXX TODO License or CLA
// -- Raynos Raynos XXX TODO License or CLA
// -- samsonjs Sami Samhuri Copyright (C) 2010 MIT License
// -- rwldrn Rick Waldron Copyright (C) 2011 MIT License
// -- lexer Alexey Zakharov XXX TODO License or CLA

/*!
    Copyright (c) 2009, 280 North Inc. http://280north.com/
    MIT License. http://github.com/280north/narwhal/blob/master/README.md
*/

define('ace/lib/es5-shim', ['require', 'exports', 'module' ], function(require, exports, module) {

/*
 * Brings an environment as close to ECMAScript 5 compliance
 * as is possible with the facilities of erstwhile engines.
 *
 * Annotated ES5: http://es5.github.com/ (specific links below)
 * ES5 Spec: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
 *
 * @module
 */

/*whatsupdoc*/

//
// Function
// ========
//

// ES-5 15.3.4.5
// http://es5.github.com/#x15.3.4.5

if (!Function.prototype.bind) {
    Function.prototype.bind = function bind(that) { // .length is 1
        // 1. Let Target be the this value.
        var target = this;
        // 2. If IsCallable(Target) is false, throw a TypeError exception.
        if (typeof target != "function")
            throw new TypeError(); // TODO message
        // 3. Let A be a new (possibly empty) internal list of all of the
        //   argument values provided after thisArg (arg1, arg2 etc), in order.
        // XXX slicedArgs will stand in for "A" if used
        var args = slice.call(arguments, 1); // for normal call
        // 4. Let F be a new native ECMAScript object.
        // 11. Set the [[Prototype]] internal property of F to the standard
        //   built-in Function prototype object as specified in 15.3.3.1.
        // 12. Set the [[Call]] internal property of F as described in
        //   15.3.4.5.1.
        // 13. Set the [[Construct]] internal property of F as described in
        //   15.3.4.5.2.
        // 14. Set the [[HasInstance]] internal property of F as described in
        //   15.3.4.5.3.
        var bound = function () {

            if (this instanceof bound) {
                // 15.3.4.5.2 [[Construct]]
                // When the [[Construct]] internal method of a function object,
                // F that was created using the bind function is called with a
                // list of arguments ExtraArgs, the following steps are taken:
                // 1. Let target be the value of F's [[TargetFunction]]
                //   internal property.
                // 2. If target has no [[Construct]] internal method, a
                //   TypeError exception is thrown.
                // 3. Let boundArgs be the value of F's [[BoundArgs]] internal
                //   property.
                // 4. Let args be a new list containing the same values as the
                //   list boundArgs in the same order followed by the same
                //   values as the list ExtraArgs in the same order.
                // 5. Return the result of calling the [[Construct]] internal 
                //   method of target providing args as the arguments.

                var F = function(){};
                F.prototype = target.prototype;
                var self = new F;

                var result = target.apply(
                    self,
                    args.concat(slice.call(arguments))
                );
                if (result !== null && Object(result) === result)
                    return result;
                return self;

            } else {
                // 15.3.4.5.1 [[Call]]
                // When the [[Call]] internal method of a function object, F,
                // which was created using the bind function is called with a
                // this value and a list of arguments ExtraArgs, the following
                // steps are taken:
                // 1. Let boundArgs be the value of F's [[BoundArgs]] internal
                //   property.
                // 2. Let boundThis be the value of F's [[BoundThis]] internal
                //   property.
                // 3. Let target be the value of F's [[TargetFunction]] internal
                //   property.
                // 4. Let args be a new list containing the same values as the 
                //   list boundArgs in the same order followed by the same 
                //   values as the list ExtraArgs in the same order.
                // 5. Return the result of calling the [[Call]] internal method 
                //   of target providing boundThis as the this value and 
                //   providing args as the arguments.

                // equiv: target.call(this, ...boundArgs, ...args)
                return target.apply(
                    that,
                    args.concat(slice.call(arguments))
                );

            }

        };
        // XXX bound.length is never writable, so don't even try
        //
        // 15. If the [[Class]] internal property of Target is "Function", then
        //     a. Let L be the length property of Target minus the length of A.
        //     b. Set the length own property of F to either 0 or L, whichever is 
        //       larger.
        // 16. Else set the length own property of F to 0.
        // 17. Set the attributes of the length own property of F to the values
        //   specified in 15.3.5.1.

        // TODO
        // 18. Set the [[Extensible]] internal property of F to true.
        
        // TODO
        // 19. Let thrower be the [[ThrowTypeError]] function Object (13.2.3).
        // 20. Call the [[DefineOwnProperty]] internal method of F with 
        //   arguments "caller", PropertyDescriptor {[[Get]]: thrower, [[Set]]:
        //   thrower, [[Enumerable]]: false, [[Configurable]]: false}, and 
        //   false.
        // 21. Call the [[DefineOwnProperty]] internal method of F with 
        //   arguments "arguments", PropertyDescriptor {[[Get]]: thrower, 
        //   [[Set]]: thrower, [[Enumerable]]: false, [[Configurable]]: false},
        //   and false.

        // TODO
        // NOTE Function objects created using Function.prototype.bind do not 
        // have a prototype property or the [[Code]], [[FormalParameters]], and
        // [[Scope]] internal properties.
        // XXX can't delete prototype in pure-js.

        // 22. Return F.
        return bound;
    };
}

// Shortcut to an often accessed properties, in order to avoid multiple
// dereference that costs universally.
// _Please note: Shortcuts are defined after `Function.prototype.bind` as we
// us it in defining shortcuts.
var call = Function.prototype.call;
var prototypeOfArray = Array.prototype;
var prototypeOfObject = Object.prototype;
var slice = prototypeOfArray.slice;
var toString = call.bind(prototypeOfObject.toString);
var owns = call.bind(prototypeOfObject.hasOwnProperty);

// If JS engine supports accessors creating shortcuts.
var defineGetter;
var defineSetter;
var lookupGetter;
var lookupSetter;
var supportsAccessors;
if ((supportsAccessors = owns(prototypeOfObject, "__defineGetter__"))) {
    defineGetter = call.bind(prototypeOfObject.__defineGetter__);
    defineSetter = call.bind(prototypeOfObject.__defineSetter__);
    lookupGetter = call.bind(prototypeOfObject.__lookupGetter__);
    lookupSetter = call.bind(prototypeOfObject.__lookupSetter__);
}

//
// Array
// =====
//

// ES5 15.4.3.2
// http://es5.github.com/#x15.4.3.2
// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/isArray
if (!Array.isArray) {
    Array.isArray = function isArray(obj) {
        return toString(obj) == "[object Array]";
    };
}

// The IsCallable() check in the Array functions
// has been replaced with a strict check on the
// internal class of the object to trap cases where
// the provided function was actually a regular
// expression literal, which in V8 and
// JavaScriptCore is a typeof "function".  Only in
// V8 are regular expression literals permitted as
// reduce parameters, so it is desirable in the
// general case for the shim to match the more
// strict and common behavior of rejecting regular
// expressions.

// ES5 15.4.4.18
// http://es5.github.com/#x15.4.4.18
// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/array/forEach
if (!Array.prototype.forEach) {
    Array.prototype.forEach = function forEach(fun /*, thisp*/) {
        var self = toObject(this),
            thisp = arguments[1],
            i = 0,
            length = self.length >>> 0;

        // If no callback function or if callback is not a callable function
        if (toString(fun) != "[object Function]") {
            throw new TypeError(); // TODO message
        }

        while (i < length) {
            if (i in self) {
                // Invoke the callback function with call, passing arguments:
                // context, property value, property key, thisArg object context
                fun.call(thisp, self[i], i, self);
            }
            i++;
        }
    };
}

// ES5 15.4.4.19
// http://es5.github.com/#x15.4.4.19
// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/map
if (!Array.prototype.map) {
    Array.prototype.map = function map(fun /*, thisp*/) {
        var self = toObject(this),
            length = self.length >>> 0,
            result = Array(length),
            thisp = arguments[1];

        // If no callback function or if callback is not a callable function
        if (toString(fun) != "[object Function]") {
            throw new TypeError(); // TODO message
        }

        for (var i = 0; i < length; i++) {
            if (i in self)
                result[i] = fun.call(thisp, self[i], i, self);
        }
        return result;
    };
}

// ES5 15.4.4.20
// http://es5.github.com/#x15.4.4.20
// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/filter
if (!Array.prototype.filter) {
    Array.prototype.filter = function filter(fun /*, thisp */) {
        var self = toObject(this),
            length = self.length >>> 0,
            result = [],
            thisp = arguments[1];

        // If no callback function or if callback is not a callable function
        if (toString(fun) != "[object Function]") {
            throw new TypeError(); // TODO message
        }

        for (var i = 0; i < length; i++) {
            if (i in self && fun.call(thisp, self[i], i, self))
                result.push(self[i]);
        }
        return result;
    };
}

// ES5 15.4.4.16
// http://es5.github.com/#x15.4.4.16
// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/every
if (!Array.prototype.every) {
    Array.prototype.every = function every(fun /*, thisp */) {
        var self = toObject(this),
            length = self.length >>> 0,
            thisp = arguments[1];

        // If no callback function or if callback is not a callable function
        if (toString(fun) != "[object Function]") {
            throw new TypeError(); // TODO message
        }

        for (var i = 0; i < length; i++) {
            if (i in self && !fun.call(thisp, self[i], i, self))
                return false;
        }
        return true;
    };
}

// ES5 15.4.4.17
// http://es5.github.com/#x15.4.4.17
// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/some
if (!Array.prototype.some) {
    Array.prototype.some = function some(fun /*, thisp */) {
        var self = toObject(this),
            length = self.length >>> 0,
            thisp = arguments[1];

        // If no callback function or if callback is not a callable function
        if (toString(fun) != "[object Function]") {
            throw new TypeError(); // TODO message
        }

        for (var i = 0; i < length; i++) {
            if (i in self && fun.call(thisp, self[i], i, self))
                return true;
        }
        return false;
    };
}

// ES5 15.4.4.21
// http://es5.github.com/#x15.4.4.21
// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/reduce
if (!Array.prototype.reduce) {
    Array.prototype.reduce = function reduce(fun /*, initial*/) {
        var self = toObject(this),
            length = self.length >>> 0;

        // If no callback function or if callback is not a callable function
        if (toString(fun) != "[object Function]") {
            throw new TypeError(); // TODO message
        }

        // no value to return if no initial value and an empty array
        if (!length && arguments.length == 1)
            throw new TypeError(); // TODO message

        var i = 0;
        var result;
        if (arguments.length >= 2) {
            result = arguments[1];
        } else {
            do {
                if (i in self) {
                    result = self[i++];
                    break;
                }

                // if array contains no values, no initial value to return
                if (++i >= length)
                    throw new TypeError(); // TODO message
            } while (true);
        }

        for (; i < length; i++) {
            if (i in self)
                result = fun.call(void 0, result, self[i], i, self);
        }

        return result;
    };
}

// ES5 15.4.4.22
// http://es5.github.com/#x15.4.4.22
// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/reduceRight
if (!Array.prototype.reduceRight) {
    Array.prototype.reduceRight = function reduceRight(fun /*, initial*/) {
        var self = toObject(this),
            length = self.length >>> 0;

        // If no callback function or if callback is not a callable function
        if (toString(fun) != "[object Function]") {
            throw new TypeError(); // TODO message
        }

        // no value to return if no initial value, empty array
        if (!length && arguments.length == 1)
            throw new TypeError(); // TODO message

        var result, i = length - 1;
        if (arguments.length >= 2) {
            result = arguments[1];
        } else {
            do {
                if (i in self) {
                    result = self[i--];
                    break;
                }

                // if array contains no values, no initial value to return
                if (--i < 0)
                    throw new TypeError(); // TODO message
            } while (true);
        }

        do {
            if (i in this)
                result = fun.call(void 0, result, self[i], i, self);
        } while (i--);

        return result;
    };
}

// ES5 15.4.4.14
// http://es5.github.com/#x15.4.4.14
// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf
if (!Array.prototype.indexOf) {
    Array.prototype.indexOf = function indexOf(sought /*, fromIndex */ ) {
        var self = toObject(this),
            length = self.length >>> 0;

        if (!length)
            return -1;

        var i = 0;
        if (arguments.length > 1)
            i = toInteger(arguments[1]);

        // handle negative indices
        i = i >= 0 ? i : Math.max(0, length + i);
        for (; i < length; i++) {
            if (i in self && self[i] === sought) {
                return i;
            }
        }
        return -1;
    };
}

// ES5 15.4.4.15
// http://es5.github.com/#x15.4.4.15
// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/lastIndexOf
if (!Array.prototype.lastIndexOf) {
    Array.prototype.lastIndexOf = function lastIndexOf(sought /*, fromIndex */) {
        var self = toObject(this),
            length = self.length >>> 0;

        if (!length)
            return -1;
        var i = length - 1;
        if (arguments.length > 1)
            i = Math.min(i, toInteger(arguments[1]));
        // handle negative indices
        i = i >= 0 ? i : length - Math.abs(i);
        for (; i >= 0; i--) {
            if (i in self && sought === self[i])
                return i;
        }
        return -1;
    };
}

//
// Object
// ======
//

// ES5 15.2.3.2
// http://es5.github.com/#x15.2.3.2
if (!Object.getPrototypeOf) {
    // https://github.com/kriskowal/es5-shim/issues#issue/2
    // http://ejohn.org/blog/objectgetprototypeof/
    // recommended by fschaefer on github
    Object.getPrototypeOf = function getPrototypeOf(object) {
        return object.__proto__ || (
            object.constructor ?
            object.constructor.prototype :
            prototypeOfObject
        );
    };
}

// ES5 15.2.3.3
// http://es5.github.com/#x15.2.3.3
if (!Object.getOwnPropertyDescriptor) {
    var ERR_NON_OBJECT = "Object.getOwnPropertyDescriptor called on a " +
                         "non-object: ";
    Object.getOwnPropertyDescriptor = function getOwnPropertyDescriptor(object, property) {
        if ((typeof object != "object" && typeof object != "function") || object === null)
            throw new TypeError(ERR_NON_OBJECT + object);
        // If object does not owns property return undefined immediately.
        if (!owns(object, property))
            return;

        var descriptor, getter, setter;

        // If object has a property then it's for sure both `enumerable` and
        // `configurable`.
        descriptor =  { enumerable: true, configurable: true };

        // If JS engine supports accessor properties then property may be a
        // getter or setter.
        if (supportsAccessors) {
            // Unfortunately `__lookupGetter__` will return a getter even
            // if object has own non getter property along with a same named
            // inherited getter. To avoid misbehavior we temporary remove
            // `__proto__` so that `__lookupGetter__` will return getter only
            // if it's owned by an object.
            var prototype = object.__proto__;
            object.__proto__ = prototypeOfObject;

            var getter = lookupGetter(object, property);
            var setter = lookupSetter(object, property);

            // Once we have getter and setter we can put values back.
            object.__proto__ = prototype;

            if (getter || setter) {
                if (getter) descriptor.get = getter;
                if (setter) descriptor.set = setter;

                // If it was accessor property we're done and return here
                // in order to avoid adding `value` to the descriptor.
                return descriptor;
            }
        }

        // If we got this far we know that object has an own property that is
        // not an accessor so we set it as a value and return descriptor.
        descriptor.value = object[property];
        return descriptor;
    };
}

// ES5 15.2.3.4
// http://es5.github.com/#x15.2.3.4
if (!Object.getOwnPropertyNames) {
    Object.getOwnPropertyNames = function getOwnPropertyNames(object) {
        return Object.keys(object);
    };
}

// ES5 15.2.3.5
// http://es5.github.com/#x15.2.3.5
if (!Object.create) {
    Object.create = function create(prototype, properties) {
        var object;
        if (prototype === null) {
            object = { "__proto__": null };
        } else {
            if (typeof prototype != "object")
                throw new TypeError("typeof prototype["+(typeof prototype)+"] != 'object'");
            var Type = function () {};
            Type.prototype = prototype;
            object = new Type();
            // IE has no built-in implementation of `Object.getPrototypeOf`
            // neither `__proto__`, but this manually setting `__proto__` will
            // guarantee that `Object.getPrototypeOf` will work as expected with
            // objects created using `Object.create`
            object.__proto__ = prototype;
        }
        if (properties !== void 0)
            Object.defineProperties(object, properties);
        return object;
    };
}

// ES5 15.2.3.6
// http://es5.github.com/#x15.2.3.6

// Patch for WebKit and IE8 standard mode
// Designed by hax <hax.github.com>
// related issue: https://github.com/kriskowal/es5-shim/issues#issue/5
// IE8 Reference:
//     http://msdn.microsoft.com/en-us/library/dd282900.aspx
//     http://msdn.microsoft.com/en-us/library/dd229916.aspx
// WebKit Bugs:
//     https://bugs.webkit.org/show_bug.cgi?id=36423

function doesDefinePropertyWork(object) {
    try {
        Object.defineProperty(object, "sentinel", {});
        return "sentinel" in object;
    } catch (exception) {
        // returns falsy
    }
}

// check whether defineProperty works if it's given. Otherwise,
// shim partially.
if (Object.defineProperty) {
    var definePropertyWorksOnObject = doesDefinePropertyWork({});
    var definePropertyWorksOnDom = typeof document == "undefined" ||
        doesDefinePropertyWork(document.createElement("div"));
    if (!definePropertyWorksOnObject || !definePropertyWorksOnDom) {
        var definePropertyFallback = Object.defineProperty;
    }
}

if (!Object.defineProperty || definePropertyFallback) {
    var ERR_NON_OBJECT_DESCRIPTOR = "Property description must be an object: ";
    var ERR_NON_OBJECT_TARGET = "Object.defineProperty called on non-object: "
    var ERR_ACCESSORS_NOT_SUPPORTED = "getters & setters can not be defined " +
                                      "on this javascript engine";

    Object.defineProperty = function defineProperty(object, property, descriptor) {
        if ((typeof object != "object" && typeof object != "function") || object === null)
            throw new TypeError(ERR_NON_OBJECT_TARGET + object);
        if ((typeof descriptor != "object" && typeof descriptor != "function") || descriptor === null)
            throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR + descriptor);

        // make a valiant attempt to use the real defineProperty
        // for I8's DOM elements.
        if (definePropertyFallback) {
            try {
                return definePropertyFallback.call(Object, object, property, descriptor);
            } catch (exception) {
                // try the shim if the real one doesn't work
            }
        }

        // If it's a data property.
        if (owns(descriptor, "value")) {
            // fail silently if "writable", "enumerable", or "configurable"
            // are requested but not supported
            /*
            // alternate approach:
            if ( // can't implement these features; allow false but not true
                !(owns(descriptor, "writable") ? descriptor.writable : true) ||
                !(owns(descriptor, "enumerable") ? descriptor.enumerable : true) ||
                !(owns(descriptor, "configurable") ? descriptor.configurable : true)
            )
                throw new RangeError(
                    "This implementation of Object.defineProperty does not " +
                    "support configurable, enumerable, or writable."
                );
            */

            if (supportsAccessors && (lookupGetter(object, property) ||
                                      lookupSetter(object, property)))
            {
                // As accessors are supported only on engines implementing
                // `__proto__` we can safely override `__proto__` while defining
                // a property to make sure that we don't hit an inherited
                // accessor.
                var prototype = object.__proto__;
                object.__proto__ = prototypeOfObject;
                // Deleting a property anyway since getter / setter may be
                // defined on object itself.
                delete object[property];
                object[property] = descriptor.value;
                // Setting original `__proto__` back now.
                object.__proto__ = prototype;
            } else {
                object[property] = descriptor.value;
            }
        } else {
            if (!supportsAccessors)
                throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);
            // If we got that far then getters and setters can be defined !!
            if (owns(descriptor, "get"))
                defineGetter(object, property, descriptor.get);
            if (owns(descriptor, "set"))
                defineSetter(object, property, descriptor.set);
        }

        return object;
    };
}

// ES5 15.2.3.7
// http://es5.github.com/#x15.2.3.7
if (!Object.defineProperties) {
    Object.defineProperties = function defineProperties(object, properties) {
        for (var property in properties) {
            if (owns(properties, property))
                Object.defineProperty(object, property, properties[property]);
        }
        return object;
    };
}

// ES5 15.2.3.8
// http://es5.github.com/#x15.2.3.8
if (!Object.seal) {
    Object.seal = function seal(object) {
        // this is misleading and breaks feature-detection, but
        // allows "securable" code to "gracefully" degrade to working
        // but insecure code.
        return object;
    };
}

// ES5 15.2.3.9
// http://es5.github.com/#x15.2.3.9
if (!Object.freeze) {
    Object.freeze = function freeze(object) {
        // this is misleading and breaks feature-detection, but
        // allows "securable" code to "gracefully" degrade to working
        // but insecure code.
        return object;
    };
}

// detect a Rhino bug and patch it
try {
    Object.freeze(function () {});
} catch (exception) {
    Object.freeze = (function freeze(freezeObject) {
        return function freeze(object) {
            if (typeof object == "function") {
                return object;
            } else {
                return freezeObject(object);
            }
        };
    })(Object.freeze);
}

// ES5 15.2.3.10
// http://es5.github.com/#x15.2.3.10
if (!Object.preventExtensions) {
    Object.preventExtensions = function preventExtensions(object) {
        // this is misleading and breaks feature-detection, but
        // allows "securable" code to "gracefully" degrade to working
        // but insecure code.
        return object;
    };
}

// ES5 15.2.3.11
// http://es5.github.com/#x15.2.3.11
if (!Object.isSealed) {
    Object.isSealed = function isSealed(object) {
        return false;
    };
}

// ES5 15.2.3.12
// http://es5.github.com/#x15.2.3.12
if (!Object.isFrozen) {
    Object.isFrozen = function isFrozen(object) {
        return false;
    };
}

// ES5 15.2.3.13
// http://es5.github.com/#x15.2.3.13
if (!Object.isExtensible) {
    Object.isExtensible = function isExtensible(object) {
        // 1. If Type(O) is not Object throw a TypeError exception.
        if (Object(object) === object) {
            throw new TypeError(); // TODO message
        }
        // 2. Return the Boolean value of the [[Extensible]] internal property of O.
        var name = '';
        while (owns(object, name)) {
            name += '?';
        }
        object[name] = true;
        var returnValue = owns(object, name);
        delete object[name];
        return returnValue;
    };
}

// ES5 15.2.3.14
// http://es5.github.com/#x15.2.3.14
if (!Object.keys) {
    // http://whattheheadsaid.com/2010/10/a-safer-object-keys-compatibility-implementation
    var hasDontEnumBug = true,
        dontEnums = [
            "toString",
            "toLocaleString",
            "valueOf",
            "hasOwnProperty",
            "isPrototypeOf",
            "propertyIsEnumerable",
            "constructor"
        ],
        dontEnumsLength = dontEnums.length;

    for (var key in {"toString": null})
        hasDontEnumBug = false;

    Object.keys = function keys(object) {

        if ((typeof object != "object" && typeof object != "function") || object === null)
            throw new TypeError("Object.keys called on a non-object");

        var keys = [];
        for (var name in object) {
            if (owns(object, name)) {
                keys.push(name);
            }
        }

        if (hasDontEnumBug) {
            for (var i = 0, ii = dontEnumsLength; i < ii; i++) {
                var dontEnum = dontEnums[i];
                if (owns(object, dontEnum)) {
                    keys.push(dontEnum);
                }
            }
        }

        return keys;
    };

}

//
// Date
// ====
//

// ES5 15.9.5.43
// http://es5.github.com/#x15.9.5.43
// This function returns a String value represent the instance in time 
// represented by this Date object. The format of the String is the Date Time 
// string format defined in 15.9.1.15. All fields are present in the String. 
// The time zone is always UTC, denoted by the suffix Z. If the time value of 
// this object is not a finite Number a RangeError exception is thrown.
if (!Date.prototype.toISOString || (new Date(-62198755200000).toISOString().indexOf('-000001') === -1)) {
    Date.prototype.toISOString = function toISOString() {
        var result, length, value, year;
        if (!isFinite(this))
            throw new RangeError;

        // the date time string format is specified in 15.9.1.15.
        result = [this.getUTCMonth() + 1, this.getUTCDate(),
            this.getUTCHours(), this.getUTCMinutes(), this.getUTCSeconds()];
        year = this.getUTCFullYear();
        year = (year < 0 ? '-' : (year > 9999 ? '+' : '')) + ('00000' + Math.abs(year)).slice(0 <= year && year <= 9999 ? -4 : -6);

        length = result.length;
        while (length--) {
            value = result[length];
            // pad months, days, hours, minutes, and seconds to have two digits.
            if (value < 10)
                result[length] = "0" + value;
        }
        // pad milliseconds to have three digits.
        return year + "-" + result.slice(0, 2).join("-") + "T" + result.slice(2).join(":") + "." +
            ("000" + this.getUTCMilliseconds()).slice(-3) + "Z";
    }
}

// ES5 15.9.4.4
// http://es5.github.com/#x15.9.4.4
if (!Date.now) {
    Date.now = function now() {
        return new Date().getTime();
    };
}

// ES5 15.9.5.44
// http://es5.github.com/#x15.9.5.44
// This function provides a String representation of a Date object for use by 
// JSON.stringify (15.12.3).
if (!Date.prototype.toJSON) {
    Date.prototype.toJSON = function toJSON(key) {
        // When the toJSON method is called with argument key, the following 
        // steps are taken:

        // 1.  Let O be the result of calling ToObject, giving it the this
        // value as its argument.
        // 2. Let tv be ToPrimitive(O, hint Number).
        // 3. If tv is a Number and is not finite, return null.
        // XXX
        // 4. Let toISO be the result of calling the [[Get]] internal method of
        // O with argument "toISOString".
        // 5. If IsCallable(toISO) is false, throw a TypeError exception.
        if (typeof this.toISOString != "function")
            throw new TypeError(); // TODO message
        // 6. Return the result of calling the [[Call]] internal method of
        //  toISO with O as the this value and an empty argument list.
        return this.toISOString();

        // NOTE 1 The argument is ignored.

        // NOTE 2 The toJSON function is intentionally generic; it does not
        // require that its this value be a Date object. Therefore, it can be
        // transferred to other kinds of objects for use as a method. However,
        // it does require that any such object have a toISOString method. An
        // object is free to use the argument key to filter its
        // stringification.
    };
}

// ES5 15.9.4.2
// http://es5.github.com/#x15.9.4.2
// based on work shared by Daniel Friesen (dantman)
// http://gist.github.com/303249
if (Date.parse("+275760-09-13T00:00:00.000Z") !== 8.64e15) {
    // XXX global assignment won't work in embeddings that use
    // an alternate object for the context.
    Date = (function(NativeDate) {

        // Date.length === 7
        var Date = function Date(Y, M, D, h, m, s, ms) {
            var length = arguments.length;
            if (this instanceof NativeDate) {
                var date = length == 1 && String(Y) === Y ? // isString(Y)
                    // We explicitly pass it through parse:
                    new NativeDate(Date.parse(Y)) :
                    // We have to manually make calls depending on argument
                    // length here
                    length >= 7 ? new NativeDate(Y, M, D, h, m, s, ms) :
                    length >= 6 ? new NativeDate(Y, M, D, h, m, s) :
                    length >= 5 ? new NativeDate(Y, M, D, h, m) :
                    length >= 4 ? new NativeDate(Y, M, D, h) :
                    length >= 3 ? new NativeDate(Y, M, D) :
                    length >= 2 ? new NativeDate(Y, M) :
                    length >= 1 ? new NativeDate(Y) :
                                  new NativeDate();
                // Prevent mixups with unfixed Date object
                date.constructor = Date;
                return date;
            }
            return NativeDate.apply(this, arguments);
        };

        // 15.9.1.15 Date Time String Format.
        var isoDateExpression = new RegExp("^" +
            "(\\d{4}|[\+\-]\\d{6})" + // four-digit year capture or sign + 6-digit extended year
            "(?:-(\\d{2})" + // optional month capture
            "(?:-(\\d{2})" + // optional day capture
            "(?:" + // capture hours:minutes:seconds.milliseconds
                "T(\\d{2})" + // hours capture
                ":(\\d{2})" + // minutes capture
                "(?:" + // optional :seconds.milliseconds
                    ":(\\d{2})" + // seconds capture
                    "(?:\\.(\\d{3}))?" + // milliseconds capture
                ")?" +
            "(?:" + // capture UTC offset component
                "Z|" + // UTC capture
                "(?:" + // offset specifier +/-hours:minutes
                    "([-+])" + // sign capture
                    "(\\d{2})" + // hours offset capture
                    ":(\\d{2})" + // minutes offset capture
                ")" +
            ")?)?)?)?" +
        "$");

        // Copy any custom methods a 3rd party library may have added
        for (var key in NativeDate)
            Date[key] = NativeDate[key];

        // Copy "native" methods explicitly; they may be non-enumerable
        Date.now = NativeDate.now;
        Date.UTC = NativeDate.UTC;
        Date.prototype = NativeDate.prototype;
        Date.prototype.constructor = Date;

        // Upgrade Date.parse to handle simplified ISO 8601 strings
        Date.parse = function parse(string) {
            var match = isoDateExpression.exec(string);
            if (match) {
                match.shift(); // kill match[0], the full match
                // parse months, days, hours, minutes, seconds, and milliseconds
                for (var i = 1; i < 7; i++) {
                    // provide default values if necessary
                    match[i] = +(match[i] || (i < 3 ? 1 : 0));
                    // match[1] is the month. Months are 0-11 in JavaScript
                    // `Date` objects, but 1-12 in ISO notation, so we
                    // decrement.
                    if (i == 1)
                        match[i]--;
                }

                // parse the UTC offset component
                var minuteOffset = +match.pop(), hourOffset = +match.pop(), sign = match.pop();

                // compute the explicit time zone offset if specified
                var offset = 0;
                if (sign) {
                    // detect invalid offsets and return early
                    if (hourOffset > 23 || minuteOffset > 59)
                        return NaN;

                    // express the provided time zone offset in minutes. The offset is
                    // negative for time zones west of UTC; positive otherwise.
                    offset = (hourOffset * 60 + minuteOffset) * 6e4 * (sign == "+" ? -1 : 1);
                }

                // Date.UTC for years between 0 and 99 converts year to 1900 + year
                // The Gregorian calendar has a 400-year cycle, so 
                // to Date.UTC(year + 400, .... ) - 12622780800000 == Date.UTC(year, ...),
                // where 12622780800000 - number of milliseconds in Gregorian calendar 400 years
                var year = +match[0];
                if (0 <= year && year <= 99) {
                    match[0] = year + 400;
                    return NativeDate.UTC.apply(this, match) + offset - 12622780800000;
                }

                // compute a new UTC date value, accounting for the optional offset
                return NativeDate.UTC.apply(this, match) + offset;
            }
            return NativeDate.parse.apply(this, arguments);
        };

        return Date;
    })(Date);
}

//
// String
// ======
//

// ES5 15.5.4.20
// http://es5.github.com/#x15.5.4.20
var ws = "\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003" +
    "\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028" +
    "\u2029\uFEFF";
if (!String.prototype.trim || ws.trim()) {
    // http://blog.stevenlevithan.com/archives/faster-trim-javascript
    // http://perfectionkills.com/whitespace-deviations/
    ws = "[" + ws + "]";
    var trimBeginRegexp = new RegExp("^" + ws + ws + "*"),
        trimEndRegexp = new RegExp(ws + ws + "*$");
    String.prototype.trim = function trim() {
        return String(this).replace(trimBeginRegexp, "").replace(trimEndRegexp, "");
    };
}

//
// Util
// ======
//

// ES5 9.4
// http://es5.github.com/#x9.4
// http://jsperf.com/to-integer
var toInteger = function (n) {
    n = +n;
    if (n !== n) // isNaN
        n = 0;
    else if (n !== 0 && n !== (1/0) && n !== -(1/0))
        n = (n > 0 || -1) * Math.floor(Math.abs(n));
    return n;
};

var prepareString = "a"[0] != "a",
    // ES5 9.9
    // http://es5.github.com/#x9.9
    toObject = function (o) {
        if (o == null) { // this matches both null and undefined
            throw new TypeError(); // TODO message
        }
        // If the implementation doesn't support by-index access of
        // string characters (ex. IE < 7), split the string
        if (prepareString && typeof o == "string" && o) {
            return o.split("");
        }
        return Object(o);
    };
});

define('ace/lib/event_emitter', ['require', 'exports', 'module' ], function(require, exports, module) {


var EventEmitter = {};

EventEmitter._emit =
EventEmitter._dispatchEvent = function(eventName, e) {
    this._eventRegistry = this._eventRegistry || {};
    this._defaultHandlers = this._defaultHandlers || {};

    var listeners = this._eventRegistry[eventName] || [];
    var defaultHandler = this._defaultHandlers[eventName];
    if (!listeners.length && !defaultHandler)
        return;

    if (typeof e != "object" || !e)
        e = {};

    if (!e.type)
        e.type = eventName;
    
    if (!e.stopPropagation) {
        e.stopPropagation = function() {
            this.propagationStopped = true;
        };
    }
    
    if (!e.preventDefault) {
        e.preventDefault = function() {
            this.defaultPrevented = true;
        };
    }

    for (var i=0; i<listeners.length; i++) {
        listeners[i](e);
        if (e.propagationStopped)
            break;
    }
    
    if (defaultHandler && !e.defaultPrevented)
        return defaultHandler(e);
};

EventEmitter.setDefaultHandler = function(eventName, callback) {
    this._defaultHandlers = this._defaultHandlers || {};
    
    if (this._defaultHandlers[eventName])
        throw new Error("The default handler for '" + eventName + "' is already set");
        
    this._defaultHandlers[eventName] = callback;
};

EventEmitter.on =
EventEmitter.addEventListener = function(eventName, callback) {
    this._eventRegistry = this._eventRegistry || {};

    var listeners = this._eventRegistry[eventName];
    if (!listeners)
        listeners = this._eventRegistry[eventName] = [];

    if (listeners.indexOf(callback) == -1)
        listeners.push(callback);
};

EventEmitter.removeListener =
EventEmitter.removeEventListener = function(eventName, callback) {
    this._eventRegistry = this._eventRegistry || {};

    var listeners = this._eventRegistry[eventName];
    if (!listeners)
        return;

    var index = listeners.indexOf(callback);
    if (index !== -1)
        listeners.splice(index, 1);
};

EventEmitter.removeAllListeners = function(eventName) {
    if (this._eventRegistry) this._eventRegistry[eventName] = [];
};

exports.EventEmitter = EventEmitter;

});

define('ace/lib/oop', ['require', 'exports', 'module' ], function(require, exports, module) {


exports.inherits = (function() {
    var tempCtor = function() {};
    return function(ctor, superCtor) {
        tempCtor.prototype = superCtor.prototype;
        ctor.super_ = superCtor.prototype;
        ctor.prototype = new tempCtor();
        ctor.prototype.constructor = ctor;
    };
}());

exports.mixin = function(obj, mixin) {
    for (var key in mixin) {
        obj[key] = mixin[key];
    }
};

exports.implement = function(proto, mixin) {
    exports.mixin(proto, mixin);
};

});
 
define('ace/mode/xquery_worker', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/worker/mirror', 'ace/mode/xquery/xquery', 'ace/tokenizer', 'ace/mode/xquery_highlight_rules'], function(require, exports, module) {

    
var oop = require("../lib/oop");
var Mirror = require("../worker/mirror").Mirror;
var xquery = require("../mode/xquery/xquery");
var Tokenizer = require("../tokenizer").Tokenizer;
var XQueryHighlightRules = require("./xquery_highlight_rules").XQueryHighlightRules;

window.addEventListener = function() {};


var XQueryWorker = exports.XQueryWorker = function(sender) {
    Mirror.call(this, sender);
    this.setTimeout(200);
};

oop.inherits(XQueryWorker, Mirror);

(function() {
    
  this.onUpdate = function() {
    this.sender.emit("start");
    var value = this.doc.getValue();    
    var parser = xquery.getParser(value);
    var ast = parser.p_Module();
    if(parser.hasErrors()) {
		  var errors = parser.getErrors();
	    var i = 0;
      for(i in errors) {
	      var error = errors[i];
	      this.sender.emit("error", {
	        row: error.line,
          column: error.column,
	        text: error.message,
	        type: "error"
       });
      }	
    } else {
     this.sender.emit("ok");
    }
    parser.highlighter.tokenizer = new Tokenizer(new XQueryHighlightRules().getRules());
    var tokens = parser.highlighter.getTokens();
    this.sender.emit("highlight", tokens);
  };
    
}).call(XQueryWorker.prototype);

});
define('ace/worker/mirror', ['require', 'exports', 'module' , 'ace/document', 'ace/lib/lang'], function(require, exports, module) {


var Document = require("../document").Document;
var lang = require("../lib/lang");
    
var Mirror = exports.Mirror = function(sender) {
    this.sender = sender;
    var doc = this.doc = new Document("");
    
    var deferredUpdate = this.deferredUpdate = lang.deferredCall(this.onUpdate.bind(this));
    
    var _self = this;
    sender.on("change", function(e) {
        doc.applyDeltas([e.data]);        
        deferredUpdate.schedule(_self.$timeout);
    });
};

(function() {
    
    this.$timeout = 500;
    
    this.setTimeout = function(timeout) {
        this.$timeout = timeout;
    };
    
    this.setValue = function(value) {
        this.doc.setValue(value);
        this.deferredUpdate.schedule(this.$timeout);
    };
    
    this.getValue = function(callbackId) {
        this.sender.callback(this.doc.getValue(), callbackId);
    };
    
    this.onUpdate = function() {
        // abstract method
    };
    
}).call(Mirror.prototype);

});

define('ace/document', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter', 'ace/range', 'ace/anchor'], function(require, exports, module) {


var oop = require("./lib/oop");
var EventEmitter = require("./lib/event_emitter").EventEmitter;
var Range = require("./range").Range;
var Anchor = require("./anchor").Anchor;

 /**
 * new Document([text])
 * - text (String | Array): The starting text
 *
 * Creates a new `Document`. If `text` is included, the `Document` contains those strings; otherwise, it's empty.
 *
 **/

var Document = function(text) {
    this.$lines = [];

    // There has to be one line at least in the document. If you pass an empty
    // string to the insert function, nothing will happen. Workaround.
    if (text.length == 0) {
        this.$lines = [""];
    } else if (Array.isArray(text)) {
        this.insertLines(0, text);
    } else {
        this.insert({row: 0, column:0}, text);
    }
};

(function() {

    oop.implement(this, EventEmitter);
    this.setValue = function(text) {
        var len = this.getLength();
        this.remove(new Range(0, 0, len, this.getLine(len-1).length));
        this.insert({row: 0, column:0}, text);
    };
    this.getValue = function() {
        return this.getAllLines().join(this.getNewLineCharacter());
    };
    this.createAnchor = function(row, column) {
        return new Anchor(this, row, column);
    };

    // check for IE split bug
    if ("aaa".split(/a/).length == 0)
        this.$split = function(text) {
            return text.replace(/\r\n|\r/g, "\n").split("\n");
        }
    else
        this.$split = function(text) {
            return text.split(/\r\n|\r|\n/);
        };
    this.$detectNewLine = function(text) {
        var match = text.match(/^.*?(\r\n|\r|\n)/m);
        if (match) {
            this.$autoNewLine = match[1];
        } else {
            this.$autoNewLine = "\n";
        }
    };
    this.getNewLineCharacter = function() {
      switch (this.$newLineMode) {
          case "windows":
              return "\r\n";

          case "unix":
              return "\n";

          case "auto":
              return this.$autoNewLine;
      }
    };

    this.$autoNewLine = "\n";
    this.$newLineMode = "auto";
    this.setNewLineMode = function(newLineMode) {
        if (this.$newLineMode === newLineMode)
            return;

        this.$newLineMode = newLineMode;
    };
    this.getNewLineMode = function() {
        return this.$newLineMode;
    };
    this.isNewLine = function(text) {
        return (text == "\r\n" || text == "\r" || text == "\n");
    };
    this.getLine = function(row) {
        return this.$lines[row] || "";
    };
    this.getLines = function(firstRow, lastRow) {
        return this.$lines.slice(firstRow, lastRow + 1);
    };
    this.getAllLines = function() {
        return this.getLines(0, this.getLength());
    };
    this.getLength = function() {
        return this.$lines.length;
    };
    this.getTextRange = function(range) {
        if (range.start.row == range.end.row) {
            return this.$lines[range.start.row].substring(range.start.column,
                                                         range.end.column);
        }
        else {
            var lines = this.getLines(range.start.row+1, range.end.row-1);
            lines.unshift((this.$lines[range.start.row] || "").substring(range.start.column));
            lines.push((this.$lines[range.end.row] || "").substring(0, range.end.column));
            return lines.join(this.getNewLineCharacter());
        }
    };
    this.$clipPosition = function(position) {
        var length = this.getLength();
        if (position.row >= length) {
            position.row = Math.max(0, length - 1);
            position.column = this.getLine(length-1).length;
        }
        return position;
    };
    this.insert = function(position, text) {
        if (!text || text.length === 0)
            return position;

        position = this.$clipPosition(position);

        // only detect new lines if the document has no line break yet
        if (this.getLength() <= 1)
            this.$detectNewLine(text);

        var lines = this.$split(text);
        var firstLine = lines.splice(0, 1)[0];
        var lastLine = lines.length == 0 ? null : lines.splice(lines.length - 1, 1)[0];

        position = this.insertInLine(position, firstLine);
        if (lastLine !== null) {
            position = this.insertNewLine(position); // terminate first line
            position = this.insertLines(position.row, lines);
            position = this.insertInLine(position, lastLine || "");
        }
        return position;
    };
    /**
     * Document@change(e)
     * - e (Object): Contains at least one property called `"action"`. `"action"` indicates the action that triggered the change. Each action also has a set of additional properties.
     *
     * Fires whenever the document changes.
     *
     * Several methods trigger different `"change"` events. Below is a list of each action type, followed by each property that's also available:
     *
     *  * `"insertLines"` (emitted by [[Document.insertLines]])
     *    * `range`: the [[Range]] of the change within the document
     *    * `lines`: the lines in the document that are changing
     *  * `"insertText"` (emitted by [[Document.insertNewLine]])
     *    * `range`: the [[Range]] of the change within the document
     *    * `text`: the text that's being added
     *  * `"removeLines"` (emitted by [[Document.insertLines]])
     *    * `range`: the [[Range]] of the change within the document
     *    * `lines`: the lines in the document that were removed
     *    * `nl`: the new line character (as defined by [[Document.getNewLineCharacter]])
     *  * `"removeText"` (emitted by [[Document.removeInLine]] and [[Document.removeNewLine]])
     *    * `range`: the [[Range]] of the change within the document
     *    * `text`: the text that's being removed
     *
     **/
    this.insertLines = function(row, lines) {
        if (lines.length == 0)
            return {row: row, column: 0};

        // apply doesn't work for big arrays (smallest threshold is on safari 0xFFFF)
        // to circumvent that we have to break huge inserts into smaller chunks here
        if (lines.length > 0xFFFF) {
            var end = this.insertLines(row, lines.slice(0xFFFF));
            lines = lines.slice(0, 0xFFFF);
        }

        var args = [row, 0];
        args.push.apply(args, lines);
        this.$lines.splice.apply(this.$lines, args);

        var range = new Range(row, 0, row + lines.length, 0);
        var delta = {
            action: "insertLines",
            range: range,
            lines: lines
        };
        this._emit("change", { data: delta });
        return end || range.end;
    };
    this.insertNewLine = function(position) {
        position = this.$clipPosition(position);
        var line = this.$lines[position.row] || "";

        this.$lines[position.row] = line.substring(0, position.column);
        this.$lines.splice(position.row + 1, 0, line.substring(position.column, line.length));

        var end = {
            row : position.row + 1,
            column : 0
        };

        var delta = {
            action: "insertText",
            range: Range.fromPoints(position, end),
            text: this.getNewLineCharacter()
        };
        this._emit("change", { data: delta });

        return end;
    };
    this.insertInLine = function(position, text) {
        if (text.length == 0)
            return position;

        var line = this.$lines[position.row] || "";

        this.$lines[position.row] = line.substring(0, position.column) + text
                + line.substring(position.column);

        var end = {
            row : position.row,
            column : position.column + text.length
        };

        var delta = {
            action: "insertText",
            range: Range.fromPoints(position, end),
            text: text
        };
        this._emit("change", { data: delta });

        return end;
    };
    this.remove = function(range) {
        // clip to document
        range.start = this.$clipPosition(range.start);
        range.end = this.$clipPosition(range.end);

        if (range.isEmpty())
            return range.start;

        var firstRow = range.start.row;
        var lastRow = range.end.row;

        if (range.isMultiLine()) {
            var firstFullRow = range.start.column == 0 ? firstRow : firstRow + 1;
            var lastFullRow = lastRow - 1;

            if (range.end.column > 0)
                this.removeInLine(lastRow, 0, range.end.column);

            if (lastFullRow >= firstFullRow)
                this.removeLines(firstFullRow, lastFullRow);

            if (firstFullRow != firstRow) {
                this.removeInLine(firstRow, range.start.column, this.getLine(firstRow).length);
                this.removeNewLine(range.start.row);
            }
        }
        else {
            this.removeInLine(firstRow, range.start.column, range.end.column);
        }
        return range.start;
    };
    this.removeInLine = function(row, startColumn, endColumn) {
        if (startColumn == endColumn)
            return;

        var range = new Range(row, startColumn, row, endColumn);
        var line = this.getLine(row);
        var removed = line.substring(startColumn, endColumn);
        var newLine = line.substring(0, startColumn) + line.substring(endColumn, line.length);
        this.$lines.splice(row, 1, newLine);

        var delta = {
            action: "removeText",
            range: range,
            text: removed
        };
        this._emit("change", { data: delta });
        return range.start;
    };
    this.removeLines = function(firstRow, lastRow) {
        var range = new Range(firstRow, 0, lastRow + 1, 0);
        var removed = this.$lines.splice(firstRow, lastRow - firstRow + 1);

        var delta = {
            action: "removeLines",
            range: range,
            nl: this.getNewLineCharacter(),
            lines: removed
        };
        this._emit("change", { data: delta });
        return removed;
    };
    this.removeNewLine = function(row) {
        var firstLine = this.getLine(row);
        var secondLine = this.getLine(row+1);

        var range = new Range(row, firstLine.length, row+1, 0);
        var line = firstLine + secondLine;

        this.$lines.splice(row, 2, line);

        var delta = {
            action: "removeText",
            range: range,
            text: this.getNewLineCharacter()
        };
        this._emit("change", { data: delta });
    };
    this.replace = function(range, text) {
        if (text.length == 0 && range.isEmpty())
            return range.start;

        // Shortcut: If the text we want to insert is the same as it is already
        // in the document, we don't have to replace anything.
        if (text == this.getTextRange(range))
            return range.end;

        this.remove(range);
        if (text) {
            var end = this.insert(range.start, text);
        }
        else {
            end = range.start;
        }

        return end;
    };
    this.applyDeltas = function(deltas) {
        for (var i=0; i<deltas.length; i++) {
            var delta = deltas[i];
            var range = Range.fromPoints(delta.range.start, delta.range.end);

            if (delta.action == "insertLines")
                this.insertLines(range.start.row, delta.lines);
            else if (delta.action == "insertText")
                this.insert(range.start, delta.text);
            else if (delta.action == "removeLines")
                this.removeLines(range.start.row, range.end.row - 1);
            else if (delta.action == "removeText")
                this.remove(range);
        }
    };
    this.revertDeltas = function(deltas) {
        for (var i=deltas.length-1; i>=0; i--) {
            var delta = deltas[i];

            var range = Range.fromPoints(delta.range.start, delta.range.end);

            if (delta.action == "insertLines")
                this.removeLines(range.start.row, range.end.row - 1);
            else if (delta.action == "insertText")
                this.remove(range);
            else if (delta.action == "removeLines")
                this.insertLines(range.start.row, delta.lines);
            else if (delta.action == "removeText")
                this.insert(range.start, delta.text);
        }
    };

}).call(Document.prototype);

exports.Document = Document;
});

define('ace/range', ['require', 'exports', 'module' ], function(require, exports, module) {


/**
 * class Range
 *
 * This object is used in various places to indicate a region within the editor. To better visualize how this works, imagine a rectangle. Each quadrant of the rectangle is analogus to a range, as ranges contain a starting row and starting column, and an ending row, and ending column.
 *
 **/

/**
 * new Range(startRow, startColumn, endRow, endColumn)
 * - startRow (Number): The starting row
 * - startColumn (Number): The starting column
 * - endRow (Number): The ending row
 * - endColumn (Number): The ending column
 *
 * Creates a new `Range` object with the given starting and ending row and column points.
 *
 **/
var Range = function(startRow, startColumn, endRow, endColumn) {
    this.start = {
        row: startRow,
        column: startColumn
    };

    this.end = {
        row: endRow,
        column: endColumn
    };
};

(function() {
    /**
     * Range.isEqual(range) -> Boolean
     * - range (Range): A range to check against
     *
     * Returns `true` if and only if the starting row and column, and ending tow and column, are equivalent to those given by `range`.
     *
     **/ 
    this.isEqual = function(range) {
        return this.start.row == range.start.row &&
            this.end.row == range.end.row &&
            this.start.column == range.start.column &&
            this.end.column == range.end.column
    }; 
    this.toString = function() {
        return ("Range: [" + this.start.row + "/" + this.start.column +
            "] -> [" + this.end.row + "/" + this.end.column + "]");
    }; 

    this.contains = function(row, column) {
        return this.compare(row, column) == 0;
    }; 
    this.compareRange = function(range) {
        var cmp,
            end = range.end,
            start = range.start;

        cmp = this.compare(end.row, end.column);
        if (cmp == 1) {
            cmp = this.compare(start.row, start.column);
            if (cmp == 1) {
                return 2;
            } else if (cmp == 0) {
                return 1;
            } else {
                return 0;
            }
        } else if (cmp == -1) {
            return -2;
        } else {
            cmp = this.compare(start.row, start.column);
            if (cmp == -1) {
                return -1;
            } else if (cmp == 1) {
                return 42;
            } else {
                return 0;
            }
        }
    }

    /** related to: Range.compare
     * Range.comparePoint(p) -> Number
     * - p (Range): A point to compare with
     * + (Number): This method returns one of the following numbers:<br/>
     * * `0` if the two points are exactly equal<br/>
     * * `-1` if `p.row` is less then the calling range<br/>
     * * `1` if `p.row` is greater than the calling range<br/>
     * <br/>
     * If the starting row of the calling range is equal to `p.row`, and:<br/>
     * * `p.column` is greater than or equal to the calling range's starting column, this returns `0`<br/>
     * * Otherwise, it returns -1<br/>
     *<br/>
     * If the ending row of the calling range is equal to `p.row`, and:<br/>
     * * `p.column` is less than or equal to the calling range's ending column, this returns `0`<br/>
     * * Otherwise, it returns 1<br/>
     *
     * Checks the row and column points of `p` with the row and column points of the calling range.
     *
     * 
     *
     **/ 
    this.comparePoint = function(p) {
        return this.compare(p.row, p.column);
    }

    /** related to: Range.comparePoint
     * Range.containsRange(range) -> Boolean
     * - range (Range): A range to compare with
     *
     * Checks the start and end points of `range` and compares them to the calling range. Returns `true` if the `range` is contained within the caller's range.
     *
     **/ 
    this.containsRange = function(range) {
        return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;
    }

    /**
     * Range.intersects(range) -> Boolean
     * - range (Range): A range to compare with
     *
     * Returns `true` if passed in `range` intersects with the one calling this method.
     *
     **/
    this.intersects = function(range) {
        var cmp = this.compareRange(range);
        return (cmp == -1 || cmp == 0 || cmp == 1);
    }

    /**
     * Range.isEnd(row, column) -> Boolean
     * - row (Number): A row point to compare with
     * - column (Number): A column point to compare with
     *
     * Returns `true` if the caller's ending row point is the same as `row`, and if the caller's ending column is the same as `column`.
     *
     **/
    this.isEnd = function(row, column) {
        return this.end.row == row && this.end.column == column;
    }

    /**
     * Range.isStart(row, column) -> Boolean
     * - row (Number): A row point to compare with
     * - column (Number): A column point to compare with
     *
     * Returns `true` if the caller's starting row point is the same as `row`, and if the caller's starting column is the same as `column`.
     *
     **/ 
    this.isStart = function(row, column) {
        return this.start.row == row && this.start.column == column;
    }

    /**
     * Range.setStart(row, column)
     * - row (Number): A row point to set
     * - column (Number): A column point to set
     *
     * Sets the starting row and column for the range.
     *
     **/ 
    this.setStart = function(row, column) {
        if (typeof row == "object") {
            this.start.column = row.column;
            this.start.row = row.row;
        } else {
            this.start.row = row;
            this.start.column = column;
        }
    }

    /**
     * Range.setEnd(row, column)
     * - row (Number): A row point to set
     * - column (Number): A column point to set
     *
     * Sets the starting row and column for the range.
     *
     **/ 
    this.setEnd = function(row, column) {
        if (typeof row == "object") {
            this.end.column = row.column;
            this.end.row = row.row;
        } else {
            this.end.row = row;
            this.end.column = column;
        }
    }

    /** related to: Range.compare
     * Range.inside(row, column) -> Boolean
     * - row (Number): A row point to compare with
     * - column (Number): A column point to compare with
     *
     * Returns `true` if the `row` and `column` are within the given range.
     *
     **/ 
    this.inside = function(row, column) {
        if (this.compare(row, column) == 0) {
            if (this.isEnd(row, column) || this.isStart(row, column)) {
                return false;
            } else {
                return true;
            }
        }
        return false;
    }

    /** related to: Range.compare
     * Range.insideStart(row, column) -> Boolean
     * - row (Number): A row point to compare with
     * - column (Number): A column point to compare with
     *
     * Returns `true` if the `row` and `column` are within the given range's starting points.
     *
     **/ 
    this.insideStart = function(row, column) {
        if (this.compare(row, column) == 0) {
            if (this.isEnd(row, column)) {
                return false;
            } else {
                return true;
            }
        }
        return false;
    }

    /** related to: Range.compare
     * Range.insideEnd(row, column) -> Boolean
     * - row (Number): A row point to compare with
     * - column (Number): A column point to compare with
     *
     * Returns `true` if the `row` and `column` are within the given range's ending points.
     *
     **/ 
    this.insideEnd = function(row, column) {
        if (this.compare(row, column) == 0) {
            if (this.isStart(row, column)) {
                return false;
            } else {
                return true;
            }
        }
        return false;
    }

    /** 
     * Range.compare(row, column) -> Number
     * - row (Number): A row point to compare with
     * - column (Number): A column point to compare with
     * + (Number): This method returns one of the following numbers:<br/>
     * * `0` if the two points are exactly equal <br/>
     * * `-1` if `p.row` is less then the calling range <br/>
     * * `1` if `p.row` is greater than the calling range <br/>
     *  <br/>
     * If the starting row of the calling range is equal to `p.row`, and: <br/>
     * * `p.column` is greater than or equal to the calling range's starting column, this returns `0`<br/>
     * * Otherwise, it returns -1<br/>
     * <br/>
     * If the ending row of the calling range is equal to `p.row`, and: <br/>
     * * `p.column` is less than or equal to the calling range's ending column, this returns `0` <br/>
     * * Otherwise, it returns 1
     *
     * Checks the row and column points with the row and column points of the calling range.
     *
     *
     **/
    this.compare = function(row, column) {
        if (!this.isMultiLine()) {
            if (row === this.start.row) {
                return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);
            };
        }

        if (row < this.start.row)
            return -1;

        if (row > this.end.row)
            return 1;

        if (this.start.row === row)
            return column >= this.start.column ? 0 : -1;

        if (this.end.row === row)
            return column <= this.end.column ? 0 : 1;

        return 0;
    };
    this.compareStart = function(row, column) {
        if (this.start.row == row && this.start.column == column) {
            return -1;
        } else {
            return this.compare(row, column);
        }
    }

    /**
     * Range.compareEnd(row, column) -> Number
     * - row (Number): A row point to compare with
     * - column (Number): A column point to compare with
     * + (Number): This method returns one of the following numbers:<br/>
     * * `0` if the two points are exactly equal<br/>
     * * `-1` if `p.row` is less then the calling range<br/>
     * * `1` if `p.row` is greater than the calling range, or if `isEnd` is `true.<br/>
     * <br/>
     * If the starting row of the calling range is equal to `p.row`, and:<br/>
     * * `p.column` is greater than or equal to the calling range's starting column, this returns `0`<br/>
     * * Otherwise, it returns -1<br/>
     *<br/>
     * If the ending row of the calling range is equal to `p.row`, and:<br/>
     * * `p.column` is less than or equal to the calling range's ending column, this returns `0`<br/>
     * * Otherwise, it returns 1
     *
     * Checks the row and column points with the row and column points of the calling range.
     *
     *
     **/
    this.compareEnd = function(row, column) {
        if (this.end.row == row && this.end.column == column) {
            return 1;
        } else {
            return this.compare(row, column);
        }
    }

    /** 
     * Range.compareInside(row, column) -> Number
     * - row (Number): A row point to compare with
     * - column (Number): A column point to compare with
     * + (Number): This method returns one of the following numbers:<br/>
     * * `1` if the ending row of the calling range is equal to `row`, and the ending column of the calling range is equal to `column`<br/>
     * * `-1` if the starting row of the calling range is equal to `row`, and the starting column of the calling range is equal to `column`<br/>
     * <br/>
     * Otherwise, it returns the value after calling [[Range.compare `compare()`]].
     *
     * Checks the row and column points with the row and column points of the calling range.
     *
     *
     *
     **/
    this.compareInside = function(row, column) {
        if (this.end.row == row && this.end.column == column) {
            return 1;
        } else if (this.start.row == row && this.start.column == column) {
            return -1;
        } else {
            return this.compare(row, column);
        }
    }

    /** 
     * Range.clipRows(firstRow, lastRow) -> Range
     * - firstRow (Number): The starting row
     * - lastRow (Number): The ending row
     *
     * Returns the part of the current `Range` that occurs within the boundaries of `firstRow` and `lastRow` as a new `Range` object.
     *
    **/
    this.clipRows = function(firstRow, lastRow) {
        if (this.end.row > lastRow) {
            var end = {
                row: lastRow+1,
                column: 0
            };
        }

        if (this.start.row > lastRow) {
            var start = {
                row: lastRow+1,
                column: 0
            };
        }

        if (this.start.row < firstRow) {
            var start = {
                row: firstRow,
                column: 0
            };
        }

        if (this.end.row < firstRow) {
            var end = {
                row: firstRow,
                column: 0
            };
        }
        return Range.fromPoints(start || this.start, end || this.end);
    };
    this.extend = function(row, column) {
        var cmp = this.compare(row, column);

        if (cmp == 0)
            return this;
        else if (cmp == -1)
            var start = {row: row, column: column};
        else
            var end = {row: row, column: column};

        return Range.fromPoints(start || this.start, end || this.end);
    };

    this.isEmpty = function() {
        return (this.start.row == this.end.row && this.start.column == this.end.column);
    };
    this.isMultiLine = function() {
        return (this.start.row !== this.end.row);
    };
    this.clone = function() {
        return Range.fromPoints(this.start, this.end);
    };
    this.collapseRows = function() {
        if (this.end.column == 0)
            return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0)
        else
            return new Range(this.start.row, 0, this.end.row, 0)
    };
    this.toScreenRange = function(session) {
        var screenPosStart =
            session.documentToScreenPosition(this.start);
        var screenPosEnd =
            session.documentToScreenPosition(this.end);

        return new Range(
            screenPosStart.row, screenPosStart.column,
            screenPosEnd.row, screenPosEnd.column
        );
    };

}).call(Range.prototype);
Range.fromPoints = function(start, end) {
    return new Range(start.row, start.column, end.row, end.column);
};

exports.Range = Range;
});

define('ace/anchor', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/lib/event_emitter'], function(require, exports, module) {


var oop = require("./lib/oop");
var EventEmitter = require("./lib/event_emitter").EventEmitter;

/**
 * new Anchor(doc, row, column)
 * - doc (Document): The document to associate with the anchor
 * - row (Number): The starting row position
 * - column (Number): The starting column position
 *
 * Creates a new `Anchor` and associates it with a document.
 *
 **/

var Anchor = exports.Anchor = function(doc, row, column) {
    this.document = doc;
    
    if (typeof column == "undefined")
        this.setPosition(row.row, row.column);
    else
        this.setPosition(row, column);

    this.$onChange = this.onChange.bind(this);
    doc.on("change", this.$onChange);
};

(function() {

    oop.implement(this, EventEmitter);

    this.getPosition = function() {
        return this.$clipPositionToDocument(this.row, this.column);
    };
        
    this.getDocument = function() {
        return this.document;
    };

    this.onChange = function(e) {
        var delta = e.data;
        var range = delta.range;
            
        if (range.start.row == range.end.row && range.start.row != this.row)
            return;
            
        if (range.start.row > this.row)
            return;
            
        if (range.start.row == this.row && range.start.column > this.column)
            return;
    
        var row = this.row;
        var column = this.column;
        
        if (delta.action === "insertText") {
            if (range.start.row === row && range.start.column <= column) {
                if (range.start.row === range.end.row) {
                    column += range.end.column - range.start.column;
                }
                else {
                    column -= range.start.column;
                    row += range.end.row - range.start.row;
                }
            }
            else if (range.start.row !== range.end.row && range.start.row < row) {
                row += range.end.row - range.start.row;
            }
        } else if (delta.action === "insertLines") {
            if (range.start.row <= row) {
                row += range.end.row - range.start.row;
            }
        }
        else if (delta.action == "removeText") {
            if (range.start.row == row && range.start.column < column) {
                if (range.end.column >= column)
                    column = range.start.column;
                else
                    column = Math.max(0, column - (range.end.column - range.start.column));
                
            } else if (range.start.row !== range.end.row && range.start.row < row) {
                if (range.end.row == row) {
                    column = Math.max(0, column - range.end.column) + range.start.column;
                }
                row -= (range.end.row - range.start.row);
            }
            else if (range.end.row == row) {
                row -= range.end.row - range.start.row;
                column = Math.max(0, column - range.end.column) + range.start.column;
            }
        } else if (delta.action == "removeLines") {
            if (range.start.row <= row) {
                if (range.end.row <= row)
                    row -= range.end.row - range.start.row;
                else {
                    row = range.start.row;
                    column = 0;
                }
            }
        }

        this.setPosition(row, column, true);
    };

    this.setPosition = function(row, column, noClip) {
        var pos;
        if (noClip) {
            pos = {
                row: row,
                column: column
            };
        }
        else {
            pos = this.$clipPositionToDocument(row, column);
        }
        
        if (this.row == pos.row && this.column == pos.column)
            return;
            
        var old = {
            row: this.row,
            column: this.column
        };
        
        this.row = pos.row;
        this.column = pos.column;
        this._emit("change", {
            old: old,
            value: pos
        });
    };

    this.detach = function() {
        this.document.removeEventListener("change", this.$onChange);
    };

    this.$clipPositionToDocument = function(row, column) {
        var pos = {};
    
        if (row >= this.document.getLength()) {
            pos.row = Math.max(0, this.document.getLength() - 1);
            pos.column = this.document.getLine(pos.row).length;
        }
        else if (row < 0) {
            pos.row = 0;
            pos.column = 0;
        }
        else {
            pos.row = row;
            pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));
        }
        
        if (column < 0)
            pos.column = 0;
            
        return pos;
    };
    
}).call(Anchor.prototype);

});

define('ace/lib/lang', ['require', 'exports', 'module' ], function(require, exports, module) {


exports.stringReverse = function(string) {
    return string.split("").reverse().join("");
};

exports.stringRepeat = function (string, count) {
     return new Array(count + 1).join(string);
};

var trimBeginRegexp = /^\s\s*/;
var trimEndRegexp = /\s\s*$/;

exports.stringTrimLeft = function (string) {
    return string.replace(trimBeginRegexp, '');
};

exports.stringTrimRight = function (string) {
    return string.replace(trimEndRegexp, '');
};

exports.copyObject = function(obj) {
    var copy = {};
    for (var key in obj) {
        copy[key] = obj[key];
    }
    return copy;
};

exports.copyArray = function(array){
    var copy = [];
    for (var i=0, l=array.length; i<l; i++) {
        if (array[i] && typeof array[i] == "object")
            copy[i] = this.copyObject( array[i] );
        else 
            copy[i] = array[i];
    }
    return copy;
};

exports.deepCopy = function (obj) {
    if (typeof obj != "object") {
        return obj;
    }
    
    var copy = obj.constructor();
    for (var key in obj) {
        if (typeof obj[key] == "object") {
            copy[key] = this.deepCopy(obj[key]);
        } else {
            copy[key] = obj[key];
        }
    }
    return copy;
};

exports.arrayToMap = function(arr) {
    var map = {};
    for (var i=0; i<arr.length; i++) {
        map[arr[i]] = 1;
    }
    return map;

};

exports.createMap = function(props) {
    var map = Object.create(null);
    for (var i in props) {
        map[i] = props[i];
    }
    return map;
};
exports.arrayRemove = function(array, value) {
  for (var i = 0; i <= array.length; i++) {
    if (value === array[i]) {
      array.splice(i, 1);
    }
  }
};

exports.escapeRegExp = function(str) {
    return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1');
};

exports.getMatchOffsets = function(string, regExp) {
    var matches = [];

    string.replace(regExp, function(str) {
        matches.push({
            offset: arguments[arguments.length-2],
            length: str.length
        });
    });

    return matches;
};


exports.deferredCall = function(fcn) {

    var timer = null;
    var callback = function() {
        timer = null;
        fcn();
    };

    var deferred = function(timeout) {
        deferred.cancel();
        timer = setTimeout(callback, timeout || 0);
        return deferred;
    };

    deferred.schedule = deferred;

    deferred.call = function() {
        this.cancel();
        fcn();
        return deferred;
    };

    deferred.cancel = function() {
        clearTimeout(timer);
        timer = null;
        return deferred;
    };

    return deferred;
};

});
 
define('ace/mode/xquery/xquery', ['require', 'exports', 'module' , 'ace/mode/xquery/antlr3-all', 'ace/mode/xquery/XQueryLexer', 'ace/mode/xquery/XQueryParser'], function(require, exports, module) {

  var antlr = require("./antlr3-all");
  var org =  antlr.org;
  var NewLazyTokenStream = antlr.NewLazyTokenStream;
  var XQueryLexer   = require("./XQueryLexer").XQueryLexer;
  var XQueryParser  = require("./XQueryParser").XQueryParser;

  exports.getParser = function(code) {
    var cstream = new org.antlr.runtime.ANTLRStringStream(code);
    var lexer = new XQueryLexer(cstream);
    var tstream = new NewLazyTokenStream(lexer);
    tstream.jumpToFirstValidToken();
    var parser = new XQueryParser(tstream);
    parser.setSource(cstream);
    return parser;
  };
});
/*
Some portions:
Copyright (c) 2008, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
version: 2.5.1
*/
define('ace/mode/xquery/antlr3-all', ['require', 'exports', 'module' ], function(require, exports, module) {
var NewLazyTokenStream = exports.NewLazyTokenStream = function(tokenSource) {

  this.tokenSource = tokenSource;
  this.tokens = [];
  this.isWsExplicit = false;
  this.p = 0;
  this.channel = org.antlr.runtime.Token.DEFAULT_CHANNEL;
  
  this.LT = function(k) {
    if (k == 0)
      return null;
    if (k < 0)
      return this.readReverseNthGoodToken(-k);

    return this.readNthGoodToken(k);
  };

  this.get = function(i) {
    if (i >= this.tokens.length)
      return org.antlr.runtime.Token.EOF_TOKEN;
    else
      return this.tokens[i];
  };

  this.getTokenSource = function() {
    return this.tokenSource;
  };

  this.toString = function(start, stop) {
     if(start == undefined) {
       return this.toString(0, this.tokens.length - 1);
     } else
     if(start instanceof org.antlr.runtime.Token) {
       return this.toString(start.getTokenIndex(), stop.getTokenIndex());
     } else {
      if (start < 0)
        start = 0;
      if (this.p <= stop) {
        this.readNTokens(stop - this.p + 1);
      }

          var sb = "";
          for (var i = start; i <= stop && i < this.tokens.length; i++) {
              sb += this.tokens[i].getText();
          }
          return sb;
      }
    };

    this.LA = function(i) {
        return this.LT(i).getType();
    };

    this.done = false;

    this.consume = function() {
        if (this.done) {
          return;
        }
        this.p++;
        if (!this.isWsExplicit) {
            this.jumpToFirstValidToken();
        }
    };

    this.getSourceName = function() {
      return this.getTokenSource().getSourceName();
    };

    this.index = function() {
        return this.p;
    };

    this.mark = function() {
        this.lastMarker = this.index();
        return this.lastMarker;
    };

    this.release = function(marker) {
    };

    this.rewind = function(marker) {
      if(arguments.length == 1) {
        this.seek(marker);
      } else {
        this.seek(this.lastMarker);
      }
    };

    this.seek = function(index) {
        this.p = index;
        this.done = false;
    };

    this.size = function() {
        return this.tokens.length;
    };

    this.setTokenSource = function(source) {
        this.tokenSource = source;
        this.setWsExplicit(source.isWsExplicit);
        // un-read the unused tokens
        // they are different for the new source
        if (this.p < this.tokens.length) {
            var rIndex = this.p > 0 ? this.tokens[this.p - 1].getStopIndex() : 0;
            this.tokenSource.rewindToIndex(rIndex + 1);
            for (var i = this.tokens.length - 1; i >= this.p; i--) {
                this.tokens.splice(i, 1);
            }
        }

        // if we ignore WS, jump to next token
        if (!this.isWsExplicit) {
            this.jumpToFirstValidToken();
        }
    };

    this.setWsExplicit = function(explicit) {
        this.isWsExplicit = explicit;
        if (!explicit) {
          this.jumpToFirstValidToken();
        }
    };

    this.readNthGoodToken = function(n) {
        var count = this.tokens.length;
        // number of buffered tokens available
        var avt = count - this.p;
        // i counts good tokens, j counts all tokens
        var i = 1, j = 0;
        var t = null;
        while (i <= n) {
            if (j < avt) // read from buffer
                t = this.tokens[this.p + j];
            else { // read from source
                t = this.tokenSource.nextToken();
                if (t == org.antlr.runtime.Token.EOF_TOKEN) {
                    return t;
                }
                t.setTokenIndex(count++);
                this.tokens.push(t);
            }
            if (this.isWsExplicit || t.getChannel() == this.channel) {
               i++;
            }
            j++;
        }
        return t;
    };

    this.readReverseNthGoodToken = function(n) {
        if (n == 0 || (this.p - n) < 0)
            return null;

        // i counts good tokens, j counts all tokens
        var i = 1, j = 0;
        var t = null;
        while (this.p - 1 - j >= 0) {
            t = this.get(this.p - 1 - j);

            if (this.isWsExplicit || t.getChannel() == this.channel) {
                if (i++ == n)
                    return t;
            }
            j++;
        }
        return null;
    };

    this.readNTokens = function(n) {
        var t = null;
        for (var i = 0; i < n; i++) {
            if (this.tokens.length > this.p + i)
                continue;

            t = this.tokenSource.nextToken();
            if (t == org.antlr.runtime.Token.EOF_TOKEN)
                return;
            
            t.setTokenIndex(this.p + i);
            this.tokens.push(t);
        }
    };

    this.jumpToFirstValidToken = function() {
        var t = this.LT(1);
        if (t != org.antlr.runtime.Token.EOF_TOKEN) {
            this.done = false;
            this.p = t.getTokenIndex();
        }
    }; 
};

// create org.antlr module
if (typeof org == "undefined" || !org) {
    var org = {};
}
if (typeof org.antlr == "undefined" || !org.antlr) {
    /**
     * The org.antlr global namespace object.  If antlr is already defined, the
     * existing antlr object will not be overwritten so that defined
     * namespaces are preserved.
     * @namespace org.antlr
     */
    org.antlr = {};
}

/**
 * The global JavaScript object.
 */
org.antlr.global = (function() {
    return this;
}).call(null);
org.antlr.namespace = function() {
    var a=arguments, o=null, i, j, d;
    for (i=0; i<a.length; i=i+1) {
        d=a[i].split(".");
        o=org.antlr.global;

        // ANTLR is implied, so it is ignored if it is included
        for (j=0; j<d.length; j=j+1) {
            o[d[j]]=o[d[j]] || {};
            o=o[d[j]];
        }
    }

    return o;
};
org.antlr.env = org.antlr.env || {};
/**
 * JavaScript runtime library tree parser code.
 * @name org.antlr.runtime.tree
 * @namespace
 */
org.antlr.namespace("org.antlr.runtime.tree");
org.antlr.lang = org.antlr.lang || /** @lends org.antlr.lang */ {
    /**
     * Determines whether or not the provided object is an array.
     * Testing typeof/instanceof/constructor of arrays across frame 
     * boundaries isn't possible in Safari unless you have a reference
     * to the other frame to test against its Array prototype.  To
     * handle this case, we test well-known array properties instead.
     * properties.
     * @param {any} o The object being testing
     * @return {boolean} the result
     */
    isArray: function(o) { 
        if (o) {
           var l = org.antlr.lang;
           return l.isNumber(o.length) && l.isFunction(o.splice);
        }
        return false;
    },

    /**
     * Determines whether or not the provided object is a boolean
     * @param {any} o The object being testing
     * @return {boolean} the result
     */
    isBoolean: function(o) {
        return typeof o === 'boolean';
    },
    
    /**
     * Determines whether or not the provided object is a function
     * @param {any} o The object being testing
     * @return {boolean} the result
     */
    isFunction: function(o) {
        return typeof o === 'function';
    },
        
    /**
     * Determines whether or not the provided object is null
     * @param {any} o The object being testing
     * @return {boolean} the result
     */
    isNull: function(o) {
        return o === null;
    },
        
    /**
     * Determines whether or not the provided object is a legal number
     * @param {any} o The object being testing
     * @return {boolean} the result
     */
    isNumber: function(o) {
        return typeof o === 'number' && isFinite(o);
    },
      
    /**
     * Determines whether or not the provided object is of type object
     * or function
     * @param {any} o The object being testing
     * @return {boolean} the result
     */  
    isObject: function(o) {
return (o && (typeof o === 'object' || org.antlr.lang.isFunction(o))) || false;
    },
        
    /**
     * Determines whether or not the provided object is a string
     * @param {any} o The object being testing
     * @return {boolean} the result
     */
    isString: function(o) {
        return typeof o === 'string';
    },
        
    /**
     * Determines whether or not the provided object is undefined
     * @param {any} o The object being testing
     * @return {boolean} the result
     */
    isUndefined: function(o) {
        return typeof o === 'undefined';
    },
    
    /**
     * IE will not enumerate native functions in a derived object even if the
     * function was overridden.  This is a workaround for specific functions 
     * we care about on the Object prototype. 
     * @param {Function} r  the object to receive the augmentation
     * @param {Function} s  the object that supplies the properties to augment
     * @private
     */
    _IEEnumFix: function(r, s) {
        if (false) {
            var add=["toString", "valueOf"], i;
            for (i=0;i<add.length;i=i+1) {
                var fname=add[i],f=s[fname];
                if (org.antlr.lang.isFunction(f) && f!=Object.prototype[fname]) {
                    r[fname]=f;
                }
            }
        }
    },
       
    /**
     * Utility to set up the prototype, constructor and superclass properties to
     * support an inheritance strategy that can chain constructors and methods.
     * Static members will not be inherited.
     *
     * @method extend
     * @static
     * @param {Function} subc   the object to modify
     * @param {Function} superc the object to inherit
     * @param {Object} [overrides]  additional properties/methods to add to the
     *                              subclass prototype.  These will override the
     *                              matching items obtained from the superclass 
     *                              if present.
     */
    extend: function(subc, superc, overrides) {
        if (!superc||!subc) {
            throw new Error("org.antlr.lang.extend failed, please check that " +
                            "all dependencies are included.");
        }
        var F = function() {};
        F.prototype=superc.prototype;
        subc.prototype=new F();
        subc.prototype.constructor=subc;
        subc.superclass=superc.prototype;
        if (superc.prototype.constructor == Object.prototype.constructor) {
            superc.prototype.constructor=superc;
        }
    
        if (overrides) {
            for (var i in overrides) {
                subc.prototype[i]=overrides[i];
            }

            org.antlr.lang._IEEnumFix(subc.prototype, overrides);
        }
    },
   
    /**
     * Applies all properties in the supplier to the receiver if the
     * receiver does not have these properties yet.  Optionally, one or 
     * more methods/properties can be specified (as additional 
     * parameters).  This option will overwrite the property if receiver 
     * has it already.  If true is passed as the third parameter, all 
     * properties will be applied and _will_ overwrite properties in 
     * the receiver.
     *
     * @param {Function} r  the object to receive the augmentation
     * @param {Function} s  the object that supplies the properties to augment
     * @param {String*|boolean}  [arguments] zero or more properties methods 
     *        to augment the receiver with.  If none specified, everything
     *        in the supplier will be used unless it would
     *        overwrite an existing property in the receiver. If true
     *        is specified as the third parameter, all properties will
     *        be applied and will overwrite an existing property in
     *        the receiver
     */
    augmentObject: function(r, s) {
        if (!s||!r) {
            throw new Error("Absorb failed, verify dependencies.");
        }
        var a=arguments, i, p, override=a[2];
        if (override && override!==true) { // only absorb the specified properties
            for (i=2; i<a.length; i=i+1) {
                r[a[i]] = s[a[i]];
            }
        } else { // take everything, overwriting only if the third parameter is true
            for (p in s) { 
                if (override || !r[p]) {
                    r[p] = s[p];
                }
            }
            
            org.antlr.lang._IEEnumFix(r, s);
        }
    },
 
    /**
     * Same as org.antlr.lang.augmentObject, except it only applies prototype properties
     * @see org.antlr.lang.augmentObject
     * @param {Function} r  the object to receive the augmentation
     * @param {Function} s  the object that supplies the properties to augment
     * @param {String*|boolean}  [arguments] zero or more properties methods 
     *        to augment the receiver with.  If none specified, everything 
     *        in the supplier will be used unless it would overwrite an existing 
     *        property in the receiver.  if true is specified as the third 
     *        parameter, all properties will be applied and will overwrite an 
     *        existing property in the receiver
     */
    augmentProto: function(r, s) {
        if (!s||!r) {
            throw new Error("Augment failed, verify dependencies.");
        }
        //var a=[].concat(arguments);
        var a=[r.prototype,s.prototype];
        for (var i=2;i<arguments.length;i=i+1) {
            a.push(arguments[i]);
        }
        org.antlr.lang.augmentObject.apply(this, a);
    },

    /**
     * Returns a new object containing all of the properties of
     * all the supplied objects.  The properties from later objects
     * will overwrite those in earlier objects.
     * @param arguments {Object*} the objects to merge
     * @return the new merged object
     */
    merge: function() {
        var o={}, a=arguments;
        for (var i=0, l=a.length; i<l; i=i+1) {
            org.antlr.lang.augmentObject(o, a[i], true);
        }
        return o;
    },

    /**
     * A convenience method for detecting a legitimate non-null value.
     * Returns false for null/undefined/NaN, true for other values, 
     * including 0/false/''
     * @param o {any} the item to test
     * @return {boolean} true if it is not null/undefined/NaN || false
     */
    isValue: function(o) {
        var l = org.antlr.lang;
return (l.isObject(o) || l.isString(o) || l.isNumber(o) || l.isBoolean(o));
    },

    /** @namespace org.antlr.lang.array Array convenience methods. */
    array: /** @lends org.antlr.lang.array */ {
        /**
         * Retrieve the last element of an array. Throws an error if a is not
         * an array or empty.
         * @param a {Array} the array stack to peek in
         * @return the last element of the array
         */
         peek: function(a) {
            if (!org.antlr.lang.isArray(a)) {
                throw new Error("org.antlr.lang.array.peek: a is not an array.");
            }
            var l = a.length;
            if (l<=0) {
                throw new Error("org.antlr.lang.array.peek: a is empty.");
            }
            return a[l-1];
        }
    }
};
org.antlr.runtime = {};
org.antlr.runtime.RecognizerSharedState = function() {
    /** Track the set of token types that can follow any rule invocation.
     *  Stack grows upwards.  When it hits the max, it grows 2x in size
     *  and keeps going.
     */
    this.following = [];

    this._fsp = -1;
    this.errorRecovery = false;
    this.lastErrorIndex = -1;
    this.failed = false;
    this.syntaxErrors = 0;
    this.backtracking = 0;
    this.ruleMemo = null;


    // LEXER FIELDS (must be in same state object to avoid casting
    //               constantly in generated code and Lexer object) :(


    /** The goal of all lexer rules/methods is to create a token object.
     *  This is an instance variable as multiple rules may collaborate to
     *  create a single token.  nextToken will return this object after
     *  matching lexer rule(s).  If you subclass to allow multiple token
     *  emissions, then set this to the last token to be matched or
     *  something nonnull so that the auto token emit mechanism will not
     *  emit another token.
     */
    this.token = null;
    this.tokenStartCharIndex = -1;
    // this.tokenStartLine;
    // this.tokenStartCharPositionInLine;
    // this.channel;
    // this.type;
    this.text = null;
};
org.antlr.runtime.IndexOutOfBoundsException = function(m) {
    org.antlr.runtime.IndexOutOfBoundsException.superclass.constructor.call(this, m);
};

org.antlr.lang.extend(org.antlr.runtime.IndexOutOfBoundsException, Error, {
    name: "org.antlr.runtime.IndexOutOfBoundsException"
});
org.antlr.runtime.RecognitionException = function(input) {
    org.antlr.runtime.RecognitionException.superclass.constructor.call(this);
    this.input = input;
    this.index = input.index();
    if ( input instanceof NewLazyTokenStream ) {//org.antlr.runtime.CommonTokenStream ) {
        this.token = input.LT(1);
        this.line = this.token.getLine();
        this.charPositionInLine = this.token.getCharPositionInLine();
    }
    if ( input instanceof org.antlr.runtime.tree.TreeNodeStream ) {
        this.extractInformationFromTreeNodeStream(input);
    }
    else if ( input instanceof org.antlr.runtime.ANTLRStringStream ) {
        // Note: removed CharStream from hierarchy in JS port so checking for
        // StringStream instead
        this.c = input.LA(1);
        this.line = input.getLine();
        this.charPositionInLine = input.getCharPositionInLine();
    }
    else {
        this.c = input.LA(1);
    }

    this.message = this.toString();
};

org.antlr.lang.extend(org.antlr.runtime.RecognitionException, Error,
/** @lends org.antlr.runtime.RecognitionException.prototype */
{
	/**
     * What input stream did the error occur in?
     */
    input: null,

    /** What is index of token/char were we looking at when the error occurred?
     *  @type Number
     */
	index: null,

	/** The current Token when an error occurred.  Since not all streams
	 *  can retrieve the ith Token, we have to track the Token object.
	 *  For parsers.  Even when it's a tree parser, token might be set.
     *  @type org.antlr.runtime.CommonToken
	 */
	token: null,

	/** If this is a tree parser exception, node is set to the node with
	 *  the problem.
     *  @type Object
	 */
	node: null,

	/** The current char when an error occurred. For lexers.
     *  @type Number
     */
	c: null,

	/** Track the line at which the error occurred in case this is
	 *  generated from a lexer.  We need to track this since the
	 *  unexpected char doesn't carry the line info.
     *  @type Number
	 */
	line: null,

    /** The exception's class name.
     *  @type String
     */
    name: "org.antlr.runtime.RecognitionException",

    /** Position in the line where exception occurred.
     *  @type Number
     */
	charPositionInLine: null,

	/** If you are parsing a tree node stream, you will encounter som
	 *  imaginary nodes w/o line/col info.  We now search backwards looking
	 *  for most recent token with line/col info, but notify getErrorHeader()
	 *  that info is approximate.
     *  @type Boolean
	 */
	approximateLineInfo: null,

    /** Gather exception information from input stream.
     *  @param {org.antlr.runtime.CommonTokenStream|org.antlr.runtime.tree.TreeNodeStream|org.antlr.runtime.ANTLRStringStream} input input stream that has an exception.
     */
	extractInformationFromTreeNodeStream: function(input) {
		var nodes = input,
            priorNode,
            priorPayLoad,
            type,
            text,
            i;

		this.node = nodes.LT(1);
		var adaptor = nodes.getTreeAdaptor(),
		    payload = adaptor.getToken(this.node);
		if ( payload ) {
			this.token = payload;
			if ( payload.getLine()<= 0 ) {
				// imaginary node; no line/pos info; scan backwards
				i = -1;
				priorNode = nodes.LT(i);
				while ( priorNode ) {
					priorPayload = adaptor.getToken(priorNode);
					if ( priorPayload && priorPayload.getLine()>0 ) {
						// we found the most recent real line / pos info
						this.line = priorPayload.getLine();
						this.charPositionInLine = priorPayload.getCharPositionInLine();
						this.approximateLineInfo = true;
						break;
					}
					--i;
					priorNode = nodes.LT(i);
				}
			}
			else { // node created from real token
				this.line = payload.getLine();
				this.charPositionInLine = payload.getCharPositionInLine();
			}
		}
		else if ( this.node instanceof org.antlr.runtime.tree.CommonTree) {
			this.line = this.node.getLine();
			this.charPositionInLine = this.node.getCharPositionInLine();
			if ( this.node instanceof org.antlr.runtime.tree.CommonTree) {
				this.token = this.node.token;
			}
		}
		else {
			type = adaptor.getType(this.node);
			text = adaptor.getText(this.node);
			this.token = new org.antlr.runtime.CommonToken(type, text);
		}
	},

	/** Return the token type or char of the unexpected input element
     *  @return {Number} type of the unexpected input element.
     */
    getUnexpectedType: function() {
		if ( this.input instanceof NewLazyTokenStream) {//org.antlr.runtime.CommonTokenStream ) {
			return this.token.getType();
		}
		else if ( this.input instanceof org.antlr.runtime.tree.TreeNodeStream ) {
			var nodes = this.input;
			var adaptor = nodes.getTreeAdaptor();
			return adaptor.getType(this.node);
		}
		else {
			return this.c;
		}
	}
});
org.antlr.runtime.MismatchedTokenException = function(expecting, input) {
    if (arguments.length===0) {
        this.expecting = org.antlr.runtime.Token.INVALID_TOKEN_TYPE;
    } else {
        org.antlr.runtime.MismatchedTokenException.superclass.constructor.call(
                this, input);
        this.expecting = expecting;
    }
};

org.antlr.lang.extend(
    org.antlr.runtime.MismatchedTokenException,
    org.antlr.runtime.RecognitionException, {
    toString: function() {
        return "MismatchedTokenException(" +
                this.getUnexpectedType() + "!=" + this.expecting + ")";
    },
    name: "org.antlr.runtime.MismatchedTokenException"
});
org.antlr.runtime.UnwantedTokenException = function(expecting, input) {
    if (arguments.length>0) {
        org.antlr.runtime.UnwantedTokenException.superclass.constructor.call(
                this, expecting, input);
    }
};

org.antlr.lang.extend(
    org.antlr.runtime.UnwantedTokenException,
    org.antlr.runtime.MismatchedTokenException, {
    getUnexpectedToken: function() {
        return this.token;
    },
    toString: function() {
        var exp = ", expected "+this.expecting;
        if ( this.expecting===org.antlr.runtime.Token.INVALID_TOKEN_TYPE ) {
            exp = "";
        }
        if ( !org.antlr.lang.isValue(this.token) ) {
            return "UnwantedTokenException(found="+exp+")";
        }
        return "UnwantedTokenException(found="+this.token.getText()+exp+")";
    },
    name: "org.antlr.runtime.UnwantedTokenException"
});
org.antlr.runtime.MissingTokenException = function(expecting, input, inserted) {
    if (arguments.length>0) {
        org.antlr.runtime.MissingTokenException.superclass.constructor.call(
                this, expecting, input);
        this.inserted = inserted;
    }
};

org.antlr.lang.extend(
    org.antlr.runtime.MissingTokenException,
    org.antlr.runtime.MismatchedTokenException, {
    getMissingType: function() {
        return this.expecting;
    },

    toString: function() {
        if (org.antlr.lang.isValue(this.inserted) &&
            org.antlr.lang.isValue(this.token))
        {
            return "MissingTokenException(inserted "+this.inserted+" at "+this.token.getText()+")";
        }
        if ( org.antlr.lang.isValue(this.token) ) {
            return "MissingTokenException(at "+this.token.getText()+")";
        }
        return "MissingTokenException";
    },
    name: "org.antlr.runtime.MissingTokenException"
});
org.antlr.runtime.NoViableAltException = function(grammarDecisionDescription,
                                            decisionNumber,
                                            stateNumber,
                                            input)
{
    org.antlr.runtime.NoViableAltException.superclass.constructor.call(this, input);
    this.grammarDecisionDescription = grammarDecisionDescription;
    this.decisionNumber = decisionNumber;
    this.stateNumber = stateNumber;
};

org.antlr.lang.extend(
    org.antlr.runtime.NoViableAltException,
    org.antlr.runtime.RecognitionException, {
    toString: function() {
        if ( this.input instanceof org.antlr.runtime.ANTLRStringStream ) {
            return "NoViableAltException('"+this.getUnexpectedType()+"'@["+this.grammarDecisionDescription+"])";
        }
        else {
            return "NoViableAltException("+this.getUnexpectedType()+"@["+this.grammarDecisionDescription+"])";
        }
    },
    name: "org.antlr.runtime.NoViableAltException"
});
org.antlr.runtime.EarlyExitException = function(decisionNumber, input) {
    org.antlr.runtime.EarlyExitException.superclass.constructor.call(
            this, input);
    this.decisionNumber = decisionNumber;
};

org.antlr.lang.extend(
    org.antlr.runtime.EarlyExitException,
    org.antlr.runtime.RecognitionException,
/** @lends org.antlr.runtime.EarlyExitException.prototype */
{
    /** Name of this class.
     *  @type String
     */
    name: "org.antlr.runtime.EarlyExitException"
});
org.antlr.runtime.MismatchedSetException = function(expecting, input) {
    org.antlr.runtime.MismatchedSetException.superclass.constructor.call(
            this, input);
    this.expecting = expecting;
};

org.antlr.lang.extend(
    org.antlr.runtime.MismatchedSetException,
    org.antlr.runtime.RecognitionException, {
    toString: function() {
        return "MismatchedSetException(" +
                this.getUnexpectedType() + "!=" + this.expecting + ")";
    },
    name: "org.antlr.runtime.MismatchedSetException"
});
org.antlr.runtime.MismatchedNotSetException = function(expecting, input) {
    org.antlr.runtime.MismatchedNotSetException.superclass.constructor.call(this, expecting, input);
};

org.antlr.lang.extend(
    org.antlr.runtime.MismatchedNotSetException,
    org.antlr.runtime.MismatchedSetException, {
    toString: function() {
        return "MismatchedNotSetException(" +
                this.getUnexpectedType() + "!=" + this.expecting + ")";
    },
    name: "org.antlr.runtime.MismatchedNotSetException"
});
org.antlr.runtime.MismatchedRangeException = function(a, b, input) {
    if (arguments.length===0) {
        return this;
    }

    org.antlr.runtime.MismatchedRangeException.superclass.constructor.call(
            this, input);
    this.a = a;
    this.b = b;
};

org.antlr.lang.extend(
    org.antlr.runtime.MismatchedRangeException,
    org.antlr.runtime.RecognitionException, {
    toString: function() {
        return "MismatchedRangeException(" +
                this.getUnexpectedType()+" not in ["+this.a+","+this.b+"])";
    },
    name: "org.antlr.runtime.MismatchedRangeException"
});
org.antlr.runtime.FailedPredicateException = function(input, ruleName, predicateText){
    org.antlr.runtime.FailedPredicateException.superclass.constructor.call(this, input);
    this.ruleName = ruleName;
    this.predicateText = predicateText;
};

org.antlr.lang.extend(
    org.antlr.runtime.FailedPredicateException,
    org.antlr.runtime.RecognitionException,
/** @lends org.antlr.runtime.FailedPredicateException.prototype */
{
    /** Create a string representation of this exception.
     *  @returns {String}
     */ 
    toString: function() {
        return "FailedPredicateException("+this.ruleName+",{"+this.predicateText+"}?)";
    },

    /** Name of this class.
     *  @type String
     */
    name: "org.antlr.runtime.FailedPredicateException"
});
org.antlr.runtime.BitSet = function(bits) {
    if (!bits) {
        bits = org.antlr.runtime.BitSet.BITS;
    }

    if (org.antlr.lang.isArray(bits)) {
        /**
         * An array of Numbers representing the BitSet.
         * @type Array
         */
        this.bits = bits;
    } else if(org.antlr.lang.isNumber(bits)) {
        this.bits = [];
    }
};

org.antlr.lang.augmentObject(org.antlr.runtime.BitSet, {
    /**
     * Number of bits in each number.
     * @constant
     * @memberOf org.antlr.runtime.BitSet
     */
    BITS: 32,

    /**
     * Log (base 2) of the number of bits in each number.
     * @constant
     * @memberOf org.antlr.runtime.BitSet
     */
    LOG_BITS: 5,  // 2^5 == 32 

    /**
     * We will often need to do a mod operator (i mod nbits).  Its
     * turns out that, for powers of two, this mod operation is
     * same as (i & (nbits-1)).  Since mod is slow, we use a
     * precomputed mod mask to do the mod instead.
     * @constant
     * @memberOf org.antlr.runtime.BitSet
     */
    MOD_MASK: 31, // BITS - 1

    /**
     * Create mask for bit modded to fit in a single word.
     * @example
     * bitmask(35) => 00000000000000000000000000000100
     * bitmask(3)  => 00000000000000000000000000000100
     * @param {Number} bitNumber the bit to create a mask for.
     * @returns {Number} the bitmask.
     * @memberOf org.antlr.runtime.BitSet
     * @private
     */
    bitMask: function(bitNumber) {
        var bitPosition = bitNumber & org.antlr.runtime.BitSet.MOD_MASK;
        return 1 << bitPosition;
    },

    /**
     * Calculate the minimum number of bits needed to represent el.
     * @param {Number} el a number to be included in the BitSet.
     * @returns {Number} the number of bits need to create a BitSet with member
     *                   el.
     * @memberOf org.antlr.runtime.BitSet
     * @private
     */
    numWordsToHold: function(el) {
        return (el >> org.antlr.runtime.BitSet.LOG_BITS) + 1;
    },

    /**
     * @param {Number} bit a number to be included in the BitSet
     * @returns {Number} the index of the word in the field bits that would
     *                   hold bit.
     * @memberOf org.antlr.runtime.BitSet
     * @private
     */
    wordNumber: function(bit) {
        return bit >> org.antlr.runtime.BitSet.LOG_BITS; // bit / BITS
    },

    /**
     * BitSet factory method.
     * 
     * <p>Operates in a number of modes:
     * <ul>
     * <li>If el is a number create the BitSet containing that number.</li>
     * <li>If el is an array create the BitSet containing each number in the
     * array.</li>
     * <li>If el is a BitSet return el.</li>
     * <li>If el is an Object create the BitSet containing each numeric value
     * in el.</li>
     * <li>If el is a number and el2 is a number return a BitSet containing
     * the numbers between el and el2 (inclusive).</li>
     * </ul>
     * </p>
     * @param {Number|Array|org.antlr.runtime.BitSet|Object} el
     * @param {Number} el2
     * @returns {org.antlr.runtime.BitSet}
     * @memberOf org.antlr.runtime.BitSet
     */
    of: function(el, el2) {
        var i, n, s, keys;

        if (org.antlr.lang.isNumber(el)) {
            if (org.antlr.lang.isNumber(el2)) {
                s = new org.antlr.runtime.BitSet(el2 + 1);
                for (i = el; i <= el2; i++) {
                    n = org.antlr.runtime.BitSet.wordNumber(i);
                    s.bits[n] |= org.antlr.runtime.BitSet.bitMask(i);
                }
                return s;
            } else {
                s = new org.antlr.runtime.BitSet(el + 1);
                s.add(el);
                return s;
            }
        } else if(org.antlr.lang.isArray(el)) {
            s = new org.antlr.runtime.BitSet();
            for (i=el.length-1; i>=0; i--) {
                s.add(el[i]);
            }
            return s;
        } else if (el instanceof org.antlr.runtime.BitSet) {
            if (!el) {
                return null;
            }
            return el;
        } else if (el instanceof org.antlr.runtime.IntervalSet) {
            if (!el) {
                return null;
            }
            s = new org.antlr.runtime.BitSet();
            s.addAll(el);
            return s;
        } else if (org.antlr.lang.isObject(el)) {
            keys = [];
            for (i in el) {
                if (org.antlr.lang.isNumber(i)) {
                    keys.push(i);
                }
            }
            return org.antlr.runtime.BitSet.of(keys);
        }
    }
});



org.antlr.runtime.BitSet.prototype = {
    /**
     * Add el into this set.
     * @param {Number} el the number to add to the set.
     */
    add: function(el) {
        var n = org.antlr.runtime.BitSet.wordNumber(el);
        if (n >= this.bits.length) {
            this.growToInclude(el);
        }
        this.bits[n] |= org.antlr.runtime.BitSet.bitMask(el);
    },

    /**
     * Add multiple elements into this set.
     * @param {Array|org.antlr.runtime.BitSet} elements the elements to be added to
     *                                           this set.
     */
    addAll: function(elements) {
        var other,
            i,
            e;

        if ( elements instanceof org.antlr.runtime.BitSet ) {
            this.orInPlace(elements);
        }
		else if ( elements instanceof org.antlr.runtime.IntervalSet ) {
			other = elements;
			// walk set and add each interval
            /* @todo after implementing intervalset
			for (Iterator iter = other.intervals.iterator(); iter.hasNext();) {
				Interval I = (Interval) iter.next();
				this.orInPlace(BitSet.range(I.a,I.b));
			}*/
		} else if (org.antlr.lang.isArray(elements)) {
    		for (i = 0; i < elements.length; i++) {
	    		e = elements[i];
		    	this.add(e);
    		}
        } else {
            return;
        }
	},

    /**
     * Clone this BitSet and then {@link #andInPlace} with a.
     * @param {org.antlr.runtime.BitSet} a a bit set.
     * @returns {org.antlr.runtime.BitSet}
     */
    and: function(a) {
        var s = this.clone();
        s.andInPlace(a);
        return s;
    },

    /**
     * Perform a logical AND of this target BitSet with the argument BitSet.
     *
     * This bit set is modified so that each bit in it has the value true if 
     * and only if it both initially had the value true and the corresponding 
     * bit in the bit set argument also had the value true. 
     * @param {org.antlr.runtime.BitSet} a a bit set.
     * @returns {org.antlr.runtime.BitSet}
     */
    andInPlace: function(a) {
        var min = Math.min(this.bits.length, a.bits.length),
            i;
        for (i = min - 1; i >= 0; i--) {
            this.bits[i] &= a.bits[i];
        }
        // clear all bits in this not present in a (if this bigger than a).
        for (i = min; i < this.bits.length; i++) {
            this.bits[i] = 0;
        }
    },

    /**
     * Clear all bits or a specific bit.
     *
     * If no arguments given, sets all of the bits in this BitSet to false.
     * If one argument given, sets the bit specified by the index to false.
     * @param {Number} [el] the index of the bit to be cleared.
     */
    clear: function(el) {
        if (arguments.length===0) {
            var i;
            for (i = this.bits.length - 1; i >= 0; i--) {
                this.bits[i] = 0;
            }
            return;
        }

        var n = org.antlr.runtime.BitSet.wordNumber(el);
        if (n >= this.bits.length) {	// grow as necessary to accommodate
            this.growToInclude(el);
        }
        this.bits[n] &= ~org.antlr.runtime.BitSet.bitMask(el);
    },

    /**
     * Cloning this BitSet produces a new BitSet  that is equal to it. 
     *
     * The clone of the bit set is another bit set that has exactly the same
     * bit set to true as this bit set. 
     * @returns {org.antlr.runtime.BitSet} a clone of this BitSet.
     */
    clone: function() {
        var i, len, b=[];
        for (i=0, len=this.bits.length; i<len; i++) {
            b[i] = this.bits[i];
        }
        return new org.antlr.runtime.BitSet(b);
    },

    /**
     * Returns the number of bits of space actually in use by this BitSet to 
     * represent bit values.
     *
     * The maximum element in the set is the size - 1st element. 
     * @returns {Number} the number of bits currently in this bit set.
     */
    size: function() {
        var deg = 0, i, word, bit;
        for (i = this.bits.length - 1; i >= 0; i--) {
            word = this.bits[i];
            if (word !== 0) {
                for (bit = org.antlr.runtime.BitSet.BITS - 1; bit >= 0; bit--) {
                    if ((word & (1 << bit)) !== 0) {
                        deg++;
                    }
                }
            }
        }
        return deg;
    },

    /**
     * Compares this object against the specified object.
     *
     * The result is true if and only if the argument is not null and is a
     * BitSet object that has exactly the same set of bits set to true as
     * this bit set. That is, for every nonnegative int index k,
     * <pre><code>
     * ((BitSet)obj).get(k) == this.get(k)
     * </code></pre>
     * must be true. The current sizes of the two bit sets are not compared.
     * @param {Object} other the object to compare with.
     * @returns {Boolean} if the objects are the same; false otherwise.
     */
    equals: function(other) {
        if ( !other || !(other instanceof org.antlr.runtime.BitSet) ) {
            return false;
        }

        var otherSet = other,
            i,
            n = Math.min(this.bits.length, otherSet.bits.length);

        // for any bits in common, compare
        for (i=0; i<n; i++) {
            if (this.bits[i] != otherSet.bits[i]) {
                return false;
            }
        }

        // make sure any extra bits are off

        if (this.bits.length > n) {
            for (i = n+1; i<this.bits.length; i++) {
                if (this.bits[i] !== 0) {
                    return false;
                }
            }
        }
        else if (otherSet.bits.length > n) {
            for (i = n+1; i<otherSet.bits.length; i++) {
                if (otherSet.bits[i] !== 0) {
                    return false;
                }
            }
        }

        return true;
    },

    /**
     * Grows the set to a larger number of bits.
     * @param {Number} bit element that must fit in set
     * @private
     */
    growToInclude: function(bit) {
        var newSize = Math.max(this.bits.length << 1, org.antlr.runtime.BitSet.numWordsToHold(bit)),
            newbits = [], //new Array(newSize),
            i;
        for (i=0, len=this.bits.length; i<len; i++) {
            newbits[i] = this.bits[i];
        }
        this.bits = newbits;
    },

    /**
     * Returns the value of the bit with the specified index.
     *
     * The value is true if the bit with the index el is currently set 
     * in this BitSet; otherwise, the result is false.
     * @param {Number} el the bit index.
     * @returns {Boolean} the value of the bit with the specified index.
     */
    member: function(el) {
        var n = org.antlr.runtime.BitSet.wordNumber(el);
        if (n >= this.bits.length) { return false; }
        return (this.bits[n] & org.antlr.runtime.BitSet.bitMask(el)) !== 0;
    },

    /**
     * Returns the index of the first bit that is set to true.
     * If no such bit exists then -1 is returned.
     * @returns {Number} the index of the next set bit.
     */
    getSingleElement: function() {
        var i;
        for (i = 0; i < (this.bits.length << org.antlr.runtime.BitSet.LOG_BITS); i++) {
            if (this.member(i)) {
                return i;
            }
        }
        return -1; //Label.INVALID;
    },

    /**
     * Returns true if this BitSet contains no bits that are set to true.
     * @returns {Boolean} boolean indicating whether this BitSet is empty.
     */
    isNil: function() {
        var i;
        for (i = this.bits.length - 1; i >= 0; i--) {
            if (this.bits[i] !== 0) {
                return false;
            }
        }
        return true;
    },

    /**
     * If a bit set argument is passed performs a {@link #subtract} of this bit
     * set with the argument bit set.  If no argument is passed, clone this bit
     * set and {@link #notInPlace}.
     * @param {org.antlr.runtime.BitSet} [set]
     * @returns {org.antlr.runtime.BitSet}
     */
    complement: function(set) {
        if (set) {
            return set.subtract(this);
        } else {
            var s = this.clone();
            s.notInPlace();
            return s;
        }
    },

    /**
     * If no arguments are passed sets all bits to the complement of their
     * current values.  If one argument is passed sets each bit from the
     * beginning of the bit set to index1 (inclusive) to the complement of its
     * current value.  If two arguments are passed sets each bit from the
     * specified index1 (inclusive) to the sepcified index2 (inclusive) to the
     * complement of its current value.
     * @param {Number} index1
     * @param {Number} index2
     */
    notInPlace: function() {
        var minBit, maxBit, i, n;
        if (arguments.length===0) {
            for (i = this.bits.length - 1; i >= 0; i--) {
                this.bits[i] = ~this.bits[i];
            }
        } else {
            if (arguments.length===1) {
                minBit = 0;
                maxBit = arguments[0];
            } else {
                minBit = arguments[0];
                maxBit = arguments[1];
            }
            // make sure that we have room for maxBit
            this.growToInclude(maxBit);
            for (i = minBit; i <= maxBit; i++) {
                n = org.antlr.runtime.BitSet.wordNumber(i);
                this.bits[n] ^= org.antlr.runtime.BitSet.bitMask(i);
            }
        }

    },

    /**
     * Performs a logical OR of this bit set with the bit set argument.
     * If no argument is passed, return this bit set.  Otherwise a clone of
     * this bit set is modified so that a bit in it has the value true if and
     * only if it either already had the value true or the corresponding bit
     * in the bit set argument has the value true.
     * @param {org.antlr.runtime.BitSet} [a] a bit set.
     * @returns {org.antlr.runtime.BitSet}
     */
    or: function(a) {
		if ( !a ) {
			return this;
		}
        var s = this.clone();
        s.orInPlace(a);
        return s;
    },

    /**
     * Performs a logical {@link #or} in place.
     * @param {org.antlr.runtime.BitSet} [a]
     * @returns {org.antlr.runtime.BitSet}
     */
    orInPlace: function(a) {
		if ( !a ) {
			return;
		}
        // If this is smaller than a, grow this first
        if (a.bits.length > this.bits.length) {
            this.setSize(a.bits.length);
        }
        var min = Math.min(this.bits.length, a.bits.length),
            i;
        for (i = min - 1; i >= 0; i--) {
            this.bits[i] |= a.bits[i];
        }
    },

    /**
     * Sets the bit specified by the index to false.
     * @param {Number} bitIndex the index of the bit to be cleared.
     */
    remove: function(el) {
        var n = org.antlr.runtime.BitSet.wordNumber(el);
        if (n >= this.bits.length) {
            this.growToInclude(el);
        }
        this.bits[n] &= ~org.antlr.runtime.BitSet.bitMask(el);
    },

    /**
     * Grows the internal bits array to include at least nwords numbers.
     * @private
     * @param {Number} nwords how many words the new set should be
     * @private
     */
    setSize: function(nwords) {
        var n = nwords - this.bits.length;
        while (n>=0) {
            this.bits.push(0);
            n--;
        }
    },

    /**
     * Returns the number of bits capable of being represented by this bit set
     * given its current size.
     * @returns {Number} the maximum number of bits that can be represented at
     *                   the moment.
     * @private
     */
    numBits: function() {
        return this.bits.length << org.antlr.runtime.BitSet.LOG_BITS; // num words * bits per word
    },

    /**
     * Return how much space is being used by the bits array not
     * how many actually have member bits on.
     * @returns {Number} the length of the internal bits array.
     * @private
     */
    lengthInLongWords: function() {
        return this.bits.length;
    },

    /**
     * Is this bit set contained within a?
     * @param {org.antlr.runtime.BitSet} a bit set
     * @returns {Boolean} true if and only if a is a subset of this bit set.
     */
    subset: function(a) {
        if (!a) { return false; }
        return this.and(a).equals(this);
    },

    /**
     * Subtract the elements of the argument bit set from this bit set in place.
     * That is, for each set bit in the argument bit set, set the corresponding
     * bit in this bit set to false.
     * @param {org.antlr.runtime.BitSet} a bit set.
     */
    subtractInPlace: function(a) {
        if (!a) { return; }
        // for all words of 'a', turn off corresponding bits of 'this'
        var i;
        for (i = 0; i < this.bits.length && i < a.bits.length; i++) {
            this.bits[i] &= ~a.bits[i];
        }
    },

    /**
     * Perform a {@link #subtractInPlace} on a clone of this bit set.
     * @param {org.antlr.runtime.BitSet} a bit set.
     * @returns {org.antlr.runtime.BitSet} the new bit set.
     */
    subtract: function(a) {
        if (!a || !(a instanceof org.antlr.runtime.BitSet)) { return null; }

        var s = this.clone();
        s.subtractInPlace(a);
        return s;
    },

    /* antlr-java needs this to make its class hierarchy happy . . .
    toList: function() {
		throw new Error("BitSet.toList() unimplemented");
	},
    */

    /**
     * Creates an array of the indexes of each bit set in this bit set.
     * @returns {Array}
     */
    toArray: function() {
        var elems = [], //new Array(this.size()),
            i,
            en = 0;
        for (i = 0; i < (this.bits.length << org.antlr.runtime.BitSet.LOG_BITS); i++) {
            if (this.member(i)) {
                elems[en++] = i;
            }
        }
        return elems;
    },

    /**
     * Returns the internal representation of this bit set.
     * This representation is an array of numbers, each representing 32 bits.
     * @returns {Array}
     */
    toPackedArray: function() {
        return this.bits;
    },

    /**
     * Returns a string representation of this bit set.
     * <p>For every index for which this BitSet contains a bit in the set state,
     * the decimal representation of that index is included in the result.
     * Such indices are listed in order from lowest to highest, separated by
     * ", " (a comma and a space) and surrounded by braces, resulting in the
     * usual mathematical notation for a set of integers.</p>
     * 
     * <p>If a grammar g is passed, print g.getTokenDisplayName(i) for each set
     * index instead of the numerical index.</p>
     *
     * <>If two arguments are passed, the first will be used as a custom
     * separator string.  The second argument is an array whose i-th element
     * will be added if the corresponding bit is set.</p>
     *
     * @param {Object|String} [arg1] an Object with function property
     *      getTokenDispalyName or a String that will be used as a list
     *      separator.
     * @param {Array} [vocabulary] array from which the i-th value will be
     *      drawn if the corresponding bit is set.  Must pass a string as the
     *      first argument if using this option.
     * @return A commma-separated list of values
     */
    toString: function() {
        if (arguments.length===0) {
            return this.toString1(null);
        } else {
            if (org.antlr.lang.isString(arguments[0])) {
                if (!org.antlr.lang.isValue(arguments[1])) {
                    return this.toString1(null);
                } else {
                    return this.toString2(arguments[0], arguments[1]);
                }
            } else {
                return this.toString1(arguments[0]);
            }
        }
    },

    /**
     * Transform a bit set into a string by formatting each element as an
     * integer separator The string to put in between elements
     * @private
     * @return A commma-separated list of values
     */
    toString1: function(g) {
        var buf = "{",
            separator = ",",
            i,
		    havePrintedAnElement = false;

        for (i = 0; i < (this.bits.length << org.antlr.runtime.BitSet.LOG_BITS); i++) {
            if (this.member(i)) {
                if (i > 0 && havePrintedAnElement ) {
                    buf += separator;
                }
                if ( g ) {
                    buf += g.getTokenDisplayName(i);
                }
                else {
                    buf += i.toString();
                }
				havePrintedAnElement = true;
            }
        }
        return buf + "}";
    },

    /**
     * Create a string representation where instead of integer elements, the
     * ith element of vocabulary is displayed instead.  Vocabulary is a Vector
     * of Strings.
     * separator The string to put in between elements
     * @private
     * @return A commma-separated list of character constants.
     */
    toString2: function(separator, vocabulary) {
        var str = "",
            i;
        for (i = 0; i < (this.bits.length << org.antlr.runtime.BitSet.LOG_BITS); i++) {
            if (this.member(i)) {
                if (str.length > 0) {
                    str += separator;
                }
                if (i >= vocabulary.size()) {
                    str += "'" + i + "'";
                }
                else if (!org.antlr.lang.isValue(vocabulary.get(i))) {
                    str += "'" + i + "'";
                }
                else {
                    str += vocabulary.get(i);
                }
            }
        }
        return str;
    }

    /*
     * Dump a comma-separated list of the words making up the bit set.
     * Split each 32 bit number into two more manageable 16 bit numbers.
     * @returns {String} comma separated list view of the this.bits property.
     *
    toStringOfHalfWords: function() {
        var s = "",
            tmp,
            i;
        for (i = 0; i < this.bits.length; i++) {
            if (i !== 0) {
                s+=", ";
            }
            tmp = this.bits[i];
            tmp &= 0xFFFF;
            s += tmp + "UL, ";
            tmp = this.bits[i] >> 16;
            tmp &= 0xFFFF;
            s += tmp+"UL";
        }
		return s;
    },
    */

    /*
     * Dump a comma-separated list of the words making up the bit set.
     * This generates a comma-separated list of Java-like long int constants.
     *
    toStringOfWords: function() {
        var s="",
            i;
        for (i = 0; i < this.bits.length; i++) {
            if (i !== 0) {
                s+=", ";
            }
            s += this.bits[i]+"L";
        }
        return s;
    },

    toStringWithRanges: function() {
        return this.toString();
    }
    */
};
org.antlr.runtime.CharStream = {
    EOF: -1
};
org.antlr.runtime.CommonToken = function() {
    var oldToken;

    this.charPositionInLine = -1; // set to invalid position
    this.channel = 0; // org.antlr.runtime.CommonToken.DEFAULT_CHANNEL
    this.index = -1;

    if (arguments.length == 1) {
        if (org.antlr.lang.isNumber(arguments[0])) {
            this.type = arguments[0];
        } else {
            oldToken = arguments[0];
            this.text = oldToken.getText();
            this.type = oldToken.getType();
            this.line = oldToken.getLine();
            this.index = oldToken.getTokenIndex();
            this.charPositionInLine = oldToken.getCharPositionInLine();
            this.channel = oldToken.getChannel();
            if ( oldToken instanceof org.antlr.runtime.CommonToken ) {
                this.start = oldToken.start;
                this.stop = oldToken.stop;
            }
        }
    } else if (arguments.length == 2) {
        this.type = arguments[0];
        this.text = arguments[1];
        this.channel = 0; // org.antlr.runtime.CommonToken.DEFAULT_CHANNEL
    } else if (arguments.length == 5) {
        this.input = arguments[0];
        this.type = arguments[1];
        this.channel = arguments[2];
        this.start = arguments[3];
        this.stop = arguments[4];
    }
};

org.antlr.runtime.CommonToken.prototype = {
    getType: function() {
        return this.type;
    },

    setLine: function(line) {
        this.line = line;
    },

    getText: function() {
        if ( org.antlr.lang.isString(this.text) ) {
            return this.text;
        }
        if ( !this.input ) {
            return null;
        }
        this.text = this.input.substring(this.start,this.stop);
        return this.text;
    },

    /** Override the text for this token.  getText() will return this text
     *  rather than pulling from the buffer.  Note that this does not mean
     *  that start/stop indexes are not valid.  It means that that input
     *  was converted to a new string in the token object.
     */
    setText: function(text) {
        this.text = text;
    },

    getLine: function() {
        return this.line;
    },

    getCharPositionInLine: function() {
        return this.charPositionInLine;
    },

    setCharPositionInLine: function(charPositionInLine) {
        this.charPositionInLine = charPositionInLine;
    },

    getChannel: function() {
        return this.channel;
    },

    setChannel: function(channel) {
        this.channel = channel;
    },

    setType: function(type) {
        this.type = type;
    },

    getStartIndex: function() {
        return this.start;
    },

    setStartIndex: function(start) {
        this.start = start;
    },

    getStopIndex: function() {
        return this.stop;
    },

    setStopIndex: function(stop) {
        this.stop = stop;
    },

    getTokenIndex: function() {
        return this.index;
    },

    setTokenIndex: function(index) {
        this.index = index;
    },

    getInputStream: function() {
        return this.input;
    },

    setInputStream: function(input) {
        this.input = input;
    },

    toString: function() {
        var channelStr = "";
        if ( this.channel>0 ) {
            channelStr=",channel="+this.channel;
        }
        var txt = this.getText();
        if ( !org.antlr.lang.isNull(txt) ) {
            txt = txt.replace(/\n/g,"\\\\n");
            txt = txt.replace(/\r/g,"\\\\r");
            txt = txt.replace(/\t/g,"\\\\t");
        }
        else {
            txt = "<no text>";
        }
        return "[@"+this.getTokenIndex()+","+this.start+":"+this.stop+"='"+txt+"',<"+this.type+">"+channelStr+","+this.line+":"+this.getCharPositionInLine()+"]";
    }
};
// NB: Because Token has static members of type CommonToken, the Token dummy
// constructor is defined in CommonToken.  All methods and vars of Token are
// defined here.  Token is an interface, not a subclass in the Java runtime.

/**
 * @class Abstract base class of all token types.
 * @name Token
 * @memberOf org.antlr.runtime
 */
org.antlr.runtime.Token = function() {};
org.antlr.lang.augmentObject(org.antlr.runtime.Token, /** @lends Token */ {
    EOR_TOKEN_TYPE: 1,

    /** imaginary tree navigation type; traverse "get child" link */
    DOWN: 2,
    /** imaginary tree navigation type; finish with a child list */
    UP: 3,

    MIN_TOKEN_TYPE: 4, // UP+1,

    EOF: org.antlr.runtime.CharStream.EOF,
    EOF_TOKEN: new org.antlr.runtime.CommonToken(org.antlr.runtime.CharStream.EOF),

    INVALID_TOKEN_TYPE: 0,
    INVALID_TOKEN: new org.antlr.runtime.CommonToken(0),

    /** In an action, a lexer rule can set token to this SKIP_TOKEN and ANTLR
     *  will avoid creating a token for this symbol and try to fetch another.
     */
    SKIP_TOKEN: new org.antlr.runtime.CommonToken(0),

    /** All tokens go to the parser (unless skip() is called in that rule)
     *  on a particular "channel".  The parser tunes to a particular channel
     *  so that whitespace etc... can go to the parser on a "hidden" channel.
     */
    DEFAULT_CHANNEL: 0,

    /** Anything on different channel than DEFAULT_CHANNEL is not parsed
     *  by parser.
     */
    HIDDEN_CHANNEL: 99
});

org.antlr.lang.augmentObject(org.antlr.runtime.CommonToken, org.antlr.runtime.Token);
org.antlr.runtime.tree = {};
org.antlr.runtime.tree.RewriteCardinalityException = function(elementDescription) {
    this.elementDescription = elementDescription;
};
org.antlr.lang.extend(org.antlr.runtime.tree.RewriteCardinalityException, Error, {
    getMessage: function() {
		if ( org.antlr.lang.isString(this.elementDescription) ) {
			return this.elementDescription;
		}
		return null;
	},
    name: function() {
        return "org.antlr.runtime.tree.RewriteCardinalityException";
    }
});
org.antlr.runtime.tree.RewriteEmptyStreamException = function(elementDescription) {
    var sup = org.antlr.runtime.tree.RewriteEmptyStreamException.superclass; 
    sup.constructor.call(this, elementDescription);
};

org.antlr.lang.extend(org.antlr.runtime.tree.RewriteEmptyStreamException,
                  org.antlr.runtime.tree.RewriteCardinalityException, {
    name: function() {
        return "org.antlr.runtime.tree.RewriteEmptyStreamException";
    }
});
org.antlr.runtime.tree.RewriteEarlyExitException = function(elementDescription) {
    var sup = org.antlr.runtime.tree.RewriteEarlyExitException.superclass;
    if (org.antlr.lang.isUndefined(elementDescription)) {
        elementDescription = null;
    }
    sup.constructor.call(this, elementDescription);
};

org.antlr.lang.extend(org.antlr.runtime.tree.RewriteEarlyExitException,
                  org.antlr.runtime.tree.RewriteCardinalityException, {
    name: function() {
        return "org.antlr.runtime.tree.RewriteEarlyExitException";
    }    
});
org.antlr.runtime.MismatchedTreeNodeException = function(expecting, input) {
    if (expecting && input) {
        org.antlr.runtime.MismatchedTreeNodeException.superclass.constructor.call(
                this, input);
        this.expecting = expecting;
    }
};

org.antlr.lang.extend(
    org.antlr.runtime.MismatchedTreeNodeException,
    org.antlr.runtime.RecognitionException, {
    toString: function() {
        return "MismatchedTreeNodeException(" +
                this.getUnexpectedType() + "!=" + this.expecting + ")";
    },
    name: "org.antlr.runtime.MismatchedTreeNodeException"
});
org.antlr.runtime.tree.BaseTree = function() {};

org.antlr.runtime.tree.BaseTree.prototype = {
    getChild: function(i) {
        if ( !this.children || i>=this.children.length ) {
            return null;
        }
        return this.children[i];
    },

    /** Get the children internal List; note that if you directly mess with
     *  the list, do so at your own risk.
     */
    getChildren: function() {
        return this.children;
    },

    getFirstChildWithType: function(type) {
        var i, t;
        for (i = 0; this.children && i < this.children.length; i++) {
            t = this.children[i];
            if ( t.getType()===type ) {
                return t;
            }
        }    
        return null;
    },

    getChildCount: function() {
        if ( !this.children ) {
            return 0;
        }
        return this.children.length;
    },

    /** Add t as child of this node.
     *
     *  Warning: if t has no children, but child does
     *  and child isNil then this routine moves children to t via
     *  t.children = child.children; i.e., without copying the array.
     */
    addChild: function(t) {
        if ( !org.antlr.lang.isValue(t) ) {
            return; // do nothing upon addChild(null)
        }
        var childTree = t, n, i, c;
        if ( childTree.isNil() ) { // t is an empty node possibly with children
            if ( this.children && this.children == childTree.children ) {
                throw new Error("attempt to add child list to itself");
            }
            // just add all of childTree's children to this
            if ( childTree.children ) {
                if ( this.children ) { // must copy, this has children already
                    n = childTree.children.length;
                    for (i = 0; i < n; i++) {
                        c = childTree.children[i];
                        this.children.push(c);
                        // handle double-link stuff for each child of nil root
                        c.setParent(this);
                        c.setChildIndex(this.children.length-1);
                    }
                }
                else {
                    // no children for this but t has children; just set pointer
                    // call general freshener routine
                    this.children = childTree.children;
                    this.freshenParentAndChildIndexes();
                }
            }
        }
        else { // child is not nil (don't care about children)
            if ( !this.children ) {
                this.children = this.createChildrenList(); // create children list on demand
            }
            this.children.push(t);
            childTree.setParent(this);
            childTree.setChildIndex(this.children.length-1);
        }
    },

    /** Add all elements of kids list as children of this node */
    addChildren: function(kids) {
        var i, t;
        for (i = 0; i < kids.length; i++) {
            t = kids[i];
            this.addChild(t);
        }
    },

    setChild: function(i, t) {
        if ( !t ) {
            return;
        }
        if ( t.isNil() ) {
            throw new Error("Can't set single child to a list");
        }
        if ( !this.children ) {
            this.children = this.createChildrenList();
        }
        this.children[i] = t;
        t.setParent(this);
        t.setChildIndex(i);
    },

    deleteChild: function(i) {
        if ( !this.children ) {
            return null;
        }
        if (i<0 || i>=this.children.length) {
            throw new Error("Index out of bounds.");
        }
        var killed = this.children.splice(i, 1)[0];
        // walk rest and decrement their child indexes
        this.freshenParentAndChildIndexes(i);
        return killed;
    },

    /** Delete children from start to stop and replace with t even if t is
     *  a list (nil-root tree).  num of children can increase or decrease.
     *  For huge child lists, inserting children can force walking rest of
     *  children to set their childindex; could be slow.
     */
    replaceChildren: function(startChildIndex, stopChildIndex, t) {
        if ( !this.children ) {
            throw new Error("indexes invalid; no children in list");
        }
        var replacingHowMany = stopChildIndex - startChildIndex + 1;
        var replacingWithHowMany;
        var newTree = t;
        var newChildren = null;
        // normalize to a list of children to add: newChildren
        if ( newTree.isNil() ) {
            newChildren = newTree.children;
        }
        else {
            newChildren = [];
            newChildren.push(newTree);
        }
        replacingWithHowMany = newChildren.length;
        var numNewChildren = newChildren.length;
        var delta = replacingHowMany - replacingWithHowMany;
        var j, i, child, indexToDelete, c, killed, numToInsert;
        // if same number of nodes, do direct replace
        if ( delta === 0 ) {
            j = 0; // index into new children
            for (i=startChildIndex; i<=stopChildIndex; i++) {
                child = newChildren[j];
                this.children[i] = child;
                child.setParent(this);
                child.setChildIndex(i);
                j++;
            }
        }
        else if ( delta > 0 ) { // fewer new nodes than there were
            // set children and then delete extra
            for (j=0; j<numNewChildren; j++) {
                this.children[startChildIndex+j] = newChildren[j];
            }
            indexToDelete = startChildIndex+numNewChildren;
            for (c=indexToDelete; c<=stopChildIndex; c++) {
                // delete same index, shifting everybody down each time
                killed = this.children.splice(indexToDelete, 1)[0];
            }
            this.freshenParentAndChildIndexes(startChildIndex);
        }
        else { // more new nodes than were there before
            // fill in as many children as we can (replacingHowMany) w/o moving data
            for (j=0; j<replacingHowMany; j++) {
                this.children[startChildIndex+j] = newChildren[j];
            }
            numToInsert = replacingWithHowMany-replacingHowMany;
            for (j=replacingHowMany; j<replacingWithHowMany; j++) {
                this.children.splice(startChildIndex+j, 0, newChildren[j]);
            }
            this.freshenParentAndChildIndexes(startChildIndex);
        }
    },

    /** Override in a subclass to change the impl of children list */
    createChildrenList: function() {
        return [];
    },

    isNil: function() {
        return false;
    },

    freshenParentAndChildIndexes: function(offset) {
        if (!org.antlr.lang.isNumber(offset)) {
            offset = 0;
        }
        var n = this.getChildCount(),
            c,
            child;
        for (c = offset; c < n; c++) {
            child = this.getChild(c);
            child.setChildIndex(c);
            child.setParent(this);
        }
    },

    sanityCheckParentAndChildIndexes: function(parent, i) {
        if (arguments.length===0) {
            parent = null;
            i = -1;
        }

        if ( parent!==this.getParent() ) {
            throw new Error("parents don't match; expected "+parent+" found "+this.getParent());
        }
        if ( i!==this.getChildIndex() ) {
            throw new Error("child indexes don't match; expected "+i+" found "+this.getChildIndex());
        }
        var n = this.getChildCount(),
            c,
            child;
        for (c = 0; c < n; c++) {
            child = this.getChild(c);
            child.sanityCheckParentAndChildIndexes(this, c);
        }
    },

    /** BaseTree doesn't track child indexes. */
    getChildIndex: function() {
        return 0;
    },
    setChildIndex: function(index) {
    },

    /** BaseTree doesn't track parent pointers. */
    getParent: function() {
        return null;
    },
    setParent: function(t) {
    },

    getTree: function() {
        return this;
    },

    /** Print out a whole tree not just a node */
    toStringTree: function() {
        if ( !this.children || this.children.length===0 ) {
            return this.toString();
        }
        var buf = "",
            i,
            t;
        if ( !this.isNil() ) {
            buf += "(";
            buf += this.toString();
            buf += ' ';
        }
        for (i = 0; this.children && i < this.children.length; i++) {
            t = this.children[i];
            if ( i>0 ) {
                buf += ' ';
            }
            buf += t.toStringTree();
        }
        if ( !this.isNil() ) {
            buf += ")";
        }
        return buf;
    },

    getLine: function() {
        return 0;
    },

    getCharPositionInLine: function() {
        return 0;
    }
};
org.antlr.runtime.tree.CommonTree = function(node) {
    /** What token indexes bracket all tokens associated with this node
     *  and below?
     */
    this.startIndex = -1;
    this.stopIndex = -1;
    this.childIndex = -1;
    this.parent = null;
    this.token = null;

    if (node instanceof org.antlr.runtime.tree.CommonTree) {
        org.antlr.runtime.tree.CommonTree.superclass.constructor.call(this, node);
        this.token = node.token;
        this.startIndex = node.startIndex;
        this.stopIndex = node.stopIndex;
    } else if (node instanceof org.antlr.runtime.CommonToken) {
        this.token = node;
    }
};
org.antlr.lang.extend(org.antlr.runtime.tree.CommonTree, org.antlr.runtime.tree.BaseTree, {
    getToken: function() {
        return this.token;
    },

    dupNode: function() {
        return new org.antlr.runtime.tree.CommonTree(this);
    },

    isNil: function() {
        return !this.token;
    },

    getType: function() {
        if ( !this.token ) {
            return org.antlr.runtime.Token.INVALID_TOKEN_TYPE;
        }
        return this.token.getType();
    },

    getText: function() {
        if ( !this.token ) {
            return null;
        }
        return this.token.getText();
    },

    getLine: function() {
        if ( !this.token || this.token.getLine()===0 ) {
            if ( this.getChildCount()>0 ) {
                return this.getChild(0).getLine();
            }
            return 0;
        }
        return this.token.getLine();
    },

    getCharPositionInLine: function() {
        if ( !this.token || this.token.getCharPositionInLine()===-1 ) {
            if ( this.getChildCount()>0 ) {
                return this.getChild(0).getCharPositionInLine();
            }
            return 0;
        }
        return this.token.getCharPositionInLine();
    },

    getTokenStartIndex: function() {
        if ( this.token ) {
            return this.token.getTokenIndex();
        }
        return this.startIndex;
    },

    setTokenStartIndex: function(index) {
        this.startIndex = index;
    },

    getTokenStopIndex: function() {
        if ( this.token ) {
            return this.token.getTokenIndex();
        }
        return this.stopIndex;
    },

    setTokenStopIndex: function(index) {
        this.stopIndex = index;
    },

    getChildIndex: function() {
        return this.childIndex;
    },

    getParent: function() {
        return this.parent;
    },

    setParent: function(t) {
        this.parent = t;
    },

    setChildIndex: function(index) {
        this.childIndex = index;
    },

    toString: function() {
        if ( this.isNil() ) {
            return "nil";
        }
        if ( this.getType()===org.antlr.runtime.Token.INVALID_TOKEN_TYPE ) {
            return "<errornode>";
        }
        if ( !this.token ) {
            return null;
        }
        return this.token.getText();
    }
});
org.antlr.runtime.tree.Tree = {
    INVALID_NODE: new org.antlr.runtime.tree.CommonTree(org.antlr.runtime.Token.INVALID_TOKEN)
};
org.antlr.runtime.tree.CommonErrorNode = function(input, start, stop, e) {
    if ( !stop ||
            (stop.getTokenIndex() < start.getTokenIndex() &&
             stop.getType()!=org.antlr.runtime.Token.EOF) )
    {
        // sometimes resync does not consume a token (when LT(1) is
        // in follow set.  So, stop will be 1 to left to start. adjust.
        // Also handle case where start is the first token and no token
        // is consumed during recovery; LT(-1) will return null.
        stop = start;
    }
    this.input = input;
    this.start = start;
    this.stop = stop;
    this.trappedException = e;
};

org.antlr.lang.extend(org.antlr.runtime.tree.CommonErrorNode, org.antlr.runtime.tree.CommonTree, {
    isNil: function() {
        return false;
    },

    getType: function() {
        return org.antlr.runtime.Token.INVALID_TOKEN_TYPE;
    },

    getText: function() {
        var badText = null;
        if ( this.start instanceof org.antlr.runtime.CommonToken ) {
            var i = this.start.getTokenIndex();
            var j = this.stop.getTokenIndex();
            if ( this.stop.getType() === org.antlr.runtime.Token.EOF ) {
                j = this.input.size();
            }
            badText = this.input.toString(i, j);
        }
        else if ( this.start instanceof org.antlr.runtime.tree.CommonTree ) {
            badText = this.input.toString(this.start, this.stop);
        }
        else {
            // people should subclass if they alter the tree type so this
            // next one is for sure correct.
            badText = "<unknown>";
        }
        return badText;
    },

    toString: function() {
        if ( this.trappedException instanceof org.antlr.runtime.MissingTokenException ) {
            return "<missing type: "+
                   this.trappedException.getMissingType()+
                   ">";
        }
        else if ( this.trappedException instanceof org.antlr.runtime.UnwantedTokenException ) {
            return "<extraneous: "+
                   this.trappedException.getUnexpectedToken()+
                   ", resync="+this.getText()+">";
        }
        else if ( this.trappedException instanceof org.antlr.runtime.MismatchedTokenException ) {
            return "<mismatched token: "+this.trappedException.token+", resync="+this.getText()+">";
        }
        else if ( this.trappedException instanceof org.antlr.runtime.NoViableAltException ) {
            return "<unexpected: "+this.trappedException.token+
                   ", resync="+this.getText()+">";
        }
        return "<error: "+this.getText()+">";
    }
});
org.antlr.runtime.tree.BaseTreeAdaptor = function() {
    this.uniqueNodeID = 1;
};

org.antlr.runtime.tree.BaseTreeAdaptor.prototype = {
    nil: function() {
        return this.create(null);
    },

    /** create tree node that holds the start and stop tokens associated
     *  with an error.
     *
     *  If you specify your own kind of tree nodes, you will likely have to
     *  override this method. CommonTree returns Token.INVALID_TOKEN_TYPE
     *  if no token payload but you might have to set token type for diff
     *  node type.
     */
    errorNode: function(input, start, stop, e) {
        var t = new org.antlr.runtime.tree.CommonErrorNode(input, start, stop, e);
        return t;
    },

    isNil: function(tree) {
        return tree.isNil();
    },

    /** This is generic in the sense that it will work with any kind of
     *  tree (not just Tree interface).  It invokes the adaptor routines
     *  not the tree node routines to do the construction.  
     */
    dupTree: function(t, parent) {
        if (arguments.length===1) {
            parent = null;
        }
        if ( !t ) {
            return null;
        }
        var newTree = this.dupNode(t);
        // ensure new subtree root has parent/child index set
        this.setChildIndex(newTree, this.getChildIndex(t)); // same index in new tree
        this.setParent(newTree, parent);
        var n = this.getChildCount(t),
            i, child, newSubTree;
        for (i = 0; i < n; i++) {
            child = this.getChild(t, i);
            newSubTree = this.dupTree(child, t);
            this.addChild(newTree, newSubTree);
        }
        return newTree;
    },

    /** Add a child to the tree t.  If child is a flat tree (a list), make all
     *  in list children of t.  Warning: if t has no children, but child does
     *  and child isNil then you can decide it is ok to move children to t via
     *  t.children = child.children; i.e., without copying the array.  Just
     *  make sure that this is consistent with have the user will build
     *  ASTs.
     */
    addChild: function(t, child) {
        if ( t && org.antlr.lang.isValue(child) ) {
            t.addChild(child);
        }
    },

    /** If oldRoot is a nil root, just copy or move the children to newRoot.
     *  If not a nil root, make oldRoot a child of newRoot.
     *
     *    old=^(nil a b c), new=r yields ^(r a b c)
     *    old=^(a b c), new=r yields ^(r ^(a b c))
     *
     *  If newRoot is a nil-rooted single child tree, use the single
     *  child as the new root node.
     *
     *    old=^(nil a b c), new=^(nil r) yields ^(r a b c)
     *    old=^(a b c), new=^(nil r) yields ^(r ^(a b c))
     *
     *  If oldRoot was null, it's ok, just return newRoot (even if isNil).
     *
     *    old=null, new=r yields r
     *    old=null, new=^(nil r) yields ^(nil r)
     *
     *  Return newRoot.  Throw an exception if newRoot is not a
     *  simple node or nil root with a single child node--it must be a root
     *  node.  If newRoot is ^(nil x) return x as newRoot.
     *
     *  Be advised that it's ok for newRoot to point at oldRoot's
     *  children; i.e., you don't have to copy the list.  We are
     *  constructing these nodes so we should have this control for
     *  efficiency.
     */
    becomeRoot: function(newRoot, oldRoot) {
        if (newRoot instanceof org.antlr.runtime.CommonToken || !newRoot) {
            newRoot = this.create(newRoot);
        }

        var newRootTree = newRoot,
            oldRootTree = oldRoot;
        if ( !oldRoot ) {
            return newRoot;
        }
        // handle ^(nil real-node)
        if ( newRootTree.isNil() ) {
            if ( newRootTree.getChildCount()>1 ) {
                // TODO: make tree run time exceptions hierarchy
                throw new Error("more than one node as root (TODO: make exception hierarchy)");
            }
            newRootTree = newRootTree.getChild(0);
        }
        // add oldRoot to newRoot; addChild takes care of case where oldRoot
        // is a flat list (i.e., nil-rooted tree).  All children of oldRoot
        // are added to newRoot.
        newRootTree.addChild(oldRootTree);
        return newRootTree;
    },

    /** Transform ^(nil x) to x */
    rulePostProcessing: function(root) {
        var r = root;
        if ( r && r.isNil() ) {
            if ( r.getChildCount()===0 ) {
                r = null;
            }
            else if ( r.getChildCount()===1 ) {
                r = r.getChild(0);
                // whoever invokes rule will set parent and child index
                r.setParent(null);
                r.setChildIndex(-1);
            }
        }
        return r;
    },

    create: function(tokenType, fromToken) {
        var text, t;
        if (arguments.length===2) {
            if (org.antlr.lang.isString(arguments[1])) {
                text = arguments[1];
                fromToken = this.createToken(tokenType, text);
                t = this.create(fromToken);
                return t;
            } else {
                fromToken = this.createToken(fromToken);
                fromToken.setType(tokenType);
                t = this.create(fromToken);
                return t;
            }
        } else if (arguments.length===3) {
            text = arguments[2];
            fromToken = this.createToken(fromToken);
            fromToken.setType(tokenType);
            fromToken.setText(text);
            t = this.create(fromToken);
            return t;
        }
    },

    getType: function(t) {
        t.getType();
        return 0;
    },

    setType: function(t, type) {
        throw new Error("don't know enough about Tree node");
    },

    getText: function(t) {
        return t.getText();
    },

    setText: function(t, text) {
        throw new Error("don't know enough about Tree node");
    },

    getChild: function(t, i) {
        return t.getChild(i);
    },

    setChild: function(t, i, child) {
        t.setChild(i, child);
    },

    deleteChild: function(t, i) {
        return t.deleteChild(i);
    },

    getChildCount: function(t) {
        return t.getChildCount();
    },

    getUniqueID: function(node) {
        if ( !this.treeToUniqueIDMap ) {
             this.treeToUniqueIDMap = {};
        }
        var prevID = this.treeToUniqueIDMap[node];
        if ( org.antlr.lang.isValue(prevID) ) {
            return prevID;
        }
        var ID = this.uniqueNodeID;
        this.treeToUniqueIDMap[node] = ID;
        this.uniqueNodeID++;
        return ID;
        // GC makes these nonunique:
        // return System.identityHashCode(node);
    }
};
org.antlr.runtime.tree.CommonTreeAdaptor = function() {};

org.antlr.lang.extend(org.antlr.runtime.tree.CommonTreeAdaptor,
                  org.antlr.runtime.tree.BaseTreeAdaptor, {
    /** Duplicate a node.  This is part of the factory;
     *    override if you want another kind of node to be built.
     *
     *  I could use reflection to prevent having to override this
     *  but reflection is slow.
     */
    dupNode: function(t) {
        if ( !org.antlr.lang.isValue(t) ) {
            return null;
        }
        return t.dupNode();
    },

    create: function(payload) {
        if (arguments.length>1) {
            return org.antlr.runtime.tree.CommonTreeAdaptor.superclass.create.apply(this, arguments);
        }
        return new org.antlr.runtime.tree.CommonTree(payload);
    },

    /** Tell me how to create a token for use with imaginary token nodes.
     *  For example, there is probably no input symbol associated with imaginary
     *  token DECL, but you need to create it as a payload or whatever for
     *  the DECL node as in ^(DECL type ID).
     *
     *  If you care what the token payload objects' type is, you should
     *  override this method and any other createToken variant.
     *
     * Tell me how to create a token for use with imaginary token nodes.
     *  For example, there is probably no input symbol associated with imaginary
     *  token DECL, but you need to create it as a payload or whatever for
     *  the DECL node as in ^(DECL type ID).
     *
     *  This is a variant of createToken where the new token is derived from
     *  an actual real input token.  Typically this is for converting '{'
     *  tokens to BLOCK etc...  You'll see
     *
     *    r : lc='{' ID+ '}' -> ^(BLOCK[$lc] ID+) ;
     *
     *  If you care what the token payload objects' type is, you should
     *  override this method and any other createToken variant.
     */
    createToken: function(fromToken) {
        if (arguments.length===2) {
            return new org.antlr.runtime.CommonToken(arguments[0], arguments[1]);
        } else {
            return new org.antlr.runtime.CommonToken(arguments[0]);
        }
    },

    /** Track start/stop token for subtree root created for a rule.
     *  Only works with Tree nodes.  For rules that match nothing,
     *  seems like this will yield start=i and stop=i-1 in a nil node.
     *  Might be useful info so I'll not force to be i..i.
     */
    setTokenBoundaries: function(t, startToken, stopToken) {
        if ( !org.antlr.lang.isValue(t) ) {
            return;
        }
        var start = 0,
            stop = 0;
        if ( org.antlr.lang.isValue(startToken) ) {
            if (startToken.getTokenIndex) {
                start = startToken.getTokenIndex();
            } else if (startToken.getStartIndex) {
                start = startToken.getStartIndex();
            } else {
                start = startToken.getTokenStartIndex();
            }
        }
        if ( org.antlr.lang.isValue(stopToken) ) {
            if (stop.getTokenIndex) {
                stop = stopToken.getTokenIndex();
            } else if (stopToken.getStopIndex) {
                stop = stopToken.getStopIndex();
            } else {
                stop = stopToken.getTokenStopIndex();
            }
        }
        t.setTokenStartIndex(start);
        t.setTokenStopIndex(stop);
    },

    getTokenStartIndex: function(t) {
        if (!t) {
            return -1;
        }
        return t.getTokenStartIndex();
    },

    getTokenStopIndex: function(t) {
        if (!t) {
            return -1;
        }
        return t.getTokenStopIndex();
    },

    getText: function(t) {
        if (!t) {
            return null;
        }
        return t.getText();
    },

    getType: function(t) {
        if (!t) {
            return org.antlr.runtime.Token.INVALID_TOKEN_TYPE;
        }
        return t.getType();
    },

    /** What is the Token associated with this node?  If
     *  you are not using CommonTree, then you must
     *  override this in your own adaptor.
     */
    getToken: function(t) {
        if ( t instanceof org.antlr.runtime.tree.CommonTree ) {
            return t.getToken();
        }
        return null; // no idea what to do
    },

    getChild: function(t, i) {
        if (!t) {
            return null;
        }
        return t.getChild(i);
    },

    getChildCount: function(t) {
        if (!t) {
            return 0;
        }
        return t.getChildCount();
    },

    getParent: function(t) {
        return t.getParent();
    },

    setParent: function(t, parent) {
        t.setParent(parent);
    },

    getChildIndex: function(t) {
        return t.getChildIndex();
    },

    setChildIndex: function(t, index) {
        t.setChildIndex(index);
    },

    replaceChildren: function(parent, startChildIndex, stopChildIndex, t) {
        if ( parent ) {
            parent.replaceChildren(startChildIndex, stopChildIndex, t);
        }
    }
});
org.antlr.runtime.ANTLRStringStream = function(data) {
    /**
     * Location in the stream.
     * Ranges from 0 to (stream length - 1).
     * @private
     * @type Number
     */
    this.p = 0;
    this.line = 1;
    this.charPositionInLine = 0;
    this.markDepth = 0;
    this.markers = null;
    this.lastMarker = null;
    this.data = data;
    this.n = data.length;
};

org.antlr.runtime.ANTLRStringStream.prototype = {
    /**
     * Reset the stream so that it's in the same state it was
     * when the object was created *except* the data array is not
     * touched.
     */
    reset: function() {
       this.p = 0;
       this.line = 1;
       this.charPositionInLine = 0;
       this.markDepth = 0;
    },

    /**
     * Consume the next character of data in the stream.
     */
    consume: function() {
        //console.log("prev p="+ this.p +", c="+ this.data.charAt(this.p));
        if ( this.p < this.n ) {
            this.charPositionInLine++;
            if ( this.data.charAt(this.p)==="\n" ) {
                this.line++;
                this.charPositionInLine=0;
            }
            this.p++;
            //console.log("p moves to " + this.p + " (c='"+ this.data.charAt(this.p) +"')");
        }
    },

    /**
     * Get character at current input pointer + i ahead where i=1 is next int.
     * Negative indexes are allowed.  LA(-1) is previous token (token
     * just matched).  LA(-i) where i is before first token should
     * yield -1, invalid char / EOF.
     * @param {Number} i non-zero amount of lookahead or lookback
     * @returns {String|Number} The charcter at the specified position or -1 if
     *      you fell off either end of the stream.
     */
    LA: function(i) {
        if ( i<0 ) {
            i++; // e.g., translate LA(-1) to use offset i=0; then data[p+0-1]
        }

        var new_pos = this.p+i-1;
        if (new_pos>=this.n || new_pos<0) {
            return org.antlr.runtime.CharStream.EOF;
        }
        return this.data.charAt(new_pos);
    },


    /**
     * Return the current input symbol index 0..n where n indicates the
     * last symbol has been read.  The index is the index of char to
     * be returned from LA(1) (i.e. the one about to be consumed).
     * @returns {Number} the index of the current input symbol
     */
    index: function() {
        return this.p;
    },

    /**
     * The length of this stream.
     * @returns {Number} the length of this stream.
     */
    size: function() {
        return this.n;
    },

    /**
     * Tell the stream to start buffering if it hasn't already.  Return
     * current input position, index(), or some other marker so that
     * when passed to rewind() you get back to the same spot.
     * rewind(mark()) should not affect the input cursor.  The Lexer
     * tracks line/col info as well as input index so its markers are
     * not pure input indexes.  Same for tree node streams.
     *
     * <p>Marking is a mechanism for storing the current position of a stream
     * in a stack.  This corresponds with the predictive look-ahead mechanism
     * used in Lexers.</p>
     * @returns {Number} the current size of the mark stack.
     */
    mark: function() {
        if ( !this.markers ) {
            this.markers = [];
            this.markers.push(null); // depth 0 means no backtracking, leave blank
        }
        this.markDepth++;
        var state = null;
        if ( this.markDepth>=this.markers.length ) {
            state = {};
            this.markers.push(state);
        }
        else {
            state = this.markers[this.markDepth];
        }
        state.p = this.p;
        state.line = this.line;
        state.charPositionInLine = this.charPositionInLine;
        this.lastMarker = this.markDepth;
        return this.markDepth;
    },

    /**
     * Rewind to the input position of the last marker.
     * Used currently only after a cyclic DFA and just
     * before starting a sem/syn predicate to get the
     * input position back to the start of the decision.
     * Do not "pop" the marker off the state.  mark(i)
     * and rewind(i) should balance still. It is
     * like invoking rewind(last marker) but it should not "pop"
     * the marker off.  It's like seek(last marker's input position).
     * @param {Number} [m] the index in the mark stack to load instead of the
     *      last.
     */
    rewind: function(m) {
        if (!org.antlr.lang.isNumber(m)) {
            m = this.lastMarker;
        }

        var state = this.markers[m];
        // restore stream state
        this.seek(state.p);
        this.line = state.line;
        this.charPositionInLine = state.charPositionInLine;
        this.release(m);
    },

    /**
     * You may want to commit to a backtrack but don't want to force the
     * stream to keep bookkeeping objects around for a marker that is
     * no longer necessary.  This will have the same behavior as
     * rewind() except it releases resources without the backward seek.
     * This must throw away resources for all markers back to the marker
     * argument.  So if you're nested 5 levels of mark(), and then release(2)
     * you have to release resources for depths 2..5.
     * @param {Number} marker the mark depth above which all mark states will
     *      be released.
     */
    release: function(marker) {
        // unwind any other markers made after m and release m
        this.markDepth = marker;
        // release this marker
        this.markDepth--;
    },

    /**
     * Set the input cursor to the position indicated by index.  This is
     * normally used to seek ahead in the input stream.  No buffering is
     * required to do this unless you know your stream will use seek to
     * move backwards such as when backtracking.
     *
     * <p>This is different from rewind in its multi-directional
     * requirement and in that its argument is strictly an input cursor
     * (index).</p>
     *
     * <p>For char streams, seeking forward must update the stream state such
     * as line number.  For seeking backwards, you will be presumably
     * backtracking using the mark/rewind mechanism that restores state and
     * so this method does not need to update state when seeking backwards.</p>
     *
     * <p>Currently, this method is only used for efficient backtracking using
     * memoization, but in the future it may be used for incremental
     * parsing.</p>
     *
     * <p>The index is 0..n-1.  A seek to position i means that LA(1) will
     * return the ith symbol.  So, seeking to 0 means LA(1) will return the
     * first element in the stream.</p>
     *
     * <p>Esentially this method method moves the input position,
     * {@link #consume}-ing data if necessary.</p>
     *
     * @param {Number} index the position to seek to.
     */
    seek: function(index) {
        if ( index<=this.p ) {
            this.p = index; // just jump; don't update stream state (line, ...)
            return;
        }
        // seek forward, consume until p hits index
        while ( this.p<index ) {
            this.consume();
        }
    },

    /**
     * Retrieve a substring from this stream.
     * @param {Number} start the starting index of the substring (inclusive).
     * @param {Number} stop the last index of the substring (inclusive).
     * @returns {String}
     */
    substring: function(start, stop) {
        return this.data.substr(start,stop-start+1);
    },

    /**
     * Return the current line position in the stream.
     * @returns {Number} the current line position in the stream (1..numlines).
     */
    getLine: function() {
        return this.line;
    },

    /**
     * Get the index of the character relative to the beginning of the line.
     * Ranges from 0 to (length of line - 1).
     * @returns {Number}
     */
    getCharPositionInLine: function() {
        return this.charPositionInLine;
    },

    /**
     * Set the current line in the input stream.
     * This is used internally when performing rewinds.
     * @param {Number} line
     * @private
     */
    setLine: function(line) {
        this.line = line;
    },

    /**
     * Set the index of the character relative to the beginning of the line.
     * Ranges from 0 to (length of line - 1).
     * @param {Number} pos
     * @private
     */
    setCharPositionInLine: function(pos) {
        this.charPositionInLine = pos;
    },

    /** Where are you getting symbols from? Normally, implementations will
     *  pass the buck all the way to the lexer who can ask its input stream
     *  for the file name or whatever.
     */
    getSourceName: function() {
        return null;
    }
};
org.antlr.runtime.ANTLRStringStream.LT = org.antlr.runtime.ANTLRStringStream.LA;
org.antlr.runtime.CommonTokenStream = function(tokenSource, channel) {
    this.p = -1;
    this.channel = org.antlr.runtime.Token.DEFAULT_CHANNEL;
    this.v_discardOffChannelTokens = false;

    this.tokens = [];
    if (arguments.length >= 2) {
        this.channel = channel;
    } else if (arguments.length === 1) {
        this.tokenSource = tokenSource;
    }
};

org.antlr.runtime.CommonTokenStream.prototype = {
    /** Reset this token stream by setting its token source. */
    setTokenSource: function(tokenSource) {
        this.tokenSource = tokenSource;
        this.tokens = [];
        this.p = -1;
        this.channel = org.antlr.runtime.Token.DEFAULT_CHANNEL;
    },

    /** Load all tokens from the token source and put in tokens.
     *  This is done upon first LT request because you might want to
     *  set some token type / channel overrides before filling buffer.
     */
    fillBuffer: function() {
        var index = 0,
            t = this.tokenSource.nextToken(),
            discard,
            channelI;
        while ( org.antlr.lang.isValue(t) && 
                t.getType()!=org.antlr.runtime.CharStream.EOF )
        {
            discard = false;
            // is there a channel override for token type?
            if ( this.channelOverrideMap ) {
                channelI = this.channelOverrideMap[t.getType()];
                if ( org.antlr.lang.isValue(channelI) ) {
                    t.setChannel(channelI);
                }
            }
            if ( this.discardSet && this.discardSet[t.getType()] )
            {
                discard = true;
            }
            else if ( this.v_discardOffChannelTokens &&
                    t.getChannel()!=this.channel )
            {
                discard = true;
            }
            if ( !discard )    {
                t.setTokenIndex(index);
                this.tokens.push(t);
                index++;
            }
            t = this.tokenSource.nextToken();
        }
        // leave p pointing at first token on channel
        this.p = 0;
        this.p = this.skipOffTokenChannels(this.p);
    },

    /** Move the input pointer to the next incoming token.  The stream
     *  must become active with LT(1) available.  consume() simply
     *  moves the input pointer so that LT(1) points at the next
     *  input symbol. Consume at least one token.
     *
     *  Walk past any token not on the channel the parser is listening to.
     */
    consume: function() {
        if ( this.p<this.tokens.length ) {
            this.p++;
            this.p = this.skipOffTokenChannels(this.p); // leave p on valid token
        }
    },

    /** Given a starting index, return the index of the first on-channel
     *  token.
     */
    skipOffTokenChannels: function(i) {
        var n = this.tokens.length;
        while ( i<n && (this.tokens[i]).getChannel()!=this.channel ) {
            i++;
        }
        return i;
    },

    skipOffTokenChannelsReverse: function(i) {
        while ( i>=0 && (this.tokens[i]).getChannel()!=this.channel ) {
            i--;
        }
        return i;
    },

    /** A simple filter mechanism whereby you can tell this token stream
     *  to force all tokens of type ttype to be on channel.  For example,
     *  when interpreting, we cannot exec actions so we need to tell
     *  the stream to force all WS and NEWLINE to be a different, ignored
     *  channel.
     */
    setTokenTypeChannel: function(ttype, channel) {
        if ( !this.channelOverrideMap ) {
            this.channelOverrideMap = {};
        }
        this.channelOverrideMap[ttype] = channel;
    },

    discardTokenType: function(ttype) {
        if ( !this.discardSet ) {
            this.discardSet = {};
        }
        this.discardSet[ttype] = true;
    },

    discardOffChannelTokens: function(b) {
        this.v_discardOffChannelTokens = b;
    },

    /** Given a start and stop index, return a List of all tokens in
     *  the token type BitSet.  Return null if no tokens were found.  This
     *  method looks at both on and off channel tokens.
     */
    getTokens: function(start, stop, types) {
        if ( this.p === -1 ) {
            this.fillBuffer();
        }

        if (arguments.length===0) {
            return this.tokens;
        }

        if (org.antlr.lang.isArray(types)) {
            types = new org.antlr.runtime.BitSet(types);
        } else if (org.antlr.lang.isNumber(types)) {
            types = org.antlr.runtime.BitSet.of(types);
        }

        if ( stop>=this.tokens.length ) {
            stop=this.tokens.length-1;
        }
        if ( start<0 ) {
            start=0;
        }
        if ( start>stop ) {
            return null;
        }

        // list = tokens[start:stop]:{Token t, t.getType() in types}
        var filteredTokens = [],
            i,
            t;
        for (i=start; i<=stop; i++) {
            t = this.tokens[i];
            if ( !this.types || types.member(t.getType()) ) {
                filteredTokens.push(t);
            }
        }
        if ( filteredTokens.length===0 ) {
            filteredTokens = null;
        }
        return filteredTokens;
    },

    /** Get the ith token from the current position 1..n where k=1 is the
     *  first symbol of lookahead.
     */
    LT: function(k) {
        if ( this.p === -1 ) {
            this.fillBuffer();
        }
        if ( k===0 ) {
            return null;
        }
        if ( k<0 ) {
            return this.LB(-1*k);
        }
        if ( (this.p+k-1) >= this.tokens.length ) {
            return org.antlr.runtime.Token.EOF_TOKEN;
        }
        var i = this.p,
            n = 1;
        // find k good tokens
        while ( n<k ) {
            // skip off-channel tokens
            i = this.skipOffTokenChannels(i+1); // leave p on valid token
            n++;
        }
        if ( i>=this.tokens.length ) {
            return org.antlr.runtime.Token.EOF_TOKEN;
        }
        return this.tokens[i];
    },

    /** Look backwards k tokens on-channel tokens */
    LB: function(k) {
        if ( this.p === -1 ) {
            this.fillBuffer();
        }
        if ( k===0 ) {
            return null;
        }
        if ( (this.p-k)<0 ) {
            return null;
        }

        var i = this.p,
            n = 1;
        // find k good tokens looking backwards
        while ( n<=k ) {
            // skip off-channel tokens
            i = this.skipOffTokenChannelsReverse(i-1); // leave p on valid token
            n++;
        }
        if ( i<0 ) {
            return null;
        }
        return this.tokens[i];
    },

    /** Return absolute token i; ignore which channel the tokens are on;
     *  that is, count all tokens not just on-channel tokens.
     */
    get: function(i) {
        return this.tokens[i];
    },

    LA: function(i) {
        return this.LT(i).getType();
    },

    mark: function() {
        if ( this.p === -1 ) {
            this.fillBuffer();
        }
        this.lastMarker = this.index();
        return this.lastMarker;
    },

    release: function(marker) {
        // no resources to release
    },

    size: function() {
        return this.tokens.length;
    },

    index: function() {
        return this.p;
    },

    rewind: function(marker) {
        if (!org.antlr.lang.isNumber(marker)) {
            marker = this.lastMarker;
        }
        this.seek(marker);
    },

    reset: function() {
        this.p = -1;
        this.lastMarker = 0;
    },

    seek: function(index) {
        this.p = index;
    },

    getTokenSource: function() {
        return this.tokenSource;
    },

    getSourceName: function() {
        return this.getTokenSource().getSourceName();
    },

    toString: function(start, stop) {
        if (arguments.length===0) {
            if ( this.p === -1 ) {
                this.fillBuffer();
            }
            start = 0;
            stop = this.tokens.length-1;
        }

        if (!org.antlr.lang.isNumber(start) && !org.antlr.lang.isNumber(stop)) {
            if ( org.antlr.lang.isValue(start) && org.antlr.lang.isValue(stop) ) {
                start = start.getTokenIndex();
                stop = stop.getTokenIndex();
            } else {
                return null;
            }
        }

        var buf = "",
            i;
 
        if ( start<0 || stop<0 ) {
            return null;
        }
        if ( this.p == -1 ) {
            this.fillBuffer();
        }
        if ( stop>=this.tokens.length ) {
            stop = this.tokens.length-1;
        }
        for (i = start; i <= stop; i++) {
            t = this.tokens[i];
            buf = buf + this.tokens[i].getText();
        }
        return buf;
    }
};

org.antlr.runtime.TokenRewriteStream = function() {
    var sup = org.antlr.runtime.TokenRewriteStream.superclass;
    this.programs = null;
    this.lastRewriteTokenIndexes = null;


    if (arguments.length===0) {
        this.init();
    } else {
        sup.constructor.apply(this, arguments);
        this.init();
    }
};

(function(){
var trs = org.antlr.runtime.TokenRewriteStream;

org.antlr.lang.augmentObject(trs, {
    DEFAULT_PROGRAM_NAME: "default",
    PROGRAM_INIT_SIZE: 100,
    MIN_TOKEN_INDEX: 0
});

//
// Define the rewrite operation hierarchy
//

trs.RewriteOperation = function(index, text) {
    this.index = index;
    this.text = text;
};
trs.RewriteOperation.prototype = {
    execute: function(buf) {
        return this.index;
    },
    toString: function() {
        /*String opName = getClass().getName();
        int $index = opName.indexOf('$');
        opName = opName.substring($index+1, opName.length());
        return opName+"@"+index+'"'+text+'"';*/
        return this.text;
    }
};

trs.InsertBeforeOp = function(index, text) {
    trs.InsertBeforeOp.superclass.constructor.call(this, index, text);
};
org.antlr.lang.extend(trs.InsertBeforeOp, trs.RewriteOperation, {
    execute: function(buf) {
        buf.push(this.text);
        return this.index;
    }
});
trs.ReplaceOp = function(from, to, text) {
    trs.ReplaceOp.superclass.constructor.call(this, from, text); 
    this.lastIndex = to;
};
org.antlr.lang.extend(trs.ReplaceOp, trs.RewriteOperation, {
    execute: function(buf) {
        if (org.antlr.lang.isValue(this.text)) {
            buf.push(this.text);
        }
        return this.lastIndex+1;
    }
});

trs.DeleteOp = function(from, to) {
    trs.DeleteOp.superclass.constructor.call(this, from, to); 
};
org.antlr.lang.extend(trs.DeleteOp, trs.ReplaceOp);

org.antlr.lang.extend(trs, org.antlr.runtime.CommonTokenStream, {
    init: function() {
        this.programs = {};
        this.programs[trs.DEFAULT_PROGRAM_NAME] = [];
        this.lastRewriteTokenIndexes = {};
    },

    /** Rollback the instruction stream for a program so that
     *  the indicated instruction (via instructionIndex) is no
     *  longer in the stream.  UNTESTED!
     */
    rollback: function() {
        var programName,
            instructionIndex;

        if (arguments.length===1) {
            programName = trs.DEFAULT_PROGRAM_NAME;
            instructionIndex = arguments[0];
        } else if (arguments.length===2) {
            programName = arguments[0];
            instructionIndex = arguments[1];
        }
        var is = this.programs[programName];
        if (is) {
            programs[programName] = is.slice(trs.MIN_TOKEN_INDEX, this.instructionIndex);
        }
    },

    /** Reset the program so that no instructions exist */
    deleteProgram: function(programName) {
        programName = programName || trs.DEFAULT_PROGRAM_NAME;
        this.rollback(programName, trs.MIN_TOKEN_INDEX);
    },

    /** Add an instruction to the rewrite instruction list ordered by
     *  the instruction number (use a binary search for efficiency).
     *  The list is ordered so that toString() can be done efficiently.
     *
     *  When there are multiple instructions at the same index, the instructions
     *  must be ordered to ensure proper behavior.  For example, a delete at
     *  index i must kill any replace operation at i.  Insert-before operations
     *  must come before any replace / delete instructions.  If there are
     *  multiple insert instructions for a single index, they are done in
     *  reverse insertion order so that "insert foo" then "insert bar" yields
     *  "foobar" in front rather than "barfoo".  This is convenient because
     *  I can insert new InsertOp instructions at the index returned by
     *  the binary search.  A ReplaceOp kills any previous replace op.  Since
     *  delete is the same as replace with null text, i can check for
     *  ReplaceOp and cover DeleteOp at same time. :)
     */
    addToSortedRewriteList: function() {
        var programName,
            op;
        if (arguments.length===1) {
            programName = trs.DEFAULT_PROGRAM_NAME;
            op = arguments[0];
        } else if (arguments.length===2) {
            programName = arguments[0];
            op = arguments[1];
        }

        var rewrites = this.getProgram(programName);
        var len, pos, searchOp, replaced, prevOp, i;
        for (pos=0, len=rewrites.length; pos<len; pos++) {
            searchOp = rewrites[pos];
            if (searchOp.index===op.index) {
                // now pos is the index in rewrites of first op with op.index

                // an instruction operating already on that index was found;
                // make this one happen after all the others
                if (op instanceof trs.ReplaceOp) {
                    replaced = false;
                    // look for an existing replace
                    for (i=pos; i<rewrites.length; i++) {
                        prevOp = rewrites[pos];
                        if (prevOp.index!==op.index) {
                            break;
                        }
                        if (prevOp instanceof trs.ReplaceOp) {
                            rewrites[pos] = op; // replace old with new
                            replaced=true;
                            break;
                        }
                        // keep going; must be an insert
                    }
                    if ( !replaced ) {
                        // add replace op to the end of all the inserts
                        rewrites.splice(i, 0, op);
                    }
                } else {
                    // inserts are added in front of existing inserts
                    rewrites.splice(pos, 0, op);
                }
                break;
            } else if (searchOp.index > op.index) {
                rewrites.splice(pos, 0, op);
                break;
            }
        }
        if (pos===len) {
            rewrites.push(op);
        }
    },

    insertAfter: function() {
        var index, programName, text;
        if (arguments.length===2) {
            programName = trs.DEFAULT_PROGRAM_NAME;
            index = arguments[0];
            text = arguments[1];
        } else if (arguments.length===3) {
            programName = arguments[0];
            index = arguments[1];
            text = arguments[2];
        }

        if (index instanceof org.antlr.runtime.CommonToken) {
            // index is a Token, grab it's stream index
            index = index.index; // that's ugly
        }

        // insert after is the same as insert before the next index
        this.insertBefore(programName, index+1, text);
    },

    insertBefore: function() {
        var index, programName, text;
        if (arguments.length===2) {
            programName = trs.DEFAULT_PROGRAM_NAME;
            index = arguments[0];
            text = arguments[1];
        } else if (arguments.length===3) {
            programName = arguments[0];
            index = arguments[1];
            text = arguments[2];
        }

        if (index instanceof org.antlr.runtime.CommonToken) {
            // index is a Token, grab it's stream index
            index = index.index; // that's ugly
        }

        this.addToSortedRewriteList(
                programName,
                new trs.InsertBeforeOp(index,text)
                );
    },

    replace: function() {
        var programName, first, last, text;
        if (arguments.length===2) {
            programName = trs.DEFAULT_PROGRAM_NAME;
            first = arguments[0];
            last = arguments[0];
            text = arguments[1];
        } else if (arguments.length===3) {
            programName = trs.DEFAULT_PROGRAM_NAME;
            first = arguments[0];
            last = arguments[1];
            text = arguments[2];
        } if (arguments.length===4) {
            programName = arguments[0];
            first = arguments[1];
            last = arguments[2];
            text = arguments[3];
        } 

        if (first instanceof org.antlr.runtime.CommonToken) {
            first = first.index;
        }

        if (last instanceof org.antlr.runtime.CommonToken) {
            last = last.index; // that's ugly
        }

        if ( first > last || last<0 || first<0 ) {
            return;
        }
        this.addToSortedRewriteList(
                programName,
                new trs.ReplaceOp(first, last, text));
    },

    // !!! API Break: delete is a JS keyword, so using remove instead.
    remove: function() {
        // convert arguments to a real array
        var args=[], i=arguments.length-1;
        while (i>=0) {
            args[i] = arguments[i];
            i--;
        }

        args.push("");
        this.replace.apply(this, args);
    },

    getLastRewriteTokenIndex: function(programName) {
        programName = programName || trs.DEFAULT_PROGRAM_NAME;
        return this.lastRewriteTokenIndexes[programName] || -1;
    },

    setLastRewriteTokenIndex: function(programName, i) {
        this.lastRewriteTokenIndexes[programName] = i;
    },

    getProgram: function(name) {
        var is = this.programs[name];
        if ( !is ) {
            is = this.initializeProgram(name);
        }
        return is;
    },

    initializeProgram: function(name) {
        var is = [];
        this.programs[name] = is;
        return is;
    },

    toOriginalString: function(start, end) {
        if (!org.antlr.lang.isNumber(start)) {
            start = trs.MIN_TOKEN_INDEX;
        }
        if (!org.antlr.lang.isNumber(end)) {
            end = this.size()-1;
        }

        var buf = [], i;
        for (i=start; i>=trs.MIN_TOKEN_INDEX && i<=end && i<this.tokens.length; i++) {
            buf.push(this.get(i).getText());
        }
        return buf.join("");
    },

    toString: function() {
        var programName, start, end;
        if (arguments.length===0) {
            programName = trs.DEFAULT_PROGRAM_NAME;
            start = trs.MIN_TOKEN_INDEX;
            end = this.size() - 1;
        } else if (arguments.length===1) {
            programName = arguments[0];
            start = trs.MIN_TOKEN_INDEX;
            end = this.size() - 1;
        } else if (arguments.length===2) {
            programName = trs.DEFAULT_PROGRAM_NAME;
            start = arguments[0];
            end = arguments[1];
        }

        var rewrites = this.programs[programName];
        if ( !rewrites || rewrites.length===0 ) {
            return this.toOriginalString(start,end);
        }

        /// Index of first rewrite we have not done
        var rewriteOpIndex = 0,
            tokenCursor=start,
            buf = [],
            op;
        while ( tokenCursor>=trs.MIN_TOKEN_INDEX &&
                tokenCursor<=end &&
                tokenCursor<this.tokens.length )
        {
            // execute instructions associated with this token index
            if ( rewriteOpIndex<rewrites.length ) {
                op = rewrites[rewriteOpIndex];

                // skip all ops at lower index
                while (op.index<tokenCursor && rewriteOpIndex<rewrites.length) {
                    rewriteOpIndex++;
                    if ( rewriteOpIndex<rewrites.length ) {
                        op = rewrites[rewriteOpIndex];
                    }
                }

                // while we have ops for this token index, exec them
                while (tokenCursor===op.index && rewriteOpIndex<rewrites.length) {
                    //System.out.println("execute "+op+" at instruction "+rewriteOpIndex);
                    tokenCursor = op.execute(buf);
                    //System.out.println("after execute tokenCursor = "+tokenCursor);
                    rewriteOpIndex++;
                    if ( rewriteOpIndex<rewrites.length ) {
                        op = rewrites[rewriteOpIndex];
                    }
                }
            }
            // dump the token at this index
            if ( tokenCursor<=end ) {
                buf.push(this.get(tokenCursor).getText());
                tokenCursor++;
            }
        }
        // now see if there are operations (append) beyond last token index
        var opi;
        for (opi=rewriteOpIndex; opi<rewrites.length; opi++) {
            op = rewrites[opi];
            if ( op.index>=this.size() ) {
                op.execute(buf); // must be insertions if after last token
            }
        }

        return buf.join("");
    },

    toDebugString: function(start, end) {
        if (!org.antlr.lang.isNumber(start)) {
            start = trs.MIN_TOKEN_INDEX;
        }
        if (!org.antlr.lang.isNumber(end)) {
            end = this.size()-1;
        }

        var buf = [],
            i;
        for (i=start; i>=trs.MIN_TOKEN_INDEX && i<=end && i<this.tokens.length; i++) {
            buf.push(this.get(i));
        }
        return buf.join("");
    }
});

})();
org.antlr.runtime.tree.TreeNodeStream = function() {};
org.antlr.runtime.tree.CommonTreeNodeStream = function(adaptor,
                                                    tree,
                                                    initialBufferSize)
{
    if (arguments.length===1) {
        tree = adaptor;
        adaptor = new org.antlr.runtime.tree.CommonTreeAdaptor();
    }
    if (arguments.length <= 2) {
        initialBufferSize =
            org.antlr.runtime.tree.CommonTreeNodeStream.DEFAULT_INITIAL_BUFFER_SIZE;
    }

    /** Reuse same DOWN, UP navigation nodes unless this is true */
    this.uniqueNavigationNodes = false;
    this.p = -1;

    var Token = org.antlr.runtime.Token;
    this.root = tree;
    this.adaptor = adaptor;
    this.nodes = []; //new ArrayList(initialBufferSize);
    this.down = this.adaptor.create(Token.DOWN, "DOWN");
    this.up = this.adaptor.create(Token.UP, "UP");
    this.eof = this.adaptor.create(Token.EOF, "EOF");
};

org.antlr.lang.augmentObject(org.antlr.runtime.tree.CommonTreeNodeStream, {
    DEFAULT_INITIAL_BUFFER_SIZE: 100,
    INITIAL_CALL_STACK_SIZE: 10
});

org.antlr.lang.extend(org.antlr.runtime.tree.CommonTreeNodeStream,
                  org.antlr.runtime.tree.TreeNodeStream, 
{
    StreamIterator: function() {
        var i = 0,
            nodes = this.nodes,
            eof = this.eof;

        return {
            hasNext: function() {
                return i<nodes.length;
            },

            next: function() {
                var current = i;
                i++;
                if ( current < nodes.length ) {
                    return nodes[current];
                }
                return eof;
            },

            remove: function() {
                throw new Error("cannot remove nodes from stream");
            }
        };
    },

    /** Walk tree with depth-first-search and fill nodes buffer.
     *  Don't do DOWN, UP nodes if its a list (t is isNil).
     */
    fillBuffer: function(t) {
        var reset_p = false;
        if (org.antlr.lang.isUndefined(t)) {
            t = this.root;
            reset_p = true;
        }

        var nil = this.adaptor.isNil(t);
        if ( !nil ) {
            this.nodes.push(t); // add this node
        }
        // add DOWN node if t has children
        var n = this.adaptor.getChildCount(t);
        if ( !nil && n>0 ) {
            this.addNavigationNode(org.antlr.runtime.Token.DOWN);
        }
        // and now add all its children
        var c, child;
        for (c=0; c<n; c++) {
            child = this.adaptor.getChild(t,c);
            this.fillBuffer(child);
        }
        // add UP node if t has children
        if ( !nil && n>0 ) {
            this.addNavigationNode(org.antlr.runtime.Token.UP);
        }

        if (reset_p) {
            this.p = 0; // buffer of nodes intialized now
        }
    },

    getNodeIndex: function(node) {
        if ( this.p==-1 ) {
            this.fillBuffer();
        }
        var i, t;
        for (i=0; i<this.nodes.length; i++) {
            t = this.nodes[i];
            if ( t===node ) {
                return i;
            }
        }
        return -1;
    },

    /** As we flatten the tree, we use UP, DOWN nodes to represent
     *  the tree structure.  When debugging we need unique nodes
     *  so instantiate new ones when uniqueNavigationNodes is true.
     */
    addNavigationNode: function(ttype) {
        var navNode = null;
        if ( ttype===org.antlr.runtime.Token.DOWN ) {
            if ( this.hasUniqueNavigationNodes() ) {
                navNode = this.adaptor.create(org.antlr.runtime.Token.DOWN, "DOWN");
            }
            else {
                navNode = this.down;
            }
        }
        else {
            if ( this.hasUniqueNavigationNodes() ) {
                navNode = this.adaptor.create(org.antlr.runtime.Token.UP, "UP");
            }
            else {
                navNode = this.up;
            }
        }
        this.nodes.push(navNode);
    },

    get: function(i) {
        if ( this.p===-1 ) {
            this.fillBuffer();
        }
        return this.nodes[i];
    },

    LT: function(k) {
        if ( this.p===-1 ) {
            this.fillBuffer();
        }
        if ( k===0 ) {
            return null;
        }
        if ( k<0 ) {
            return this.LB(-1*k);
        }
        if ( (this.p+k-1) >= this.nodes.length ) {
            return this.eof;
        }
        return this.nodes[this.p+k-1];
    },

    getCurrentSymbol: function() { return this.LT(1); },

    /** Look backwards k nodes */
    LB: function(k) {
        if ( k===0 ) {
            return null;
        }
        if ( (this.p-k)<0 ) {
            return null;
        }
        return this.nodes[this.p-k];
    },

    getTreeSource: function() {
        return this.root;
    },

    getSourceName: function() {
        return this.getTokenStream().getSourceName();
    },

    getTokenStream: function() {
        return this.tokens;
    },

    setTokenStream: function(tokens) {
        this.tokens = tokens;
    },

    getTreeAdaptor: function() {
        return this.adaptor;
    },

    setTreeAdaptor: function(adaptor) {
        this.adaptor = adaptor;
    },

    hasUniqueNavigationNodes: function() {
        return this.uniqueNavigationNodes;
    },

    setUniqueNavigationNodes: function(uniqueNavigationNodes) {
        this.uniqueNavigationNodes = uniqueNavigationNodes;
    },

    consume: function() {
        if ( this.p===-1 ) {
            this.fillBuffer();
        }
        this.p++;
    },

    LA: function(i) {
        return this.adaptor.getType(this.LT(i));
    },

    mark: function() {
        if ( this.p===-1 ) {
            this.fillBuffer();
        }
        this.lastMarker = this.index();
        return this.lastMarker;
    },

    release: function(marker) {
        // no resources to release
    },

    index: function() {
        return this.p;
    },

    rewind: function(marker) {
        if (!org.antlr.lang.isNumber(marker)) {
            marker = this.lastMarker;
        }
        this.seek(marker);
    },

    seek: function(index) {
        if ( this.p===-1 ) {
            this.fillBuffer();
        }
        this.p = index;
    },

    /** Make stream jump to a new location, saving old location.
     *  Switch back with pop().
     */
    push: function(index) {
        if ( !this.calls ) {
            this.calls = [];
        }
        this.calls.push(this.p); // save current index
        this.seek(index);
    },

    /** Seek back to previous index saved during last push() call.
     *  Return top of stack (return index).
     */
    pop: function() {
        var ret = this.calls.pop();
        this.seek(ret);
        return ret;
    },

    reset: function() {
        this.p = -1;
        this.lastMarker = 0;
        if (this.calls) {
            this.calls = [];
        }
    },

    size: function() {
        if ( this.p===-1 ) {
            this.fillBuffer();
        }
        return this.nodes.length;
    },

    iterator: function() {
        if ( this.p===-1 ) {
            this.fillBuffer();
        }
        return this.StreamIterator();
    },

    replaceChildren: function(parent, startChildIndex, stopChildIndex, t) {
        if ( parent ) {
            this.adaptor.replaceChildren(parent, startChildIndex, stopChildIndex, t);
        }
    },

    /** Debugging */
    toTokenString: function(start, stop) {
        if ( this.p===-1 ) {
            this.fillBuffer();
        }
        var buf='', i, t;
        for (i = start; i < this.nodes.length && i <= stop; i++) {
            t = this.nodes[i];
            buf += " "+this.adaptor.getToken(t);
        }
        return buf;
    },

    /** Used for testing, just return the token type stream */
    toString: function(start, stop) {
        var buf = "",
            text,
            t,
            i;
        if (arguments.length===0) {
            if ( this.p===-1 ) {
                this.fillBuffer();
            }
            for (i = 0; i < this.nodes.length; i++) {
                t = this.nodes[i];
                buf += " ";
                buf += this.adaptor.getType(t);
            }
            return buf;
        } else {
            if ( !org.antlr.lang.isNumber(start) || !org.antlr.lang.isNumber(stop) ) {
                return null;
            }
            if ( this.p===-1 ) {
                this.fillBuffer();
            }
            //System.out.println("stop: "+stop);
            if ( start instanceof org.antlr.runtime.tree.CommonTree ) {
                //System.out.print("toString: "+((CommonTree)start).getToken()+", ");
            } else {
                //System.out.println(start);
            }
            if ( stop instanceof org.antlr.runtime.tree.CommonTree ) {
                //System.out.println(((CommonTree)stop).getToken());
            } else {
                //System.out.println(stop);
            }
            // if we have the token stream, use that to dump text in order
            var beginTokenIndex,
                endTokenIndex;
            if ( this.tokens ) {
                beginTokenIndex = this.adaptor.getTokenStartIndex(start);
                endTokenIndex = this.adaptor.getTokenStopIndex(stop);
                // if it's a tree, use start/stop index from start node
                // else use token range from start/stop nodes
                if ( this.adaptor.getType(stop)===org.antlr.runtime.Token.UP ) {
                    endTokenIndex = this.adaptor.getTokenStopIndex(start);
                }
                else if ( this.adaptor.getType(stop)==org.antlr.runtime.Token.EOF )
                {
                    endTokenIndex = this.size()-2; // don't use EOF
                }
                return this.tokens.toString(beginTokenIndex, endTokenIndex);
            }
            // walk nodes looking for start
            t = null;
            i = 0;
            for (; i < this.nodes.length; i++) {
                t = this.nodes[i];
                if ( t===start ) {
                    break;
                }
            }
            // now walk until we see stop, filling string buffer with text
            buf = text = "";
            t = this.nodes[i];
            while ( t!==stop ) {
                text = this.adaptor.getText(t);
                if ( !org.antlr.lang.isString(text) ) {
                    text = " "+this.adaptor.getType(t).toString();
                }
                buf += text;
                i++;
                t = nodes[i];
            }
            // include stop node too
            text = this.adaptor.getText(stop);
            if ( !org.antlr.lang.isString(text) ) {
                text = " "+this.adaptor.getType(stop).toString();
            }
            buf += text;
            return buf;
        }
    }
});
org.antlr.runtime.tree.RewriteRuleElementStream = function(adaptor, elementDescription, el) {
    /** Cursor 0..n-1.  If singleElement!=null, cursor is 0 until you next(),
     *  which bumps it to 1 meaning no more elements.
     */
    this.cursor = 0;
    this.dirty = false;

    this.elementDescription = elementDescription;
    this.adaptor = adaptor;
    if (el) {
        if (org.antlr.lang.isArray(el)) {
            this.singleElement = null;
            this.elements = el;
        } else {
            this.add(el);
        }
    }
};

org.antlr.runtime.tree.RewriteRuleElementStream.prototype = {
    /** Reset the condition of this stream so that it appears we have
     *  not consumed any of its elements.  Elements themselves are untouched.
     *  Once we reset the stream, any future use will need duplicates.  Set
     *  the dirty bit.
     */
    reset: function() {
        this.cursor = 0;
        this.dirty = true;
    },

    add: function(el) {
        if ( !org.antlr.lang.isValue(el) ) {
            return;
        }
        if ( this.elements ) { // if in list, just add
            this.elements.push(el);
            return;
        }
        if ( !org.antlr.lang.isValue(this.singleElement) ) { // no elements yet, track w/o list
            this.singleElement = el;
            return;
        }
        // adding 2nd element, move to list
        this.elements = [];
        this.elements.push(this.singleElement);
        this.singleElement = null;
        this.elements.push(el);
    },

    /** Return the next element in the stream.  If out of elements, throw
     *  an exception unless size()==1.  If size is 1, then return elements[0].
     *  Return a duplicate node/subtree if stream is out of elements and
     *  size==1.  If we've already used the element, dup (dirty bit set).
     */
    nextTree: function() {
        var n = this.size(),
            el;
        if ( this.dirty || (this.cursor>=n && n==1) ) {
            // if out of elements and size is 1, dup
            el = this._next();
            return this.dup(el);
        }
        // test size above then fetch
        el = this._next();
        return el;
    },

    /** do the work of getting the next element, making sure that it's
     *  a tree node or subtree.  Deal with the optimization of single-
     *  element list versus list of size > 1.  Throw an exception
     *  if the stream is empty or we're out of elements and size>1.
     *  protected so you can override in a subclass if necessary.
     */
    _next: function() {
        var n = this.size();
        if (n===0) {
            throw new org.antlr.runtime.tree.RewriteEmptyStreamException(this.elementDescription);
        }
        if ( this.cursor>= n) { // out of elements?
            if ( n===1 ) {  // if size is 1, it's ok; return and we'll dup
                return this.toTree(this.singleElement);
            }
            // out of elements and size was not 1, so we can't dup
            throw new org.antlr.runtime.tree.RewriteCardinalityException(this.elementDescription);
        }
        // we have elements
        if ( org.antlr.lang.isValue(this.singleElement) ) {
            this.cursor++; // move cursor even for single element list
            return this.toTree(this.singleElement);
        }
        // must have more than one in list, pull from elements
        var o = this.toTree(this.elements[this.cursor]);
        this.cursor++;
        return o;
    },

    /** Ensure stream emits trees; tokens must be converted to AST nodes.
     *  AST nodes can be passed through unmolested.
     */
    toTree: function(el) {
        if (el && el.getTree) {
            return el.getTree();
        }
        return el;
    },

    hasNext: function() {
         return (org.antlr.lang.isValue(this.singleElement) && this.cursor < 1) ||
               (this.elements && this.cursor < this.elements.length);
    },

    size: function() {
        var n = 0;
        if ( org.antlr.lang.isValue(this.singleElement) ) {
            n = 1;
        }
        if ( this.elements ) {
            return this.elements.length;
        }
        return n;
    },

    getDescription: function() {
        return this.elementDescription;
    }
};
org.antlr.runtime.tree.RewriteRuleNodeStream = function(adaptor, elementDescription, el) {
    org.antlr.runtime.tree.RewriteRuleNodeStream.superclass.constructor.apply(this, arguments);
};

org.antlr.lang.extend(org.antlr.runtime.tree.RewriteRuleNodeStream,
                  org.antlr.runtime.tree.RewriteRuleElementStream,
{
    nextNode: function() {
        return this._next();
    },

    toTree: function(el) {
        return this.adaptor.dupNode(el);
    },

    dup: function() {
        // we dup every node, so don't have to worry about calling dup; short-
        // circuited next() so it doesn't call.
        throw new Error("dup can't be called for a node stream.");
    }
});
org.antlr.runtime.tree.RewriteRuleTokenStream = function(adaptor, elementDescription, el) {
    var sup = org.antlr.runtime.tree.RewriteRuleTokenStream.superclass;
    sup.constructor.apply(this, arguments);
};

org.antlr.lang.extend(org.antlr.runtime.tree.RewriteRuleTokenStream,
                  org.antlr.runtime.tree.RewriteRuleElementStream, {
    /** Get next token from stream and make a node for it */
    nextNode: function() {
        var t = this._next();
        return this.adaptor.create(t);
    },

    nextToken: function() {
        return this._next();
    },

    /** Don't convert to a tree unless they explicitly call nextTree.
     *  This way we can do hetero tree nodes in rewrite.
     */
    toTree: function(el) {
        return el;
    },

    dup: function(el) {
        throw new Error("dup can't be called for a token stream.");
    }
});
org.antlr.runtime.tree.RewriteRuleSubtreeStream = function() {
    var sup = org.antlr.runtime.tree.RewriteRuleSubtreeStream.superclass;
    sup.constructor.apply(this, arguments);
};

org.antlr.lang.extend(org.antlr.runtime.tree.RewriteRuleSubtreeStream,
                  org.antlr.runtime.tree.RewriteRuleElementStream, {
	/** Treat next element as a single node even if it's a subtree.
	 *  This is used instead of next() when the result has to be a
	 *  tree root node.  Also prevents us from duplicating recently-added
	 *  children; e.g., ^(type ID)+ adds ID to type and then 2nd iteration
	 *  must dup the type node, but ID has been added.
	 *
	 *  Referencing a rule result twice is ok; dup entire tree as
	 *  we can't be adding trees as root; e.g., expr expr.
	 *
	 *  Hideous code duplication here with super.next().  Can't think of
	 *  a proper way to refactor.  This needs to always call dup node
	 *  and super.next() doesn't know which to call: dup node or dup tree.
	 */
    nextNode: function() {
		var n = this.size(),
            el;
		if ( this.dirty || (this.cursor>=n && n===1) ) {
			// if out of elements and size is 1, dup (at most a single node
			// since this is for making root nodes).
			el = this._next();
			return this.adaptor.dupNode(el);
		}
		// test size above then fetch
		el = this._next();
		return el;
	},

    dup: function(el) {
		return this.adaptor.dupTree(el);
	}
});
org.antlr.runtime.BaseRecognizer = function(state) {
    /** State of a lexer, parser, or tree parser are collected into a state
     *  object so the state can be shared.  This sharing is needed to
     *  have one grammar import others and share same error variables
     *  and other state variables.  It's a kind of explicit multiple
     *  inheritance via delegation of methods and shared state.
     */
    this.state = state || new org.antlr.runtime.RecognizerSharedState();
};
org.antlr.lang.augmentObject(org.antlr.runtime.BaseRecognizer, {
    MEMO_RULE_FAILED: -2,
    MEMO_RULE_UNKNOWN: -1,
    INITIAL_FOLLOW_STACK_SIZE: 100,
    MEMO_RULE_FAILED_I: -2,
    DEFAULT_TOKEN_CHANNEL: org.antlr.runtime.Token.DEFAULT_CHANNEL,
    HIDDEN: org.antlr.runtime.Token.HIDDEN_CHANNEL,
    NEXT_TOKEN_RULE_NAME: "nextToken"
});

org.antlr.runtime.BaseRecognizer.prototype = {
    /** Reset the parser's state.  Subclasses must rewinds the input stream */
    reset: function() {
        var i, len;

        // wack everything related to error recovery
        if (!this.state) {
            return; // no shared state work to do
        }
        this.state._fsp = -1;
        this.state.errorRecovery = false;
        this.state.lastErrorIndex = -1;
        this.state.failed = false;
        this.state.syntaxErrors = 0;
        // wack everything related to backtracking and memoization
        this.state.backtracking = 0;
        // wipe cache
        if (this.state.ruleMemo) {
            for (i=0, len=this.state.ruleMemo.length; i<len; i++) {
                this.state.ruleMemo[i] = null;
            }
        }
    },

    /** Match current input symbol against ttype.  Attempt
     *  single token insertion or deletion error recovery.  If
     *  that fails, throw {@link org.antlr.runtime.MismatchedTokenException}.
     *
     *  <p>To turn off single token insertion or deletion error
     *  recovery, override {@link #mismatchRecover} and have it call
     *  plain {@link #mismatch}, which does not recover.  Then any error
     *  in a rule will cause an exception and immediate exit from
     *  rule.  Rule would recover by resynchronizing to the set of
     *  symbols that can follow rule ref.</p>
     *
     *  @param {org.antlr.runtime.IntStream} input input stream to match against.
     *  @param {Number} ttype  input type to match.
     *  @param {org.antlr.runtime.BitSet} [follow] set of tokens that can follow the
     *      matched token.
     *  @returns {Object} the matched symbol
     */
    match: function(input, ttype, follow) {
        var matchedSymbol = this.getCurrentInputSymbol(input);
        if ( input.LA(1)===ttype ) {
            input.consume();
            this.state.errorRecovery = false;
            this.state.failed = false;
            return matchedSymbol;
        }
        if ( this.state.backtracking>0 ) {
            this.state.failed = true;
            return matchedSymbol;
        }
        matchedSymbol = this.recoverFromMismatchedToken(input, ttype, follow);
        return matchedSymbol;
    },

    /**
     * Match any token.
     * @param {org.antlr.runtime.IntStream} input input stream to match against.
     */
    matchAny: function(input) {
        this.state.errorRecovery = false;
        this.state.failed = false;
        input.consume();
    },

    /**
     * Is the following token (LA(2)) the unwanted type (ttype)?
     * @param {org.antlr.runtime.IntStream} input input stream to match against.
     * @param {Number} ttype the undesired token type.
     * @returns {Boolean} true if and only if the following token is the
     *      unwanted type.
     */
    mismatchIsUnwantedToken: function(input, ttype) {
        return input.LA(2)===ttype;
    },

    /**
     * Does the stream appear to be missing a single token?
     * @param {org.antlr.runtime.IntStream} input input stream to match against.
     * @param {org.antlr.runtime.BitSet} [follow] set of tokens that can follow the
     *      matched token.
     * @returns {Boolean} true if and only if it appears that the stream is
     *      missing a single token.
     */
    mismatchIsMissingToken: function(input, follow) {
        if ( !follow ) {
            // we have no information about the follow; we can only consume
            // a single token and hope for the best
            return false;
        }
        // compute what can follow this grammar element reference
        if ( follow.member(org.antlr.runtime.Token.EOR_TOKEN_TYPE) ) {
            if ( this.state._fsp>=0 ) { // remove EOR if we're not the start symbol
                follow.remove(org.antlr.runtime.Token.EOR_TOKEN_TYPE);
            }
            var viableTokensFollowingThisRule = this.computeContextSensitiveRuleFOLLOW();
            follow = follow.or(this.viableTokensFollowingThisRule);
        }
        // if current token is consistent with what could come after set
        // then we know we're missing a token; error recovery is free to
        // "insert" the missing token

        // BitSet cannot handle negative numbers like -1 (EOF) so I leave EOR
        // in follow set to indicate that the fall of the start symbol is
        // in the set (EOF can follow).
        if ( follow.member(input.LA(1)) ||
             follow.member(org.antlr.runtime.Token.EOR_TOKEN_TYPE) )
        {
            return true;
        }
        return false;
    },

    /** Factor out what to do upon token mismatch so tree parsers can behave
     *  differently.  Override and call {@link #mismatchRecover}
     *  to get single token insertion and deletion.
     *
     *  @param {org.antlr.runtime.IntStream} input input stream to match against.
     *  @param {Number} ttype  input type to match.
     *  @param {org.antlr.runtime.BitSet} [follow] set of tokens that can follow the
     *      matched token.
     */
    mismatch: function(input, ttype, follow) {
        if ( this.mismatchIsUnwantedToken(input, ttype) ) {
            throw new org.antlr.runtime.UnwantedTokenException(ttype, input);
        } else if ( this.mismatchIsMissingToken(input, follow) ) {
            throw new org.antlr.runtime.MissingTokenException(ttype, input, null);
        }
        throw new org.antlr.runtime.MismatchedTokenException(ttype, input);
    },

    /** Report a recognition problem.
     *
     *  <p>This method sets errorRecovery to indicate the parser is recovering
     *  not parsing.  Once in recovery mode, no errors are generated.
     *  To get out of recovery mode, the parser must successfully match
     *  a token (after a resync).  So it will go:</p>
     *  <ol>
     *      <li>error occurs</li>
     *      <li>enter recovery mode, report error</li>
     *      <li>consume until token found in resynch set</li>
     *      <li>try to resume parsing</li>
     *      <li>next match() will reset errorRecovery mode</li>
     *  </ol>
     *
     *  <p>If you override, make sure to update this.state.syntaxErrors if you
     *  care about that.</p>
     *  @param {org.antlr.runtime.RecognitionException} e the error to be reported.
     */
    reportError: function(e) {
      if(this.input.size() != 0) {
        var token = this.input.get(e.index);
        var errorMessage = "";
        var column = 0;
        var line = 0;
        if(token.getType() == -1) {
          token = this.input.get(this.input.size() - 1);
        }
        errorMessage = this.getErrorMessage(e, this.getTokenNames());
        column = token.getStartIndex();
        line = token.getLine() - 1;

        var error = {
          line: line,
          message: errorMessage,
          column: column
        };
        this.addError(error);
      }
        // if we've already reported an error and have not matched a token
        // yet successfully, don't report any errors.
        if ( this.state.errorRecovery ) {
            return;
        }
        this.state.syntaxErrors++;
        this.state.errorRecovery = true;

        this.displayRecognitionError(this.getTokenNames(), e);
    },

    /**
     * Assemble recognition error message.
     * @param {Array} tokenNames array of token names (strings).
     * @param {org.antlr.runtime.RecognitionException} e the error to be reported.
     */
    displayRecognitionError: function(tokenNames, e) {
        var hdr = this.getErrorHeader(e),
            msg = this.getErrorMessage(e, tokenNames);
        this.emitErrorMessage(hdr+" "+msg);
    },

    /**
     * Create error header message.  Format is <q>line
     * lineNumber:positionInLine</q>.
     * @param {org.antlr.runtime.RecognitionException} e the error to be reported.
     * @returns {String} The error header.
     */
    getErrorHeader: function(e) {
        /* handle null input */
        if (!org.antlr.lang.isNumber(e.line)) {
            e.line = 0;
        }
        return "line "+e.line+":"+e.charPositionInLine;
    },

    /**
     * Override this method to change where error messages go.
     * Defaults to "alert"-ing the error in browsers and "print"-ing the error
     * in other environments (e.g. Rhino, SpiderMonkey).
     * @param {String} msg the error message to be displayed.
     */
    emitErrorMessage: function(msg) {
      //throw msg;
      console.log(msg);
    },

    /** What error message should be generated for the various
     *  exception types?
     *
     *  <p>Not very object-oriented code, but I like having all error message
     *  generation within one method rather than spread among all of the
     *  exception classes. This also makes it much easier for the exception
     *  handling because the exception classes do not have to have pointers back
     *  to this object to access utility routines and so on. Also, changing
     *  the message for an exception type would be difficult because you
     *  would have to be subclassing exceptions, but then somehow get ANTLR
     *  to make those kinds of exception objects instead of the default.</p>
     *
     *  <p>For grammar debugging, you will want to override this to add
     *  more information such as the stack frame and no viable alts.</p>
     *
     *  <p>Override this to change the message generated for one or more
     *  exception types.</p>
     *
     * @param {Array} tokenNames array of token names (strings).
     * @param {org.antlr.runtime.RecognitionException} e the error to be reported.
     * @returns {String} the error message to be emitted.
     */
    getErrorMessage: function(e, tokenNames) {
        var msg = (e && e.getMessage) ? e.getMessage() : null,
            mte,
            tokenName;
        if ( e instanceof org.antlr.runtime.UnwantedTokenException ) {
            var ute = e;
            tokenName="<unknown>";
            if ( ute.expecting== org.antlr.runtime.Token.EOF ) {
                tokenName = "EOF";
            } else {
                tokenName = tokenNames[ute.expecting];
            }
            msg = "extraneous input "+this.getTokenErrorDisplay(ute.getUnexpectedToken())+
                " expecting "+tokenName;
        }
        else if ( e instanceof org.antlr.runtime.MissingTokenException ) {
            mte = e;
            tokenName="<unknown>";
            if ( mte.expecting== org.antlr.runtime.Token.EOF ) {
                tokenName = "EOF";
            } else {
                tokenName = tokenNames[mte.expecting];
            }
            msg = "missing "+tokenName+" at "+this.getTokenErrorDisplay(e.token);
        }
        else if ( e instanceof org.antlr.runtime.MismatchedTokenException ) {
            mte = e;
            tokenName="<unknown>";
            if ( mte.expecting== org.antlr.runtime.Token.EOF ) {
                tokenName = "EOF";
            }
            else {
                tokenName = tokenNames[mte.expecting];
            }
            msg = "mismatched input "+this.getTokenErrorDisplay(e.token)+
                " expecting "+tokenName;
        }
        else if ( e instanceof org.antlr.runtime.NoViableAltException ) {
            msg = "no viable alternative at input "+this.getTokenErrorDisplay(e.token);
        }
        else if ( e instanceof org.antlr.runtime.EarlyExitException ) {
            msg = "required (...)+ loop did not match anything at input "+
                this.getTokenErrorDisplay(e.token);
        }
        else if ( e instanceof org.antlr.runtime.MismatchedSetException ) {
            msg = "mismatched input "+this.getTokenErrorDisplay(e.token)+
                " expecting set "+e.expecting;
        }
        else if ( e instanceof org.antlr.runtime.MismatchedNotSetException ) {
            msg = "mismatched input "+this.getTokenErrorDisplay(e.token)+
                " expecting set "+e.expecting;
        }
        else if ( e instanceof org.antlr.runtime.FailedPredicateException ) {
            msg = "rule "+e.ruleName+" failed predicate: {"+
                e.predicateText+"}?";
        }
        return msg;
    },

    /** Get number of recognition errors (lexer, parser, tree parser).  Each
     *  recognizer tracks its own number.  So parser and lexer each have
     *  separate count.  Does not count the spurious errors found between
     *  an error and next valid token match
     *
     *  See also reportError()
     */
    getNumberOfSyntaxErrors: function() {
        return this.state.syntaxErrors;
    },

    /** How should a token be displayed in an error message? The default
     *  is to display just the text, but during development you might
     *  want to have a lot of information spit out.  Override in that case
     *  to use t.toString() (which, for CommonToken, dumps everything about
     *  the token). This is better than forcing you to override a method in
     *  your token objects because you don't have to go modify your lexer
     *  so that it creates a new Java type.
     */
    getTokenErrorDisplay: function(t) {
        var s = t.getText();
        if ( !org.antlr.lang.isValue(s) ) {
            if ( t.getType()==org.antlr.runtime.Token.EOF ) {
                s = "<EOF>";
            }
            else {
                s = "<"+t.getType()+">";
            }
        }
        s = s.replace(/\n/g,"\\n");
        s = s.replace(/\r/g,"\\r");
        s = s.replace(/\t/g,"\\t");
        return "'"+s+"'";
    },

    /** Recover from an error found on the input stream.  This is
     *  for NoViableAlt and mismatched symbol exceptions.  If you enable
     *  single token insertion and deletion, this will usually not
     *  handle mismatched symbol exceptions but there could be a mismatched
     *  token that the match() routine could not recover from.
     */
    recover: function(input, re) {
        if ( this.state.lastErrorIndex==input.index() ) {
            // uh oh, another error at same token index; must be a case
            // where LT(1) is in the recovery token set so nothing is
            // consumed; consume a single token so at least to prevent
            // an infinite loop; this is a failsafe.
            input.consume();
        }
        this.state.lastErrorIndex = input.index();
        var followSet = this.computeErrorRecoverySet();
        this.beginResync();
        this.consumeUntil(input, followSet);
        this.endResync();
    },

    /** A hook to listen in on the token consumption during error recovery.
     *  The DebugParser subclasses this to fire events to the listenter.
     */
    beginResync: function() {
    },

    endResync: function() {
    },

    /*  Compute the error recovery set for the current rule.  During
     *  rule invocation, the parser pushes the set of tokens that can
     *  follow that rule reference on the stack; this amounts to
     *  computing FIRST of what follows the rule reference in the
     *  enclosing rule. This local follow set only includes tokens
     *  from within the rule; i.e., the FIRST computation done by
     *  ANTLR stops at the end of a rule.
     *
     *  EXAMPLE
     *
     *  When you find a "no viable alt exception", the input is not
     *  consistent with any of the alternatives for rule r.  The best
     *  thing to do is to consume tokens until you see something that
     *  can legally follow a call to r *or* any rule that called r.
     *  You don't want the exact set of viable next tokens because the
     *  input might just be missing a token--you might consume the
     *  rest of the input looking for one of the missing tokens.
     *
     *  Consider grammar:
     *
     *  a : '[' b ']'
     *    | '(' b ')'
     *    ;
     *  b : c '^' INT ;
     *  c : ID
     *    | INT
     *    ;
     *
     *  At each rule invocation, the set of tokens that could follow
     *  that rule is pushed on a stack.  Here are the various "local"
     *  follow sets:
     *
     *  FOLLOW(b1_in_a) = FIRST(']') = ']'
     *  FOLLOW(b2_in_a) = FIRST(')') = ')'
     *  FOLLOW(c_in_b) = FIRST('^') = '^'
     *
     *  Upon erroneous input "[]", the call chain is
     *
     *  a -> b -> c
     *
     *  and, hence, the follow context stack is:
     *
     *  depth  local follow set     after call to rule
     *    0         <EOF>                    a (from main())
     *    1          ']'                     b
     *    3          '^'                     c
     *
     *  Notice that ')' is not included, because b would have to have
     *  been called from a different context in rule a for ')' to be
     *  included.
     *
     *  For error recovery, we cannot consider FOLLOW(c)
     *  (context-sensitive or otherwise).  We need the combined set of
     *  all context-sensitive FOLLOW sets--the set of all tokens that
     *  could follow any reference in the call chain.  We need to
     *  resync to one of those tokens.  Note that FOLLOW(c)='^' and if
     *  we resync'd to that token, we'd consume until EOF.  We need to
     *  sync to context-sensitive FOLLOWs for a, b, and c: {']','^'}.
     *  In this case, for input "[]", LA(1) is in this set so we would
     *  not consume anything and after printing an error rule c would
     *  return normally.  It would not find the required '^' though.
     *  At this point, it gets a mismatched token error and throws an
     *  exception (since LA(1) is not in the viable following token
     *  set).  The rule exception handler tries to recover, but finds
     *  the same recovery set and doesn't consume anything.  Rule b
     *  exits normally returning to rule a.  Now it finds the ']' (and
     *  with the successful match exits errorRecovery mode).
     *
     *  So, you cna see that the parser walks up call chain looking
     *  for the token that was a member of the recovery set.
     *
     *  Errors are not generated in errorRecovery mode.
     *
     *  ANTLR's error recovery mechanism is based upon original ideas:
     *
     *  "Algorithms + Data Structures = Programs" by Niklaus Wirth
     *
     *  and
     *
     *  "A note on error recovery in recursive descent parsers":
     *  http://portal.acm.org/citation.cfm?id=947902.947905
     *
     *  Later, Josef Grosch had some good ideas:
     *
     *  "Efficient and Comfortable Error Recovery in Recursive Descent
     *  Parsers":
     *  ftp://www.cocolab.com/products/cocktail/doca4.ps/ell.ps.zip
     *
     *  Like Grosch I implemented local FOLLOW sets that are combined
     *  at run-time upon error to avoid overhead during parsing.
     */
    computeErrorRecoverySet: function() {
        return this.combineFollows(false);
    },


    /** Compute the context-sensitive FOLLOW set for current rule.
     *  This is set of token types that can follow a specific rule
     *  reference given a specific call chain.  You get the set of
     *  viable tokens that can possibly come next (lookahead depth 1)
     *  given the current call chain.  Contrast this with the
     *  definition of plain FOLLOW for rule r:
     *
     *   FOLLOW(r)={x | S=>*alpha r beta in G and x in FIRST(beta)}
     *
     *  where x in T* and alpha, beta in V*; T is set of terminals and
     *  V is the set of terminals and nonterminals.  In other words,
     *  FOLLOW(r) is the set of all tokens that can possibly follow
     *  references to r in *any* sentential form (context).  At
     *  runtime, however, we know precisely which context applies as
     *  we have the call chain.  We may compute the exact (rather
     *  than covering superset) set of following tokens.
     *
     *  For example, consider grammar:
     *
     *  stat : ID '=' expr ';'      // FOLLOW(stat)=={EOF}
     *       | "return" expr '.'
     *       ;
     *  expr : atom ('+' atom)* ;   // FOLLOW(expr)=={';','.',')'}
     *  atom : INT                  // FOLLOW(atom)=={'+',')',';','.'}
     *       | '(' expr ')'
     *       ;
     *
     *  The FOLLOW sets are all inclusive whereas context-sensitive
     *  FOLLOW sets are precisely what could follow a rule reference.
     *  For input input "i=(3);", here is the derivation:
     *
     *  stat => ID '=' expr ';'
     *       => ID '=' atom ('+' atom)* ';'
     *       => ID '=' '(' expr ')' ('+' atom)* ';'
     *       => ID '=' '(' atom ')' ('+' atom)* ';'
     *       => ID '=' '(' INT ')' ('+' atom)* ';'
     *       => ID '=' '(' INT ')' ';'
     *
     *  At the "3" token, you'd have a call chain of
     *
     *    stat -> expr -> atom -> expr -> atom
     *
     *  What can follow that specific nested ref to atom?  Exactly ')'
     *  as you can see by looking at the derivation of this specific
     *  input.  Contrast this with the FOLLOW(atom)={'+',')',';','.'}.
     *
     *  You want the exact viable token set when recovering from a
     *  token mismatch.  Upon token mismatch, if LA(1) is member of
     *  the viable next token set, then you know there is most likely
     *  a missing token in the input stream.  "Insert" one by just not
     *  throwing an exception.
     */
    computeContextSensitiveRuleFOLLOW: function() {
        return this.combineFollows(true);
    },

    combineFollows: function(exact) {
        var top = this.state._fsp,
            i,
            localFollowSet,
            followSet = new org.antlr.runtime.BitSet();
        for (i=top; i>=0; i--) {
            localFollowSet = this.state.following[i];
            followSet.orInPlace(localFollowSet);
            if ( exact ) {
                // can we see end of rule?
                if ( localFollowSet.member(org.antlr.runtime.Token.EOR_TOKEN_TYPE) )
                {
                    // Only leave EOR in set if at top (start rule); this lets
                    // us know if have to include follow(start rule); i.e., EOF
                    if ( i>0 ) {
                        followSet.remove(org.antlr.runtime.Token.EOR_TOKEN_TYPE);
                    }
                }
                else { // can't see end of rule, quit
                    break;
                }
            }
        }
        return followSet;
    },

    /** Attempt to recover from a single missing or extra token.
     *
     *  EXTRA TOKEN
     *
     *  LA(1) is not what we are looking for.  If LA(2) has the right token,
     *  however, then assume LA(1) is some extra spurious token.  Delete it
     *  and LA(2) as if we were doing a normal match(), which advances the
     *  input.
     *
     *  MISSING TOKEN
     *
     *  If current token is consistent with what could come after
     *  ttype then it is ok to "insert" the missing token, else throw
     *  exception For example, Input "i=(3;" is clearly missing the
     *  ')'.  When the parser returns from the nested call to expr, it
     *  will have call chain:
     *
     *    stat -> expr -> atom
     *
     *  and it will be trying to match the ')' at this point in the
     *  derivation:
     *
     *       => ID '=' '(' INT ')' ('+' atom)* ';'
     *                          ^
     *  match() will see that ';' doesn't match ')' and report a
     *  mismatched token error.  To recover, it sees that LA(1)==';'
     *  is in the set of tokens that can follow the ')' token
     *  reference in rule atom.  It can assume that you forgot the ')'.
     */
    recoverFromMismatchedToken: function(input,
                                         ttype,
                                         follow)
    {
        var e = null;
        // if next token is what we are looking for then "delete" this token
        if ( this.mismatchIsUnwantedToken(input, ttype) ) {
            e = new org.antlr.runtime.UnwantedTokenException(ttype, input);
            this.beginResync();
            input.consume(); // simply delete extra token
            this.endResync();
            this.reportError(e);  // report after consuming so AW sees the token in the exception
            // we want to return the token we're actually matching
            var matchedSymbol = this.getCurrentInputSymbol(input);
            input.consume(); // move past ttype token as if all were ok
            return matchedSymbol;
        }
        // can't recover with single token deletion, try insertion
        if ( this.mismatchIsMissingToken(input, follow) ) {
            var inserted = this.getMissingSymbol(input, e, ttype, follow);
            e = new org.antlr.runtime.MissingTokenException(ttype, input, inserted);
            this.reportError(e);  // report after inserting so AW sees the token in the exception
            return inserted;
        }
        // even that didn't work; must throw the exception
        e = new org.antlr.runtime.MismatchedTokenException(ttype, input);
        throw e;
    },

    recoverFromMismatchedSet: function(input,
                                       e,
                                       follow)
    {
        if ( this.mismatchIsMissingToken(input, follow) ) {
            // System.out.println("missing token");
            this.reportError(e);
            // we don't know how to conjure up a token for sets yet
            return this.getMissingSymbol(input, e, org.antlr.runtime.Token.INVALID_TOKEN_TYPE, follow);
        }
        throw e;
    },

    /** Match needs to return the current input symbol, which gets put
     *  into the label for the associated token ref; e.g., x=ID.  Token
     *  and tree parsers need to return different objects. Rather than test
     *  for input stream type or change the IntStream interface, I use
     *  a simple method to ask the recognizer to tell me what the current
     *  input symbol is.
     * 
     *  This is ignored for lexers.
     */
    getCurrentInputSymbol: function(input) { return null; },

    /** Conjure up a missing token during error recovery.
     *
     *  The recognizer attempts to recover from single missing
     *  symbols. But, actions might refer to that missing symbol.
     *  For example, x=ID {f($x);}. The action clearly assumes
     *  that there has been an identifier matched previously and that
     *  $x points at that token. If that token is missing, but
     *  the next token in the stream is what we want we assume that
     *  this token is missing and we keep going. Because we
     *  have to return some token to replace the missing token,
     *  we have to conjure one up. This method gives the user control
     *  over the tokens returned for missing tokens. Mostly,
     *  you will want to create something special for identifier
     *  tokens. For literals such as '{' and ',', the default
     *  action in the parser or tree parser works. It simply creates
     *  a CommonToken of the appropriate type. The text will be the token.
     *  If you change what tokens must be created by the lexer,
     *  override this method to create the appropriate tokens.
     */
    getMissingSymbol: function(input,
                               e,
                               expectedTokenType,
                               follow)
    {
        return null;
    },


    /** Consume tokens until one matches the given token set */
    consumeUntil: function(input, set) {
        var ttype = input.LA(1);
        while (ttype != org.antlr.runtime.Token.EOF && !set.member(ttype) ) {
            input.consume();
            ttype = input.LA(1);
        }
    },

    /** Push a rule's follow set using our own hardcoded stack */
    pushFollow: function(fset) {
        if ( (this.state._fsp +1)>=this.state.following.length ) {
            var f = [];
            var i;
            for (i=this.state.following.length-1; i>=0; i--) {
                f[i] = this.state.following[i];
            }
            this.state.following = f;
        }
        this.state._fsp++;
        this.state.following[this.state._fsp] = fset;
    },

    /** Return List<String> of the rules in your parser instance
     *  leading up to a call to this method.  You could override if
     *  you want more details such as the file/line info of where
     *  in the parser java code a rule is invoked.
     *
     *  This is very useful for error messages and for context-sensitive
     *  error recovery.
     *
     *  A more general version of getRuleInvocationStack where you can
     *  pass in, for example, a RecognitionException to get it's rule
     *  stack trace.  This routine is shared with all recognizers, hence,
     *  static.
     *
     *  TODO: move to a utility class or something; weird having lexer call this
     *
     *  Most JS interpreters can't do real stack reflection.  See this
     *  spidermonkey bug, for example:
     *  https://bugzilla.mozilla.org/show_bug.cgi?id=332104
     *
     *  JS is supposed to get real stack traces in v4, at which time it would
     *  be easy to implement this function.
     *
     *  Until then I'll leave this unimplemented.  If there is enough clamor
     *  it would be possible to keep track of the invocation stack using an
     *  auxiliary array, but that will definitely be a performance hit.
     */
    getRuleInvocationStack: function(e, recognizerClassName)
    {
        throw new Error("Not implemented.");
    },

    getBacktrackingLevel: function() {
        return this.state.backtracking;
    },

    /** Used to print out token names like ID during debugging and
     *  error reporting.  The generated parsers implement a method
     *  that overrides this to point to their String[] tokenNames.
     */
    getTokenNames: function() {
        return null;
    },

    /** For debugging and other purposes, might want the grammar name.
     *  Have ANTLR generate an implementation for this method.
     */
    getGrammarFileName: function() {
        return null;
    },

    /** A convenience method for use most often with template rewrites.
     *  Convert a List<Token> to List<String>
     */
    toStrings: function(tokens) {
        if ( !tokens ) {
            return null;
        }
        var strings = [];
        var i;
        for (i=0; i<tokens.length; i++) {
            strings.push(tokens[i].getText());
        }
        return strings;
    },

    /** Given a rule number and a start token index number, return
     *  MEMO_RULE_UNKNOWN if the rule has not parsed input starting from
     *  start index.  If this rule has parsed input starting from the
     *  start index before, then return where the rule stopped parsing.
     *  It returns the index of the last token matched by the rule.
     *
     *  For now we use a hashtable and just the slow Object-based one.
     *  Later, we can make a special one for ints and also one that
     *  tosses out data after we commit past input position i.
     */
    getRuleMemoization: function(ruleIndex, ruleStartIndex) {
        if ( !this.state.ruleMemo[ruleIndex] ) {
            this.state.ruleMemo[ruleIndex] = {};
        }
        var stopIndexI =
            this.state.ruleMemo[ruleIndex][ruleStartIndex];
        if ( !org.antlr.lang.isNumber(stopIndexI) ) {
            return org.antlr.runtime.BaseRecognizer.MEMO_RULE_UNKNOWN;
        }
        return stopIndexI;
    },

    /** Has this rule already parsed input at the current index in the
     *  input stream?  Return the stop token index or MEMO_RULE_UNKNOWN.
     *  If we attempted but failed to parse properly before, return
     *  MEMO_RULE_FAILED.
     *
     *  This method has a side-effect: if we have seen this input for
     *  this rule and successfully parsed before, then seek ahead to
     *  1 past the stop token matched for this rule last time.
     */
    alreadyParsedRule: function(input, ruleIndex) {
        var stopIndex = this.getRuleMemoization(ruleIndex, input.index());
        if ( stopIndex==org.antlr.runtime.BaseRecognizer.MEMO_RULE_UNKNOWN ) {
            return false;
        }
        if ( stopIndex==org.antlr.runtime.BaseRecognizer.MEMO_RULE_FAILED ) {
            //System.out.println("rule "+ruleIndex+" will never succeed");
            this.state.failed=true;
        }
        else {
            input.seek(stopIndex+1); // jump to one past stop token
        }
        return true;
    },

    /** Record whether or not this rule parsed the input at this position
     *  successfully.  Use a standard java hashtable for now.
     */
    memoize: function(input,
                      ruleIndex,
                      ruleStartIndex)
    {
        var stopTokenIndex = this.state.failed ? 
            org.antlr.runtime.BaseRecognizer.MEMO_RULE_FAILED : input.index()-1;
        if ( !org.antlr.lang.isValue(this.state.ruleMemo) ) {
            throw new Error("!!!!!!!!! memo array is null for "+ this.getGrammarFileName());
        }
        if ( ruleIndex >= this.state.ruleMemo.length ) {
            throw new Error("!!!!!!!!! memo size is "+this.state.ruleMemo.length+", but rule index is "+ruleIndex);
        }
        if ( org.antlr.lang.isValue(this.state.ruleMemo[ruleIndex]) ) {
            this.state.ruleMemo[ruleIndex][ruleStartIndex] = stopTokenIndex;
        }
    },

    /** return how many rule/input-index pairs there are in total.
     *  TODO: this includes synpreds.
     */
    getRuleMemoizationCacheSize: function() {
        var n = 0, i;
        for (i = 0; this.state.ruleMemo && i < this.state.ruleMemo.length; i++) {
            var ruleMap = this.state.ruleMemo[i];
            if ( ruleMap ) {
                // @todo need to get size of rulemap?
                n += ruleMap.length; // how many input indexes are recorded?
            }
        }
        return n;
    },

    traceIn: function(ruleName, ruleIndex, inputSymbol)  {
        this.emitErrorMessage("enter "+ruleName+" "+inputSymbol);
        if ( this.state.failed ) {
            this.emitErrorMessage(" failed="+this.failed);
        }
        if ( this.state.backtracking>0 ) {
            this.emitErrorMessage(" backtracking="+this.state.backtracking);
        }
        // System.out.println();
    },

    traceOut: function(ruleName, ruleIndex, inputSymbol) {
        this.emitErrorMessage("exit "+ruleName+" "+inputSymbol);
        if ( this.state.failed ) {
            this.emitErrorMessage(" failed="+this.state.failed);
        }
        if ( this.state.backtracking>0 ) {
            this.emitErrorMessage(" backtracking="+this.state.backtracking);
        }
    }
};
org.antlr.runtime.Lexer = function(input, state) {
    if (state) {
        org.antlr.runtime.Lexer.superclass.constructor.call(this, state);
    }
    if (input) {
        this.input = input;
    }
};

org.antlr.lang.extend(org.antlr.runtime.Lexer, org.antlr.runtime.BaseRecognizer, {
    reset: function() {
        // reset all recognizer state variables
        org.antlr.runtime.Lexer.superclass.reset.call(this);
        if ( org.antlr.lang.isValue(this.input) ) {
            this.input.seek(0); // rewind the input
        }
        if ( !org.antlr.lang.isValue(this.state) ) {
            return; // no shared state work to do
        }
        this.state.token = null;
        this.state.type = org.antlr.runtime.Token.INVALID_TOKEN_TYPE;
        this.state.channel = org.antlr.runtime.Token.DEFAULT_CHANNEL;
        this.state.tokenStartCharIndex = -1;
        this.state.tokenStartCharPositionInLine = -1;
        this.state.tokenStartLine = -1;
        this.state.text = null;
    },

    /** Return a token from this source; i.e., match a token on the char
     *  stream.
     */
    nextToken: function() {
        while (true) {
            this.state.token = null;
            this.state.channel = org.antlr.runtime.Token.DEFAULT_CHANNEL;
            this.state.tokenStartCharIndex = this.input.index();
            this.state.tokenStartCharPositionInLine = this.input.getCharPositionInLine();
            this.state.tokenStartLine = this.input.getLine();
            this.state.text = null;
            if ( this.input.LA(1)===org.antlr.runtime.CharStream.EOF ) {
                return org.antlr.runtime.Token.EOF_TOKEN;
            }
            try {
                this.mTokens();
                if ( !org.antlr.lang.isValue(this.state.token) ) {
                    this.emit();
                }
                else if ( this.state.token==org.antlr.runtime.Token.SKIP_TOKEN ) {
                    continue;
                }
                return this.state.token;
            }
            catch (re) {
                if (re instanceof org.antlr.runtime.NoViableAltException) {
                    this.reportError(re);
                    this.recover(re);
                } else if ( re instanceof org.antlr.runtime.RecognitionException ) {
                    this.reportError(re);
                } else {
                    throw re;
                }
            }
        }
    },

    /** Instruct the lexer to skip creating a token for current lexer rule
     *  and look for another token.  nextToken() knows to keep looking when
     *  a lexer rule finishes with token set to SKIP_TOKEN.  Recall that
     *  if token==null at end of any token rule, it creates one for you
     *  and emits it.
     */
    skip: function() {
        this.state.token = org.antlr.runtime.Token.SKIP_TOKEN;
    },

    /** Set the char stream and reset the lexer */
    setCharStream: function(input) {
        this.input = null;
        this.reset();
        this.input = input;
    },

    getCharStream: function() {
        return this.input;
    },

    getSourceName: function() {
        return this.input.getSourceName();
    },

    /** Currently does not support multiple emits per nextToken invocation
     *  for efficiency reasons.  Subclass and override this method and
     *  nextToken (to push tokens into a list and pull from that list rather
     *  than a single variable as this implementation does).
     *
     *  The standard method called to automatically emit a token at the
     *  outermost lexical rule.  The token object should point into the
     *  char buffer start..stop.  If there is a text override in 'text',
     *  use that to set the token's text.  Override this method to emit
     *  custom Token objects.
     *
     *  If you are building trees, then you should also override
     *  Parser or TreeParser.getMissingSymbol().
     */
    emit: function() {
        if (arguments.length===0) {
            var t = new org.antlr.runtime.CommonToken(this.input, this.state.type, this.state.channel, this.state.tokenStartCharIndex, this.getCharIndex()-1);
            t.setLine(this.state.tokenStartLine);
            t.setText(this.state.text);
            t.setCharPositionInLine(this.state.tokenStartCharPositionInLine);
            this.state.token = t;
            return t;
        } else {
            this.state.token = arguments[0];
        }
    },

    match: function(s) {
        var i = 0,
            mte;

        if (org.antlr.lang.isString(s)) {
            while ( i<s.length ) {
                if ( this.input.LA(1)!=s.charAt(i) ) {
                    if ( this.state.backtracking>0 ) {
                        this.state.failed = true;
                        return;
                    }
                    mte = new org.antlr.runtime.MismatchedTokenException(s.charAt(i), this.input);
                    this.recover(mte);
                    throw mte;
                }
                i++;
                this.input.consume();
                this.state.failed = false;
            }
        } else if (org.antlr.lang.isNumber(s)) {
            if ( this.input.LA(1)!=s ) {
                if ( this.state.backtracking>0 ) {
                    this.state.failed = true;
                    return;
                }
                mte = new org.antlr.runtime.MismatchedTokenException(s, this.input);
                this.recover(mte);
                throw mte;
            }
            this.input.consume();
            this.state.failed = false;
        }
    },

    matchAny: function() {
        this.input.consume();
    },

    matchRange: function(a, b) {
        if ( this.input.LA(1)<a || this.input.LA(1)>b ) {
            if ( this.state.backtracking>0 ) {
                this.state.failed = true;
                return;
            }
            mre = new org.antlr.runtime.MismatchedRangeException(a,b,this.input);
            this.recover(mre);
            throw mre;
        }
        this.input.consume();
        this.state.failed = false;
    },

    getLine: function() {
        return this.input.getLine();
    },

    getCharPositionInLine: function() {
        return this.input.getCharPositionInLine();
    },

    /** What is the index of the current character of lookahead? */
    getCharIndex: function() {
        return this.input.index();
    },

    /** Return the text matched so far for the current token or any
     *  text override.
     */
    getText: function() {
        if ( org.antlr.lang.isString(this.state.text) ) {
            return this.state.text;
        }
        return this.input.substring(this.state.tokenStartCharIndex,this.getCharIndex()-1);
    },

    /** Set the complete text of this token; it wipes any previous
     *  changes to the text.
     */
    setText: function(text) {
        this.state.text = text;
    },

    reportError: function(e) {
        /** TODO: not thought about recovery in lexer yet.
         *
        // if we've already reported an error and have not matched a token
        // yet successfully, don't report any errors.
        if ( errorRecovery ) {
            //System.err.print("[SPURIOUS] ");
            return;
        }
        errorRecovery = true;
         */

        this.displayRecognitionError(this.getTokenNames(), e);
    },

    getErrorMessage: function(e, tokenNames) {
        var msg = null;
        if ( e instanceof org.antlr.runtime.MismatchedTokenException ) {
            msg = "mismatched character "+this.getCharErrorDisplay(e.c)+" expecting "+this.getCharErrorDisplay(e.expecting);
        }
        else if ( e instanceof org.antlr.runtime.NoViableAltException ) {
            msg = "no viable alternative at character "+this.getCharErrorDisplay(e.c);
        }
        else if ( e instanceof org.antlr.runtime.EarlyExitException ) {
            msg = "required (...)+ loop did not match anything at character "+this.getCharErrorDisplay(e.c);
        }
        else if ( e instanceof org.antlr.runtime.MismatchedNotSetException ) {
            msg = "mismatched character "+this.getCharErrorDisplay(e.c)+" expecting set "+e.expecting;
        }
        else if ( e instanceof org.antlr.runtime.MismatchedSetException ) {
            msg = "mismatched character "+this.getCharErrorDisplay(e.c)+" expecting set "+e.expecting;
        }
        else if ( e instanceof org.antlr.runtime.MismatchedRangeException ) {
            msg = "mismatched character "+this.getCharErrorDisplay(e.c)+" expecting set "+
                this.getCharErrorDisplay(e.a)+".."+this.getCharErrorDisplay(e.b);
        }
        else {
            msg = org.antlr.runtime.Lexer.superclass.getErrorMessage.call(this, e, tokenNames);
        }
        return msg;
    },

    getCharErrorDisplay: function(c) {
        var s = c; //String.fromCharCode(c);
        switch ( s ) {
            case org.antlr.runtime.Token.EOF :
                s = "<EOF>";
                break;
            case "\n" :
                s = "\\n";
                break;
            case "\t" :
                s = "\\t";
                break;
            case "\r" :
                s = "\\r";
                break;
        }
        return "'"+s+"'";
    },

    /** Lexers can normally match any char in it's vocabulary after matching
     *  a token, so do the easy thing and just kill a character and hope
     *  it all works out.  You can instead use the rule invocation stack
     *  to do sophisticated error recovery if you are in a fragment rule.
     */
    recover: function(re) {
        this.input.consume();
    },

    traceIn: function(ruleName, ruleIndex)  {
        var inputSymbol = String.fromCharCode(this.input.LT(1))+" line="+this.getLine()+":"+this.getCharPositionInLine();
        org.antlr.runtime.Lexer.superclass.traceIn.call(this, ruleName, ruleIndex, inputSymbol);
    },

    traceOut: function(ruleName, ruleIndex)  {
		var inputSymbol = String.fromCharCode(this.input.LT(1))+" line="+this.getLine()+":"+this.getCharPositionInLine();
		org.antlr.runtime.Lexer.superclass.traceOut.call(this, ruleName, ruleIndex, inputSymbol);
	}
});
org.antlr.runtime.ParserRuleReturnScope = function() {};

org.antlr.runtime.ParserRuleReturnScope.prototype = {
    getStart: function() { return this.start; },
    getStop: function() { return this.stop; }
};
org.antlr.runtime.tree.TreeRuleReturnScope = function(){};

org.antlr.runtime.tree.TreeRuleReturnScope.prototype = {
    getStart: function() { return this.start; }
};
org.antlr.runtime.Parser = function(input, state) {
    org.antlr.runtime.Parser.superclass.constructor.call(this, state);
    this.setTokenStream(input);
};

org.antlr.lang.extend(org.antlr.runtime.Parser, org.antlr.runtime.BaseRecognizer, {
    reset: function() {
        // reset all recognizer state variables
		org.antlr.runtime.Parser.superclass.reset.call(this);
		if ( org.antlr.lang.isValue(this.input) ) {
			this.input.seek(0); // rewind the input
		}
	},

    getCurrentInputSymbol: function(input) {
        return input.LT(1);
    },

    getMissingSymbol: function(input,
                               e,
                               expectedTokenType,
                               follow)
    {
        var tokenText =
            "<missing "+this.getTokenNames()[expectedTokenType]+">";
        var t = new org.antlr.runtime.CommonToken(expectedTokenType, tokenText);
        var current = input.LT(1);
        var old_current;
        if ( current.getType() === org.antlr.runtime.Token.EOF ) {
            old_current = current;
            current = input.LT(-1);
            // handle edge case where there are no good tokens in the stream
            if (!current) {
                current = old_current;
            }
        }
        t.line = current.getLine();
        t.charPositionInLine = current.getCharPositionInLine();
        t.channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
        return t;
    },


	/** Set the token stream and reset the parser */
    setTokenStream: function(input) {
		this.input = null;
		this.reset();
		this.input = input;
	},

    getTokenStream: function() {
		return this.input;
	},

    getSourceName: function() {
        return this.input.getSourceName();
    },

    traceIn: function(ruleName, ruleIndex)  {
		org.antlr.runtime.Parser.superclass.traceIn.call(
                this, ruleName, ruleIndex, this.input.LT(1));
	},

    traceOut: function(ruleName, ruleIndex)  {
		org.antlr.runtime.Parser.superclass.traceOut.call(
                this, ruleName, ruleIndex, this.input.LT(1));
	}
});
org.antlr.runtime.DFA = function() {};

org.antlr.runtime.DFA.prototype = {
    /** From the input stream, predict what alternative will succeed
     *  using this DFA (representing the covering regular approximation
     *  to the underlying CFL).  Return an alternative number 1..n.  Throw
     *  an exception upon error.
     */
    predict: function(input) {
        var mark = input.mark(), // remember where decision started in input
            s = 0, // we always start at s0
            specialState,
            c,
            snext;

        try {
            while ( true ) {
                specialState = this.special[s];
                if ( specialState>=0 ) {
                    s = this.specialStateTransition(specialState,input);
                    if (s===-1) {
                        this.noViableAlt(s, input);
                        return 0;
                    }
                    input.consume();
                    continue;
                }
                if ( this.accept[s] >= 1 ) {
                    return this.accept[s];
                }
                // look for a normal char transition
                c = input.LA(1); // -1 == \uFFFF, all tokens fit in 65000 space

                if (c===org.antlr.runtime.Token.EOF) {
                    c = -1;
                } else if (org.antlr.lang.isString(c)) {
                    c = c.charCodeAt(0);
                }

                if (c>=this.min[s] && c<=this.max[s]) {
                    snext = this.transition[s][c-this.min[s]]; // move to next state
                    if ( snext < 0 ) {
                        // was in range but not a normal transition
                        // must check EOT, which is like the else clause.
                        // eot[s]>=0 indicates that an EOT edge goes to another
                        // state.
                        if ( this.eot[s]>=0 ) {  // EOT Transition to accept state?
                            s = this.eot[s];
                            input.consume();
                            // TODO: I had this as return accept[eot[s]]
                            // which assumed here that the EOT edge always
                            // went to an accept...faster to do this, but
                            // what about predicated edges coming from EOT
                            // target?
                            continue;
                        }
                        this.noViableAlt(s,input);
                        return 0;
                    }
                    s = snext;
                    input.consume();
                    continue;
                }
                if ( this.eot[s]>=0 ) {  // EOT Transition?
                    s = this.eot[s];
                    input.consume();
                    continue;
                }
                if ( c==org.antlr.runtime.Token.EOF && this.eof[s]>=0 ) {  // EOF Transition to accept state?
                    return this.accept[this.eof[s]];
                }
                // not in range and not EOF/EOT, must be invalid symbol
                this.noViableAlt(s,input);
                return 0;
            }
        }
        finally {
            input.rewind(mark);
        }
    },

    noViableAlt: function(s, input) {
        if (this.recognizer.state.backtracking>0) {
            this.recognizer.state.failed=true;
            return;
        }
        var nvae =
            new org.antlr.runtime.NoViableAltException(this.getDescription(),
                                     this.decisionNumber,
                                     s,
                                     input);
        this.error(nvae);
        throw nvae;
    },

    /** A hook for debugging interface */
    error: function(nvae) { },

    specialStateTransition: function(s, input) {
        return -1;
    },

    getDescription: function() {
        return "n/a";
    }
};

org.antlr.lang.augmentObject(org.antlr.runtime.DFA, {
    /** Given a String that has a run-length-encoding of some unsigned shorts
     *  like "\1\2\3\9", convert to short[] {2,9,9,9}.
     */
    unpackEncodedString: function(encodedString) {
        // walk first to find how big it is.
        var i,
            data = [],
            di = 0,
            n,
            v,
            j;
        for (i=0; i<encodedString.length; i+=2) {
            n = encodedString.charCodeAt(i);
            v = encodedString.charCodeAt(i+1);
            if (v===0xffff) {
                v = -1; // overflow at 16 bits
            }
            // add v n times to data
            for (j=1; j<=n; j++) {
                data[di++] = v;
            }
        }
        return data;
    },

    // alias
    unpackEncodedStringToUnsignedChars: function(encodedString) {
        return org.antlr.runtime.DFA.unpackEncodedString(encodedString);
    }
});
org.antlr.runtime.tree.TreeParser = function(input) {
    org.antlr.runtime.tree.TreeParser.superclass.constructor.call(this, arguments[1]);
    this.setTreeNodeStream(input);
};

(function(){
var TP = org.antlr.runtime.tree.TreeParser;

org.antlr.lang.augmentObject(TP, {
    DOWN: org.antlr.runtime.Token.DOWN,
    UP: org.antlr.runtime.Token.UP
});

org.antlr.lang.extend(TP, org.antlr.runtime.BaseRecognizer, {
    reset: function() {
        TP.superclass.reset.call(this); // reset all recognizer state variables
        if ( this.input ) {
            this.input.seek(0); // rewind the input
        }
    },

    /** Set the input stream */
    setTreeNodeStream: function(input) {
        this.input = input;
    },

    getTreeNodeStream: function() {
        return this.input;
    },

    getSourceName: function() {
        return this.input.getSourceName();
    },

    getCurrentInputSymbol: function(input) {
        return input.LT(1);
    },

    getMissingSymbol: function(input, e, expectedTokenType, follow) {
        var tokenText =
            "<missing "+this.getTokenNames()[expectedTokenType]+">";
        return new org.antlr.runtime.tree.CommonTree(new org.antlr.runtime.CommonToken(expectedTokenType, tokenText));
    },

    /** Match '.' in tree parser has special meaning.  Skip node or
     *  entire tree if node has children.  If children, scan until
     *  corresponding UP node.
     */
    matchAny: function(ignore) { // ignore stream, copy of this.input
        this.state.errorRecovery = false;
        this.state.failed = false;
        var look = this.input.LT(1);
        if ( this.input.getTreeAdaptor().getChildCount(look)===0 ) {
            this.input.consume(); // not subtree, consume 1 node and return
            return;
        }
        // current node is a subtree, skip to corresponding UP.
        // must count nesting level to get right UP
        var level=0,
            tokenType = this.input.getTreeAdaptor().getType(look);
        while ( tokenType!==org.antlr.runtime.Token.EOF &&
                !(tokenType===TP.UP && level===0) )
        {
            this.input.consume();
            look = this.input.LT(1);
            tokenType = this.input.getTreeAdaptor().getType(look);
            if ( tokenType === TP.DOWN ) {
                level++;
            }
            else if ( tokenType === TP.UP ) {
                level--;
            }
        }
        this.input.consume(); // consume UP
    },

    /** We have DOWN/UP nodes in the stream that have no line info; override.
     *  plus we want to alter the exception type.  Don't try to recover
     *       *  from tree parser errors inline...
     */
    mismatch: function(input, ttype, follow) {
        throw new org.antlr.runtime.MismatchedTreeNodeException(ttype, input);
    },

    /** Prefix error message with the grammar name because message is
     *  always intended for the programmer because the parser built
     *  the input tree not the user.
     */
    getErrorHeader: function(e) {
        return this.getGrammarFileName()+": node from "+
               (e.approximateLineInfo?"after ":"")+"line "+e.line+":"+e.charPositionInLine;
    },

    /** Tree parsers parse nodes they usually have a token object as
     *  payload. Set the exception token and do the default behavior.
     */
    getErrorMessage: function(e, tokenNames) {
        var adaptor;
        if ( this instanceof TP ) {
            adaptor = e.input.getTreeAdaptor();
            e.token = adaptor.getToken(e.node);
            if ( !org.antlr.lang.isValue(e.token) ) { // could be an UP/DOWN node
                e.token = new org.antlr.runtime.CommonToken(
                        adaptor.getType(e.node),
                        adaptor.getText(e.node));
            }
        }
        return TP.superclass.getErrorMessage.call(this, e, tokenNames);
    },

    traceIn: function(ruleName, ruleIndex) {
        TP.superclass.traceIn.call(this, ruleName, ruleIndex, this.input.LT(1));
    },

    traceOut: function(ruleName, ruleIndex) {
        TP.superclass.traceOut.call(this, ruleName, ruleIndex, this.input.LT(1));
    }
});

})();

exports.org = org;

});
define('ace/mode/xquery/XQueryLexer', ['require', 'exports', 'module' , 'ace/mode/xquery/antlr3-all', 'ace/mode/xquery/XQDTLexer'], function(require, exports, module) {// $ANTLR 3.3 Nov 30, 2010 12:50:56 /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g 2012-09-05 10:41:37

/* ***** BEGIN LICENSE BLOCK *****
 * Distributed under the BSD license:
 *
 * Copyright (c) 2010, Ajax.org B.V.
 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in the
 *       documentation and/or other materials provided with the distribution.
 *     * Neither the name of Ajax.org B.V. nor the
 *       names of its contributors may be used to endorse or promote products
 *       derived from this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * ***** END LICENSE BLOCK ***** */
var org =  require("./antlr3-all").org;
var XQDTLexer   = require("./XQDTLexer").XQDTLexer;


var XQueryLexer = function(input, state) {
// alternate constructor @todo
// public XQueryLexer(CharStream input)
// public XQueryLexer(CharStream input, RecognizerSharedState state) {
    if (!state) {
        state = new org.antlr.runtime.RecognizerSharedState();
    }

    (function(){


        this.inStr = false;

        // dummy list for warning elimination
        //List<Stack<Object>> dummy = new ArrayList<Stack<Object>>();

        // when we start, the '<' has already been eaten by the other lexer
        //boolean inStr = false;
        //
        //public boolean isInString()
        //{
        //   return inStr;
        //}


    }).call(this);

    this.dfa19 = new XQueryLexer.DFA19(this);
    XQueryLexer.superclass.constructor.call(this, input, state);


};

org.antlr.lang.augmentObject(XQueryLexer, {
    EOF: -1,
    L_QuotAttrContentChar: 4,
    L_AposAttrContentChar: 5,
    L_ElementContentChar: 6,
    L_CDataSection: 7,
    L_PredefinedEntityRef: 8,
    L_CharRef: 9,
    ESCAPE_LBRACKET: 10,
    ESCAPE_RBRACKET: 11,
    ESCAPE_APOS: 12,
    ESCAPE_QUOT: 13,
    CDATA_START: 14,
    CDATA_END: 15,
    ANCESTOR: 16,
    ANCESTOR_OR_SELF: 17,
    AND: 18,
    AS: 19,
    ASCENDING: 20,
    AT: 21,
    ATTRIBUTE: 22,
    BASE_URI: 23,
    BOUNDARY_SPACE: 24,
    BY: 25,
    CASE: 26,
    CAST: 27,
    CASTABLE: 28,
    CHILD: 29,
    COLLATION: 30,
    COMMENT: 31,
    CONSTRUCTION: 32,
    COPY_NAMESPACES: 33,
    DECLARE: 34,
    DEFAULT: 35,
    DESCENDANT: 36,
    DESCENDANT_OR_SELF: 37,
    DESCENDING: 38,
    DIV: 39,
    DOCUMENT: 40,
    DOCUMENT_NODE: 41,
    ELEMENT: 42,
    ELSE: 43,
    EMPTY: 44,
    EMPTY_SEQUENCE: 45,
    ENCODING: 46,
    EQ: 47,
    EVERY: 48,
    EXCEPT: 49,
    EXTERNAL: 50,
    FOLLOWING: 51,
    FOLLOWING_SIBLING: 52,
    FOR: 53,
    FUNCTION: 54,
    GE: 55,
    GREATEST: 56,
    GT: 57,
    IDIV: 58,
    IF: 59,
    IMPORT: 60,
    IN: 61,
    INHERIT: 62,
    INSTANCE: 63,
    INTERSECT: 64,
    IS: 65,
    ITEM: 66,
    LAX: 67,
    LE: 68,
    LEAST: 69,
    LET: 70,
    LT: 71,
    MOD: 72,
    MODULE: 73,
    NAMESPACE: 74,
    NE: 75,
    NO_INHERIT: 76,
    NO_PRESERVE: 77,
    NODE: 78,
    JSON: 79,
    OF: 80,
    OPTION: 81,
    OR: 82,
    ORDER: 83,
    ORDERED: 84,
    ORDERING: 85,
    PARENT: 86,
    PRECEDING: 87,
    PRECEDING_SIBLING: 88,
    PRESERVE: 89,
    PROCESSING_INSTRUCTION: 90,
    STRUCTURED_ITEM: 91,
    JSON_ITEM: 92,
    OBJECT: 93,
    ARRAY: 94,
    RETURN: 95,
    SATISFIES: 96,
    SCHEMA: 97,
    SCHEMA_ATTRIBUTE: 98,
    SCHEMA_ELEMENT: 99,
    SELF: 100,
    SOME: 101,
    STABLE: 102,
    STRICT: 103,
    STRIP: 104,
    TEXT: 105,
    THEN: 106,
    TO: 107,
    TREAT: 108,
    TYPESWITCH: 109,
    UNION: 110,
    UNORDERED: 111,
    VALIDATE: 112,
    VARIABLE: 113,
    VERSION: 114,
    WHERE: 115,
    XQUERY: 116,
    ALLOWING: 117,
    CATCH: 118,
    CONTEXT: 119,
    COUNT: 120,
    DECIMAL_FORMAT: 121,
    DECIMAL_SEPARATOR: 122,
    DIGIT: 123,
    END: 124,
    GROUP: 125,
    GROUPING_SEPARATOR: 126,
    INFINITY: 127,
    MINUS_SIGN: 128,
    NAMESPACE_NODE: 129,
    NAN: 130,
    NEXT: 131,
    ONLY: 132,
    PATTERN_SEPARATOR: 133,
    PERCENT: 134,
    PER_MILLE: 135,
    PREVIOUS: 136,
    SLIDING: 137,
    START: 138,
    SWITCH: 139,
    TRY: 140,
    TUMBLING: 141,
    TYPE: 142,
    WHEN: 143,
    WINDOW: 144,
    ZERO_DIGIT: 145,
    AFTER: 146,
    BEFORE: 147,
    COPY: 148,
    DELETE: 149,
    FIRST: 150,
    INSERT: 151,
    INTO: 152,
    POSITION: 153,
    APPEND: 154,
    LAST: 155,
    MODIFY: 156,
    NODES: 157,
    RENAME: 158,
    REPLACE: 159,
    REVALIDATION: 160,
    SKIP: 161,
    UPDATING: 162,
    VALUE: 163,
    WITH: 164,
    ALL: 165,
    ANY: 166,
    CONTAINS: 167,
    CONTENT: 168,
    DIACRITICS: 169,
    DIFFERENT: 170,
    DISTANCE: 171,
    ENTIRE: 172,
    EXACTLY: 173,
    FROM: 174,
    FT_OPTION: 175,
    FTAND: 176,
    FTNOT: 177,
    FTOR: 178,
    INSENSITIVE: 179,
    LANGUAGE: 180,
    LEVELS: 181,
    LOWERCASE: 182,
    MOST: 183,
    NO: 184,
    NOT: 185,
    OCCURS: 186,
    PARAGRAPH: 187,
    PARAGRAPHS: 188,
    PHRASE: 189,
    RELATIONSHIP: 190,
    SAME: 191,
    SCORE: 192,
    SENSITIVE: 193,
    SENTENCE: 194,
    SENTENCES: 195,
    STEMMING: 196,
    STOP: 197,
    THESAURUS: 198,
    TIMES: 199,
    UPPERCASE: 200,
    USING: 201,
    WEIGHT: 202,
    WILDCARDS: 203,
    WITHOUT: 204,
    WORD: 205,
    WORDS: 206,
    BREAK: 207,
    CONTINUE: 208,
    EXIT: 209,
    LOOP: 210,
    RETURNING: 211,
    WHILE: 212,
    CHECK: 213,
    COLLECTION: 214,
    CONSTRAINT: 215,
    FOREACH: 216,
    FOREIGN: 217,
    INDEX: 218,
    INTEGRITY: 219,
    KEY: 220,
    ON: 221,
    UNIQUE: 222,
    AMP_ER: 223,
    APOS_ER: 224,
    QUOT_ER: 225,
    CONCAT: 226,
    LPAREN: 227,
    RPAREN: 228,
    DOLLAR: 229,
    L_UNION_BRACKET: 230,
    R_UNION_BRACKET: 231,
    LBRACKET: 232,
    RBRACKET: 233,
    LSQUARE: 234,
    RSQUARE: 235,
    EQUAL: 236,
    BIND: 237,
    NOTEQUAL: 238,
    ANN_PERCENT: 239,
    HASH: 240,
    AMP: 241,
    COMMA: 242,
    QUESTION: 243,
    STAR: 244,
    PLUS: 245,
    MINUS: 246,
    SMALLER: 247,
    GREATER: 248,
    SMALLEREQ: 249,
    GREATEREQ: 250,
    SMALLER_SMALLER: 251,
    GREATER_GREATER: 252,
    SLASH: 253,
    SLASH_SLASH: 254,
    BANG: 255,
    DOT: 256,
    DOT_DOT: 257,
    COLON: 258,
    COLON_COLON: 259,
    EMPTY_CLOSE_TAG: 260,
    CLOSE_TAG: 261,
    SEMICOLON: 262,
    VBAR: 263,
    PRAGMA_START: 264,
    PRAGMA_END: 265,
    XML_COMMENT_START: 266,
    XML_COMMENT_END: 267,
    PI_START: 268,
    PI_END: 269,
    ATTR_SIGN: 270,
    Q: 271,
    CHARREF_DEC: 272,
    CHARREF_HEX: 273,
    APOS: 274,
    QUOT: 275,
    NCNameStartChar: 276,
    NCNameChar: 277,
    L_NCName: 278,
    Letter: 279,
    HexLetter: 280,
    Digit: 281,
    Digits: 282,
    S: 283,
    SU: 284,
    L_Pragma: 285,
    L_DirCommentConstructor: 286,
    L_DirPIConstructor: 287,
    L_IntegerLiteral: 288,
    L_DecimalLiteral: 289,
    L_DoubleLiteral: 290,
    L_Comment: 291,
    L_AnyChar: 292
});

(function(){
var HIDDEN = org.antlr.runtime.Token.HIDDEN_CHANNEL,
    EOF = org.antlr.runtime.Token.EOF;
org.antlr.lang.extend(XQueryLexer, XQDTLexer, {
    EOF : -1,
    L_QuotAttrContentChar : 4,
    L_AposAttrContentChar : 5,
    L_ElementContentChar : 6,
    L_CDataSection : 7,
    L_PredefinedEntityRef : 8,
    L_CharRef : 9,
    ESCAPE_LBRACKET : 10,
    ESCAPE_RBRACKET : 11,
    ESCAPE_APOS : 12,
    ESCAPE_QUOT : 13,
    CDATA_START : 14,
    CDATA_END : 15,
    ANCESTOR : 16,
    ANCESTOR_OR_SELF : 17,
    AND : 18,
    AS : 19,
    ASCENDING : 20,
    AT : 21,
    ATTRIBUTE : 22,
    BASE_URI : 23,
    BOUNDARY_SPACE : 24,
    BY : 25,
    CASE : 26,
    CAST : 27,
    CASTABLE : 28,
    CHILD : 29,
    COLLATION : 30,
    COMMENT : 31,
    CONSTRUCTION : 32,
    COPY_NAMESPACES : 33,
    DECLARE : 34,
    DEFAULT : 35,
    DESCENDANT : 36,
    DESCENDANT_OR_SELF : 37,
    DESCENDING : 38,
    DIV : 39,
    DOCUMENT : 40,
    DOCUMENT_NODE : 41,
    ELEMENT : 42,
    ELSE : 43,
    EMPTY : 44,
    EMPTY_SEQUENCE : 45,
    ENCODING : 46,
    EQ : 47,
    EVERY : 48,
    EXCEPT : 49,
    EXTERNAL : 50,
    FOLLOWING : 51,
    FOLLOWING_SIBLING : 52,
    FOR : 53,
    FUNCTION : 54,
    GE : 55,
    GREATEST : 56,
    GT : 57,
    IDIV : 58,
    IF : 59,
    IMPORT : 60,
    IN : 61,
    INHERIT : 62,
    INSTANCE : 63,
    INTERSECT : 64,
    IS : 65,
    ITEM : 66,
    LAX : 67,
    LE : 68,
    LEAST : 69,
    LET : 70,
    LT : 71,
    MOD : 72,
    MODULE : 73,
    NAMESPACE : 74,
    NE : 75,
    NO_INHERIT : 76,
    NO_PRESERVE : 77,
    NODE : 78,
    JSON : 79,
    OF : 80,
    OPTION : 81,
    OR : 82,
    ORDER : 83,
    ORDERED : 84,
    ORDERING : 85,
    PARENT : 86,
    PRECEDING : 87,
    PRECEDING_SIBLING : 88,
    PRESERVE : 89,
    PROCESSING_INSTRUCTION : 90,
    STRUCTURED_ITEM : 91,
    JSON_ITEM : 92,
    OBJECT : 93,
    ARRAY : 94,
    RETURN : 95,
    SATISFIES : 96,
    SCHEMA : 97,
    SCHEMA_ATTRIBUTE : 98,
    SCHEMA_ELEMENT : 99,
    SELF : 100,
    SOME : 101,
    STABLE : 102,
    STRICT : 103,
    STRIP : 104,
    TEXT : 105,
    THEN : 106,
    TO : 107,
    TREAT : 108,
    TYPESWITCH : 109,
    UNION : 110,
    UNORDERED : 111,
    VALIDATE : 112,
    VARIABLE : 113,
    VERSION : 114,
    WHERE : 115,
    XQUERY : 116,
    ALLOWING : 117,
    CATCH : 118,
    CONTEXT : 119,
    COUNT : 120,
    DECIMAL_FORMAT : 121,
    DECIMAL_SEPARATOR : 122,
    DIGIT : 123,
    END : 124,
    GROUP : 125,
    GROUPING_SEPARATOR : 126,
    INFINITY : 127,
    MINUS_SIGN : 128,
    NAMESPACE_NODE : 129,
    NAN : 130,
    NEXT : 131,
    ONLY : 132,
    PATTERN_SEPARATOR : 133,
    PERCENT : 134,
    PER_MILLE : 135,
    PREVIOUS : 136,
    SLIDING : 137,
    START : 138,
    SWITCH : 139,
    TRY : 140,
    TUMBLING : 141,
    TYPE : 142,
    WHEN : 143,
    WINDOW : 144,
    ZERO_DIGIT : 145,
    AFTER : 146,
    BEFORE : 147,
    COPY : 148,
    DELETE : 149,
    FIRST : 150,
    INSERT : 151,
    INTO : 152,
    POSITION : 153,
    APPEND : 154,
    LAST : 155,
    MODIFY : 156,
    NODES : 157,
    RENAME : 158,
    REPLACE : 159,
    REVALIDATION : 160,
    SKIP : 161,
    UPDATING : 162,
    VALUE : 163,
    WITH : 164,
    ALL : 165,
    ANY : 166,
    CONTAINS : 167,
    CONTENT : 168,
    DIACRITICS : 169,
    DIFFERENT : 170,
    DISTANCE : 171,
    ENTIRE : 172,
    EXACTLY : 173,
    FROM : 174,
    FT_OPTION : 175,
    FTAND : 176,
    FTNOT : 177,
    FTOR : 178,
    INSENSITIVE : 179,
    LANGUAGE : 180,
    LEVELS : 181,
    LOWERCASE : 182,
    MOST : 183,
    NO : 184,
    NOT : 185,
    OCCURS : 186,
    PARAGRAPH : 187,
    PARAGRAPHS : 188,
    PHRASE : 189,
    RELATIONSHIP : 190,
    SAME : 191,
    SCORE : 192,
    SENSITIVE : 193,
    SENTENCE : 194,
    SENTENCES : 195,
    STEMMING : 196,
    STOP : 197,
    THESAURUS : 198,
    TIMES : 199,
    UPPERCASE : 200,
    USING : 201,
    WEIGHT : 202,
    WILDCARDS : 203,
    WITHOUT : 204,
    WORD : 205,
    WORDS : 206,
    BREAK : 207,
    CONTINUE : 208,
    EXIT : 209,
    LOOP : 210,
    RETURNING : 211,
    WHILE : 212,
    CHECK : 213,
    COLLECTION : 214,
    CONSTRAINT : 215,
    FOREACH : 216,
    FOREIGN : 217,
    INDEX : 218,
    INTEGRITY : 219,
    KEY : 220,
    ON : 221,
    UNIQUE : 222,
    AMP_ER : 223,
    APOS_ER : 224,
    QUOT_ER : 225,
    CONCAT : 226,
    LPAREN : 227,
    RPAREN : 228,
    DOLLAR : 229,
    L_UNION_BRACKET : 230,
    R_UNION_BRACKET : 231,
    LBRACKET : 232,
    RBRACKET : 233,
    LSQUARE : 234,
    RSQUARE : 235,
    EQUAL : 236,
    BIND : 237,
    NOTEQUAL : 238,
    ANN_PERCENT : 239,
    HASH : 240,
    AMP : 241,
    COMMA : 242,
    QUESTION : 243,
    STAR : 244,
    PLUS : 245,
    MINUS : 246,
    SMALLER : 247,
    GREATER : 248,
    SMALLEREQ : 249,
    GREATEREQ : 250,
    SMALLER_SMALLER : 251,
    GREATER_GREATER : 252,
    SLASH : 253,
    SLASH_SLASH : 254,
    BANG : 255,
    DOT : 256,
    DOT_DOT : 257,
    COLON : 258,
    COLON_COLON : 259,
    EMPTY_CLOSE_TAG : 260,
    CLOSE_TAG : 261,
    SEMICOLON : 262,
    VBAR : 263,
    PRAGMA_START : 264,
    PRAGMA_END : 265,
    XML_COMMENT_START : 266,
    XML_COMMENT_END : 267,
    PI_START : 268,
    PI_END : 269,
    ATTR_SIGN : 270,
    Q : 271,
    CHARREF_DEC : 272,
    CHARREF_HEX : 273,
    APOS : 274,
    QUOT : 275,
    NCNameStartChar : 276,
    NCNameChar : 277,
    L_NCName : 278,
    Letter : 279,
    HexLetter : 280,
    Digit : 281,
    Digits : 282,
    S : 283,
    SU : 284,
    L_Pragma : 285,
    L_DirCommentConstructor : 286,
    L_DirPIConstructor : 287,
    L_IntegerLiteral : 288,
    L_DecimalLiteral : 289,
    L_DoubleLiteral : 290,
    L_Comment : 291,
    L_AnyChar : 292,
    getGrammarFileName: function() { return "/Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g"; }
});
org.antlr.lang.augmentObject(XQueryLexer.prototype, {
    // $ANTLR start ANCESTOR
    mANCESTOR: function()  {
        try {
            var _type = this.ANCESTOR;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:85:29: ( 'ancestor' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:85:31: 'ancestor'
            this.match("ancestor"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "ANCESTOR",

    // $ANTLR start ANCESTOR_OR_SELF
    mANCESTOR_OR_SELF: function()  {
        try {
            var _type = this.ANCESTOR_OR_SELF;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:86:29: ( 'ancestor-or-self' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:86:31: 'ancestor-or-self'
            this.match("ancestor-or-self"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "ANCESTOR_OR_SELF",

    // $ANTLR start AND
    mAND: function()  {
        try {
            var _type = this.AND;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:87:29: ( 'and' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:87:31: 'and'
            this.match("and"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "AND",

    // $ANTLR start AS
    mAS: function()  {
        try {
            var _type = this.AS;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:88:29: ( 'as' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:88:31: 'as'
            this.match("as"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "AS",

    // $ANTLR start ASCENDING
    mASCENDING: function()  {
        try {
            var _type = this.ASCENDING;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:89:29: ( 'ascending' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:89:31: 'ascending'
            this.match("ascending"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "ASCENDING",

    // $ANTLR start AT
    mAT: function()  {
        try {
            var _type = this.AT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:90:29: ( 'at' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:90:31: 'at'
            this.match("at"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "AT",

    // $ANTLR start ATTRIBUTE
    mATTRIBUTE: function()  {
        try {
            var _type = this.ATTRIBUTE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:91:29: ( 'attribute' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:91:31: 'attribute'
            this.match("attribute"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "ATTRIBUTE",

    // $ANTLR start BASE_URI
    mBASE_URI: function()  {
        try {
            var _type = this.BASE_URI;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:92:29: ( 'base-uri' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:92:31: 'base-uri'
            this.match("base-uri"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "BASE_URI",

    // $ANTLR start BOUNDARY_SPACE
    mBOUNDARY_SPACE: function()  {
        try {
            var _type = this.BOUNDARY_SPACE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:93:29: ( 'boundary-space' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:93:31: 'boundary-space'
            this.match("boundary-space"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "BOUNDARY_SPACE",

    // $ANTLR start BY
    mBY: function()  {
        try {
            var _type = this.BY;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:94:29: ( 'by' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:94:31: 'by'
            this.match("by"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "BY",

    // $ANTLR start CASE
    mCASE: function()  {
        try {
            var _type = this.CASE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:95:29: ( 'case' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:95:31: 'case'
            this.match("case"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "CASE",

    // $ANTLR start CAST
    mCAST: function()  {
        try {
            var _type = this.CAST;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:96:29: ( 'cast' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:96:31: 'cast'
            this.match("cast"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "CAST",

    // $ANTLR start CASTABLE
    mCASTABLE: function()  {
        try {
            var _type = this.CASTABLE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:97:29: ( 'castable' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:97:31: 'castable'
            this.match("castable"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "CASTABLE",

    // $ANTLR start CHILD
    mCHILD: function()  {
        try {
            var _type = this.CHILD;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:98:29: ( 'child' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:98:31: 'child'
            this.match("child"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "CHILD",

    // $ANTLR start COLLATION
    mCOLLATION: function()  {
        try {
            var _type = this.COLLATION;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:99:29: ( 'collation' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:99:31: 'collation'
            this.match("collation"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "COLLATION",

    // $ANTLR start COMMENT
    mCOMMENT: function()  {
        try {
            var _type = this.COMMENT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:100:29: ( 'comment' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:100:31: 'comment'
            this.match("comment"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "COMMENT",

    // $ANTLR start CONSTRUCTION
    mCONSTRUCTION: function()  {
        try {
            var _type = this.CONSTRUCTION;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:101:29: ( 'construction' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:101:31: 'construction'
            this.match("construction"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "CONSTRUCTION",

    // $ANTLR start COPY_NAMESPACES
    mCOPY_NAMESPACES: function()  {
        try {
            var _type = this.COPY_NAMESPACES;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:102:29: ( 'copy-namespaces' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:102:31: 'copy-namespaces'
            this.match("copy-namespaces"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "COPY_NAMESPACES",

    // $ANTLR start DECLARE
    mDECLARE: function()  {
        try {
            var _type = this.DECLARE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:103:29: ( 'declare' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:103:31: 'declare'
            this.match("declare"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "DECLARE",

    // $ANTLR start DEFAULT
    mDEFAULT: function()  {
        try {
            var _type = this.DEFAULT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:104:29: ( 'default' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:104:31: 'default'
            this.match("default"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "DEFAULT",

    // $ANTLR start DESCENDANT
    mDESCENDANT: function()  {
        try {
            var _type = this.DESCENDANT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:105:29: ( 'descendant' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:105:31: 'descendant'
            this.match("descendant"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "DESCENDANT",

    // $ANTLR start DESCENDANT_OR_SELF
    mDESCENDANT_OR_SELF: function()  {
        try {
            var _type = this.DESCENDANT_OR_SELF;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:106:29: ( 'descendant-or-self' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:106:31: 'descendant-or-self'
            this.match("descendant-or-self"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "DESCENDANT_OR_SELF",

    // $ANTLR start DESCENDING
    mDESCENDING: function()  {
        try {
            var _type = this.DESCENDING;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:107:29: ( 'descending' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:107:31: 'descending'
            this.match("descending"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "DESCENDING",

    // $ANTLR start DIV
    mDIV: function()  {
        try {
            var _type = this.DIV;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:108:29: ( 'div' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:108:31: 'div'
            this.match("div"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "DIV",

    // $ANTLR start DOCUMENT
    mDOCUMENT: function()  {
        try {
            var _type = this.DOCUMENT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:109:29: ( 'document' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:109:31: 'document'
            this.match("document"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "DOCUMENT",

    // $ANTLR start DOCUMENT_NODE
    mDOCUMENT_NODE: function()  {
        try {
            var _type = this.DOCUMENT_NODE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:110:29: ( 'document-node' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:110:31: 'document-node'
            this.match("document-node"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "DOCUMENT_NODE",

    // $ANTLR start ELEMENT
    mELEMENT: function()  {
        try {
            var _type = this.ELEMENT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:111:29: ( 'element' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:111:31: 'element'
            this.match("element"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "ELEMENT",

    // $ANTLR start ELSE
    mELSE: function()  {
        try {
            var _type = this.ELSE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:112:29: ( 'else' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:112:31: 'else'
            this.match("else"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "ELSE",

    // $ANTLR start EMPTY
    mEMPTY: function()  {
        try {
            var _type = this.EMPTY;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:113:29: ( 'empty' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:113:31: 'empty'
            this.match("empty"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "EMPTY",

    // $ANTLR start EMPTY_SEQUENCE
    mEMPTY_SEQUENCE: function()  {
        try {
            var _type = this.EMPTY_SEQUENCE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:114:29: ( 'empty-sequence' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:114:31: 'empty-sequence'
            this.match("empty-sequence"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "EMPTY_SEQUENCE",

    // $ANTLR start ENCODING
    mENCODING: function()  {
        try {
            var _type = this.ENCODING;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:115:29: ( 'encoding' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:115:31: 'encoding'
            this.match("encoding"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "ENCODING",

    // $ANTLR start EQ
    mEQ: function()  {
        try {
            var _type = this.EQ;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:116:29: ( 'eq' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:116:31: 'eq'
            this.match("eq"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "EQ",

    // $ANTLR start EVERY
    mEVERY: function()  {
        try {
            var _type = this.EVERY;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:117:29: ( 'every' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:117:31: 'every'
            this.match("every"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "EVERY",

    // $ANTLR start EXCEPT
    mEXCEPT: function()  {
        try {
            var _type = this.EXCEPT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:118:29: ( 'except' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:118:31: 'except'
            this.match("except"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "EXCEPT",

    // $ANTLR start EXTERNAL
    mEXTERNAL: function()  {
        try {
            var _type = this.EXTERNAL;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:119:29: ( 'external' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:119:31: 'external'
            this.match("external"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "EXTERNAL",

    // $ANTLR start FOLLOWING
    mFOLLOWING: function()  {
        try {
            var _type = this.FOLLOWING;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:120:29: ( 'following' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:120:31: 'following'
            this.match("following"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "FOLLOWING",

    // $ANTLR start FOLLOWING_SIBLING
    mFOLLOWING_SIBLING: function()  {
        try {
            var _type = this.FOLLOWING_SIBLING;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:121:29: ( 'following-sibling' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:121:31: 'following-sibling'
            this.match("following-sibling"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "FOLLOWING_SIBLING",

    // $ANTLR start FOR
    mFOR: function()  {
        try {
            var _type = this.FOR;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:122:29: ( 'for' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:122:31: 'for'
            this.match("for"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "FOR",

    // $ANTLR start FUNCTION
    mFUNCTION: function()  {
        try {
            var _type = this.FUNCTION;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:123:29: ( 'function' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:123:31: 'function'
            this.match("function"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "FUNCTION",

    // $ANTLR start GE
    mGE: function()  {
        try {
            var _type = this.GE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:124:29: ( 'ge' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:124:31: 'ge'
            this.match("ge"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "GE",

    // $ANTLR start GREATEST
    mGREATEST: function()  {
        try {
            var _type = this.GREATEST;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:125:29: ( 'greatest' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:125:31: 'greatest'
            this.match("greatest"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "GREATEST",

    // $ANTLR start GT
    mGT: function()  {
        try {
            var _type = this.GT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:126:29: ( 'gt' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:126:31: 'gt'
            this.match("gt"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "GT",

    // $ANTLR start IDIV
    mIDIV: function()  {
        try {
            var _type = this.IDIV;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:127:29: ( 'idiv' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:127:31: 'idiv'
            this.match("idiv"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "IDIV",

    // $ANTLR start IF
    mIF: function()  {
        try {
            var _type = this.IF;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:128:29: ( 'if' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:128:31: 'if'
            this.match("if"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "IF",

    // $ANTLR start IMPORT
    mIMPORT: function()  {
        try {
            var _type = this.IMPORT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:129:29: ( 'import' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:129:31: 'import'
            this.match("import"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "IMPORT",

    // $ANTLR start IN
    mIN: function()  {
        try {
            var _type = this.IN;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:130:29: ( 'in' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:130:31: 'in'
            this.match("in"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "IN",

    // $ANTLR start INHERIT
    mINHERIT: function()  {
        try {
            var _type = this.INHERIT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:131:29: ( 'inherit' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:131:31: 'inherit'
            this.match("inherit"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "INHERIT",

    // $ANTLR start INSTANCE
    mINSTANCE: function()  {
        try {
            var _type = this.INSTANCE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:132:29: ( 'instance' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:132:31: 'instance'
            this.match("instance"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "INSTANCE",

    // $ANTLR start INTERSECT
    mINTERSECT: function()  {
        try {
            var _type = this.INTERSECT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:133:29: ( 'intersect' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:133:31: 'intersect'
            this.match("intersect"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "INTERSECT",

    // $ANTLR start IS
    mIS: function()  {
        try {
            var _type = this.IS;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:134:29: ( 'is' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:134:31: 'is'
            this.match("is"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "IS",

    // $ANTLR start ITEM
    mITEM: function()  {
        try {
            var _type = this.ITEM;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:135:29: ( 'item' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:135:31: 'item'
            this.match("item"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "ITEM",

    // $ANTLR start LAX
    mLAX: function()  {
        try {
            var _type = this.LAX;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:136:29: ( 'lax' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:136:31: 'lax'
            this.match("lax"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "LAX",

    // $ANTLR start LE
    mLE: function()  {
        try {
            var _type = this.LE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:137:29: ( 'le' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:137:31: 'le'
            this.match("le"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "LE",

    // $ANTLR start LEAST
    mLEAST: function()  {
        try {
            var _type = this.LEAST;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:138:29: ( 'least' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:138:31: 'least'
            this.match("least"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "LEAST",

    // $ANTLR start LET
    mLET: function()  {
        try {
            var _type = this.LET;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:139:29: ( 'let' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:139:31: 'let'
            this.match("let"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "LET",

    // $ANTLR start LT
    mLT: function()  {
        try {
            var _type = this.LT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:140:29: ( 'lt' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:140:31: 'lt'
            this.match("lt"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "LT",

    // $ANTLR start MOD
    mMOD: function()  {
        try {
            var _type = this.MOD;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:141:29: ( 'mod' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:141:31: 'mod'
            this.match("mod"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "MOD",

    // $ANTLR start MODULE
    mMODULE: function()  {
        try {
            var _type = this.MODULE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:142:29: ( 'module' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:142:31: 'module'
            this.match("module"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "MODULE",

    // $ANTLR start NAMESPACE
    mNAMESPACE: function()  {
        try {
            var _type = this.NAMESPACE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:143:29: ( 'namespace' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:143:31: 'namespace'
            this.match("namespace"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "NAMESPACE",

    // $ANTLR start NE
    mNE: function()  {
        try {
            var _type = this.NE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:144:29: ( 'ne' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:144:31: 'ne'
            this.match("ne"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "NE",

    // $ANTLR start NO_INHERIT
    mNO_INHERIT: function()  {
        try {
            var _type = this.NO_INHERIT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:145:29: ( 'no-inherit' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:145:31: 'no-inherit'
            this.match("no-inherit"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "NO_INHERIT",

    // $ANTLR start NO_PRESERVE
    mNO_PRESERVE: function()  {
        try {
            var _type = this.NO_PRESERVE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:146:29: ( 'no-preserve' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:146:31: 'no-preserve'
            this.match("no-preserve"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "NO_PRESERVE",

    // $ANTLR start NODE
    mNODE: function()  {
        try {
            var _type = this.NODE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:147:29: ( 'node' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:147:31: 'node'
            this.match("node"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "NODE",

    // $ANTLR start JSON
    mJSON: function()  {
        try {
            var _type = this.JSON;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:148:29: ( 'json' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:148:31: 'json'
            this.match("json"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "JSON",

    // $ANTLR start OF
    mOF: function()  {
        try {
            var _type = this.OF;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:149:29: ( 'of' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:149:31: 'of'
            this.match("of"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "OF",

    // $ANTLR start OPTION
    mOPTION: function()  {
        try {
            var _type = this.OPTION;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:150:29: ( 'option' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:150:31: 'option'
            this.match("option"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "OPTION",

    // $ANTLR start OR
    mOR: function()  {
        try {
            var _type = this.OR;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:151:29: ( 'or' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:151:31: 'or'
            this.match("or"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "OR",

    // $ANTLR start ORDER
    mORDER: function()  {
        try {
            var _type = this.ORDER;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:152:29: ( 'order' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:152:31: 'order'
            this.match("order"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "ORDER",

    // $ANTLR start ORDERED
    mORDERED: function()  {
        try {
            var _type = this.ORDERED;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:153:29: ( 'ordered' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:153:31: 'ordered'
            this.match("ordered"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "ORDERED",

    // $ANTLR start ORDERING
    mORDERING: function()  {
        try {
            var _type = this.ORDERING;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:154:29: ( 'ordering' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:154:31: 'ordering'
            this.match("ordering"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "ORDERING",

    // $ANTLR start PARENT
    mPARENT: function()  {
        try {
            var _type = this.PARENT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:155:29: ( 'parent' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:155:31: 'parent'
            this.match("parent"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "PARENT",

    // $ANTLR start PRECEDING
    mPRECEDING: function()  {
        try {
            var _type = this.PRECEDING;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:156:29: ( 'preceding' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:156:31: 'preceding'
            this.match("preceding"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "PRECEDING",

    // $ANTLR start PRECEDING_SIBLING
    mPRECEDING_SIBLING: function()  {
        try {
            var _type = this.PRECEDING_SIBLING;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:157:29: ( 'preceding-sibling' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:157:31: 'preceding-sibling'
            this.match("preceding-sibling"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "PRECEDING_SIBLING",

    // $ANTLR start PRESERVE
    mPRESERVE: function()  {
        try {
            var _type = this.PRESERVE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:158:29: ( 'preserve' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:158:31: 'preserve'
            this.match("preserve"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "PRESERVE",

    // $ANTLR start PROCESSING_INSTRUCTION
    mPROCESSING_INSTRUCTION: function()  {
        try {
            var _type = this.PROCESSING_INSTRUCTION;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:159:29: ( 'processing-instruction' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:159:31: 'processing-instruction'
            this.match("processing-instruction"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "PROCESSING_INSTRUCTION",

    // $ANTLR start STRUCTURED_ITEM
    mSTRUCTURED_ITEM: function()  {
        try {
            var _type = this.STRUCTURED_ITEM;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:160:29: ( 'structured-item' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:160:31: 'structured-item'
            this.match("structured-item"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "STRUCTURED_ITEM",

    // $ANTLR start JSON_ITEM
    mJSON_ITEM: function()  {
        try {
            var _type = this.JSON_ITEM;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:161:29: ( 'json-item' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:161:31: 'json-item'
            this.match("json-item"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "JSON_ITEM",

    // $ANTLR start OBJECT
    mOBJECT: function()  {
        try {
            var _type = this.OBJECT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:162:29: ( 'object' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:162:31: 'object'
            this.match("object"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "OBJECT",

    // $ANTLR start ARRAY
    mARRAY: function()  {
        try {
            var _type = this.ARRAY;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:163:29: ( 'array' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:163:31: 'array'
            this.match("array"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "ARRAY",

    // $ANTLR start RETURN
    mRETURN: function()  {
        try {
            var _type = this.RETURN;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:164:29: ( 'return' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:164:31: 'return'
            this.match("return"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "RETURN",

    // $ANTLR start SATISFIES
    mSATISFIES: function()  {
        try {
            var _type = this.SATISFIES;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:165:29: ( 'satisfies' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:165:31: 'satisfies'
            this.match("satisfies"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "SATISFIES",

    // $ANTLR start SCHEMA
    mSCHEMA: function()  {
        try {
            var _type = this.SCHEMA;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:166:29: ( 'schema' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:166:31: 'schema'
            this.match("schema"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "SCHEMA",

    // $ANTLR start SCHEMA_ATTRIBUTE
    mSCHEMA_ATTRIBUTE: function()  {
        try {
            var _type = this.SCHEMA_ATTRIBUTE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:167:29: ( 'schema-attribute' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:167:31: 'schema-attribute'
            this.match("schema-attribute"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "SCHEMA_ATTRIBUTE",

    // $ANTLR start SCHEMA_ELEMENT
    mSCHEMA_ELEMENT: function()  {
        try {
            var _type = this.SCHEMA_ELEMENT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:168:29: ( 'schema-element' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:168:31: 'schema-element'
            this.match("schema-element"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "SCHEMA_ELEMENT",

    // $ANTLR start SELF
    mSELF: function()  {
        try {
            var _type = this.SELF;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:169:29: ( 'self' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:169:31: 'self'
            this.match("self"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "SELF",

    // $ANTLR start SOME
    mSOME: function()  {
        try {
            var _type = this.SOME;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:170:29: ( 'some' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:170:31: 'some'
            this.match("some"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "SOME",

    // $ANTLR start STABLE
    mSTABLE: function()  {
        try {
            var _type = this.STABLE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:171:29: ( 'stable' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:171:31: 'stable'
            this.match("stable"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "STABLE",

    // $ANTLR start STRICT
    mSTRICT: function()  {
        try {
            var _type = this.STRICT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:172:29: ( 'strict' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:172:31: 'strict'
            this.match("strict"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "STRICT",

    // $ANTLR start STRIP
    mSTRIP: function()  {
        try {
            var _type = this.STRIP;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:173:29: ( 'strip' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:173:31: 'strip'
            this.match("strip"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "STRIP",

    // $ANTLR start TEXT
    mTEXT: function()  {
        try {
            var _type = this.TEXT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:174:29: ( 'text' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:174:31: 'text'
            this.match("text"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "TEXT",

    // $ANTLR start THEN
    mTHEN: function()  {
        try {
            var _type = this.THEN;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:175:29: ( 'then' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:175:31: 'then'
            this.match("then"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "THEN",

    // $ANTLR start TO
    mTO: function()  {
        try {
            var _type = this.TO;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:176:29: ( 'to' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:176:31: 'to'
            this.match("to"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "TO",

    // $ANTLR start TREAT
    mTREAT: function()  {
        try {
            var _type = this.TREAT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:177:29: ( 'treat' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:177:31: 'treat'
            this.match("treat"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "TREAT",

    // $ANTLR start TYPESWITCH
    mTYPESWITCH: function()  {
        try {
            var _type = this.TYPESWITCH;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:178:29: ( 'typeswitch' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:178:31: 'typeswitch'
            this.match("typeswitch"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "TYPESWITCH",

    // $ANTLR start UNION
    mUNION: function()  {
        try {
            var _type = this.UNION;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:179:29: ( 'union' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:179:31: 'union'
            this.match("union"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "UNION",

    // $ANTLR start UNORDERED
    mUNORDERED: function()  {
        try {
            var _type = this.UNORDERED;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:180:29: ( 'unordered' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:180:31: 'unordered'
            this.match("unordered"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "UNORDERED",

    // $ANTLR start VALIDATE
    mVALIDATE: function()  {
        try {
            var _type = this.VALIDATE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:181:29: ( 'validate' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:181:31: 'validate'
            this.match("validate"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "VALIDATE",

    // $ANTLR start VARIABLE
    mVARIABLE: function()  {
        try {
            var _type = this.VARIABLE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:182:29: ( 'variable' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:182:31: 'variable'
            this.match("variable"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "VARIABLE",

    // $ANTLR start VERSION
    mVERSION: function()  {
        try {
            var _type = this.VERSION;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:183:29: ( 'version' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:183:31: 'version'
            this.match("version"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "VERSION",

    // $ANTLR start WHERE
    mWHERE: function()  {
        try {
            var _type = this.WHERE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:184:29: ( 'where' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:184:31: 'where'
            this.match("where"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "WHERE",

    // $ANTLR start XQUERY
    mXQUERY: function()  {
        try {
            var _type = this.XQUERY;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:185:29: ( 'xquery' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:185:31: 'xquery'
            this.match("xquery"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "XQUERY",

    // $ANTLR start ALLOWING
    mALLOWING: function()  {
        try {
            var _type = this.ALLOWING;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:187:29: ( 'allowing' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:187:31: 'allowing'
            this.match("allowing"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "ALLOWING",

    // $ANTLR start CATCH
    mCATCH: function()  {
        try {
            var _type = this.CATCH;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:188:29: ( 'catch' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:188:31: 'catch'
            this.match("catch"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "CATCH",

    // $ANTLR start CONTEXT
    mCONTEXT: function()  {
        try {
            var _type = this.CONTEXT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:189:29: ( 'context' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:189:31: 'context'
            this.match("context"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "CONTEXT",

    // $ANTLR start COUNT
    mCOUNT: function()  {
        try {
            var _type = this.COUNT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:190:29: ( 'count' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:190:31: 'count'
            this.match("count"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "COUNT",

    // $ANTLR start DECIMAL_FORMAT
    mDECIMAL_FORMAT: function()  {
        try {
            var _type = this.DECIMAL_FORMAT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:191:29: ( 'decimal-format' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:191:31: 'decimal-format'
            this.match("decimal-format"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "DECIMAL_FORMAT",

    // $ANTLR start DECIMAL_SEPARATOR
    mDECIMAL_SEPARATOR: function()  {
        try {
            var _type = this.DECIMAL_SEPARATOR;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:192:29: ( 'decimal-separator' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:192:31: 'decimal-separator'
            this.match("decimal-separator"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "DECIMAL_SEPARATOR",

    // $ANTLR start DIGIT
    mDIGIT: function()  {
        try {
            var _type = this.DIGIT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:193:29: ( 'digit' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:193:31: 'digit'
            this.match("digit"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "DIGIT",

    // $ANTLR start END
    mEND: function()  {
        try {
            var _type = this.END;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:194:29: ( 'end' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:194:31: 'end'
            this.match("end"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "END",

    // $ANTLR start GROUP
    mGROUP: function()  {
        try {
            var _type = this.GROUP;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:195:29: ( 'group' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:195:31: 'group'
            this.match("group"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "GROUP",

    // $ANTLR start GROUPING_SEPARATOR
    mGROUPING_SEPARATOR: function()  {
        try {
            var _type = this.GROUPING_SEPARATOR;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:196:29: ( 'grouping-separator' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:196:31: 'grouping-separator'
            this.match("grouping-separator"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "GROUPING_SEPARATOR",

    // $ANTLR start INFINITY
    mINFINITY: function()  {
        try {
            var _type = this.INFINITY;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:197:29: ( 'infinity' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:197:31: 'infinity'
            this.match("infinity"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "INFINITY",

    // $ANTLR start MINUS_SIGN
    mMINUS_SIGN: function()  {
        try {
            var _type = this.MINUS_SIGN;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:198:29: ( 'minus-sign' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:198:31: 'minus-sign'
            this.match("minus-sign"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "MINUS_SIGN",

    // $ANTLR start NAMESPACE_NODE
    mNAMESPACE_NODE: function()  {
        try {
            var _type = this.NAMESPACE_NODE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:199:29: ( 'namespace-node' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:199:31: 'namespace-node'
            this.match("namespace-node"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "NAMESPACE_NODE",

    // $ANTLR start NAN
    mNAN: function()  {
        try {
            var _type = this.NAN;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:200:29: ( 'NaN' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:200:31: 'NaN'
            this.match("NaN"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "NAN",

    // $ANTLR start NEXT
    mNEXT: function()  {
        try {
            var _type = this.NEXT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:201:29: ( 'next' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:201:31: 'next'
            this.match("next"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "NEXT",

    // $ANTLR start ONLY
    mONLY: function()  {
        try {
            var _type = this.ONLY;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:202:29: ( 'only' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:202:31: 'only'
            this.match("only"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "ONLY",

    // $ANTLR start PATTERN_SEPARATOR
    mPATTERN_SEPARATOR: function()  {
        try {
            var _type = this.PATTERN_SEPARATOR;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:203:29: ( 'pattern-separator' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:203:31: 'pattern-separator'
            this.match("pattern-separator"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "PATTERN_SEPARATOR",

    // $ANTLR start PERCENT
    mPERCENT: function()  {
        try {
            var _type = this.PERCENT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:204:29: ( 'percent' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:204:31: 'percent'
            this.match("percent"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "PERCENT",

    // $ANTLR start PER_MILLE
    mPER_MILLE: function()  {
        try {
            var _type = this.PER_MILLE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:205:29: ( 'per-mille' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:205:31: 'per-mille'
            this.match("per-mille"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "PER_MILLE",

    // $ANTLR start PREVIOUS
    mPREVIOUS: function()  {
        try {
            var _type = this.PREVIOUS;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:206:29: ( 'previous' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:206:31: 'previous'
            this.match("previous"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "PREVIOUS",

    // $ANTLR start SLIDING
    mSLIDING: function()  {
        try {
            var _type = this.SLIDING;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:207:29: ( 'sliding' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:207:31: 'sliding'
            this.match("sliding"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "SLIDING",

    // $ANTLR start START
    mSTART: function()  {
        try {
            var _type = this.START;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:208:29: ( 'start' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:208:31: 'start'
            this.match("start"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "START",

    // $ANTLR start SWITCH
    mSWITCH: function()  {
        try {
            var _type = this.SWITCH;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:209:29: ( 'switch' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:209:31: 'switch'
            this.match("switch"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "SWITCH",

    // $ANTLR start TRY
    mTRY: function()  {
        try {
            var _type = this.TRY;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:210:29: ( 'try' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:210:31: 'try'
            this.match("try"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "TRY",

    // $ANTLR start TUMBLING
    mTUMBLING: function()  {
        try {
            var _type = this.TUMBLING;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:211:29: ( 'tumbling' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:211:31: 'tumbling'
            this.match("tumbling"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "TUMBLING",

    // $ANTLR start TYPE
    mTYPE: function()  {
        try {
            var _type = this.TYPE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:212:29: ( 'type' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:212:31: 'type'
            this.match("type"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "TYPE",

    // $ANTLR start WHEN
    mWHEN: function()  {
        try {
            var _type = this.WHEN;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:213:29: ( 'when' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:213:31: 'when'
            this.match("when"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "WHEN",

    // $ANTLR start WINDOW
    mWINDOW: function()  {
        try {
            var _type = this.WINDOW;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:214:29: ( 'window' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:214:31: 'window'
            this.match("window"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "WINDOW",

    // $ANTLR start ZERO_DIGIT
    mZERO_DIGIT: function()  {
        try {
            var _type = this.ZERO_DIGIT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:215:29: ( 'zero-digit' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:215:31: 'zero-digit'
            this.match("zero-digit"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "ZERO_DIGIT",

    // $ANTLR start AFTER
    mAFTER: function()  {
        try {
            var _type = this.AFTER;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:217:29: ( 'after' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:217:31: 'after'
            this.match("after"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "AFTER",

    // $ANTLR start BEFORE
    mBEFORE: function()  {
        try {
            var _type = this.BEFORE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:218:29: ( 'before' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:218:31: 'before'
            this.match("before"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "BEFORE",

    // $ANTLR start COPY
    mCOPY: function()  {
        try {
            var _type = this.COPY;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:219:29: ( 'copy' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:219:31: 'copy'
            this.match("copy"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "COPY",

    // $ANTLR start DELETE
    mDELETE: function()  {
        try {
            var _type = this.DELETE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:220:29: ( 'delete' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:220:31: 'delete'
            this.match("delete"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "DELETE",

    // $ANTLR start FIRST
    mFIRST: function()  {
        try {
            var _type = this.FIRST;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:221:29: ( 'first' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:221:31: 'first'
            this.match("first"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "FIRST",

    // $ANTLR start INSERT
    mINSERT: function()  {
        try {
            var _type = this.INSERT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:222:29: ( 'insert' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:222:31: 'insert'
            this.match("insert"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "INSERT",

    // $ANTLR start INTO
    mINTO: function()  {
        try {
            var _type = this.INTO;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:223:29: ( 'into' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:223:31: 'into'
            this.match("into"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "INTO",

    // $ANTLR start POSITION
    mPOSITION: function()  {
        try {
            var _type = this.POSITION;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:224:29: ( 'position' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:224:31: 'position'
            this.match("position"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "POSITION",

    // $ANTLR start APPEND
    mAPPEND: function()  {
        try {
            var _type = this.APPEND;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:225:29: ( 'append' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:225:31: 'append'
            this.match("append"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "APPEND",

    // $ANTLR start LAST
    mLAST: function()  {
        try {
            var _type = this.LAST;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:226:29: ( 'last' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:226:31: 'last'
            this.match("last"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "LAST",

    // $ANTLR start MODIFY
    mMODIFY: function()  {
        try {
            var _type = this.MODIFY;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:227:29: ( 'modify' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:227:31: 'modify'
            this.match("modify"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "MODIFY",

    // $ANTLR start NODES
    mNODES: function()  {
        try {
            var _type = this.NODES;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:228:29: ( 'nodes' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:228:31: 'nodes'
            this.match("nodes"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "NODES",

    // $ANTLR start RENAME
    mRENAME: function()  {
        try {
            var _type = this.RENAME;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:229:29: ( 'rename' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:229:31: 'rename'
            this.match("rename"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "RENAME",

    // $ANTLR start REPLACE
    mREPLACE: function()  {
        try {
            var _type = this.REPLACE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:230:29: ( 'replace' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:230:31: 'replace'
            this.match("replace"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "REPLACE",

    // $ANTLR start REVALIDATION
    mREVALIDATION: function()  {
        try {
            var _type = this.REVALIDATION;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:231:29: ( 'revalidation' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:231:31: 'revalidation'
            this.match("revalidation"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "REVALIDATION",

    // $ANTLR start SKIP
    mSKIP: function()  {
        try {
            var _type = this.SKIP;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:232:29: ( 'skip' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:232:31: 'skip'
            this.match("skip"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "SKIP",

    // $ANTLR start UPDATING
    mUPDATING: function()  {
        try {
            var _type = this.UPDATING;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:233:29: ( 'updating' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:233:31: 'updating'
            this.match("updating"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "UPDATING",

    // $ANTLR start VALUE
    mVALUE: function()  {
        try {
            var _type = this.VALUE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:234:29: ( 'value' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:234:31: 'value'
            this.match("value"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "VALUE",

    // $ANTLR start WITH
    mWITH: function()  {
        try {
            var _type = this.WITH;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:235:29: ( 'with' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:235:31: 'with'
            this.match("with"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "WITH",

    // $ANTLR start ALL
    mALL: function()  {
        try {
            var _type = this.ALL;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:237:29: ( 'all' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:237:31: 'all'
            this.match("all"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "ALL",

    // $ANTLR start ANY
    mANY: function()  {
        try {
            var _type = this.ANY;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:238:29: ( 'any' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:238:31: 'any'
            this.match("any"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "ANY",

    // $ANTLR start CONTAINS
    mCONTAINS: function()  {
        try {
            var _type = this.CONTAINS;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:239:29: ( 'contains' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:239:31: 'contains'
            this.match("contains"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "CONTAINS",

    // $ANTLR start CONTENT
    mCONTENT: function()  {
        try {
            var _type = this.CONTENT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:240:29: ( 'content' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:240:31: 'content'
            this.match("content"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "CONTENT",

    // $ANTLR start DIACRITICS
    mDIACRITICS: function()  {
        try {
            var _type = this.DIACRITICS;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:241:29: ( 'diacritics' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:241:31: 'diacritics'
            this.match("diacritics"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "DIACRITICS",

    // $ANTLR start DIFFERENT
    mDIFFERENT: function()  {
        try {
            var _type = this.DIFFERENT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:242:29: ( 'different' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:242:31: 'different'
            this.match("different"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "DIFFERENT",

    // $ANTLR start DISTANCE
    mDISTANCE: function()  {
        try {
            var _type = this.DISTANCE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:243:29: ( 'distance' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:243:31: 'distance'
            this.match("distance"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "DISTANCE",

    // $ANTLR start ENTIRE
    mENTIRE: function()  {
        try {
            var _type = this.ENTIRE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:244:29: ( 'entire' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:244:31: 'entire'
            this.match("entire"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "ENTIRE",

    // $ANTLR start EXACTLY
    mEXACTLY: function()  {
        try {
            var _type = this.EXACTLY;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:245:29: ( 'exactly' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:245:31: 'exactly'
            this.match("exactly"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "EXACTLY",

    // $ANTLR start FROM
    mFROM: function()  {
        try {
            var _type = this.FROM;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:246:29: ( 'from' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:246:31: 'from'
            this.match("from"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "FROM",

    // $ANTLR start FT_OPTION
    mFT_OPTION: function()  {
        try {
            var _type = this.FT_OPTION;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:247:29: ( 'ft-option' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:247:31: 'ft-option'
            this.match("ft-option"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "FT_OPTION",

    // $ANTLR start FTAND
    mFTAND: function()  {
        try {
            var _type = this.FTAND;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:248:29: ( 'ftand' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:248:31: 'ftand'
            this.match("ftand"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "FTAND",

    // $ANTLR start FTNOT
    mFTNOT: function()  {
        try {
            var _type = this.FTNOT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:249:29: ( 'ftnot' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:249:31: 'ftnot'
            this.match("ftnot"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "FTNOT",

    // $ANTLR start FTOR
    mFTOR: function()  {
        try {
            var _type = this.FTOR;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:250:29: ( 'ftor' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:250:31: 'ftor'
            this.match("ftor"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "FTOR",

    // $ANTLR start INSENSITIVE
    mINSENSITIVE: function()  {
        try {
            var _type = this.INSENSITIVE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:251:29: ( 'insensitive' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:251:31: 'insensitive'
            this.match("insensitive"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "INSENSITIVE",

    // $ANTLR start LANGUAGE
    mLANGUAGE: function()  {
        try {
            var _type = this.LANGUAGE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:252:29: ( 'language' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:252:31: 'language'
            this.match("language"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "LANGUAGE",

    // $ANTLR start LEVELS
    mLEVELS: function()  {
        try {
            var _type = this.LEVELS;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:253:29: ( 'levels' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:253:31: 'levels'
            this.match("levels"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "LEVELS",

    // $ANTLR start LOWERCASE
    mLOWERCASE: function()  {
        try {
            var _type = this.LOWERCASE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:254:29: ( 'lowercase' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:254:31: 'lowercase'
            this.match("lowercase"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "LOWERCASE",

    // $ANTLR start MOST
    mMOST: function()  {
        try {
            var _type = this.MOST;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:255:29: ( 'most' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:255:31: 'most'
            this.match("most"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "MOST",

    // $ANTLR start NO
    mNO: function()  {
        try {
            var _type = this.NO;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:256:29: ( 'no' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:256:31: 'no'
            this.match("no"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "NO",

    // $ANTLR start NOT
    mNOT: function()  {
        try {
            var _type = this.NOT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:257:29: ( 'not' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:257:31: 'not'
            this.match("not"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "NOT",

    // $ANTLR start OCCURS
    mOCCURS: function()  {
        try {
            var _type = this.OCCURS;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:258:29: ( 'occurs' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:258:31: 'occurs'
            this.match("occurs"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "OCCURS",

    // $ANTLR start PARAGRAPH
    mPARAGRAPH: function()  {
        try {
            var _type = this.PARAGRAPH;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:259:29: ( 'paragraph' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:259:31: 'paragraph'
            this.match("paragraph"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "PARAGRAPH",

    // $ANTLR start PARAGRAPHS
    mPARAGRAPHS: function()  {
        try {
            var _type = this.PARAGRAPHS;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:260:29: ( 'paragraphs' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:260:31: 'paragraphs'
            this.match("paragraphs"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "PARAGRAPHS",

    // $ANTLR start PHRASE
    mPHRASE: function()  {
        try {
            var _type = this.PHRASE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:261:29: ( 'phrase' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:261:31: 'phrase'
            this.match("phrase"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "PHRASE",

    // $ANTLR start RELATIONSHIP
    mRELATIONSHIP: function()  {
        try {
            var _type = this.RELATIONSHIP;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:262:29: ( 'relationship' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:262:31: 'relationship'
            this.match("relationship"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "RELATIONSHIP",

    // $ANTLR start SAME
    mSAME: function()  {
        try {
            var _type = this.SAME;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:263:29: ( 'same' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:263:31: 'same'
            this.match("same"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "SAME",

    // $ANTLR start SCORE
    mSCORE: function()  {
        try {
            var _type = this.SCORE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:264:29: ( 'score' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:264:31: 'score'
            this.match("score"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "SCORE",

    // $ANTLR start SENSITIVE
    mSENSITIVE: function()  {
        try {
            var _type = this.SENSITIVE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:265:29: ( 'sensitive' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:265:31: 'sensitive'
            this.match("sensitive"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "SENSITIVE",

    // $ANTLR start SENTENCE
    mSENTENCE: function()  {
        try {
            var _type = this.SENTENCE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:266:29: ( 'sentence' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:266:31: 'sentence'
            this.match("sentence"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "SENTENCE",

    // $ANTLR start SENTENCES
    mSENTENCES: function()  {
        try {
            var _type = this.SENTENCES;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:267:29: ( 'sentences' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:267:31: 'sentences'
            this.match("sentences"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "SENTENCES",

    // $ANTLR start STEMMING
    mSTEMMING: function()  {
        try {
            var _type = this.STEMMING;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:268:29: ( 'stemming' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:268:31: 'stemming'
            this.match("stemming"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "STEMMING",

    // $ANTLR start STOP
    mSTOP: function()  {
        try {
            var _type = this.STOP;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:269:29: ( 'stop' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:269:31: 'stop'
            this.match("stop"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "STOP",

    // $ANTLR start THESAURUS
    mTHESAURUS: function()  {
        try {
            var _type = this.THESAURUS;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:270:29: ( 'thesaurus' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:270:31: 'thesaurus'
            this.match("thesaurus"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "THESAURUS",

    // $ANTLR start TIMES
    mTIMES: function()  {
        try {
            var _type = this.TIMES;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:271:29: ( 'times' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:271:31: 'times'
            this.match("times"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "TIMES",

    // $ANTLR start UPPERCASE
    mUPPERCASE: function()  {
        try {
            var _type = this.UPPERCASE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:272:29: ( 'uppercase' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:272:31: 'uppercase'
            this.match("uppercase"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "UPPERCASE",

    // $ANTLR start USING
    mUSING: function()  {
        try {
            var _type = this.USING;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:273:29: ( 'using' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:273:31: 'using'
            this.match("using"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "USING",

    // $ANTLR start WEIGHT
    mWEIGHT: function()  {
        try {
            var _type = this.WEIGHT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:274:29: ( 'weight' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:274:31: 'weight'
            this.match("weight"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "WEIGHT",

    // $ANTLR start WILDCARDS
    mWILDCARDS: function()  {
        try {
            var _type = this.WILDCARDS;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:275:29: ( 'wildcards' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:275:31: 'wildcards'
            this.match("wildcards"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "WILDCARDS",

    // $ANTLR start WITHOUT
    mWITHOUT: function()  {
        try {
            var _type = this.WITHOUT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:276:29: ( 'without' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:276:31: 'without'
            this.match("without"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "WITHOUT",

    // $ANTLR start WORD
    mWORD: function()  {
        try {
            var _type = this.WORD;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:277:29: ( 'word' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:277:31: 'word'
            this.match("word"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "WORD",

    // $ANTLR start WORDS
    mWORDS: function()  {
        try {
            var _type = this.WORDS;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:278:29: ( 'words' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:278:31: 'words'
            this.match("words"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "WORDS",

    // $ANTLR start BREAK
    mBREAK: function()  {
        try {
            var _type = this.BREAK;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:280:29: ( 'break' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:280:31: 'break'
            this.match("break"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "BREAK",

    // $ANTLR start CONTINUE
    mCONTINUE: function()  {
        try {
            var _type = this.CONTINUE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:281:29: ( 'continue' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:281:31: 'continue'
            this.match("continue"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "CONTINUE",

    // $ANTLR start EXIT
    mEXIT: function()  {
        try {
            var _type = this.EXIT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:282:29: ( 'exit' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:282:31: 'exit'
            this.match("exit"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "EXIT",

    // $ANTLR start LOOP
    mLOOP: function()  {
        try {
            var _type = this.LOOP;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:283:29: ( 'loop' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:283:31: 'loop'
            this.match("loop"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "LOOP",

    // $ANTLR start RETURNING
    mRETURNING: function()  {
        try {
            var _type = this.RETURNING;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:284:29: ( 'returning' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:284:31: 'returning'
            this.match("returning"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "RETURNING",

    // $ANTLR start WHILE
    mWHILE: function()  {
        try {
            var _type = this.WHILE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:285:29: ( 'while' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:285:31: 'while'
            this.match("while"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "WHILE",

    // $ANTLR start CHECK
    mCHECK: function()  {
        try {
            var _type = this.CHECK;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:287:29: ( 'check' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:287:31: 'check'
            this.match("check"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "CHECK",

    // $ANTLR start COLLECTION
    mCOLLECTION: function()  {
        try {
            var _type = this.COLLECTION;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:288:29: ( 'collection' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:288:31: 'collection'
            this.match("collection"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "COLLECTION",

    // $ANTLR start CONSTRAINT
    mCONSTRAINT: function()  {
        try {
            var _type = this.CONSTRAINT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:289:29: ( 'constraint' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:289:31: 'constraint'
            this.match("constraint"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "CONSTRAINT",

    // $ANTLR start FOREACH
    mFOREACH: function()  {
        try {
            var _type = this.FOREACH;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:290:29: ( 'foreach' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:290:31: 'foreach'
            this.match("foreach"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "FOREACH",

    // $ANTLR start FOREIGN
    mFOREIGN: function()  {
        try {
            var _type = this.FOREIGN;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:291:29: ( 'foreign' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:291:31: 'foreign'
            this.match("foreign"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "FOREIGN",

    // $ANTLR start INDEX
    mINDEX: function()  {
        try {
            var _type = this.INDEX;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:292:29: ( 'index' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:292:31: 'index'
            this.match("index"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "INDEX",

    // $ANTLR start INTEGRITY
    mINTEGRITY: function()  {
        try {
            var _type = this.INTEGRITY;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:293:29: ( 'integrity' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:293:31: 'integrity'
            this.match("integrity"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "INTEGRITY",

    // $ANTLR start KEY
    mKEY: function()  {
        try {
            var _type = this.KEY;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:294:29: ( 'key' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:294:31: 'key'
            this.match("key"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "KEY",

    // $ANTLR start ON
    mON: function()  {
        try {
            var _type = this.ON;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:295:29: ( 'on' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:295:31: 'on'
            this.match("on"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "ON",

    // $ANTLR start UNIQUE
    mUNIQUE: function()  {
        try {
            var _type = this.UNIQUE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:296:29: ( 'unique' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:296:31: 'unique'
            this.match("unique"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "UNIQUE",

    // $ANTLR start AMP_ER
    mAMP_ER: function()  {
        try {
            var _type = this.AMP_ER;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:299:9: ( 'amp' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:299:11: 'amp'
            this.match("amp"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "AMP_ER",

    // $ANTLR start APOS_ER
    mAPOS_ER: function()  {
        try {
            var _type = this.APOS_ER;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:300:9: ( 'apos' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:300:11: 'apos'
            this.match("apos"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "APOS_ER",

    // $ANTLR start QUOT_ER
    mQUOT_ER: function()  {
        try {
            var _type = this.QUOT_ER;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:301:9: ( 'quot' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:301:11: 'quot'
            this.match("quot"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "QUOT_ER",

    // $ANTLR start CONCAT
    mCONCAT: function()  {
        try {
            var _type = this.CONCAT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:308:25: ( '||' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:308:27: '||'
            this.match("||"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "CONCAT",

    // $ANTLR start LPAREN
    mLPAREN: function()  {
        try {
            var _type = this.LPAREN;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:309:25: ( '(' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:309:27: '('
            this.match('('); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "LPAREN",

    // $ANTLR start RPAREN
    mRPAREN: function()  {
        try {
            var _type = this.RPAREN;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:310:25: ( ')' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:310:27: ')'
            this.match(')'); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "RPAREN",

    // $ANTLR start DOLLAR
    mDOLLAR: function()  {
        try {
            var _type = this.DOLLAR;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:311:25: ( '$' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:311:27: '$'
            this.match('$'); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "DOLLAR",

    // $ANTLR start L_UNION_BRACKET
    mL_UNION_BRACKET: function()  {
        try {
            var _type = this.L_UNION_BRACKET;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:312:25: ( '{|' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:312:27: '{|'
            this.match("{|"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "L_UNION_BRACKET",

    // $ANTLR start R_UNION_BRACKET
    mR_UNION_BRACKET: function()  {
        try {
            var _type = this.R_UNION_BRACKET;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:313:25: ( '|}' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:313:27: '|}'
            this.match("|}"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "R_UNION_BRACKET",

    // $ANTLR start LBRACKET
    mLBRACKET: function()  {
        try {
            var _type = this.LBRACKET;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:316:25: ( '{' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:316:27: '{'
            this.match('{'); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "LBRACKET",

    // $ANTLR start RBRACKET
    mRBRACKET: function()  {
        try {
            var _type = this.RBRACKET;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:317:25: ( '}' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:317:27: '}'
            this.match('}'); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "RBRACKET",

    // $ANTLR start LSQUARE
    mLSQUARE: function()  {
        try {
            var _type = this.LSQUARE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:318:25: ( '[' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:318:27: '['
            this.match('['); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "LSQUARE",

    // $ANTLR start RSQUARE
    mRSQUARE: function()  {
        try {
            var _type = this.RSQUARE;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:319:25: ( ']' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:319:27: ']'
            this.match(']'); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "RSQUARE",

    // $ANTLR start EQUAL
    mEQUAL: function()  {
        try {
            var _type = this.EQUAL;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:320:25: ( '=' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:320:27: '='
            this.match('='); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "EQUAL",

    // $ANTLR start BIND
    mBIND: function()  {
        try {
            var _type = this.BIND;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:321:25: ( ':=' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:321:27: ':='
            this.match(":="); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "BIND",

    // $ANTLR start NOTEQUAL
    mNOTEQUAL: function()  {
        try {
            var _type = this.NOTEQUAL;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:322:25: ( '!=' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:322:27: '!='
            this.match("!="); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "NOTEQUAL",

    // $ANTLR start ANN_PERCENT
    mANN_PERCENT: function()  {
        try {
            var _type = this.ANN_PERCENT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:323:25: ( '%' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:323:27: '%'
            this.match('%'); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "ANN_PERCENT",

    // $ANTLR start HASH
    mHASH: function()  {
        try {
            var _type = this.HASH;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:324:25: ( '#' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:324:27: '#'
            this.match('#'); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "HASH",

    // $ANTLR start AMP
    mAMP: function()  {
        try {
            var _type = this.AMP;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:325:25: ( '&' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:325:27: '&'
            this.match('&'); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "AMP",

    // $ANTLR start COMMA
    mCOMMA: function()  {
        try {
            var _type = this.COMMA;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:326:25: ( ',' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:326:27: ','
            this.match(','); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "COMMA",

    // $ANTLR start QUESTION
    mQUESTION: function()  {
        try {
            var _type = this.QUESTION;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:327:25: ( '?' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:327:27: '?'
            this.match('?'); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "QUESTION",

    // $ANTLR start STAR
    mSTAR: function()  {
        try {
            var _type = this.STAR;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:328:25: ( '*' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:328:27: '*'
            this.match('*'); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "STAR",

    // $ANTLR start PLUS
    mPLUS: function()  {
        try {
            var _type = this.PLUS;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:329:25: ( '+' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:329:27: '+'
            this.match('+'); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "PLUS",

    // $ANTLR start MINUS
    mMINUS: function()  {
        try {
            var _type = this.MINUS;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:330:25: ( '-' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:330:27: '-'
            this.match('-'); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "MINUS",

    // $ANTLR start SMALLER
    mSMALLER: function()  {
        try {
            var _type = this.SMALLER;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:331:25: ( '<' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:331:27: '<'
            this.match('<'); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "SMALLER",

    // $ANTLR start GREATER
    mGREATER: function()  {
        try {
            var _type = this.GREATER;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:332:25: ( '>' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:332:27: '>'
            this.match('>'); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "GREATER",

    // $ANTLR start SMALLEREQ
    mSMALLEREQ: function()  {
        try {
            var _type = this.SMALLEREQ;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:333:25: ( '<=' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:333:27: '<='
            this.match("<="); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "SMALLEREQ",

    // $ANTLR start GREATEREQ
    mGREATEREQ: function()  {
        try {
            var _type = this.GREATEREQ;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:334:25: ( '>=' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:334:27: '>='
            this.match(">="); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "GREATEREQ",

    // $ANTLR start SMALLER_SMALLER
    mSMALLER_SMALLER: function()  {
        try {
            var _type = this.SMALLER_SMALLER;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:335:25: ( '<<' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:335:27: '<<'
            this.match("<<"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "SMALLER_SMALLER",

    // $ANTLR start GREATER_GREATER
    mGREATER_GREATER: function()  {
        try {
            var _type = this.GREATER_GREATER;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:336:25: ( '>>' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:336:27: '>>'
            this.match(">>"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "GREATER_GREATER",

    // $ANTLR start SLASH
    mSLASH: function()  {
        try {
            var _type = this.SLASH;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:337:25: ( '/' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:337:27: '/'
            this.match('/'); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "SLASH",

    // $ANTLR start SLASH_SLASH
    mSLASH_SLASH: function()  {
        try {
            var _type = this.SLASH_SLASH;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:338:25: ( '//' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:338:27: '//'
            this.match("//"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "SLASH_SLASH",

    // $ANTLR start BANG
    mBANG: function()  {
        try {
            var _type = this.BANG;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:339:25: ( '!' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:339:27: '!'
            this.match('!'); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "BANG",

    // $ANTLR start DOT
    mDOT: function()  {
        try {
            var _type = this.DOT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:340:25: ( '.' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:340:27: '.'
            this.match('.'); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "DOT",

    // $ANTLR start DOT_DOT
    mDOT_DOT: function()  {
        try {
            var _type = this.DOT_DOT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:341:25: ( '..' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:341:27: '..'
            this.match(".."); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "DOT_DOT",

    // $ANTLR start COLON
    mCOLON: function()  {
        try {
            var _type = this.COLON;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:342:25: ( ':' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:342:27: ':'
            this.match(':'); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "COLON",

    // $ANTLR start COLON_COLON
    mCOLON_COLON: function()  {
        try {
            var _type = this.COLON_COLON;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:343:25: ( '::' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:343:27: '::'
            this.match("::"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "COLON_COLON",

    // $ANTLR start EMPTY_CLOSE_TAG
    mEMPTY_CLOSE_TAG: function()  {
        try {
            var _type = this.EMPTY_CLOSE_TAG;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:344:25: ( '/>' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:344:27: '/>'
            this.match("/>"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "EMPTY_CLOSE_TAG",

    // $ANTLR start CLOSE_TAG
    mCLOSE_TAG: function()  {
        try {
            var _type = this.CLOSE_TAG;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:345:25: ( '</' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:345:27: '</'
            this.match("</"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "CLOSE_TAG",

    // $ANTLR start SEMICOLON
    mSEMICOLON: function()  {
        try {
            var _type = this.SEMICOLON;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:346:25: ( ';' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:346:27: ';'
            this.match(';'); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "SEMICOLON",

    // $ANTLR start VBAR
    mVBAR: function()  {
        try {
            var _type = this.VBAR;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:347:25: ( '|' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:347:27: '|'
            this.match('|'); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "VBAR",

    // $ANTLR start PRAGMA_START
    mPRAGMA_START: function()  {
        try {
            var _type = this.PRAGMA_START;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:348:25: ( '(#' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:348:27: '(#'
            this.match("(#"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "PRAGMA_START",

    // $ANTLR start PRAGMA_END
    mPRAGMA_END: function()  {
        try {
            var _type = this.PRAGMA_END;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:349:25: ( '#)' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:349:27: '#)'
            this.match("#)"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "PRAGMA_END",

    // $ANTLR start XML_COMMENT_START
    mXML_COMMENT_START: function()  {
        try {
            var _type = this.XML_COMMENT_START;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:350:25: ( '<!--' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:350:27: '<!--'
            this.match("<!--"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "XML_COMMENT_START",

    // $ANTLR start XML_COMMENT_END
    mXML_COMMENT_END: function()  {
        try {
            var _type = this.XML_COMMENT_END;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:351:25: ( '-->' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:351:27: '-->'
            this.match("-->"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "XML_COMMENT_END",

    // $ANTLR start PI_START
    mPI_START: function()  {
        try {
            var _type = this.PI_START;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:352:25: ( '<?' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:352:27: '<?'
            this.match("<?"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "PI_START",

    // $ANTLR start PI_END
    mPI_END: function()  {
        try {
            var _type = this.PI_END;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:353:25: ( '?>' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:353:27: '?>'
            this.match("?>"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "PI_END",

    // $ANTLR start ATTR_SIGN
    mATTR_SIGN: function()  {
        try {
            var _type = this.ATTR_SIGN;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:354:25: ( '@' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:354:27: '@'
            this.match('@'); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "ATTR_SIGN",

    // $ANTLR start Q
    mQ: function()  {
        try {
            var _type = this.Q;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:355:25: ( 'Q' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:355:27: 'Q'
            this.match('Q'); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "Q",

    // $ANTLR start CHARREF_DEC
    mCHARREF_DEC: function()  {
        try {
            var _type = this.CHARREF_DEC;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:356:25: ( '&#' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:356:27: '&#'
            this.match("&#"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "CHARREF_DEC",

    // $ANTLR start CHARREF_HEX
    mCHARREF_HEX: function()  {
        try {
            var _type = this.CHARREF_HEX;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:357:25: ( '&#x' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:357:27: '&#x'
            this.match("&#x"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "CHARREF_HEX",

    // $ANTLR start APOS
    mAPOS: function()  {
        try {
            var _type = this.APOS;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:358:25: ( '\\'' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:358:27: '\\''
            this.match('\''); 
             if (!this.inStr) this.inStr = true; 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "APOS",

    // $ANTLR start QUOT
    mQUOT: function()  {
        try {
            var _type = this.QUOT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:359:25: ( '\"' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:359:27: '\"'
            this.match('\"'); 
             if (!this.inStr) this.inStr = true; 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "QUOT",

    // $ANTLR start L_NCName
    mL_NCName: function()  {
        try {
            var _type = this.L_NCName;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:363:9: ( NCNameStartChar ( NCNameChar )* )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:363:13: NCNameStartChar ( NCNameChar )*
            this.mNCNameStartChar(); 
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:363:29: ( NCNameChar )*
            loop1:
            do {
                var alt1=2;
                var LA1_0 = this.input.LA(1);

                if ( ((LA1_0>='-' && LA1_0<='.')||(LA1_0>='0' && LA1_0<='9')||(LA1_0>='A' && LA1_0<='Z')||LA1_0=='_'||(LA1_0>='a' && LA1_0<='z')) ) {
                    alt1=1;
                }


                switch (alt1) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:363:29: NCNameChar
                    this.mNCNameChar(); 


                    break;

                default :
                    break loop1;
                }
            } while (true);




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "L_NCName",

    // $ANTLR start Letter
    mLetter: function()  {
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:366:29: ( 'a' .. 'z' | 'A' .. 'Z' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:
            if ( (this.input.LA(1)>='A' && this.input.LA(1)<='Z')||(this.input.LA(1)>='a' && this.input.LA(1)<='z') ) {
                this.input.consume();

            }
            else {
                var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
                this.recover(mse);
                throw mse;}




        }
        finally {
        }
    },
    // $ANTLR end "Letter",

    // $ANTLR start HexLetter
    mHexLetter: function()  {
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:367:29: ( 'a' .. 'f' | 'A' .. 'F' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:
            if ( (this.input.LA(1)>='A' && this.input.LA(1)<='F')||(this.input.LA(1)>='a' && this.input.LA(1)<='f') ) {
                this.input.consume();

            }
            else {
                var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
                this.recover(mse);
                throw mse;}




        }
        finally {
        }
    },
    // $ANTLR end "HexLetter",

    // $ANTLR start Digit
    mDigit: function()  {
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:368:29: ( '0' .. '9' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:368:31: '0' .. '9'
            this.matchRange('0','9'); 



        }
        finally {
        }
    },
    // $ANTLR end "Digit",

    // $ANTLR start Digits
    mDigits: function()  {
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:369:29: ( ( Digit )+ )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:369:31: ( Digit )+
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:369:31: ( Digit )+
            var cnt2=0;
            loop2:
            do {
                var alt2=2;
                var LA2_0 = this.input.LA(1);

                if ( ((LA2_0>='0' && LA2_0<='9')) ) {
                    alt2=1;
                }


                switch (alt2) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:369:31: Digit
                    this.mDigit(); 


                    break;

                default :
                    if ( cnt2 >= 1 ) {
                        break loop2;
                    }
                        var eee = new org.antlr.runtime.EarlyExitException(2, this.input);
                        throw eee;
                }
                cnt2++;
            } while (true);




        }
        finally {
        }
    },
    // $ANTLR end "Digits",

    // $ANTLR start NCNameStartChar
    mNCNameStartChar: function()  {
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:371:29: ( Letter | '_' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:
            if ( (this.input.LA(1)>='A' && this.input.LA(1)<='Z')||this.input.LA(1)=='_'||(this.input.LA(1)>='a' && this.input.LA(1)<='z') ) {
                this.input.consume();

            }
            else {
                var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
                this.recover(mse);
                throw mse;}




        }
        finally {
        }
    },
    // $ANTLR end "NCNameStartChar",

    // $ANTLR start NCNameChar
    mNCNameChar: function()  {
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:372:29: ( Letter | Digit | '.' | '-' | '_' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:
            if ( (this.input.LA(1)>='-' && this.input.LA(1)<='.')||(this.input.LA(1)>='0' && this.input.LA(1)<='9')||(this.input.LA(1)>='A' && this.input.LA(1)<='Z')||this.input.LA(1)=='_'||(this.input.LA(1)>='a' && this.input.LA(1)<='z') ) {
                this.input.consume();

            }
            else {
                var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
                this.recover(mse);
                throw mse;}




        }
        finally {
        }
    },
    // $ANTLR end "NCNameChar",

    // $ANTLR start S
    mS: function()  {
        try {
            var _type = this.S;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:375:9: ( ( '\\t' | ' ' | '\\n' | '\\r' )+ )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:375:11: ( '\\t' | ' ' | '\\n' | '\\r' )+
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:375:11: ( '\\t' | ' ' | '\\n' | '\\r' )+
            var cnt3=0;
            loop3:
            do {
                var alt3=2;
                var LA3_0 = this.input.LA(1);

                if ( ((LA3_0>='\t' && LA3_0<='\n')||LA3_0=='\r'||LA3_0==' ') ) {
                    alt3=1;
                }


                switch (alt3) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:
                    if ( (this.input.LA(1)>='\t' && this.input.LA(1)<='\n')||this.input.LA(1)=='\r'||this.input.LA(1)==' ' ) {
                        this.input.consume();

                    }
                    else {
                        var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
                        this.recover(mse);
                        throw mse;}



                    break;

                default :
                    if ( cnt3 >= 1 ) {
                        break loop3;
                    }
                        var eee = new org.antlr.runtime.EarlyExitException(3, this.input);
                        throw eee;
                }
                cnt3++;
            } while (true);

             _channel = HIDDEN; 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "S",

    // $ANTLR start SU
    mSU: function()  {
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:378:9: ( ( '\\t' | ' ' | '\\n' | '\\r' )+ )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:378:11: ( '\\t' | ' ' | '\\n' | '\\r' )+
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:378:11: ( '\\t' | ' ' | '\\n' | '\\r' )+
            var cnt4=0;
            loop4:
            do {
                var alt4=2;
                var LA4_0 = this.input.LA(1);

                if ( ((LA4_0>='\t' && LA4_0<='\n')||LA4_0=='\r'||LA4_0==' ') ) {
                    alt4=1;
                }


                switch (alt4) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:
                    if ( (this.input.LA(1)>='\t' && this.input.LA(1)<='\n')||this.input.LA(1)=='\r'||this.input.LA(1)==' ' ) {
                        this.input.consume();

                    }
                    else {
                        var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
                        this.recover(mse);
                        throw mse;}



                    break;

                default :
                    if ( cnt4 >= 1 ) {
                        break loop4;
                    }
                        var eee = new org.antlr.runtime.EarlyExitException(4, this.input);
                        throw eee;
                }
                cnt4++;
            } while (true);




        }
        finally {
        }
    },
    // $ANTLR end "SU",

    // $ANTLR start L_Pragma
    mL_Pragma: function()  {
        try {
            var _type = this.L_Pragma;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:389:9: ( PRAGMA_START ( SU )? L_NCName COLON L_NCName ( SU ( options {greedy=false; } : . )* )? PRAGMA_END )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:389:11: PRAGMA_START ( SU )? L_NCName COLON L_NCName ( SU ( options {greedy=false; } : . )* )? PRAGMA_END
            this.mPRAGMA_START(); 
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:389:24: ( SU )?
            var alt5=2;
            var LA5_0 = this.input.LA(1);

            if ( ((LA5_0>='\t' && LA5_0<='\n')||LA5_0=='\r'||LA5_0==' ') ) {
                alt5=1;
            }
            switch (alt5) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:389:24: SU
                    this.mSU(); 


                    break;

            }

            this.mL_NCName(); 
            this.mCOLON(); 
            this.mL_NCName(); 
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:389:52: ( SU ( options {greedy=false; } : . )* )?
            var alt7=2;
            var LA7_0 = this.input.LA(1);

            if ( ((LA7_0>='\t' && LA7_0<='\n')||LA7_0=='\r'||LA7_0==' ') ) {
                alt7=1;
            }
            switch (alt7) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:389:53: SU ( options {greedy=false; } : . )*
                    this.mSU(); 
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:389:56: ( options {greedy=false; } : . )*
                    loop6:
                    do {
                        var alt6=2;
                        var LA6_0 = this.input.LA(1);

                        if ( (LA6_0=='#') ) {
                            var LA6_1 = this.input.LA(2);

                            if ( (LA6_1==')') ) {
                                alt6=2;
                            }
                            else if ( ((LA6_1>='\u0000' && LA6_1<='(')||(LA6_1>='*' && LA6_1<='\uFFFF')) ) {
                                alt6=1;
                            }


                        }
                        else if ( ((LA6_0>='\u0000' && LA6_0<='\"')||(LA6_0>='$' && LA6_0<='\uFFFF')) ) {
                            alt6=1;
                        }


                        switch (alt6) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:389:83: .
                            this.matchAny(); 


                            break;

                        default :
                            break loop6;
                        }
                    } while (true);



                    break;

            }

            this.mPRAGMA_END(); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "L_Pragma",

    // $ANTLR start L_DirCommentConstructor
    mL_DirCommentConstructor: function()  {
        try {
            var _type = this.L_DirCommentConstructor;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:399:9: ( XML_COMMENT_START ( options {greedy=false; } : ( . )* ) XML_COMMENT_END )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:399:11: XML_COMMENT_START ( options {greedy=false; } : ( . )* ) XML_COMMENT_END
            this.mXML_COMMENT_START(); 
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:399:29: ( options {greedy=false; } : ( . )* )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:399:56: ( . )*
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:399:56: ( . )*
            loop8:
            do {
                var alt8=2;
                var LA8_0 = this.input.LA(1);

                if ( (LA8_0=='-') ) {
                    var LA8_1 = this.input.LA(2);

                    if ( (LA8_1=='-') ) {
                        var LA8_3 = this.input.LA(3);

                        if ( (LA8_3=='>') ) {
                            alt8=2;
                        }
                        else if ( ((LA8_3>='\u0000' && LA8_3<='=')||(LA8_3>='?' && LA8_3<='\uFFFF')) ) {
                            alt8=1;
                        }


                    }
                    else if ( ((LA8_1>='\u0000' && LA8_1<=',')||(LA8_1>='.' && LA8_1<='\uFFFF')) ) {
                        alt8=1;
                    }


                }
                else if ( ((LA8_0>='\u0000' && LA8_0<=',')||(LA8_0>='.' && LA8_0<='\uFFFF')) ) {
                    alt8=1;
                }


                switch (alt8) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:399:56: .
                    this.matchAny(); 


                    break;

                default :
                    break loop8;
                }
            } while (true);




            this.mXML_COMMENT_END(); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "L_DirCommentConstructor",

    // $ANTLR start L_DirPIConstructor
    mL_DirPIConstructor: function()  {
        try {
            var _type = this.L_DirPIConstructor;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:408:9: ( PI_START ( SU )? L_NCName ( SU ( options {greedy=false; } : ( . )* ) )? PI_END )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:408:11: PI_START ( SU )? L_NCName ( SU ( options {greedy=false; } : ( . )* ) )? PI_END
            this.mPI_START(); 
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:408:20: ( SU )?
            var alt9=2;
            var LA9_0 = this.input.LA(1);

            if ( ((LA9_0>='\t' && LA9_0<='\n')||LA9_0=='\r'||LA9_0==' ') ) {
                alt9=1;
            }
            switch (alt9) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:408:20: SU
                    this.mSU(); 


                    break;

            }

            this.mL_NCName(); 
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:408:33: ( SU ( options {greedy=false; } : ( . )* ) )?
            var alt11=2;
            var LA11_0 = this.input.LA(1);

            if ( ((LA11_0>='\t' && LA11_0<='\n')||LA11_0=='\r'||LA11_0==' ') ) {
                alt11=1;
            }
            switch (alt11) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:408:34: SU ( options {greedy=false; } : ( . )* )
                    this.mSU(); 
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:408:36: ( options {greedy=false; } : ( . )* )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:408:63: ( . )*
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:408:63: ( . )*
                    loop10:
                    do {
                        var alt10=2;
                        var LA10_0 = this.input.LA(1);

                        if ( (LA10_0=='?') ) {
                            var LA10_1 = this.input.LA(2);

                            if ( (LA10_1=='>') ) {
                                alt10=2;
                            }
                            else if ( ((LA10_1>='\u0000' && LA10_1<='=')||(LA10_1>='?' && LA10_1<='\uFFFF')) ) {
                                alt10=1;
                            }


                        }
                        else if ( ((LA10_0>='\u0000' && LA10_0<='>')||(LA10_0>='@' && LA10_0<='\uFFFF')) ) {
                            alt10=1;
                        }


                        switch (alt10) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:408:63: .
                            this.matchAny(); 


                            break;

                        default :
                            break loop10;
                        }
                    } while (true);






                    break;

            }

            this.mPI_END(); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "L_DirPIConstructor",

    // $ANTLR start L_IntegerLiteral
    mL_IntegerLiteral: function()  {
        try {
            var _type = this.L_IntegerLiteral;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:416:9: ( Digits )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:416:13: Digits
            this.mDigits(); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "L_IntegerLiteral",

    // $ANTLR start L_DecimalLiteral
    mL_DecimalLiteral: function()  {
        try {
            var _type = this.L_DecimalLiteral;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:421:9: ( ( '.' Digits ) | ( Digits '.' ( Digit )* ) )
            var alt13=2;
            var LA13_0 = this.input.LA(1);

            if ( (LA13_0=='.') ) {
                alt13=1;
            }
            else if ( ((LA13_0>='0' && LA13_0<='9')) ) {
                alt13=2;
            }
            else {
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 13, 0, this.input);

                throw nvae;
            }
            switch (alt13) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:421:11: ( '.' Digits )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:421:11: ( '.' Digits )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:421:12: '.' Digits
                    this.match('.'); 
                    this.mDigits(); 





                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:421:26: ( Digits '.' ( Digit )* )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:421:26: ( Digits '.' ( Digit )* )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:421:27: Digits '.' ( Digit )*
                    this.mDigits(); 
                    this.match('.'); 
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:421:38: ( Digit )*
                    loop12:
                    do {
                        var alt12=2;
                        var LA12_0 = this.input.LA(1);

                        if ( ((LA12_0>='0' && LA12_0<='9')) ) {
                            alt12=1;
                        }


                        switch (alt12) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:421:38: Digit
                            this.mDigit(); 


                            break;

                        default :
                            break loop12;
                        }
                    } while (true);






                    break;

            }
            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "L_DecimalLiteral",

    // $ANTLR start L_DoubleLiteral
    mL_DoubleLiteral: function()  {
        try {
            var _type = this.L_DoubleLiteral;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:426:9: ( ( ( '.' Digits ) | ( Digits ( '.' ( Digit )* )? ) ) ( 'e' | 'E' ) ( '+' | '-' )? Digits )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:426:11: ( ( '.' Digits ) | ( Digits ( '.' ( Digit )* )? ) ) ( 'e' | 'E' ) ( '+' | '-' )? Digits
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:426:11: ( ( '.' Digits ) | ( Digits ( '.' ( Digit )* )? ) )
            var alt16=2;
            var LA16_0 = this.input.LA(1);

            if ( (LA16_0=='.') ) {
                alt16=1;
            }
            else if ( ((LA16_0>='0' && LA16_0<='9')) ) {
                alt16=2;
            }
            else {
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 16, 0, this.input);

                throw nvae;
            }
            switch (alt16) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:426:12: ( '.' Digits )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:426:12: ( '.' Digits )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:426:13: '.' Digits
                    this.match('.'); 
                    this.mDigits(); 





                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:426:27: ( Digits ( '.' ( Digit )* )? )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:426:27: ( Digits ( '.' ( Digit )* )? )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:426:28: Digits ( '.' ( Digit )* )?
                    this.mDigits(); 
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:426:35: ( '.' ( Digit )* )?
                    var alt15=2;
                    var LA15_0 = this.input.LA(1);

                    if ( (LA15_0=='.') ) {
                        alt15=1;
                    }
                    switch (alt15) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:426:36: '.' ( Digit )*
                            this.match('.'); 
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:426:40: ( Digit )*
                            loop14:
                            do {
                                var alt14=2;
                                var LA14_0 = this.input.LA(1);

                                if ( ((LA14_0>='0' && LA14_0<='9')) ) {
                                    alt14=1;
                                }


                                switch (alt14) {
                                case 1 :
                                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:426:40: Digit
                                    this.mDigit(); 


                                    break;

                                default :
                                    break loop14;
                                }
                            } while (true);



                            break;

                    }






                    break;

            }

            if ( this.input.LA(1)=='E'||this.input.LA(1)=='e' ) {
                this.input.consume();

            }
            else {
                var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
                this.recover(mse);
                throw mse;}

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:426:63: ( '+' | '-' )?
            var alt17=2;
            var LA17_0 = this.input.LA(1);

            if ( (LA17_0=='+'||LA17_0=='-') ) {
                alt17=1;
            }
            switch (alt17) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:
                    if ( this.input.LA(1)=='+'||this.input.LA(1)=='-' ) {
                        this.input.consume();

                    }
                    else {
                        var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
                        this.recover(mse);
                        throw mse;}



                    break;

            }

            this.mDigits(); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "L_DoubleLiteral",

    // $ANTLR start L_Comment
    mL_Comment: function()  {
        try {
            var _type = this.L_Comment;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:431:9: ({...}? => '(:' ( options {greedy=false; } : L_Comment | . )* ':)' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:431:11: {...}? => '(:' ( options {greedy=false; } : L_Comment | . )* ':)'
            if ( !((!this.inStr)) ) {
                throw new org.antlr.runtime.FailedPredicateException(this.input, "L_Comment", "!this.inStr");
            }
            this.match("(:"); 

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:431:33: ( options {greedy=false; } : L_Comment | . )*
            loop18:
            do {
                var alt18=3;
                var LA18_0 = this.input.LA(1);

                if ( (LA18_0==':') ) {
                    var LA18_1 = this.input.LA(2);

                    if ( (LA18_1==')') ) {
                        alt18=3;
                    }
                    else if ( ((LA18_1>='\u0000' && LA18_1<='(')||(LA18_1>='*' && LA18_1<='\uFFFF')) ) {
                        alt18=2;
                    }


                }
                else if ( (LA18_0=='(') ) {
                    var LA18_2 = this.input.LA(2);

                    if ( (LA18_2==':') ) {
                        var LA18_5 = this.input.LA(3);

                        if ( ((!this.inStr)) ) {
                            alt18=1;
                        }
                        else if ( (true) ) {
                            alt18=2;
                        }


                    }
                    else if ( ((LA18_2>='\u0000' && LA18_2<='9')||(LA18_2>=';' && LA18_2<='\uFFFF')) ) {
                        alt18=2;
                    }


                }
                else if ( ((LA18_0>='\u0000' && LA18_0<='\'')||(LA18_0>=')' && LA18_0<='9')||(LA18_0>=';' && LA18_0<='\uFFFF')) ) {
                    alt18=2;
                }


                switch (alt18) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:431:59: L_Comment
                    this.mL_Comment(); 


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:431:71: .
                    this.matchAny(); 


                    break;

                default :
                    break loop18;
                }
            } while (true);

            this.match(":)"); 

             _channel = HIDDEN; this.addComment(this.state.tokenStartCharIndex, (this.getCharIndex()-1)); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "L_Comment",

    // $ANTLR start L_AnyChar
    mL_AnyChar: function()  {
        try {
            var _type = this.L_AnyChar;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:434:11: ( . )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:434:13: .
            this.matchAny(); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "L_AnyChar",

    mTokens: function() {
        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:8: ( ANCESTOR | ANCESTOR_OR_SELF | AND | AS | ASCENDING | AT | ATTRIBUTE | BASE_URI | BOUNDARY_SPACE | BY | CASE | CAST | CASTABLE | CHILD | COLLATION | COMMENT | CONSTRUCTION | COPY_NAMESPACES | DECLARE | DEFAULT | DESCENDANT | DESCENDANT_OR_SELF | DESCENDING | DIV | DOCUMENT | DOCUMENT_NODE | ELEMENT | ELSE | EMPTY | EMPTY_SEQUENCE | ENCODING | EQ | EVERY | EXCEPT | EXTERNAL | FOLLOWING | FOLLOWING_SIBLING | FOR | FUNCTION | GE | GREATEST | GT | IDIV | IF | IMPORT | IN | INHERIT | INSTANCE | INTERSECT | IS | ITEM | LAX | LE | LEAST | LET | LT | MOD | MODULE | NAMESPACE | NE | NO_INHERIT | NO_PRESERVE | NODE | JSON | OF | OPTION | OR | ORDER | ORDERED | ORDERING | PARENT | PRECEDING | PRECEDING_SIBLING | PRESERVE | PROCESSING_INSTRUCTION | STRUCTURED_ITEM | JSON_ITEM | OBJECT | ARRAY | RETURN | SATISFIES | SCHEMA | SCHEMA_ATTRIBUTE | SCHEMA_ELEMENT | SELF | SOME | STABLE | STRICT | STRIP | TEXT | THEN | TO | TREAT | TYPESWITCH | UNION | UNORDERED | VALIDATE | VARIABLE | VERSION | WHERE | XQUERY | ALLOWING | CATCH | CONTEXT | COUNT | DECIMAL_FORMAT | DECIMAL_SEPARATOR | DIGIT | END | GROUP | GROUPING_SEPARATOR | INFINITY | MINUS_SIGN | NAMESPACE_NODE | NAN | NEXT | ONLY | PATTERN_SEPARATOR | PERCENT | PER_MILLE | PREVIOUS | SLIDING | START | SWITCH | TRY | TUMBLING | TYPE | WHEN | WINDOW | ZERO_DIGIT | AFTER | BEFORE | COPY | DELETE | FIRST | INSERT | INTO | POSITION | APPEND | LAST | MODIFY | NODES | RENAME | REPLACE | REVALIDATION | SKIP | UPDATING | VALUE | WITH | ALL | ANY | CONTAINS | CONTENT | DIACRITICS | DIFFERENT | DISTANCE | ENTIRE | EXACTLY | FROM | FT_OPTION | FTAND | FTNOT | FTOR | INSENSITIVE | LANGUAGE | LEVELS | LOWERCASE | MOST | NO | NOT | OCCURS | PARAGRAPH | PARAGRAPHS | PHRASE | RELATIONSHIP | SAME | SCORE | SENSITIVE | SENTENCE | SENTENCES | STEMMING | STOP | THESAURUS | TIMES | UPPERCASE | USING | WEIGHT | WILDCARDS | WITHOUT | WORD | WORDS | BREAK | CONTINUE | EXIT | LOOP | RETURNING | WHILE | CHECK | COLLECTION | CONSTRAINT | FOREACH | FOREIGN | INDEX | INTEGRITY | KEY | ON | UNIQUE | AMP_ER | APOS_ER | QUOT_ER | CONCAT | LPAREN | RPAREN | DOLLAR | L_UNION_BRACKET | R_UNION_BRACKET | LBRACKET | RBRACKET | LSQUARE | RSQUARE | EQUAL | BIND | NOTEQUAL | ANN_PERCENT | HASH | AMP | COMMA | QUESTION | STAR | PLUS | MINUS | SMALLER | GREATER | SMALLEREQ | GREATEREQ | SMALLER_SMALLER | GREATER_GREATER | SLASH | SLASH_SLASH | BANG | DOT | DOT_DOT | COLON | COLON_COLON | EMPTY_CLOSE_TAG | CLOSE_TAG | SEMICOLON | VBAR | PRAGMA_START | PRAGMA_END | XML_COMMENT_START | XML_COMMENT_END | PI_START | PI_END | ATTR_SIGN | Q | CHARREF_DEC | CHARREF_HEX | APOS | QUOT | L_NCName | S | L_Pragma | L_DirCommentConstructor | L_DirPIConstructor | L_IntegerLiteral | L_DecimalLiteral | L_DoubleLiteral | L_Comment | L_AnyChar )
        var alt19=270;
        alt19 = this.dfa19.predict(this.input);
        switch (alt19) {
            case 1 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:10: ANCESTOR
                this.mANCESTOR(); 


                break;
            case 2 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:19: ANCESTOR_OR_SELF
                this.mANCESTOR_OR_SELF(); 


                break;
            case 3 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:36: AND
                this.mAND(); 


                break;
            case 4 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:40: AS
                this.mAS(); 


                break;
            case 5 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:43: ASCENDING
                this.mASCENDING(); 


                break;
            case 6 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:53: AT
                this.mAT(); 


                break;
            case 7 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:56: ATTRIBUTE
                this.mATTRIBUTE(); 


                break;
            case 8 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:66: BASE_URI
                this.mBASE_URI(); 


                break;
            case 9 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:75: BOUNDARY_SPACE
                this.mBOUNDARY_SPACE(); 


                break;
            case 10 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:90: BY
                this.mBY(); 


                break;
            case 11 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:93: CASE
                this.mCASE(); 


                break;
            case 12 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:98: CAST
                this.mCAST(); 


                break;
            case 13 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:103: CASTABLE
                this.mCASTABLE(); 


                break;
            case 14 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:112: CHILD
                this.mCHILD(); 


                break;
            case 15 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:118: COLLATION
                this.mCOLLATION(); 


                break;
            case 16 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:128: COMMENT
                this.mCOMMENT(); 


                break;
            case 17 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:136: CONSTRUCTION
                this.mCONSTRUCTION(); 


                break;
            case 18 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:149: COPY_NAMESPACES
                this.mCOPY_NAMESPACES(); 


                break;
            case 19 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:165: DECLARE
                this.mDECLARE(); 


                break;
            case 20 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:173: DEFAULT
                this.mDEFAULT(); 


                break;
            case 21 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:181: DESCENDANT
                this.mDESCENDANT(); 


                break;
            case 22 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:192: DESCENDANT_OR_SELF
                this.mDESCENDANT_OR_SELF(); 


                break;
            case 23 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:211: DESCENDING
                this.mDESCENDING(); 


                break;
            case 24 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:222: DIV
                this.mDIV(); 


                break;
            case 25 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:226: DOCUMENT
                this.mDOCUMENT(); 


                break;
            case 26 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:235: DOCUMENT_NODE
                this.mDOCUMENT_NODE(); 


                break;
            case 27 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:249: ELEMENT
                this.mELEMENT(); 


                break;
            case 28 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:257: ELSE
                this.mELSE(); 


                break;
            case 29 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:262: EMPTY
                this.mEMPTY(); 


                break;
            case 30 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:268: EMPTY_SEQUENCE
                this.mEMPTY_SEQUENCE(); 


                break;
            case 31 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:283: ENCODING
                this.mENCODING(); 


                break;
            case 32 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:292: EQ
                this.mEQ(); 


                break;
            case 33 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:295: EVERY
                this.mEVERY(); 


                break;
            case 34 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:301: EXCEPT
                this.mEXCEPT(); 


                break;
            case 35 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:308: EXTERNAL
                this.mEXTERNAL(); 


                break;
            case 36 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:317: FOLLOWING
                this.mFOLLOWING(); 


                break;
            case 37 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:327: FOLLOWING_SIBLING
                this.mFOLLOWING_SIBLING(); 


                break;
            case 38 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:345: FOR
                this.mFOR(); 


                break;
            case 39 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:349: FUNCTION
                this.mFUNCTION(); 


                break;
            case 40 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:358: GE
                this.mGE(); 


                break;
            case 41 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:361: GREATEST
                this.mGREATEST(); 


                break;
            case 42 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:370: GT
                this.mGT(); 


                break;
            case 43 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:373: IDIV
                this.mIDIV(); 


                break;
            case 44 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:378: IF
                this.mIF(); 


                break;
            case 45 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:381: IMPORT
                this.mIMPORT(); 


                break;
            case 46 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:388: IN
                this.mIN(); 


                break;
            case 47 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:391: INHERIT
                this.mINHERIT(); 


                break;
            case 48 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:399: INSTANCE
                this.mINSTANCE(); 


                break;
            case 49 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:408: INTERSECT
                this.mINTERSECT(); 


                break;
            case 50 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:418: IS
                this.mIS(); 


                break;
            case 51 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:421: ITEM
                this.mITEM(); 


                break;
            case 52 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:426: LAX
                this.mLAX(); 


                break;
            case 53 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:430: LE
                this.mLE(); 


                break;
            case 54 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:433: LEAST
                this.mLEAST(); 


                break;
            case 55 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:439: LET
                this.mLET(); 


                break;
            case 56 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:443: LT
                this.mLT(); 


                break;
            case 57 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:446: MOD
                this.mMOD(); 


                break;
            case 58 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:450: MODULE
                this.mMODULE(); 


                break;
            case 59 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:457: NAMESPACE
                this.mNAMESPACE(); 


                break;
            case 60 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:467: NE
                this.mNE(); 


                break;
            case 61 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:470: NO_INHERIT
                this.mNO_INHERIT(); 


                break;
            case 62 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:481: NO_PRESERVE
                this.mNO_PRESERVE(); 


                break;
            case 63 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:493: NODE
                this.mNODE(); 


                break;
            case 64 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:498: JSON
                this.mJSON(); 


                break;
            case 65 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:503: OF
                this.mOF(); 


                break;
            case 66 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:506: OPTION
                this.mOPTION(); 


                break;
            case 67 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:513: OR
                this.mOR(); 


                break;
            case 68 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:516: ORDER
                this.mORDER(); 


                break;
            case 69 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:522: ORDERED
                this.mORDERED(); 


                break;
            case 70 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:530: ORDERING
                this.mORDERING(); 


                break;
            case 71 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:539: PARENT
                this.mPARENT(); 


                break;
            case 72 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:546: PRECEDING
                this.mPRECEDING(); 


                break;
            case 73 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:556: PRECEDING_SIBLING
                this.mPRECEDING_SIBLING(); 


                break;
            case 74 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:574: PRESERVE
                this.mPRESERVE(); 


                break;
            case 75 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:583: PROCESSING_INSTRUCTION
                this.mPROCESSING_INSTRUCTION(); 


                break;
            case 76 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:606: STRUCTURED_ITEM
                this.mSTRUCTURED_ITEM(); 


                break;
            case 77 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:622: JSON_ITEM
                this.mJSON_ITEM(); 


                break;
            case 78 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:632: OBJECT
                this.mOBJECT(); 


                break;
            case 79 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:639: ARRAY
                this.mARRAY(); 


                break;
            case 80 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:645: RETURN
                this.mRETURN(); 


                break;
            case 81 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:652: SATISFIES
                this.mSATISFIES(); 


                break;
            case 82 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:662: SCHEMA
                this.mSCHEMA(); 


                break;
            case 83 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:669: SCHEMA_ATTRIBUTE
                this.mSCHEMA_ATTRIBUTE(); 


                break;
            case 84 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:686: SCHEMA_ELEMENT
                this.mSCHEMA_ELEMENT(); 


                break;
            case 85 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:701: SELF
                this.mSELF(); 


                break;
            case 86 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:706: SOME
                this.mSOME(); 


                break;
            case 87 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:711: STABLE
                this.mSTABLE(); 


                break;
            case 88 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:718: STRICT
                this.mSTRICT(); 


                break;
            case 89 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:725: STRIP
                this.mSTRIP(); 


                break;
            case 90 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:731: TEXT
                this.mTEXT(); 


                break;
            case 91 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:736: THEN
                this.mTHEN(); 


                break;
            case 92 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:741: TO
                this.mTO(); 


                break;
            case 93 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:744: TREAT
                this.mTREAT(); 


                break;
            case 94 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:750: TYPESWITCH
                this.mTYPESWITCH(); 


                break;
            case 95 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:761: UNION
                this.mUNION(); 


                break;
            case 96 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:767: UNORDERED
                this.mUNORDERED(); 


                break;
            case 97 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:777: VALIDATE
                this.mVALIDATE(); 


                break;
            case 98 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:786: VARIABLE
                this.mVARIABLE(); 


                break;
            case 99 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:795: VERSION
                this.mVERSION(); 


                break;
            case 100 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:803: WHERE
                this.mWHERE(); 


                break;
            case 101 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:809: XQUERY
                this.mXQUERY(); 


                break;
            case 102 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:816: ALLOWING
                this.mALLOWING(); 


                break;
            case 103 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:825: CATCH
                this.mCATCH(); 


                break;
            case 104 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:831: CONTEXT
                this.mCONTEXT(); 


                break;
            case 105 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:839: COUNT
                this.mCOUNT(); 


                break;
            case 106 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:845: DECIMAL_FORMAT
                this.mDECIMAL_FORMAT(); 


                break;
            case 107 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:860: DECIMAL_SEPARATOR
                this.mDECIMAL_SEPARATOR(); 


                break;
            case 108 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:878: DIGIT
                this.mDIGIT(); 


                break;
            case 109 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:884: END
                this.mEND(); 


                break;
            case 110 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:888: GROUP
                this.mGROUP(); 


                break;
            case 111 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:894: GROUPING_SEPARATOR
                this.mGROUPING_SEPARATOR(); 


                break;
            case 112 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:913: INFINITY
                this.mINFINITY(); 


                break;
            case 113 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:922: MINUS_SIGN
                this.mMINUS_SIGN(); 


                break;
            case 114 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:933: NAMESPACE_NODE
                this.mNAMESPACE_NODE(); 


                break;
            case 115 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:948: NAN
                this.mNAN(); 


                break;
            case 116 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:952: NEXT
                this.mNEXT(); 


                break;
            case 117 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:957: ONLY
                this.mONLY(); 


                break;
            case 118 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:962: PATTERN_SEPARATOR
                this.mPATTERN_SEPARATOR(); 


                break;
            case 119 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:980: PERCENT
                this.mPERCENT(); 


                break;
            case 120 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:988: PER_MILLE
                this.mPER_MILLE(); 


                break;
            case 121 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:998: PREVIOUS
                this.mPREVIOUS(); 


                break;
            case 122 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1007: SLIDING
                this.mSLIDING(); 


                break;
            case 123 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1015: START
                this.mSTART(); 


                break;
            case 124 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1021: SWITCH
                this.mSWITCH(); 


                break;
            case 125 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1028: TRY
                this.mTRY(); 


                break;
            case 126 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1032: TUMBLING
                this.mTUMBLING(); 


                break;
            case 127 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1041: TYPE
                this.mTYPE(); 


                break;
            case 128 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1046: WHEN
                this.mWHEN(); 


                break;
            case 129 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1051: WINDOW
                this.mWINDOW(); 


                break;
            case 130 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1058: ZERO_DIGIT
                this.mZERO_DIGIT(); 


                break;
            case 131 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1069: AFTER
                this.mAFTER(); 


                break;
            case 132 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1075: BEFORE
                this.mBEFORE(); 


                break;
            case 133 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1082: COPY
                this.mCOPY(); 


                break;
            case 134 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1087: DELETE
                this.mDELETE(); 


                break;
            case 135 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1094: FIRST
                this.mFIRST(); 


                break;
            case 136 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1100: INSERT
                this.mINSERT(); 


                break;
            case 137 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1107: INTO
                this.mINTO(); 


                break;
            case 138 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1112: POSITION
                this.mPOSITION(); 


                break;
            case 139 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1121: APPEND
                this.mAPPEND(); 


                break;
            case 140 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1128: LAST
                this.mLAST(); 


                break;
            case 141 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1133: MODIFY
                this.mMODIFY(); 


                break;
            case 142 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1140: NODES
                this.mNODES(); 


                break;
            case 143 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1146: RENAME
                this.mRENAME(); 


                break;
            case 144 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1153: REPLACE
                this.mREPLACE(); 


                break;
            case 145 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1161: REVALIDATION
                this.mREVALIDATION(); 


                break;
            case 146 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1174: SKIP
                this.mSKIP(); 


                break;
            case 147 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1179: UPDATING
                this.mUPDATING(); 


                break;
            case 148 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1188: VALUE
                this.mVALUE(); 


                break;
            case 149 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1194: WITH
                this.mWITH(); 


                break;
            case 150 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1199: ALL
                this.mALL(); 


                break;
            case 151 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1203: ANY
                this.mANY(); 


                break;
            case 152 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1207: CONTAINS
                this.mCONTAINS(); 


                break;
            case 153 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1216: CONTENT
                this.mCONTENT(); 


                break;
            case 154 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1224: DIACRITICS
                this.mDIACRITICS(); 


                break;
            case 155 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1235: DIFFERENT
                this.mDIFFERENT(); 


                break;
            case 156 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1245: DISTANCE
                this.mDISTANCE(); 


                break;
            case 157 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1254: ENTIRE
                this.mENTIRE(); 


                break;
            case 158 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1261: EXACTLY
                this.mEXACTLY(); 


                break;
            case 159 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1269: FROM
                this.mFROM(); 


                break;
            case 160 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1274: FT_OPTION
                this.mFT_OPTION(); 


                break;
            case 161 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1284: FTAND
                this.mFTAND(); 


                break;
            case 162 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1290: FTNOT
                this.mFTNOT(); 


                break;
            case 163 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1296: FTOR
                this.mFTOR(); 


                break;
            case 164 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1301: INSENSITIVE
                this.mINSENSITIVE(); 


                break;
            case 165 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1313: LANGUAGE
                this.mLANGUAGE(); 


                break;
            case 166 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1322: LEVELS
                this.mLEVELS(); 


                break;
            case 167 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1329: LOWERCASE
                this.mLOWERCASE(); 


                break;
            case 168 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1339: MOST
                this.mMOST(); 


                break;
            case 169 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1344: NO
                this.mNO(); 


                break;
            case 170 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1347: NOT
                this.mNOT(); 


                break;
            case 171 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1351: OCCURS
                this.mOCCURS(); 


                break;
            case 172 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1358: PARAGRAPH
                this.mPARAGRAPH(); 


                break;
            case 173 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1368: PARAGRAPHS
                this.mPARAGRAPHS(); 


                break;
            case 174 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1379: PHRASE
                this.mPHRASE(); 


                break;
            case 175 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1386: RELATIONSHIP
                this.mRELATIONSHIP(); 


                break;
            case 176 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1399: SAME
                this.mSAME(); 


                break;
            case 177 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1404: SCORE
                this.mSCORE(); 


                break;
            case 178 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1410: SENSITIVE
                this.mSENSITIVE(); 


                break;
            case 179 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1420: SENTENCE
                this.mSENTENCE(); 


                break;
            case 180 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1429: SENTENCES
                this.mSENTENCES(); 


                break;
            case 181 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1439: STEMMING
                this.mSTEMMING(); 


                break;
            case 182 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1448: STOP
                this.mSTOP(); 


                break;
            case 183 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1453: THESAURUS
                this.mTHESAURUS(); 


                break;
            case 184 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1463: TIMES
                this.mTIMES(); 


                break;
            case 185 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1469: UPPERCASE
                this.mUPPERCASE(); 


                break;
            case 186 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1479: USING
                this.mUSING(); 


                break;
            case 187 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1485: WEIGHT
                this.mWEIGHT(); 


                break;
            case 188 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1492: WILDCARDS
                this.mWILDCARDS(); 


                break;
            case 189 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1502: WITHOUT
                this.mWITHOUT(); 


                break;
            case 190 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1510: WORD
                this.mWORD(); 


                break;
            case 191 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1515: WORDS
                this.mWORDS(); 


                break;
            case 192 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1521: BREAK
                this.mBREAK(); 


                break;
            case 193 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1527: CONTINUE
                this.mCONTINUE(); 


                break;
            case 194 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1536: EXIT
                this.mEXIT(); 


                break;
            case 195 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1541: LOOP
                this.mLOOP(); 


                break;
            case 196 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1546: RETURNING
                this.mRETURNING(); 


                break;
            case 197 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1556: WHILE
                this.mWHILE(); 


                break;
            case 198 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1562: CHECK
                this.mCHECK(); 


                break;
            case 199 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1568: COLLECTION
                this.mCOLLECTION(); 


                break;
            case 200 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1579: CONSTRAINT
                this.mCONSTRAINT(); 


                break;
            case 201 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1590: FOREACH
                this.mFOREACH(); 


                break;
            case 202 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1598: FOREIGN
                this.mFOREIGN(); 


                break;
            case 203 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1606: INDEX
                this.mINDEX(); 


                break;
            case 204 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1612: INTEGRITY
                this.mINTEGRITY(); 


                break;
            case 205 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1622: KEY
                this.mKEY(); 


                break;
            case 206 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1626: ON
                this.mON(); 


                break;
            case 207 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1629: UNIQUE
                this.mUNIQUE(); 


                break;
            case 208 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1636: AMP_ER
                this.mAMP_ER(); 


                break;
            case 209 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1643: APOS_ER
                this.mAPOS_ER(); 


                break;
            case 210 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1651: QUOT_ER
                this.mQUOT_ER(); 


                break;
            case 211 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1659: CONCAT
                this.mCONCAT(); 


                break;
            case 212 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1666: LPAREN
                this.mLPAREN(); 


                break;
            case 213 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1673: RPAREN
                this.mRPAREN(); 


                break;
            case 214 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1680: DOLLAR
                this.mDOLLAR(); 


                break;
            case 215 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1687: L_UNION_BRACKET
                this.mL_UNION_BRACKET(); 


                break;
            case 216 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1703: R_UNION_BRACKET
                this.mR_UNION_BRACKET(); 


                break;
            case 217 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1719: LBRACKET
                this.mLBRACKET(); 


                break;
            case 218 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1728: RBRACKET
                this.mRBRACKET(); 


                break;
            case 219 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1737: LSQUARE
                this.mLSQUARE(); 


                break;
            case 220 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1745: RSQUARE
                this.mRSQUARE(); 


                break;
            case 221 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1753: EQUAL
                this.mEQUAL(); 


                break;
            case 222 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1759: BIND
                this.mBIND(); 


                break;
            case 223 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1764: NOTEQUAL
                this.mNOTEQUAL(); 


                break;
            case 224 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1773: ANN_PERCENT
                this.mANN_PERCENT(); 


                break;
            case 225 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1785: HASH
                this.mHASH(); 


                break;
            case 226 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1790: AMP
                this.mAMP(); 


                break;
            case 227 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1794: COMMA
                this.mCOMMA(); 


                break;
            case 228 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1800: QUESTION
                this.mQUESTION(); 


                break;
            case 229 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1809: STAR
                this.mSTAR(); 


                break;
            case 230 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1814: PLUS
                this.mPLUS(); 


                break;
            case 231 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1819: MINUS
                this.mMINUS(); 


                break;
            case 232 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1825: SMALLER
                this.mSMALLER(); 


                break;
            case 233 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1833: GREATER
                this.mGREATER(); 


                break;
            case 234 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1841: SMALLEREQ
                this.mSMALLEREQ(); 


                break;
            case 235 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1851: GREATEREQ
                this.mGREATEREQ(); 


                break;
            case 236 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1861: SMALLER_SMALLER
                this.mSMALLER_SMALLER(); 


                break;
            case 237 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1877: GREATER_GREATER
                this.mGREATER_GREATER(); 


                break;
            case 238 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1893: SLASH
                this.mSLASH(); 


                break;
            case 239 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1899: SLASH_SLASH
                this.mSLASH_SLASH(); 


                break;
            case 240 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1911: BANG
                this.mBANG(); 


                break;
            case 241 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1916: DOT
                this.mDOT(); 


                break;
            case 242 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1920: DOT_DOT
                this.mDOT_DOT(); 


                break;
            case 243 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1928: COLON
                this.mCOLON(); 


                break;
            case 244 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1934: COLON_COLON
                this.mCOLON_COLON(); 


                break;
            case 245 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1946: EMPTY_CLOSE_TAG
                this.mEMPTY_CLOSE_TAG(); 


                break;
            case 246 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1962: CLOSE_TAG
                this.mCLOSE_TAG(); 


                break;
            case 247 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1972: SEMICOLON
                this.mSEMICOLON(); 


                break;
            case 248 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1982: VBAR
                this.mVBAR(); 


                break;
            case 249 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:1987: PRAGMA_START
                this.mPRAGMA_START(); 


                break;
            case 250 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2000: PRAGMA_END
                this.mPRAGMA_END(); 


                break;
            case 251 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2011: XML_COMMENT_START
                this.mXML_COMMENT_START(); 


                break;
            case 252 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2029: XML_COMMENT_END
                this.mXML_COMMENT_END(); 


                break;
            case 253 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2045: PI_START
                this.mPI_START(); 


                break;
            case 254 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2054: PI_END
                this.mPI_END(); 


                break;
            case 255 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2061: ATTR_SIGN
                this.mATTR_SIGN(); 


                break;
            case 256 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2071: Q
                this.mQ(); 


                break;
            case 257 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2073: CHARREF_DEC
                this.mCHARREF_DEC(); 


                break;
            case 258 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2085: CHARREF_HEX
                this.mCHARREF_HEX(); 


                break;
            case 259 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2097: APOS
                this.mAPOS(); 


                break;
            case 260 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2102: QUOT
                this.mQUOT(); 


                break;
            case 261 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2107: L_NCName
                this.mL_NCName(); 


                break;
            case 262 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2116: S
                this.mS(); 


                break;
            case 263 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2118: L_Pragma
                this.mL_Pragma(); 


                break;
            case 264 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2127: L_DirCommentConstructor
                this.mL_DirCommentConstructor(); 


                break;
            case 265 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2151: L_DirPIConstructor
                this.mL_DirPIConstructor(); 


                break;
            case 266 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2170: L_IntegerLiteral
                this.mL_IntegerLiteral(); 


                break;
            case 267 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2187: L_DecimalLiteral
                this.mL_DecimalLiteral(); 


                break;
            case 268 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2204: L_DoubleLiteral
                this.mL_DoubleLiteral(); 


                break;
            case 269 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2220: L_Comment
                this.mL_Comment(); 


                break;
            case 270 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryLexer.g:1:2230: L_AnyChar
                this.mL_AnyChar(); 


                break;

        }

    }

}, true); // important to pass true to overwrite default implementations

org.antlr.lang.augmentObject(XQueryLexer, {
    DFA19_eotS:
        "\u0001\uffff\u0019\u0042\u0001\u0097\u0001\u009a\u0002\uffff\u0001"+
    "\u009e\u0004\uffff\u0001\u00a5\u0001\u00a7\u0001\uffff\u0001\u00aa\u0001"+
    "\u00ac\u0001\uffff\u0001\u00af\u0002\uffff\u0001\u00b3\u0001\u00b9\u0001"+
    "\u00bc\u0001\u00bf\u0001\u00c1\u0002\uffff\u0001\u00c5\u0004\uffff\u0001"+
    "\u00c9\u0001\uffff\u0001\u0042\u0001\u00d1\u0001\u00d3\u0005\u0042\u0001"+
    "\uffff\u0002\u0042\u0001\u00dc\u000b\u0042\u0001\u00f8\u0007\u0042\u0001"+
    "\u0107\u0001\u0042\u0001\u010a\u0001\u0042\u0001\u010c\u0001\u0042\u0001"+
    "\u0113\u0001\u0114\u0002\u0042\u0001\u011c\u0001\u011d\u0004\u0042\u0001"+
    "\u0125\u0001\u0129\u0001\u0042\u0001\u012b\u0001\u0042\u0001\u012e\u0001"+
    "\u0042\u0001\u0131\u0011\u0042\u0001\u014f\u0012\u0042\u0003\uffff\u0001"+
    "\u0169\u0012\uffff\u0001\u016c\u000c\uffff\u0001\u016e\u0009\uffff\u0001"+
    "\u0170\u0007\uffff\u0001\u00c9\u0001\u0170\u0001\uffff\u0001\u0042\u0001"+
    "\u0173\u0001\u0174\u0001\u0042\u0001\uffff\u0001\u0042\u0001\uffff\u0001"+
    "\u0042\u0001\u0179\u0003\u0042\u0001\u017d\u0002\u0042\u0001\uffff\u000f"+
    "\u0042\u0001\u0192\u0009\u0042\u0001\u019c\u0001\u0042\u0001\uffff\u0006"+
    "\u0042\u0001\u01a5\u0007\u0042\u0001\uffff\u0002\u0042\u0001\uffff\u0001"+
    "\u0042\u0001\uffff\u0006\u0042\u0002\uffff\u0001\u0042\u0001\u01b9\u0003"+
    "\u0042\u0001\u01bd\u0001\u0042\u0002\uffff\u0002\u0042\u0001\u01c3\u0004"+
    "\u0042\u0001\uffff\u0002\u0042\u0001\u01cb\u0001\uffff\u0001\u0042\u0001"+
    "\uffff\u0002\u0042\u0001\uffff\u0002\u0042\u0001\uffff\u001d\u0042\u0001"+
    "\uffff\u0001\u0042\u0001\u01f7\u0013\u0042\u0001\u020e\u0001\u0042\u0001"+
    "\u0210\u0001\u0042\u0008\uffff\u0001\u0170\u0001\u0042\u0002\uffff\u0004"+
    "\u0042\u0001\uffff\u0002\u0042\u0001\u021a\u0001\uffff\u0004\u0042\u0001"+
    "\u021f\u0001\u0221\u0007\u0042\u0001\u022d\u0006\u0042\u0001\uffff\u0006"+
    "\u0042\u0001\u023a\u0002\u0042\u0001\uffff\u0005\u0042\u0001\u0242\u0002"+
    "\u0042\u0001\uffff\u0002\u0042\u0001\u0248\u0003\u0042\u0001\u024c\u0002"+
    "\u0042\u0001\u024f\u0005\u0042\u0001\u0257\u0002\u0042\u0001\u025a\u0001"+
    "\uffff\u0001\u025b\u0002\u0042\u0001\uffff\u0002\u0042\u0001\u0260\u0002"+
    "\u0042\u0001\uffff\u0001\u0263\u0002\u0042\u0001\u0266\u0002\u0042\u0001"+
    "\u026a\u0001\uffff\u0001\u026c\u0003\u0042\u0001\u0270\u0011\u0042\u0001"+
    "\u0283\u0001\u0042\u0001\u0285\u0002\u0042\u0001\u0288\u0002\u0042\u0001"+
    "\u028b\u0002\u0042\u0001\u028e\u0005\u0042\u0001\u0294\u0001\u0295\u0002"+
    "\u0042\u0001\uffff\u0001\u0299\u000d\u0042\u0001\u02a7\u0002\u0042\u0001"+
    "\u02ab\u0002\u0042\u0001\u02af\u0001\u0042\u0001\uffff\u0001\u0042\u0001"+
    "\uffff\u0001\u02b2\u0001\u02b3\u0003\u0042\u0001\u02b8\u0001\u0042\u0001"+
    "\u02ba\u0001\u0042\u0001\uffff\u0003\u0042\u0001\u02bf\u0001\uffff\u0001"+
    "\u0042\u0001\uffff\u0001\u02c1\u0001\u02c2\u0001\u02c3\u0008\u0042\u0001"+
    "\uffff\u0001\u02cd\u0005\u0042\u0001\u02d3\u0005\u0042\u0001\uffff\u0001"+
    "\u02da\u0002\u0042\u0001\u02dd\u0003\u0042\u0001\uffff\u0004\u0042\u0001"+
    "\u02e5\u0001\uffff\u0001\u0042\u0001\u02e7\u0001\u02e8\u0001\uffff\u0001"+
    "\u0042\u0001\u02eb\u0001\uffff\u0007\u0042\u0001\uffff\u0001\u0042\u0001"+
    "\u02f4\u0002\uffff\u0001\u0042\u0001\u02f6\u0002\u0042\u0001\uffff\u0002"+
    "\u0042\u0001\uffff\u0002\u0042\u0001\uffff\u0002\u0042\u0001\u02ff\u0001"+
    "\uffff\u0001\u0042\u0001\uffff\u0001\u0042\u0001\u0304\u0001\u0042\u0001"+
    "\uffff\u000e\u0042\u0001\u0314\u0001\u0042\u0001\u0316\u0001\u0042\u0001"+
    "\uffff\u0001\u0042\u0001\uffff\u0001\u0042\u0001\u031a\u0001\uffff\u0002"+
    "\u0042\u0001\uffff\u0002\u0042\u0001\uffff\u0005\u0042\u0002\uffff\u0001"+
    "\u0042\u0001\u0325\u0001\u0042\u0001\uffff\u0001\u0042\u0001\u0328\u0001"+
    "\u0329\u0004\u0042\u0001\u032e\u0001\u0042\u0001\u0330\u0002\u0042\u0001"+
    "\u0333\u0001\uffff\u0001\u0334\u0002\u0042\u0001\uffff\u0002\u0042\u0001"+
    "\u0339\u0001\uffff\u0002\u0042\u0003\uffff\u0003\u0042\u0001\uffff\u0001"+
    "\u0042\u0001\uffff\u0001\u0340\u0002\u0042\u0001\u0343\u0001\uffff\u0001"+
    "\u0042\u0003\uffff\u0009\u0042\u0001\uffff\u0004\u0042\u0001\u0353\u0001"+
    "\uffff\u0006\u0042\u0001\uffff\u0001\u0042\u0001\u035b\u0001\uffff\u0001"+
    "\u035c\u0006\u0042\u0001\uffff\u0001\u0042\u0002\uffff\u0002\u0042\u0001"+
    "\uffff\u0001\u0366\u0002\u0042\u0001\u0369\u0004\u0042\u0001\uffff\u0001"+
    "\u0042\u0001\uffff\u0001\u036f\u0001\u0042\u0001\u0371\u0001\u0372\u0004"+
    "\u0042\u0001\uffff\u0001\u0042\u0001\u0378\u0002\u0042\u0001\uffff\u0001"+
    "\u037b\u0001\u037c\u0001\u037d\u0009\u0042\u0001\u0387\u0001\u0042\u0001"+
    "\u0389\u0001\uffff\u0001\u038a\u0001\uffff\u0002\u0042\u0001\u038e\u0001"+
    "\uffff\u0003\u0042\u0001\u0392\u0001\u0394\u0001\u0395\u0004\u0042\u0001"+
    "\uffff\u0002\u0042\u0002\uffff\u0001\u039c\u0003\u0042\u0001\uffff\u0001"+
    "\u0042\u0001\uffff\u0002\u0042\u0002\uffff\u0001\u03a3\u0002\u0042\u0001"+
    "\u03a6\u0001\uffff\u0001\u03a7\u0005\u0042\u0001\uffff\u0002\u0042\u0001"+
    "\uffff\u0003\u0042\u0001\u03b2\u0002\u0042\u0001\u03b5\u0001\u03b6\u0003"+
    "\u0042\u0001\u03ba\u0001\u0042\u0001\u03bc\u0001\u0042\u0001\uffff\u0004"+
    "\u0042\u0001\u03c3\u0002\u0042\u0002\uffff\u0001\u0042\u0001\u03c7\u0001"+
    "\u0042\u0001\u03c9\u0001\u03ca\u0004\u0042\u0001\uffff\u0001\u03cf\u0001"+
    "\u0042\u0001\uffff\u0005\u0042\u0001\uffff\u0001\u0042\u0002\uffff\u0005"+
    "\u0042\u0001\uffff\u0001\u03dc\u0001\u0042\u0003\uffff\u0006\u0042\u0001"+
    "\u03e4\u0002\u0042\u0001\uffff\u0001\u0042\u0002\uffff\u0003\u0042\u0001"+
    "\uffff\u0002\u0042\u0001\u03ee\u0001\uffff\u0001\u0042\u0002\uffff\u0001"+
    "\u03f0\u0005\u0042\u0001\uffff\u0005\u0042\u0001\u03fb\u0001\uffff\u0001"+
    "\u03fc\u0001\u0042\u0002\uffff\u0001\u0042\u0001\u0400\u0002\u0042\u0001"+
    "\u0403\u0001\u0404\u0001\u0042\u0001\u0406\u0002\u0042\u0001\uffff\u0002"+
    "\u0042\u0002\uffff\u0001\u040b\u0001\u040c\u0001\u0042\u0001\uffff\u0001"+
    "\u0042\u0001\uffff\u0004\u0042\u0001\u0414\u0001\u0416\u0001\uffff\u0001"+
    "\u0042\u0001\u0418\u0001\u0419\u0001\uffff\u0001\u0042\u0002\uffff\u0001"+
    "\u041b\u0001\u0042\u0001\u041d\u0001\u0042\u0001\uffff\u0001\u041f\u0003"+
    "\u0042\u0001\u0423\u0001\u0424\u0006\u0042\u0001\uffff\u0001\u042b\u0003"+
    "\u0042\u0001\u042f\u0001\u0430\u0001\u0042\u0001\uffff\u0001\u0042\u0001"+
    "\u0433\u0001\u0042\u0001\u0435\u0004\u0042\u0001\u043b\u0001\uffff\u0001"+
    "\u0042\u0001\uffff\u0004\u0042\u0001\u0441\u0001\u0042\u0001\u0443\u0001"+
    "\u0042\u0001\u0445\u0001\u0446\u0002\uffff\u0003\u0042\u0001\uffff\u0001"+
    "\u044a\u0001\u044b\u0002\uffff\u0001\u0042\u0001\uffff\u0001\u044d\u0003"+
    "\u0042\u0002\uffff\u0006\u0042\u0001\u0457\u0001\uffff\u0001\u0042\u0001"+
    "\uffff\u0001\u0042\u0002\uffff\u0001\u045b\u0001\uffff\u0001\u045c\u0001"+
    "\uffff\u0001\u0042\u0001\uffff\u0001\u0042\u0001\u045f\u0001\u0460\u0002"+
    "\uffff\u0001\u0461\u0001\u0042\u0001\u0464\u0002\u0042\u0001\u0467\u0001"+
    "\uffff\u0001\u0469\u0001\u0042\u0001\u046c\u0002\uffff\u0001\u0042\u0001"+
    "\u046e\u0001\uffff\u0001\u0042\u0001\uffff\u0001\u0470\u0002\u0042\u0001"+
    "\u0473\u0001\u0474\u0001\uffff\u0001\u0475\u0002\u0042\u0001\u0478\u0001"+
    "\u0042\u0001\uffff\u0001\u047a\u0001\uffff\u0001\u047b\u0002\uffff\u0001"+
    "\u047c\u0002\u0042\u0002\uffff\u0001\u0042\u0001\uffff\u0001\u0480\u0001"+
    "\u0042\u0001\u0482\u0003\u0042\u0001\u0487\u0001\u0488\u0001\u0489\u0001"+
    "\uffff\u0003\u0042\u0002\uffff\u0002\u0042\u0003\uffff\u0001\u048f\u0001"+
    "\u0042\u0001\uffff\u0001\u0491\u0001\u0042\u0001\uffff\u0001\u0493\u0001"+
    "\uffff\u0002\u0042\u0001\uffff\u0001\u0042\u0001\uffff\u0001\u0042\u0001"+
    "\uffff\u0002\u0042\u0003\uffff\u0002\u0042\u0001\uffff\u0001\u049c\u0003"+
    "\uffff\u0001\u049d\u0002\u0042\u0001\uffff\u0001\u0042\u0001\uffff\u0004"+
    "\u0042\u0003\uffff\u0004\u0042\u0001\u04a9\u0001\uffff\u0001\u0042\u0001"+
    "\uffff\u0001\u04ab\u0001\uffff\u0008\u0042\u0002\uffff\u0002\u0042\u0001"+
    "\u04b6\u0008\u0042\u0001\uffff\u0001\u0042\u0001\uffff\u0006\u0042\u0001"+
    "\u04c6\u0001\u04c7\u0002\u0042\u0001\uffff\u0004\u0042\u0001\u04ce\u000a"+
    "\u0042\u0002\uffff\u0001\u0042\u0001\u04da\u0001\u0042\u0001\u04dc\u0002"+
    "\u0042\u0001\uffff\u0001\u04df\u0002\u0042\u0001\u04e2\u0005\u0042\u0001"+
    "\u04e8\u0001\u0042\u0001\uffff\u0001\u04ea\u0001\uffff\u0002\u0042\u0001"+
    "\uffff\u0002\u0042\u0001\uffff\u0003\u0042\u0001\u04f2\u0001\u0042\u0001"+
    "\uffff\u0001\u04f4\u0001\uffff\u0007\u0042\u0001\uffff\u0001\u04fc\u0001"+
    "\uffff\u0001\u04fd\u0001\u0042\u0001\u04ff\u0001\u0042\u0001\u0501\u0001"+
    "\u0502\u0001\u0042\u0002\uffff\u0001\u0504\u0001\uffff\u0001\u0505\u0002"+
    "\uffff\u0001\u0042\u0002\uffff\u0003\u0042\u0001\u050a\u0001\uffff",
    DFA19_eofS:
        "\u050b\uffff",
    DFA19_minS:
        "\u0001\u0000\u0001\u0066\u0002\u0061\u0001\u0065\u0001\u006c\u0001"+
    "\u0069\u0001\u0065\u0001\u0064\u0001\u0061\u0001\u0069\u0001\u0061\u0001"+
    "\u0073\u0001\u0062\u0002\u0061\u0002\u0065\u0001\u006e\u0001\u0061\u0001"+
    "\u0065\u0001\u0071\u0001\u0061\u0002\u0065\u0001\u0075\u0001\u007c\u0001"+
    "\u0023\u0002\uffff\u0001\u007c\u0004\uffff\u0001\u003a\u0001\u003d\u0001"+
    "\uffff\u0001\u0029\u0001\u0023\u0001\uffff\u0001\u003e\u0002\uffff\u0001"+
    "\u002d\u0001\u0021\u0001\u003d\u0001\u002f\u0001\u002e\u0002\uffff\u0001"+
    "\u002d\u0004\uffff\u0001\u002e\u0001\uffff\u0001\u0063\u0002\u002d\u0001"+
    "\u0072\u0001\u006c\u0001\u0074\u0001\u006f\u0001\u0070\u0001\uffff\u0001"+
    "\u0073\u0001\u0075\u0001\u002d\u0001\u0066\u0001\u0065\u0001\u0073\u0001"+
    "\u0065\u0001\u006c\u0001\u0063\u0001\u0061\u0001\u0063\u0001\u0065\u0001"+
    "\u0070\u0001\u0063\u0001\u002d\u0001\u0065\u0001\u0061\u0001\u006c\u0001"+
    "\u006e\u0001\u0072\u0001\u006f\u0002\u002d\u0001\u0065\u0001\u002d\u0001"+
    "\u0069\u0001\u002d\u0001\u0070\u0002\u002d\u0001\u0065\u0001\u006e\u0002"+
    "\u002d\u0001\u006f\u0001\u0064\u0001\u006e\u0001\u006d\u0002\u002d\u0001"+
    "\u006f\u0001\u002d\u0001\u0074\u0001\u002d\u0001\u006a\u0001\u002d\u0001"+
    "\u0063\u0001\u0072\u0001\u0065\u0001\u0072\u0001\u0073\u0001\u0072\u0001"+
    "\u0061\u0001\u006d\u0001\u0068\u0001\u006c\u0001\u006d\u0003\u0069\u0001"+
    "\u006c\u0001\u0078\u0001\u0065\u0001\u002d\u0001\u0065\u0001\u0070\u0002"+
    "\u006d\u0001\u0069\u0001\u0064\u0001\u0069\u0001\u006c\u0001\u0072\u0001"+
    "\u0065\u0001\u006c\u0001\u0069\u0001\u0072\u0001\u0075\u0001\u004e\u0001"+
    "\u0072\u0001\u0079\u0001\u006f\u0003\uffff\u0001\u0009\u0012\uffff\u0001"+
    "\u0078\u000b\uffff\u0001\u002d\u0001\u0009\u0009\uffff\u0001\u0030\u0007"+
    "\uffff\u0001\u002e\u0001\u0030\u0001\uffff\u0001\u0065\u0002\u002d\u0001"+
    "\u0065\u0001\uffff\u0001\u0072\u0001\uffff\u0001\u0061\u0001\u002d\u0002"+
    "\u0065\u0001\u0073\u0001\u002d\u0001\u0065\u0001\u006e\u0001\uffff\u0001"+
    "\u006f\u0001\u0061\u0001\u0065\u0001\u0063\u0001\u006c\u0001\u0063\u0001"+
    "\u006c\u0001\u006d\u0001\u0073\u0001\u0079\u0001\u006e\u0001\u0069\u0001"+
    "\u0061\u0001\u0063\u0001\u0065\u0001\u002d\u0001\u0069\u0001\u0063\u0001"+
    "\u0066\u0001\u0074\u0001\u0075\u0001\u006d\u0001\u0065\u0001\u0074\u0001"+
    "\u006f\u0001\u002d\u0001\u0069\u0001\uffff\u0001\u0072\u0002\u0065\u0001"+
    "\u0063\u0001\u0074\u0001\u006c\u0001\u002d\u0001\u0063\u0001\u0073\u0001"+
    "\u006d\u0001\u006f\u0001\u006e\u0001\u006f\u0001\u0072\u0001\uffff\u0001"+
    "\u0061\u0001\u0075\u0001\uffff\u0001\u0076\u0001\uffff\u0001\u006f\u0003"+
    "\u0065\u0001\u0069\u0001\u0065\u0002\uffff\u0001\u006d\u0001\u002d\u0001"+
    "\u0074\u0001\u0067\u0001\u0073\u0001\u002d\u0001\u0065\u0002\uffff\u0001"+
    "\u0065\u0001\u0070\u0001\u002d\u0001\u0074\u0001\u0075\u0001\u0065\u0001"+
    "\u0074\u0001\uffff\u0001\u0069\u0001\u0065\u0001\u002d\u0001\uffff\u0001"+
    "\u006e\u0001\uffff\u0001\u0069\u0001\u0065\u0001\uffff\u0001\u0065\u0001"+
    "\u0079\u0001\uffff\u0001\u0075\u0001\u0061\u0001\u0074\u0002\u0063\u0001"+
    "\u002d\u0001\u0069\u0001\u0061\u0001\u0069\u0001\u0062\u0001\u006d\u0001"+
    "\u0070\u0001\u0069\u0002\u0065\u0001\u0072\u0001\u0066\u0001\u0073\u0001"+
    "\u0065\u0001\u0064\u0001\u0074\u0001\u0070\u0001\u0075\u0001\u0061\u0001"+
    "\u006c\u0002\u0061\u0001\u0074\u0001\u006e\u0001\uffff\u0001\u0061\u0001"+
    "\u002d\u0001\u0065\u0001\u0062\u0001\u0065\u0001\u006f\u0001\u0072\u0001"+
    "\u0061\u0001\u0065\u0001\u006e\u0002\u0069\u0001\u0073\u0001\u006e\u0001"+
    "\u006c\u0001\u0064\u0001\u0068\u0001\u0064\u0001\u0067\u0001\u0064\u0001"+
    "\u0065\u0001\u002d\u0001\u006f\u0001\u002d\u0001\u0074\u0004\uffff\u0001"+
    "\u002d\u0003\uffff\u0001\u0030\u0001\u0073\u0002\uffff\u0001\u006e\u0001"+
    "\u0069\u0001\u0079\u0001\u0077\u0001\uffff\u0001\u0072\u0001\u006e\u0001"+
    "\u002d\u0001\uffff\u0001\u002d\u0001\u0064\u0001\u0072\u0001\u006b\u0002"+
    "\u002d\u0001\u0068\u0001\u0064\u0001\u006b\u0001\u0061\u0001\u0065\u0001"+
    "\u0074\u0001\u0061\u0001\u002d\u0001\u0074\u0001\u0061\u0001\u006d\u0001"+
    "\u0075\u0001\u0065\u0001\u0074\u0001\uffff\u0001\u0074\u0001\u0072\u0001"+
    "\u0065\u0001\u0061\u0001\u006d\u0001\u0065\u0001\u002d\u0001\u0079\u0001"+
    "\u0064\u0001\uffff\u0001\u0072\u0001\u0079\u0001\u0070\u0001\u0072\u0001"+
    "\u0074\u0001\u002d\u0001\u006f\u0001\u0061\u0001\uffff\u0002\u0074\u0001"+
    "\u002d\u0001\u0070\u0001\u0064\u0001\u0074\u0001\u002d\u0001\u0074\u0001"+
    "\u0070\u0001\u002d\u0002\u0072\u0001\u0061\u0001\u006e\u0001\u0067\u0001"+
    "\u002d\u0001\u006e\u0001\u0078\u0001\u002d\u0001\uffff\u0001\u002d\u0001"+
    "\u0075\u0001\u0074\u0001\uffff\u0001\u006c\u0001\u0072\u0001\u002d\u0001"+
    "\u006c\u0001\u0066\u0001\uffff\u0001\u002d\u0002\u0073\u0001\u002d\u0001"+
    "\u006e\u0001\u0072\u0001\u002d\u0001\uffff\u0001\u002d\u0001\u006f\u0001"+
    "\u0072\u0001\u0063\u0001\u002d\u0001\u0072\u0001\u006e\u0001\u0067\u0003"+
    "\u0065\u0001\u0069\u0002\u0065\u0001\u006d\u0001\u0074\u0001\u0073\u0002"+
    "\u0063\u0001\u006c\u0001\u0074\u0001\u006d\u0001\u002d\u0001\u0073\u0001"+
    "\u002d\u0001\u006d\u0001\u0065\u0001\u002d\u0001\u0069\u0001\u0065\u0001"+
    "\u002d\u0001\u0069\u0001\u0063\u0001\u002d\u0001\u0072\u0001\u006d\u0001"+
    "\u0061\u0001\u006c\u0001\u0074\u0002\u002d\u0001\u0061\u0001\u0074\u0001"+
    "\uffff\u0001\u002d\u0001\u006c\u0001\u0073\u0001\u006e\u0001\u0075\u0001"+
    "\u0064\u0001\u0074\u0001\u0072\u0001\u0067\u0001\u0064\u0001\u0065\u0001"+
    "\u0061\u0001\u0069\u0001\u0065\u0001\u002d\u0001\u0065\u0001\u006f\u0001"+
    "\u002d\u0001\u0063\u0001\u0068\u0001\u002d\u0001\u0072\u0001\uffff\u0001"+
    "\u002d\u0001\uffff\u0001\u002d\u0001\u0000\u0001\u0074\u0001\u0064\u0001"+
    "\u0062\u0001\u002d\u0001\u0069\u0001\u002d\u0001\u0064\u0001\uffff\u0001"+
    "\u0075\u0001\u0061\u0001\u0065\u0001\u002d\u0001\uffff\u0001\u0062\u0001"+
    "\uffff\u0003\u002d\u0001\u0074\u0001\u0063\u0001\u006e\u0001\u0072\u0001"+
    "\u006e\u0001\u0069\u0002\u006e\u0001\uffff\u0001\u002d\u0001\u0072\u0001"+
    "\u0061\u0001\u006c\u0001\u006e\u0001\u0065\u0001\u002d\u0001\u0069\u0001"+
    "\u0072\u0001\u006e\u0001\u0065\u0001\u006e\u0001\uffff\u0001\u002d\u0001"+
    "\u0069\u0001\u0065\u0001\u002d\u0001\u0074\u0001\u006e\u0001\u006c\u0001"+
    "\uffff\u0001\u0077\u0001\u0063\u0001\u0067\u0001\u0069\u0001\u002d\u0001"+
    "\uffff\u0001\u0074\u0002\u002d\u0001\uffff\u0001\u0065\u0001\u002d\u0001"+
    "\uffff\u0001\u0074\u0001\u0069\u0001\u006e\u0001\u0074\u0002\u0073\u0001"+
    "\u0072\u0001\uffff\u0001\u0069\u0001\u002d\u0002\uffff\u0001\u0061\u0001"+
    "\u002d\u0001\u0073\u0001\u0063\u0001\uffff\u0001\u0065\u0001\u0079\u0001"+
    "\uffff\u0001\u002d\u0001\u0070\u0001\uffff\u0001\u0068\u0001\u0065\u0001"+
    "\u002d\u0001\uffff\u0001\u0069\u0001\uffff\u0001\u006e\u0001\u002d\u0001"+
    "\u0074\u0001\uffff\u0001\u0073\u0001\u0074\u0002\u0072\u0001\u0064\u0001"+
    "\u0072\u0001\u006f\u0001\u0073\u0001\u006e\u0002\u0069\u0001\u0065\u0002"+
    "\u0074\u0001\u002d\u0001\u0065\u0001\u002d\u0001\u0069\u0001\uffff\u0001"+
    "\u0066\u0001\uffff\u0001\u0061\u0001\u002d\u0001\uffff\u0001\u0074\u0001"+
    "\u006e\u0001\uffff\u0001\u006e\u0001\u0068\u0001\uffff\u0001\u006e\u0001"+
    "\u0065\u0001\u0063\u0002\u0069\u0002\uffff\u0001\u0075\u0001\u002d\u0001"+
    "\u0077\u0001\uffff\u0001\u0069\u0002\u002d\u0002\u0065\u0001\u0069\u0001"+
    "\u0063\u0001\u002d\u0001\u0061\u0001\u002d\u0001\u0062\u0001\u006f\u0001"+
    "\u002d\u0001\uffff\u0001\u002d\u0001\u0077\u0001\u0075\u0001\uffff\u0001"+
    "\u0061\u0001\u0074\u0001\u002d\u0001\uffff\u0001\u0079\u0001\u0064\u0003"+
    "\uffff\u0001\u006f\u0001\u0069\u0001\u0075\u0001\uffff\u0001\u006e\u0001"+
    "\uffff\u0001\u002d\u0002\u0072\u0001\u002d\u0001\uffff\u0001\u006c\u0003"+
    "\uffff\u0001\u0069\u0002\u0074\u0001\u0061\u0002\u0074\u0001\u006e\u0001"+
    "\u0075\u0001\u0061\u0001\uffff\u0001\u0065\u0001\u006c\u0001\u0074\u0001"+
    "\u0064\u0001\u002d\u0001\uffff\u0001\u0074\u0001\u0065\u0001\u0063\u0001"+
    "\u006e\u0001\u0074\u0001\u0073\u0001\uffff\u0001\u006e\u0001\u002d\u0001"+
    "\uffff\u0001\u002d\u0001\u0061\u0001\u0079\u0001\u0069\u0001\u0068\u0001"+
    "\u006e\u0001\u006f\u0001\uffff\u0001\u0069\u0002\uffff\u0001\u0073\u0001"+
    "\u006e\u0001\uffff\u0001\u002d\u0001\u0074\u0001\u0063\u0001\u002d\u0001"+
    "\u0069\u0001\u0065\u0001\u0069\u0001\u0074\u0001\uffff\u0001\u0067\u0001"+
    "\uffff\u0001\u002d\u0001\u0061\u0002\u002d\u0001\u0073\u0001\u0061\u0001"+
    "\u0065\u0001\u0073\u0001\uffff\u0001\u0074\u0001\u002d\u0001\u0064\u0001"+
    "\u006e\u0001\uffff\u0003\u002d\u0001\u0061\u0001\u006e\u0001\u0069\u0001"+
    "\u0076\u0001\u0075\u0001\u0073\u0001\u0074\u0001\u006c\u0001\u006f\u0001"+
    "\u002d\u0001\u0075\u0001\u002d\u0001\uffff\u0001\u002d\u0001\uffff\u0001"+
    "\u006e\u0001\u0069\u0001\u002d\u0001\uffff\u0001\u0069\u0001\u0063\u0001"+
    "\u0067\u0003\u002d\u0001\u0065\u0001\u0064\u0001\u006f\u0001\u0072\u0001"+
    "\uffff\u0001\u0069\u0001\u006e\u0002\uffff\u0001\u002d\u0001\u0072\u0001"+
    "\u006e\u0001\u0061\u0001\uffff\u0001\u0074\u0001\uffff\u0001\u006c\u0001"+
    "\u006e\u0002\uffff\u0001\u002d\u0001\u0074\u0001\u0072\u0001\u002d\u0001"+
    "\uffff\u0001\u002d\u0001\u0069\u0001\u0072\u0001\u006e\u0001\u0074\u0001"+
    "\u0067\u0001\uffff\u0001\u0069\u0001\u0079\u0001\uffff\u0001\u0065\u0001"+
    "\u006f\u0001\u0069\u0001\u002d\u0001\u0063\u0001\u0069\u0002\u002d\u0001"+
    "\u0073\u0001\u0065\u0001\u006d\u0003\u002d\u0001\u0061\u0001\uffff\u0001"+
    "\u0069\u0001\u006e\u0001\u0065\u0001\u0074\u0001\u002d\u0001\u0065\u0001"+
    "\u0067\u0002\uffff\u0001\u006c\u0001\u002d\u0001\u006e\u0002\u002d\u0001"+
    "\u006e\u0001\u006f\u0001\u0074\u0001\u0067\u0001\uffff\u0001\u002d\u0001"+
    "\u0065\u0001\uffff\u0001\u0074\u0001\u0063\u0001\u0074\u0001\u0079\u0001"+
    "\u0065\u0001\uffff\u0001\u0073\u0002\uffff\u0001\u0069\u0001\u0063\u0001"+
    "\u0072\u0002\u0065\u0001\uffff\u0001\u002d\u0001\u0067\u0003\uffff\u0001"+
    "\u0070\u0001\u002d\u0001\u006e\u0001\u0065\u0001\u0073\u0001\u0069\u0001"+
    "\u002d\u0001\u006c\u0001\u006e\u0001\uffff\u0001\u0072\u0002\uffff\u0001"+
    "\u0067\u0001\u0065\u0001\u0061\u0001\uffff\u0001\u0076\u0001\u0065\u0001"+
    "\u002d\u0001\uffff\u0001\u006e\u0002\uffff\u0001\u002d\u0001\u0061\u0001"+
    "\u006e\u0001\u0075\u0001\u0074\u0001\u0067\u0001\uffff\u0001\u0065\u0001"+
    "\u0067\u0001\u0073\u0002\u0065\u0001\u002d\u0001\uffff\u0001\u002d\u0001"+
    "\u0064\u0002\uffff\u0001\u0067\u0001\u002d\u0001\u0067\u0001\u0065\u0004"+
    "\u002d\u0001\u006e\u0001\u006f\u0001\uffff\u0001\u0074\u0001\u006e\u0002"+
    "\uffff\u0002\u002d\u0001\u0065\u0001\uffff\u0001\u0066\u0001\uffff\u0002"+
    "\u006e\u0001\u0063\u0001\u0074\u0002\u002d\u0001\uffff\u0001\u0071\u0002"+
    "\u002d\u0001\uffff\u0001\u0067\u0002\uffff\u0001\u002d\u0001\u006e\u0002"+
    "\u002d\u0001\uffff\u0001\u002d\u0001\u0069\u0001\u0074\u0001\u0079\u0002"+
    "\u002d\u0001\u0065\u0001\u0067\u0001\u0065\u0001\u0069\u0001\u0072\u0001"+
    "\u006d\u0001\uffff\u0001\u002d\u0001\u0068\u0001\u0073\u0001\u0067\u0002"+
    "\u002d\u0001\u006e\u0001\uffff\u0001\u0065\u0001\u002d\u0001\u0065\u0001"+
    "\u002d\u0001\u0073\u0001\u0074\u0001\u006c\u0001\u0065\u0001\u002d\u0001"+
    "\uffff\u0001\u0067\u0001\uffff\u0001\u0074\u0002\u0073\u0001\u0063\u0001"+
    "\u002d\u0001\u0064\u0001\u002d\u0001\u0065\u0002\u002d\u0002\uffff\u0001"+
    "\u0073\u0001\u0069\u0001\u006f\u0001\uffff\u0002\u002d\u0002\uffff\u0001"+
    "\u0073\u0001\uffff\u0001\u002d\u0001\u006e\u0001\u0069\u0001\u0074\u0002"+
    "\uffff\u0001\u0073\u0001\u006f\u0001\u0065\u0001\u0074\u0001\u0067\u0001"+
    "\u0073\u0001\u002d\u0001\uffff\u0001\u006e\u0001\uffff\u0001\u0075\u0002"+
    "\uffff\u0001\u002d\u0001\uffff\u0001\u002d\u0001\uffff\u0001\u0073\u0001"+
    "\uffff\u0001\u0076\u0002\u002d\u0002\uffff\u0001\u002d\u0001\u006e\u0001"+
    "\u002d\u0001\u0074\u0001\u0076\u0001\u002d\u0001\uffff\u0001\u002d\u0001"+
    "\u0065\u0001\u002d\u0002\uffff\u0001\u0067\u0001\u002d\u0001\uffff\u0001"+
    "\u0064\u0001\uffff\u0001\u002d\u0001\u0074\u0001\u0065\u0002\u002d\u0001"+
    "\uffff\u0001\u002d\u0001\u0069\u0001\u0068\u0001\u002d\u0001\u0068\u0001"+
    "\uffff\u0001\u002d\u0001\uffff\u0001\u002d\u0002\uffff\u0001\u002d\u0001"+
    "\u0074\u0001\u0072\u0002\uffff\u0001\u0070\u0001\uffff\u0001\u002d\u0001"+
    "\u006f\u0001\u002d\u0001\u0070\u0001\u0072\u0001\u0070\u0003\u002d\u0001"+
    "\uffff\u0001\u006f\u0001\u0065\u0001\u0073\u0002\uffff\u0002\u0065\u0003"+
    "\uffff\u0001\u002d\u0001\u006e\u0001\uffff\u0001\u002d\u0001\u0065\u0001"+
    "\uffff\u0001\u002d\u0001\uffff\u0001\u0070\u0001\u0073\u0001\uffff\u0001"+
    "\u002d\u0001\uffff\u0001\u002d\u0001\uffff\u0001\u0072\u0001\u006d\u0003"+
    "\uffff\u0001\u006f\u0001\u0069\u0001\uffff\u0001\u002d\u0003\uffff\u0002"+
    "\u002d\u0001\u0061\u0001\uffff\u0001\u006e\u0001\uffff\u0001\u0061\u0001"+
    "\u006d\u0001\u0061\u0001\u006f\u0003\uffff\u0001\u0064\u0001\u006e\u0001"+
    "\u0069\u0001\u0070\u0001\u002d\u0001\uffff\u0001\u006f\u0001\uffff\u0001"+
    "\u002d\u0001\uffff\u0001\u0061\u0004\u0069\u0001\u0065\u0001\u006e\u0001"+
    "\u0070\u0002\uffff\u0001\u0073\u0001\u0063\u0001\u002d\u0001\u0063\u0001"+
    "\u0061\u0002\u0072\u0001\u0065\u0001\u0063\u0001\u0062\u0001\u0061\u0001"+
    "\uffff\u0001\u0064\u0001\uffff\u0001\u0072\u0001\u0062\u0001\u006e\u0001"+
    "\u0074\u0001\u0062\u0001\u006e\u0002\u002d\u0002\u0065\u0001\uffff\u0001"+
    "\u0065\u0001\u0074\u0001\u0061\u0002\u002d\u0001\u0065\u0001\u006c\u0001"+
    "\u0072\u0001\u0065\u0001\u0061\u0001\u006c\u0001\u0073\u0001\u0065\u0001"+
    "\u0075\u0001\u0074\u0002\uffff\u0001\u006c\u0001\u002d\u0001\u0073\u0001"+
    "\u002d\u0001\u0074\u0001\u0073\u0001\uffff\u0001\u002d\u0001\u0069\u0001"+
    "\u0061\u0001\u002d\u0001\u0074\u0001\u0069\u0001\u0074\u0001\u006d\u0001"+
    "\u0074\u0001\u002d\u0001\u0066\u0001\uffff\u0001\u002d\u0001\uffff\u0001"+
    "\u006f\u0001\u0065\u0001\uffff\u0001\u006e\u0001\u0074\u0001\uffff\u0001"+
    "\u006f\u0001\u006e\u0001\u0072\u0001\u002d\u0001\u0065\u0001\uffff\u0001"+
    "\u002d\u0001\uffff\u0001\u0072\u0001\u006c\u0001\u0067\u0001\u006f\u0001"+
    "\u0072\u0001\u0067\u0001\u0075\u0001\uffff\u0001\u002d\u0001\uffff\u0001"+
    "\u002d\u0001\u0066\u0001\u002d\u0001\u0072\u0002\u002d\u0001\u0063\u0002"+
    "\uffff\u0001\u002d\u0001\uffff\u0001\u002d\u0002\uffff\u0001\u0074\u0002"+
    "\uffff\u0001\u0069\u0001\u006f\u0001\u006e\u0001\u002d\u0001\uffff",
    DFA19_maxS:
        "\u0001\uffff\u0001\u0074\u0001\u0079\u0002\u006f\u0001\u0078\u0001"+
    "\u0075\u0003\u0074\u0002\u006f\u0001\u0073\u0002\u0072\u0001\u0077\u0001"+
    "\u0065\u0001\u0079\u0001\u0073\u0001\u0065\u0001\u006f\u0001\u0071\u0001"+
    "\u0061\u0002\u0065\u0001\u0075\u0001\u007d\u0001\u003a\u0002\uffff\u0001"+
    "\u007c\u0004\uffff\u0002\u003d\u0001\uffff\u0001\u0029\u0001\u0023\u0001"+
    "\uffff\u0001\u003e\u0002\uffff\u0001\u002d\u0001\u003f\u0002\u003e\u0001"+
    "\u0039\u0002\uffff\u0001\u007a\u0004\uffff\u0001\u0065\u0001\uffff\u0001"+
    "\u0079\u0002\u007a\u0001\u0072\u0001\u006c\u0001\u0074\u0002\u0070\u0001"+
    "\uffff\u0001\u0073\u0001\u0075\u0001\u007a\u0001\u0066\u0001\u0065\u0001"+
    "\u0074\u0001\u0069\u0001\u0075\u0001\u0073\u0001\u0076\u0001\u0063\u0001"+
    "\u0073\u0001\u0070\u0001\u0074\u0001\u007a\u0001\u0065\u0001\u0074\u0001"+
    "\u0072\u0001\u006e\u0001\u0072\u0002\u006f\u0001\u007a\u0001\u006f\u0001"+
    "\u007a\u0001\u0069\u0001\u007a\u0001\u0070\u0002\u007a\u0001\u0065\u0001"+
    "\u0078\u0002\u007a\u0001\u0077\u0001\u0073\u0001\u006e\u0001\u006d\u0002"+
    "\u007a\u0001\u006f\u0001\u007a\u0001\u0074\u0001\u007a\u0001\u006a\u0001"+
    "\u007a\u0001\u0063\u0001\u0074\u0001\u006f\u0001\u0072\u0001\u0073\u0002"+
    "\u0072\u0001\u0074\u0001\u006f\u0001\u006e\u0001\u006d\u0003\u0069\u0001"+
    "\u0076\u0001\u0078\u0001\u0065\u0001\u007a\u0001\u0079\u0001\u0070\u0002"+
    "\u006d\u0001\u006f\u0001\u0070\u0001\u0069\u0002\u0072\u0001\u0069\u0001"+
    "\u0074\u0001\u0069\u0001\u0072\u0001\u0075\u0001\u004e\u0001\u0072\u0001"+
    "\u0079\u0001\u006f\u0003\uffff\u0001\u007a\u0012\uffff\u0001\u0078\u000b"+
    "\uffff\u0001\u002d\u0001\u007a\u0009\uffff\u0001\u0065\u0007\uffff\u0002"+
    "\u0065\u0001\uffff\u0001\u0065\u0002\u007a\u0001\u0065\u0001\uffff\u0001"+
    "\u0072\u0001\uffff\u0001\u0061\u0001\u007a\u0002\u0065\u0001\u0073\u0001"+
    "\u007a\u0001\u0065\u0001\u006e\u0001\uffff\u0001\u006f\u0001\u0061\u0001"+
    "\u0074\u0001\u0063\u0001\u006c\u0001\u0063\u0001\u006c\u0001\u006d\u0001"+
    "\u0074\u0001\u0079\u0001\u006e\u0001\u006c\u0001\u0061\u0001\u0063\u0001"+
    "\u0065\u0001\u007a\u0001\u0069\u0001\u0063\u0001\u0066\u0001\u0074\u0001"+
    "\u0075\u0001\u006d\u0001\u0065\u0001\u0074\u0001\u006f\u0001\u007a\u0001"+
    "\u0069\u0001\uffff\u0001\u0072\u0002\u0065\u0001\u0063\u0001\u0074\u0001"+
    "\u006c\u0001\u007a\u0001\u0063\u0001\u0073\u0001\u006d\u0001\u006f\u0001"+
    "\u006e\u0001\u006f\u0001\u0072\u0001\uffff\u0001\u0061\u0001\u0075\u0001"+
    "\uffff\u0001\u0076\u0001\uffff\u0001\u006f\u0001\u0065\u0001\u0074\u0001"+
    "\u006f\u0001\u0069\u0001\u0065\u0002\uffff\u0001\u006d\u0001\u007a\u0001"+
    "\u0074\u0001\u0067\u0001\u0073\u0001\u007a\u0001\u0065\u0002\uffff\u0001"+
    "\u0065\u0001\u0070\u0001\u007a\u0001\u0074\u0001\u0075\u0001\u0065\u0001"+
    "\u0074\u0001\uffff\u0001\u0070\u0001\u0065\u0001\u007a\u0001\uffff\u0001"+
    "\u006e\u0001\uffff\u0001\u0069\u0001\u0065\u0001\uffff\u0001\u0065\u0001"+
    "\u0079\u0001\uffff\u0001\u0075\u0001\u0065\u0001\u0074\u0001\u0076\u0002"+
    "\u0063\u0001\u0069\u0001\u0061\u0001\u0075\u0001\u0072\u0001\u006d\u0001"+
    "\u0070\u0001\u0069\u0002\u0065\u0001\u0072\u0001\u0066\u0001\u0074\u0001"+
    "\u0065\u0001\u0064\u0001\u0074\u0001\u0070\u0001\u0075\u0001\u0061\u0001"+
    "\u006c\u0002\u0061\u0001\u0074\u0001\u0073\u0001\uffff\u0001\u0061\u0001"+
    "\u007a\u0001\u0065\u0001\u0062\u0001\u0065\u0001\u0071\u0001\u0072\u0001"+
    "\u0061\u0001\u0065\u0001\u006e\u0001\u0075\u0001\u0069\u0001\u0073\u0001"+
    "\u0072\u0001\u006c\u0001\u0064\u0001\u0068\u0001\u0064\u0001\u0067\u0001"+
    "\u0064\u0001\u0065\u0001\u007a\u0001\u006f\u0001\u007a\u0001\u0074\u0004"+
    "\uffff\u0001\u002d\u0003\uffff\u0001\u0065\u0001\u0073\u0002\uffff\u0001"+
    "\u006e\u0001\u0069\u0001\u0079\u0001\u0077\u0001\uffff\u0001\u0072\u0001"+
    "\u006e\u0001\u007a\u0001\uffff\u0001\u002d\u0001\u0064\u0001\u0072\u0001"+
    "\u006b\u0002\u007a\u0001\u0068\u0001\u0064\u0001\u006b\u0002\u0065\u0001"+
    "\u0074\u0001\u0069\u0001\u007a\u0001\u0074\u0001\u0061\u0001\u006d\u0001"+
    "\u0075\u0001\u0065\u0001\u0074\u0001\uffff\u0001\u0074\u0001\u0072\u0001"+
    "\u0065\u0001\u0061\u0001\u006d\u0001\u0065\u0001\u007a\u0001\u0079\u0001"+
    "\u0064\u0001\uffff\u0001\u0072\u0001\u0079\u0001\u0070\u0001\u0072\u0001"+
    "\u0074\u0001\u007a\u0001\u006f\u0001\u0069\u0001\uffff\u0002\u0074\u0001"+
    "\u007a\u0001\u0070\u0001\u0064\u0001\u0074\u0001\u007a\u0001\u0074\u0001"+
    "\u0070\u0001\u007a\u0002\u0072\u0001\u0061\u0002\u0072\u0001\u007a\u0001"+
    "\u006e\u0001\u0078\u0001\u007a\u0001\uffff\u0001\u007a\u0001\u0075\u0001"+
    "\u0074\u0001\uffff\u0001\u006c\u0001\u0072\u0001\u007a\u0001\u006c\u0001"+
    "\u0066\u0001\uffff\u0001\u007a\u0002\u0073\u0001\u007a\u0001\u006e\u0001"+
    "\u0072\u0001\u007a\u0001\uffff\u0001\u007a\u0001\u006f\u0001\u0072\u0001"+
    "\u0063\u0001\u007a\u0001\u0072\u0001\u006e\u0001\u0067\u0003\u0065\u0001"+
    "\u0069\u0002\u0065\u0001\u006d\u0001\u0074\u0001\u0073\u0001\u0063\u0001"+
    "\u0070\u0001\u006c\u0001\u0074\u0001\u006d\u0001\u007a\u0001\u0073\u0001"+
    "\u007a\u0001\u006d\u0001\u0065\u0001\u007a\u0001\u0069\u0001\u0065\u0001"+
    "\u007a\u0001\u0069\u0001\u0063\u0001\u007a\u0001\u0072\u0001\u006d\u0001"+
    "\u0061\u0001\u006c\u0001\u0074\u0002\u007a\u0001\u0061\u0001\u0074\u0001"+
    "\uffff\u0001\u007a\u0001\u006c\u0001\u0073\u0001\u006e\u0001\u0075\u0001"+
    "\u0064\u0001\u0074\u0001\u0072\u0001\u0067\u0001\u0064\u0001\u0065\u0001"+
    "\u0061\u0001\u0069\u0001\u0065\u0001\u007a\u0001\u0065\u0001\u006f\u0001"+
    "\u007a\u0001\u0063\u0001\u0068\u0001\u007a\u0001\u0072\u0001\uffff\u0001"+
    "\u002d\u0001\uffff\u0001\u007a\u0001\uffff\u0001\u0074\u0001\u0064\u0001"+
    "\u0062\u0001\u007a\u0001\u0069\u0001\u007a\u0001\u0064\u0001\uffff\u0001"+
    "\u0075\u0001\u0061\u0001\u0065\u0001\u007a\u0001\uffff\u0001\u0062\u0001"+
    "\uffff\u0003\u007a\u0001\u0074\u0001\u0063\u0001\u006e\u0001\u0072\u0001"+
    "\u0078\u0001\u0069\u0002\u006e\u0001\uffff\u0001\u007a\u0001\u0072\u0001"+
    "\u0061\u0001\u006c\u0001\u006e\u0001\u0065\u0001\u007a\u0001\u0069\u0001"+
    "\u0072\u0001\u006e\u0001\u0065\u0001\u006e\u0001\uffff\u0001\u007a\u0001"+
    "\u0069\u0001\u0065\u0001\u007a\u0001\u0074\u0001\u006e\u0001\u006c\u0001"+
    "\uffff\u0001\u0077\u0001\u0063\u0001\u0067\u0001\u0069\u0001\u007a\u0001"+
    "\uffff\u0001\u0074\u0002\u007a\u0001\uffff\u0001\u0065\u0001\u007a\u0001"+
    "\uffff\u0001\u0074\u0001\u0069\u0001\u006e\u0001\u0074\u0002\u0073\u0001"+
    "\u0072\u0001\uffff\u0001\u0069\u0001\u007a\u0002\uffff\u0001\u0061\u0001"+
    "\u007a\u0001\u0073\u0001\u0063\u0001\uffff\u0001\u0065\u0001\u0079\u0001"+
    "\uffff\u0001\u002d\u0001\u0070\u0001\uffff\u0001\u0068\u0001\u0065\u0001"+
    "\u007a\u0001\uffff\u0001\u0069\u0001\uffff\u0001\u006e\u0001\u007a\u0001"+
    "\u0074\u0001\uffff\u0001\u0073\u0001\u0074\u0002\u0072\u0001\u0064\u0001"+
    "\u0072\u0001\u006f\u0001\u0073\u0001\u006e\u0002\u0069\u0001\u0065\u0002"+
    "\u0074\u0001\u007a\u0001\u0065\u0001\u007a\u0001\u0069\u0001\uffff\u0001"+
    "\u0066\u0001\uffff\u0001\u0061\u0001\u007a\u0001\uffff\u0001\u0074\u0001"+
    "\u006e\u0001\uffff\u0001\u006e\u0001\u0068\u0001\uffff\u0001\u006e\u0001"+
    "\u0065\u0001\u0063\u0002\u0069\u0002\uffff\u0001\u0075\u0001\u007a\u0001"+
    "\u0077\u0001\uffff\u0001\u0069\u0002\u007a\u0002\u0065\u0001\u0069\u0001"+
    "\u0063\u0001\u007a\u0001\u0061\u0001\u007a\u0001\u0062\u0001\u006f\u0001"+
    "\u007a\u0001\uffff\u0001\u007a\u0001\u0077\u0001\u0075\u0001\uffff\u0001"+
    "\u0061\u0001\u0074\u0001\u007a\u0001\uffff\u0001\u0079\u0001\u0064\u0003"+
    "\uffff\u0001\u006f\u0001\u0069\u0001\u0075\u0001\uffff\u0001\u006e\u0001"+
    "\uffff\u0001\u007a\u0002\u0072\u0001\u007a\u0001\uffff\u0001\u006c\u0003"+
    "\uffff\u0001\u0069\u0002\u0074\u0001\u0075\u0002\u0074\u0001\u006e\u0001"+
    "\u0075\u0001\u0061\u0001\uffff\u0001\u0065\u0001\u006c\u0001\u0074\u0001"+
    "\u0064\u0001\u007a\u0001\uffff\u0001\u0074\u0001\u0065\u0001\u0063\u0001"+
    "\u006e\u0001\u0074\u0001\u0073\u0001\uffff\u0001\u006e\u0001\u007a\u0001"+
    "\uffff\u0001\u007a\u0001\u0061\u0001\u0079\u0001\u0069\u0001\u0068\u0001"+
    "\u006e\u0001\u006f\u0001\uffff\u0001\u0069\u0002\uffff\u0001\u0073\u0001"+
    "\u006e\u0001\uffff\u0001\u007a\u0001\u0074\u0001\u0063\u0001\u007a\u0001"+
    "\u0069\u0001\u0065\u0001\u0069\u0001\u0074\u0001\uffff\u0001\u0067\u0001"+
    "\uffff\u0001\u007a\u0001\u0061\u0002\u007a\u0001\u0073\u0001\u0061\u0001"+
    "\u0065\u0001\u0073\u0001\uffff\u0001\u0074\u0001\u007a\u0001\u0064\u0001"+
    "\u006e\u0001\uffff\u0003\u007a\u0001\u0061\u0001\u006e\u0001\u0069\u0001"+
    "\u0076\u0001\u0075\u0001\u0073\u0001\u0074\u0001\u006c\u0001\u006f\u0001"+
    "\u007a\u0001\u0075\u0001\u007a\u0001\uffff\u0001\u007a\u0001\uffff\u0001"+
    "\u006e\u0001\u0069\u0001\u007a\u0001\uffff\u0001\u0069\u0001\u0063\u0001"+
    "\u0067\u0003\u007a\u0001\u0065\u0001\u0064\u0001\u006f\u0001\u0072\u0001"+
    "\uffff\u0001\u0069\u0001\u006e\u0002\uffff\u0001\u007a\u0001\u0072\u0001"+
    "\u006e\u0001\u0061\u0001\uffff\u0001\u0074\u0001\uffff\u0001\u006c\u0001"+
    "\u006e\u0002\uffff\u0001\u007a\u0001\u0074\u0001\u0072\u0001\u007a\u0001"+
    "\uffff\u0001\u007a\u0001\u0069\u0001\u0072\u0001\u006e\u0001\u0074\u0001"+
    "\u0067\u0001\uffff\u0001\u0069\u0001\u0079\u0001\uffff\u0001\u0065\u0001"+
    "\u006f\u0001\u0069\u0001\u007a\u0001\u0063\u0001\u0069\u0002\u007a\u0001"+
    "\u0073\u0001\u0065\u0001\u006d\u0001\u007a\u0001\u002d\u0001\u007a\u0001"+
    "\u0069\u0001\uffff\u0001\u0069\u0001\u006e\u0001\u0065\u0001\u0074\u0001"+
    "\u007a\u0001\u0065\u0001\u0067\u0002\uffff\u0001\u006c\u0001\u007a\u0001"+
    "\u006e\u0002\u007a\u0001\u006e\u0001\u006f\u0001\u0074\u0001\u0067\u0001"+
    "\uffff\u0001\u007a\u0001\u0065\u0001\uffff\u0001\u0074\u0001\u0063\u0001"+
    "\u0074\u0001\u0079\u0001\u0065\u0001\uffff\u0001\u0073\u0002\uffff\u0001"+
    "\u0069\u0001\u0063\u0001\u0072\u0002\u0065\u0001\uffff\u0001\u007a\u0001"+
    "\u0067\u0003\uffff\u0001\u0070\u0001\u002d\u0001\u006e\u0001\u0065\u0001"+
    "\u0073\u0001\u0069\u0001\u007a\u0001\u006c\u0001\u006e\u0001\uffff\u0001"+
    "\u0072\u0002\uffff\u0001\u0067\u0002\u0065\u0001\uffff\u0001\u0076\u0001"+
    "\u0065\u0001\u007a\u0001\uffff\u0001\u006e\u0002\uffff\u0001\u007a\u0001"+
    "\u0061\u0001\u006e\u0001\u0075\u0001\u0074\u0001\u0067\u0001\uffff\u0001"+
    "\u0065\u0001\u0067\u0001\u0073\u0002\u0065\u0001\u007a\u0001\uffff\u0001"+
    "\u007a\u0001\u0064\u0002\uffff\u0001\u0067\u0001\u007a\u0001\u0067\u0001"+
    "\u0065\u0002\u007a\u0001\u002d\u0001\u007a\u0001\u006e\u0001\u006f\u0001"+
    "\uffff\u0001\u0074\u0001\u006e\u0002\uffff\u0002\u007a\u0001\u0065\u0001"+
    "\uffff\u0001\u0073\u0001\uffff\u0002\u006e\u0001\u0063\u0001\u0074\u0002"+
    "\u007a\u0001\uffff\u0001\u0071\u0002\u007a\u0001\uffff\u0001\u0067\u0002"+
    "\uffff\u0001\u007a\u0001\u006e\u0001\u007a\u0001\u002d\u0001\uffff\u0001"+
    "\u007a\u0001\u0069\u0001\u0074\u0001\u0079\u0002\u007a\u0001\u0065\u0001"+
    "\u0067\u0001\u0065\u0001\u0069\u0001\u0072\u0001\u006d\u0001\uffff\u0001"+
    "\u007a\u0001\u0068\u0001\u0073\u0001\u0067\u0002\u007a\u0001\u006e\u0001"+
    "\uffff\u0001\u0065\u0001\u007a\u0001\u0065\u0001\u007a\u0001\u0073\u0001"+
    "\u0074\u0001\u006c\u0001\u0065\u0001\u007a\u0001\uffff\u0001\u0067\u0001"+
    "\uffff\u0001\u0074\u0002\u0073\u0001\u0063\u0001\u007a\u0001\u0064\u0001"+
    "\u007a\u0001\u0065\u0002\u007a\u0002\uffff\u0001\u0073\u0001\u0069\u0001"+
    "\u006f\u0001\uffff\u0002\u007a\u0002\uffff\u0001\u0073\u0001\uffff\u0001"+
    "\u007a\u0001\u006e\u0001\u0069\u0001\u0074\u0002\uffff\u0001\u0073\u0001"+
    "\u006f\u0001\u0065\u0001\u0074\u0001\u0067\u0001\u0073\u0001\u007a\u0001"+
    "\uffff\u0001\u006e\u0001\uffff\u0001\u0075\u0002\uffff\u0001\u007a\u0001"+
    "\uffff\u0001\u007a\u0001\uffff\u0001\u0073\u0001\uffff\u0001\u0076\u0002"+
    "\u007a\u0002\uffff\u0001\u007a\u0001\u006e\u0001\u007a\u0001\u0074\u0001"+
    "\u0076\u0001\u007a\u0001\uffff\u0001\u007a\u0001\u0065\u0001\u007a\u0002"+
    "\uffff\u0001\u0067\u0001\u007a\u0001\uffff\u0001\u0064\u0001\uffff\u0001"+
    "\u007a\u0001\u0074\u0001\u0065\u0002\u007a\u0001\uffff\u0001\u007a\u0001"+
    "\u0069\u0001\u0068\u0001\u007a\u0001\u0068\u0001\uffff\u0001\u007a\u0001"+
    "\uffff\u0001\u007a\u0002\uffff\u0001\u007a\u0001\u0074\u0001\u0072\u0002"+
    "\uffff\u0001\u0070\u0001\uffff\u0001\u007a\u0001\u006f\u0001\u007a\u0001"+
    "\u0070\u0001\u0072\u0001\u0070\u0003\u007a\u0001\uffff\u0001\u006f\u0001"+
    "\u0065\u0001\u0073\u0002\uffff\u0002\u0065\u0003\uffff\u0001\u007a\u0001"+
    "\u006e\u0001\uffff\u0001\u007a\u0001\u0065\u0001\uffff\u0001\u007a\u0001"+
    "\uffff\u0001\u0070\u0001\u0073\u0001\uffff\u0001\u002d\u0001\uffff\u0001"+
    "\u002d\u0001\uffff\u0001\u0072\u0001\u006d\u0003\uffff\u0001\u006f\u0001"+
    "\u0069\u0001\uffff\u0001\u007a\u0003\uffff\u0001\u007a\u0001\u002d\u0001"+
    "\u0061\u0001\uffff\u0001\u006e\u0001\uffff\u0001\u0061\u0001\u006d\u0001"+
    "\u0061\u0001\u006f\u0003\uffff\u0001\u0064\u0001\u006e\u0001\u0069\u0001"+
    "\u0070\u0001\u007a\u0001\uffff\u0001\u006f\u0001\uffff\u0001\u007a\u0001"+
    "\uffff\u0001\u0061\u0004\u0069\u0001\u0065\u0001\u006e\u0001\u0070\u0002"+
    "\uffff\u0001\u0073\u0001\u0063\u0001\u007a\u0001\u0063\u0001\u0061\u0002"+
    "\u0072\u0001\u0065\u0001\u0063\u0001\u0062\u0001\u0061\u0001\uffff\u0001"+
    "\u0064\u0001\uffff\u0001\u0072\u0001\u0062\u0001\u006e\u0001\u0074\u0001"+
    "\u0062\u0001\u006e\u0002\u007a\u0002\u0065\u0001\uffff\u0001\u0065\u0001"+
    "\u0074\u0001\u0061\u0001\u002d\u0001\u007a\u0001\u0065\u0001\u006c\u0001"+
    "\u0072\u0001\u0065\u0001\u0061\u0001\u006c\u0001\u0073\u0001\u0065\u0001"+
    "\u0075\u0001\u0074\u0002\uffff\u0001\u006c\u0001\u007a\u0001\u0073\u0001"+
    "\u007a\u0001\u0074\u0001\u0073\u0001\uffff\u0001\u007a\u0001\u0069\u0001"+
    "\u0061\u0001\u007a\u0001\u0074\u0001\u0069\u0001\u0074\u0001\u006d\u0001"+
    "\u0074\u0001\u007a\u0001\u0066\u0001\uffff\u0001\u007a\u0001\uffff\u0001"+
    "\u006f\u0001\u0065\u0001\uffff\u0001\u006e\u0001\u0074\u0001\uffff\u0001"+
    "\u006f\u0001\u006e\u0001\u0072\u0001\u007a\u0001\u0065\u0001\uffff\u0001"+
    "\u007a\u0001\uffff\u0001\u0072\u0001\u006c\u0001\u0067\u0001\u006f\u0001"+
    "\u0072\u0001\u0067\u0001\u0075\u0001\uffff\u0001\u007a\u0001\uffff\u0001"+
    "\u007a\u0001\u0066\u0001\u007a\u0001\u0072\u0002\u007a\u0001\u0063\u0002"+
    "\uffff\u0001\u007a\u0001\uffff\u0001\u007a\u0002\uffff\u0001\u0074\u0002"+
    "\uffff\u0001\u0069\u0001\u006f\u0001\u006e\u0001\u007a\u0001\uffff",
    DFA19_acceptS:
        "\u001c\uffff\u0001\u00d5\u0001\u00d6\u0001\uffff\u0001\u00da\u0001"+
    "\u00db\u0001\u00dc\u0001\u00dd\u0002\uffff\u0001\u00e0\u0002\uffff\u0001"+
    "\u00e3\u0001\uffff\u0001\u00e5\u0001\u00e6\u0005\uffff\u0001\u00f7\u0001"+
    "\u00ff\u0001\uffff\u0001\u0103\u0001\u0104\u0001\u0105\u0001\u0106\u0001"+
    "\uffff\u0001\u010e\u0008\uffff\u0001\u0105\u0052\uffff\u0001\u00d3\u0001"+
    "\u00d8\u0001\u00f8\u0001\uffff\u0001\u010d\u0001\u00d4\u0001\u00d5\u0001"+
    "\u00d6\u0001\u00d7\u0001\u00d9\u0001\u00da\u0001\u00db\u0001\u00dc\u0001"+
    "\u00dd\u0001\u00de\u0001\u00f4\u0001\u00f3\u0001\u00df\u0001\u00f0\u0001"+
    "\u00e0\u0001\u00fa\u0001\u00e1\u0001\uffff\u0001\u00e2\u0001\u00e3\u0001"+
    "\u00fe\u0001\u00e4\u0001\u00e5\u0001\u00e6\u0001\u00fc\u0001\u00e7\u0001"+
    "\u00ea\u0001\u00ec\u0001\u00f6\u0002\uffff\u0001\u00e8\u0001\u00eb\u0001"+
    "\u00ed\u0001\u00e9\u0001\u00ef\u0001\u00f5\u0001\u00ee\u0001\u00f2\u0001"+
    "\u00f1\u0001\uffff\u0001\u00f7\u0001\u00ff\u0001\u0100\u0001\u0103\u0001"+
    "\u0104\u0001\u0106\u0001\u010a\u0002\uffff\u0001\u010c\u0004\uffff\u0001"+
    "\u0004\u0001\uffff\u0001\u0006\u0008\uffff\u0001\u000a\u001b\uffff\u0001"+
    "\u0020\u000e\uffff\u0001\u0028\u0002\uffff\u0001\u002a\u0001\uffff\u0001"+
    "\u002c\u0006\uffff\u0001\u002e\u0001\u0032\u0007\uffff\u0001\u0035\u0001"+
    "\u0038\u0007\uffff\u0001\u003c\u0003\uffff\u0001\u00a9\u0001\uffff\u0001"+
    "\u0041\u0002\uffff\u0001\u0043\u0002\uffff\u0001\u00ce\u001d\uffff\u0001"+
    "\u005c\u0019\uffff\u0001\u00f9\u0001\u0107\u0001\u0102\u0001\u0101\u0001"+
    "\uffff\u0001\u00fd\u0001\u0109\u0001\u010b\u0002\uffff\u0001\u0003\u0001"+
    "\u0097\u0004\uffff\u0001\u0096\u0003\uffff\u0001\u00d0\u0014\uffff\u0001"+
    "\u0018\u0009\uffff\u0001\u006d\u0008\uffff\u0001\u0026\u0013\uffff\u0001"+
    "\u0034\u0003\uffff\u0001\u0037\u0005\uffff\u0001\u0039\u0007\uffff\u0001"+
    "\u00aa\u002b\uffff\u0001\u007d\u0016\uffff\u0001\u0073\u0001\uffff\u0001"+
    "\u00cd\u0009\uffff\u0001\u00d1\u0004\uffff\u0001\u000b\u0001\uffff\u0001"+
    "\u000c\u000b\uffff\u0001\u0085\u000c\uffff\u0001\u001c\u0007\uffff\u0001"+
    "\u00c2\u0005\uffff\u0001\u009f\u0003\uffff\u0001\u00a3\u0002\uffff\u0001"+
    "\u002b\u0007\uffff\u0001\u0089\u0002\uffff\u0001\u0033\u0001\u008c\u0004"+
    "\uffff\u0001\u00c3\u0002\uffff\u0001\u00a8\u0002\uffff\u0001\u0074\u0003"+
    "\uffff\u0001\u003f\u0001\uffff\u0001\u0040\u0003\uffff\u0001\u0075\u0012"+
    "\uffff\u0001\u00b6\u0001\uffff\u0001\u00b0\u0002\uffff\u0001\u0055\u0002"+
    "\uffff\u0001\u0056\u0002\uffff\u0001\u0092\u0005\uffff\u0001\u005a\u0001"+
    "\u005b\u0003\uffff\u0001\u007f\u000d\uffff\u0001\u0080\u0003\uffff\u0001"+
    "\u0095\u0003\uffff\u0001\u00be\u0002\uffff\u0001\u00d2\u0001\u00fb\u0001"+
    "\u0108\u0003\uffff\u0001\u004f\u0001\uffff\u0001\u0083\u0004\uffff\u0001"+
    "\u00c0\u0001\uffff\u0001\u0067\u0001\u000e\u0001\u00c6\u0009\uffff\u0001"+
    "\u0069\u0005\uffff\u0001\u006c\u0006\uffff\u0001\u001d\u0002\uffff\u0001"+
    "\u0021\u0007\uffff\u0001\u0087\u0001\uffff\u0001\u00a1\u0001\u00a2\u0002"+
    "\uffff\u0001\u006e\u0008\uffff\u0001\u00cb\u0001\uffff\u0001\u0036\u0008"+
    "\uffff\u0001\u008e\u0004\uffff\u0001\u0044\u000f\uffff\u0001\u0059\u0001"+
    "\uffff\u0001\u007b\u0003\uffff\u0001\u00b1\u000a\uffff\u0001\u005d\u0002"+
    "\uffff\u0001\u00b8\u0001\u005f\u0004\uffff\u0001\u00ba\u0001\uffff\u0001"+
    "\u0094\u0002\uffff\u0001\u0064\u0001\u00c5\u0004\uffff\u0001\u00bf\u0006"+
    "\uffff\u0001\u008b\u0002\uffff\u0001\u0084\u000f\uffff\u0001\u0086\u0007"+
    "\uffff\u0001\u009d\u0001\u0022\u0009\uffff\u0001\u002d\u0002\uffff\u0001"+
    "\u0088\u0005\uffff\u0001\u00a6\u0001\uffff\u0001\u003a\u0001\u008d\u0005"+
    "\uffff\u0001\u0042\u0002\uffff\u0001\u004e\u0001\u00ab\u0001\u0047\u0009"+
    "\uffff\u0001\u00ae\u0001\uffff\u0001\u0058\u0001\u0057\u0003\uffff\u0001"+
    "\u0052\u0003\uffff\u0001\u007c\u0001\uffff\u0001\u0050\u0001\u008f\u0006"+
    "\uffff\u0001\u00cf\u0006\uffff\u0001\u0081\u0002\uffff\u0001\u00bb\u0001"+
    "\u0065\u000a\uffff\u0001\u0010\u0002\uffff\u0001\u0068\u0001\u0099\u0003"+
    "\uffff\u0001\u0013\u0001\uffff\u0001\u0014\u0006\uffff\u0001\u001b\u0003"+
    "\uffff\u0001\u009e\u0001\uffff\u0001\u00c9\u0001\u00ca\u0004\uffff\u0001"+
    "\u002f\u000c\uffff\u0001\u0045\u0007\uffff\u0001\u0077\u0009\uffff\u0001"+
    "\u007a\u0001\uffff\u0001\u0090\u000a\uffff\u0001\u0063\u0001\u00bd\u0003"+
    "\uffff\u0001\u0001\u0002\uffff\u0001\u0066\u0001\u0008\u0001\uffff\u0001"+
    "\u000d\u0004\uffff\u0001\u0098\u0001\u00c1\u0007\uffff\u0001\u009c\u0001"+
    "\uffff\u0001\u0019\u0001\uffff\u0001\u001f\u0001\u0023\u0001\uffff\u0001"+
    "\u0027\u0001\uffff\u0001\u0029\u0001\uffff\u0001\u0030\u0003\uffff\u0001"+
    "\u0070\u0001\u00a5\u0006\uffff\u0001\u0046\u0003\uffff\u0001\u004a\u0001"+
    "\u0079\u0002\uffff\u0001\u008a\u0001\uffff\u0001\u00b5\u0005\uffff\u0001"+
    "\u00b3\u0005\uffff\u0001\u007e\u0001\uffff\u0001\u0093\u0001\uffff\u0001"+
    "\u0061\u0001\u0062\u0003\uffff\u0001\u0005\u0001\u0007\u0001\uffff\u0001"+
    "\u000f\u0009\uffff\u0001\u009b\u0003\uffff\u0001\u0024\u0001\u00a0\u0002"+
    "\uffff\u0001\u0031\u0001\u00cc\u0001\u00a7\u0002\uffff\u0001\u003b\u0002"+
    "\uffff\u0001\u004d\u0001\uffff\u0001\u00ac\u0002\uffff\u0001\u0048\u0001"+
    "\uffff\u0001\u0078\u0001\uffff\u0001\u0051\u0002\uffff\u0001\u00b2\u0001"+
    "\u00b4\u0001\u00c4\u0002\uffff\u0001\u00b7\u0001\uffff\u0001\u0060\u0001"+
    "\u00b9\u0001\u00bc\u0003\uffff\u0001\u00c7\u0001\uffff\u0001\u00c8\u0004"+
    "\uffff\u0001\u0015\u0001\u0017\u0001\u009a\u0005\uffff\u0001\u0071\u0001"+
    "\uffff\u0001\u003d\u0001\uffff\u0001\u00ad\u0008\uffff\u0001\u005e\u0001"+
    "\u0082\u000b\uffff\u0001\u00a4\u0001\uffff\u0001\u003e\u000a\uffff\u0001"+
    "\u0011\u000f\uffff\u0001\u0091\u0001\u00af\u0006\uffff\u0001\u001a\u000b"+
    "\uffff\u0001\u0009\u0001\uffff\u0001\u006a\u0002\uffff\u0001\u001e\u0002"+
    "\uffff\u0001\u0072\u0005\uffff\u0001\u0054\u0001\uffff\u0001\u0012\u0007"+
    "\uffff\u0001\u004c\u0001\uffff\u0001\u0002\u0007\uffff\u0001\u0053\u0001"+
    "\u006b\u0001\uffff\u0001\u0025\u0001\uffff\u0001\u0076\u0001\u0049\u0001"+
    "\uffff\u0001\u0016\u0001\u006f\u0004\uffff\u0001\u004b",
    DFA19_specialS:
        "\u0001\u0001\u001a\uffff\u0001\u0002\u01f6\uffff\u0001\u0000\u02f8"+
    "\uffff}>",
    DFA19_transitionS: [
            "\u0009\u0039\u0002\u0037\u0002\u0039\u0001\u0037\u0012\u0039"+
            "\u0001\u0037\u0001\u0024\u0001\u0035\u0001\u0026\u0001\u001d"+
            "\u0001\u0025\u0001\u0027\u0001\u0034\u0001\u001b\u0001\u001c"+
            "\u0001\u002a\u0001\u002b\u0001\u0028\u0001\u002c\u0001\u0030"+
            "\u0001\u002f\u000a\u0038\u0001\u0023\u0001\u0031\u0001\u002d"+
            "\u0001\u0022\u0001\u002e\u0001\u0029\u0001\u0032\u000d\u0036"+
            "\u0001\u0016\u0002\u0036\u0001\u0033\u0009\u0036\u0001\u0020"+
            "\u0001\u0039\u0001\u0021\u0001\u0039\u0001\u0036\u0001\u0039"+
            "\u0001\u0001\u0001\u0002\u0001\u0003\u0001\u0004\u0001\u0005"+
            "\u0001\u0006\u0001\u0007\u0001\u0036\u0001\u0008\u0001\u000c"+
            "\u0001\u0018\u0001\u0009\u0001\u000a\u0001\u000b\u0001\u000d"+
            "\u0001\u000e\u0001\u0019\u0001\u0010\u0001\u000f\u0001\u0011"+
            "\u0001\u0012\u0001\u0013\u0001\u0014\u0001\u0015\u0001\u0036"+
            "\u0001\u0017\u0001\u001e\u0001\u001a\u0001\u001f\uff82\u0039",
            "\u0001\u003f\u0005\uffff\u0001\u003e\u0001\u0041\u0001\u003a"+
            "\u0001\uffff\u0001\u0040\u0001\uffff\u0001\u003d\u0001\u003b"+
            "\u0001\u003c",
            "\u0001\u0043\u0003\uffff\u0001\u0046\u0009\uffff\u0001\u0044"+
            "\u0002\uffff\u0001\u0047\u0006\uffff\u0001\u0045",
            "\u0001\u0048\u0006\uffff\u0001\u0049\u0006\uffff\u0001\u004a",
            "\u0001\u004b\u0003\uffff\u0001\u004c\u0005\uffff\u0001\u004d",
            "\u0001\u004e\u0001\u004f\u0001\u0050\u0002\uffff\u0001\u0051"+
            "\u0004\uffff\u0001\u0052\u0001\uffff\u0001\u0053",
            "\u0001\u0056\u0005\uffff\u0001\u0054\u0002\uffff\u0001\u0057"+
            "\u0001\uffff\u0001\u0058\u0001\u0055",
            "\u0001\u0059\u000c\uffff\u0001\u005a\u0001\uffff\u0001\u005b",
            "\u0001\u005c\u0001\uffff\u0001\u005d\u0006\uffff\u0001\u005e"+
            "\u0001\u005f\u0004\uffff\u0001\u0060\u0001\u0061",
            "\u0001\u0062\u0003\uffff\u0001\u0063\u0009\uffff\u0001\u0065"+
            "\u0004\uffff\u0001\u0064",
            "\u0001\u0067\u0005\uffff\u0001\u0066",
            "\u0001\u0068\u0003\uffff\u0001\u0069\u0009\uffff\u0001\u006a",
            "\u0001\u006b",
            "\u0001\u006f\u0001\u0071\u0002\uffff\u0001\u006c\u0007\uffff"+
            "\u0001\u0070\u0001\uffff\u0001\u006d\u0001\uffff\u0001\u006e",
            "\u0001\u0072\u0003\uffff\u0001\u0074\u0002\uffff\u0001\u0076"+
            "\u0006\uffff\u0001\u0075\u0002\uffff\u0001\u0073",
            "\u0001\u0078\u0001\uffff\u0001\u0079\u0001\uffff\u0001\u007a"+
            "\u0005\uffff\u0001\u007e\u0001\u007c\u0002\uffff\u0001\u007b"+
            "\u0004\uffff\u0001\u0077\u0002\uffff\u0001\u007d",
            "\u0001\u007f",
            "\u0001\u0080\u0002\uffff\u0001\u0081\u0001\u0086\u0005\uffff"+
            "\u0001\u0082\u0002\uffff\u0001\u0083\u0002\uffff\u0001\u0085"+
            "\u0003\uffff\u0001\u0084",
            "\u0001\u0087\u0001\uffff\u0001\u0088\u0002\uffff\u0001\u0089",
            "\u0001\u008a\u0003\uffff\u0001\u008b",
            "\u0001\u008e\u0002\uffff\u0001\u008c\u0001\u008d\u0005\uffff"+
            "\u0001\u008f",
            "\u0001\u0090",
            "\u0001\u0091",
            "\u0001\u0092",
            "\u0001\u0093",
            "\u0001\u0094",
            "\u0001\u0095\u0001\u0096",
            "\u0001\u0098\u0016\uffff\u0001\u0099",
            "",
            "",
            "\u0001\u009d",
            "",
            "",
            "",
            "",
            "\u0001\u00a4\u0002\uffff\u0001\u00a3",
            "\u0001\u00a6",
            "",
            "\u0001\u00a9",
            "\u0001\u00ab",
            "",
            "\u0001\u00ae",
            "",
            "",
            "\u0001\u00b2",
            "\u0001\u00b7\u000d\uffff\u0001\u00b6\u000c\uffff\u0001\u00b5"+
            "\u0001\u00b4\u0001\uffff\u0001\u00b8",
            "\u0001\u00ba\u0001\u00bb",
            "\u0001\u00bd\u000e\uffff\u0001\u00be",
            "\u0001\u00c0\u0001\uffff\u000a\u00c2",
            "",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "",
            "",
            "",
            "\u0001\u00cb\u0001\uffff\u000a\u00ca\u000b\uffff\u0001\u00cc"+
            "\u001f\uffff\u0001\u00cc",
            "",
            "\u0001\u00cd\u0001\u00ce\u0014\uffff\u0001\u00cf",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u0002\u0042\u0001\u00d0"+
            "\u0017\u0042",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u0013\u0042\u0001\u00d2"+
            "\u0006\u0042",
            "\u0001\u00d4",
            "\u0001\u00d5",
            "\u0001\u00d6",
            "\u0001\u00d8\u0001\u00d7",
            "\u0001\u00d9",
            "",
            "\u0001\u00da",
            "\u0001\u00db",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u00dd",
            "\u0001\u00de",
            "\u0001\u00df\u0001\u00e0",
            "\u0001\u00e2\u0003\uffff\u0001\u00e1",
            "\u0001\u00e3\u0001\u00e4\u0001\u00e5\u0001\uffff\u0001\u00e6"+
            "\u0004\uffff\u0001\u00e7",
            "\u0001\u00e8\u0002\uffff\u0001\u00e9\u0005\uffff\u0001\u00eb"+
            "\u0006\uffff\u0001\u00ea",
            "\u0001\u00ee\u0004\uffff\u0001\u00ef\u0001\u00ed\u000b\uffff"+
            "\u0001\u00f0\u0002\uffff\u0001\u00ec",
            "\u0001\u00f1",
            "\u0001\u00f2\u000d\uffff\u0001\u00f3",
            "\u0001\u00f4",
            "\u0001\u00f5\u0001\u00f6\u000f\uffff\u0001\u00f7",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u00f9",
            "\u0001\u00fc\u0001\uffff\u0001\u00fa\u0005\uffff\u0001\u00fd"+
            "\u000a\uffff\u0001\u00fb",
            "\u0001\u00fe\u0005\uffff\u0001\u00ff",
            "\u0001\u0100",
            "\u0001\u0101",
            "\u0001\u0102",
            "\u0001\u0103\u0033\uffff\u0001\u0104\u000c\uffff\u0001\u0105"+
            "\u0001\u0106",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0108\u0009\uffff\u0001\u0109",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u010b",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u010d",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u0003\u0042\u0001\u0112"+
            "\u0001\u0042\u0001\u0111\u0001\u0042\u0001\u010e\u000a\u0042"+
            "\u0001\u010f\u0001\u0110\u0006\u0042",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0115",
            "\u0001\u0118\u0004\uffff\u0001\u0117\u0004\uffff\u0001\u0116",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u0001\u0119\u0012\u0042"+
            "\u0001\u011a\u0001\u0042\u0001\u011b\u0004\u0042",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u011f\u0007\uffff\u0001\u011e",
            "\u0001\u0120\u000e\uffff\u0001\u0121",
            "\u0001\u0122",
            "\u0001\u0123",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u0017\u0042\u0001\u0124"+
            "\u0002\u0042",
            "\u0001\u0126\u0001\u0042\u0001\uffff\u000a\u0042\u0007\uffff"+
            "\u001a\u0042\u0004\uffff\u0001\u0042\u0001\uffff\u0003\u0042"+
            "\u0001\u0127\u000f\u0042\u0001\u0128\u0006\u0042",
            "\u0001\u012a",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u012c",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u0003\u0042\u0001\u012d"+
            "\u0016\u0042",
            "\u0001\u012f",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u000b\u0042\u0001\u0130"+
            "\u000e\u0042",
            "\u0001\u0132",
            "\u0001\u0133\u0001\uffff\u0001\u0134",
            "\u0001\u0135\u0009\uffff\u0001\u0136",
            "\u0001\u0137",
            "\u0001\u0138",
            "\u0001\u0139",
            "\u0001\u013b\u0003\uffff\u0001\u013c\u0009\uffff\u0001\u013d"+
            "\u0002\uffff\u0001\u013a",
            "\u0001\u013f\u0006\uffff\u0001\u013e",
            "\u0001\u0140\u0006\uffff\u0001\u0141",
            "\u0001\u0142\u0001\uffff\u0001\u0143",
            "\u0001\u0144",
            "\u0001\u0145",
            "\u0001\u0146",
            "\u0001\u0147",
            "\u0001\u014c\u0001\uffff\u0001\u0149\u0001\uffff\u0001\u014a"+
            "\u0003\uffff\u0001\u0148\u0001\uffff\u0001\u014b",
            "\u0001\u014d",
            "\u0001\u014e",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0150\u0013\uffff\u0001\u0151",
            "\u0001\u0152",
            "\u0001\u0153",
            "\u0001\u0154",
            "\u0001\u0155\u0005\uffff\u0001\u0156",
            "\u0001\u0157\u000b\uffff\u0001\u0158",
            "\u0001\u0159",
            "\u0001\u015a\u0005\uffff\u0001\u015b",
            "\u0001\u015c",
            "\u0001\u015d\u0003\uffff\u0001\u015e",
            "\u0001\u0161\u0001\uffff\u0001\u015f\u0005\uffff\u0001\u0160",
            "\u0001\u0162",
            "\u0001\u0163",
            "\u0001\u0164",
            "\u0001\u0165",
            "\u0001\u0166",
            "\u0001\u0167",
            "\u0001\u0168",
            "",
            "",
            "",
            "\u0002\u016a\u0002\uffff\u0001\u016a\u0012\uffff\u0001\u016a"+
            "\u0020\uffff\u001a\u016a\u0004\uffff\u0001\u016a\u0001\uffff"+
            "\u001a\u016a",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\u0001\u016b",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\u0001\u016d",
            "\u0002\u016f\u0002\uffff\u0001\u016f\u0012\uffff\u0001\u016f"+
            "\u0020\uffff\u001a\u016f\u0004\uffff\u0001\u016f\u0001\uffff"+
            "\u001a\u016f",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\u000a\u00c2\u000b\uffff\u0001\u00cc\u001f\uffff\u0001\u00cc",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\u0001\u00cb\u0001\uffff\u000a\u00ca\u000b\uffff\u0001\u00cc"+
            "\u001f\uffff\u0001\u00cc",
            "\u000a\u0171\u000b\uffff\u0001\u00cc\u001f\uffff\u0001\u00cc",
            "",
            "\u0001\u0172",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0175",
            "",
            "\u0001\u0176",
            "",
            "\u0001\u0177",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u000e\u0042\u0001\u0178"+
            "\u000b\u0042",
            "\u0001\u017a",
            "\u0001\u017b",
            "\u0001\u017c",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u017e",
            "\u0001\u017f",
            "",
            "\u0001\u0180",
            "\u0001\u0181",
            "\u0001\u0182\u000e\uffff\u0001\u0183",
            "\u0001\u0184",
            "\u0001\u0185",
            "\u0001\u0186",
            "\u0001\u0187",
            "\u0001\u0188",
            "\u0001\u0189\u0001\u018a",
            "\u0001\u018b",
            "\u0001\u018c",
            "\u0001\u018e\u0002\uffff\u0001\u018d",
            "\u0001\u018f",
            "\u0001\u0190",
            "\u0001\u0191",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0193",
            "\u0001\u0194",
            "\u0001\u0195",
            "\u0001\u0196",
            "\u0001\u0197",
            "\u0001\u0198",
            "\u0001\u0199",
            "\u0001\u019a",
            "\u0001\u019b",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u019d",
            "",
            "\u0001\u019e",
            "\u0001\u019f",
            "\u0001\u01a0",
            "\u0001\u01a1",
            "\u0001\u01a2",
            "\u0001\u01a3",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u0004\u0042\u0001\u01a4"+
            "\u0015\u0042",
            "\u0001\u01a6",
            "\u0001\u01a7",
            "\u0001\u01a8",
            "\u0001\u01a9",
            "\u0001\u01aa",
            "\u0001\u01ab",
            "\u0001\u01ac",
            "",
            "\u0001\u01ad",
            "\u0001\u01ae",
            "",
            "\u0001\u01af",
            "",
            "\u0001\u01b0",
            "\u0001\u01b1",
            "\u0001\u01b3\u000e\uffff\u0001\u01b2",
            "\u0001\u01b4\u0009\uffff\u0001\u01b5",
            "\u0001\u01b6",
            "\u0001\u01b7",
            "",
            "",
            "\u0001\u01b8",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u01ba",
            "\u0001\u01bb",
            "\u0001\u01bc",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u01be",
            "",
            "",
            "\u0001\u01bf",
            "\u0001\u01c0",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u0008\u0042\u0001\u01c2"+
            "\u000b\u0042\u0001\u01c1\u0005\u0042",
            "\u0001\u01c4",
            "\u0001\u01c5",
            "\u0001\u01c6",
            "\u0001\u01c7",
            "",
            "\u0001\u01c8\u0006\uffff\u0001\u01c9",
            "\u0001\u01ca",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0001\u01cc",
            "",
            "\u0001\u01cd",
            "\u0001\u01ce",
            "",
            "\u0001\u01cf",
            "\u0001\u01d0",
            "",
            "\u0001\u01d1",
            "\u0001\u01d3\u0003\uffff\u0001\u01d2",
            "\u0001\u01d4",
            "\u0001\u01d5\u000f\uffff\u0001\u01d6\u0002\uffff\u0001\u01d7",
            "\u0001\u01d8",
            "\u0001\u01da\u0035\uffff\u0001\u01d9",
            "\u0001\u01db",
            "\u0001\u01dc",
            "\u0001\u01de\u000b\uffff\u0001\u01dd",
            "\u0001\u01df\u000f\uffff\u0001\u01e0",
            "\u0001\u01e1",
            "\u0001\u01e2",
            "\u0001\u01e3",
            "\u0001\u01e4",
            "\u0001\u01e5",
            "\u0001\u01e6",
            "\u0001\u01e7",
            "\u0001\u01e8\u0001\u01e9",
            "\u0001\u01ea",
            "\u0001\u01eb",
            "\u0001\u01ec",
            "\u0001\u01ed",
            "\u0001\u01ee",
            "\u0001\u01ef",
            "\u0001\u01f0",
            "\u0001\u01f1",
            "\u0001\u01f2",
            "\u0001\u01f3",
            "\u0001\u01f4\u0004\uffff\u0001\u01f5",
            "",
            "\u0001\u01f6",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u01f8",
            "\u0001\u01f9",
            "\u0001\u01fa",
            "\u0001\u01fb\u0001\uffff\u0001\u01fc",
            "\u0001\u01fd",
            "\u0001\u01fe",
            "\u0001\u01ff",
            "\u0001\u0200",
            "\u0001\u0201\u000b\uffff\u0001\u0202",
            "\u0001\u0203",
            "\u0001\u0204",
            "\u0001\u0206\u0003\uffff\u0001\u0205",
            "\u0001\u0207",
            "\u0001\u0208",
            "\u0001\u0209",
            "\u0001\u020a",
            "\u0001\u020b",
            "\u0001\u020c",
            "\u0001\u020d",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u020f",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0211",
            "",
            "",
            "",
            "",
            "\u0001\u0212",
            "",
            "",
            "",
            "\u000a\u0171\u000b\uffff\u0001\u00cc\u001f\uffff\u0001\u00cc",
            "\u0001\u0213",
            "",
            "",
            "\u0001\u0214",
            "\u0001\u0215",
            "\u0001\u0216",
            "\u0001\u0217",
            "",
            "\u0001\u0218",
            "\u0001\u0219",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0001\u021b",
            "\u0001\u021c",
            "\u0001\u021d",
            "\u0001\u021e",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u0001\u0220\u0019\u0042",
            "\u0001\u0222",
            "\u0001\u0223",
            "\u0001\u0224",
            "\u0001\u0225\u0003\uffff\u0001\u0226",
            "\u0001\u0227",
            "\u0001\u0228",
            "\u0001\u022a\u0003\uffff\u0001\u0229\u0003\uffff\u0001\u022b",
            "\u0001\u022c\u0001\u0042\u0001\uffff\u000a\u0042\u0007\uffff"+
            "\u001a\u0042\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u022e",
            "\u0001\u022f",
            "\u0001\u0230",
            "\u0001\u0231",
            "\u0001\u0232",
            "\u0001\u0233",
            "",
            "\u0001\u0234",
            "\u0001\u0235",
            "\u0001\u0236",
            "\u0001\u0237",
            "\u0001\u0238",
            "\u0001\u0239",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u023b",
            "\u0001\u023c",
            "",
            "\u0001\u023d",
            "\u0001\u023e",
            "\u0001\u023f",
            "\u0001\u0240",
            "\u0001\u0241",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0243",
            "\u0001\u0244\u0007\uffff\u0001\u0245",
            "",
            "\u0001\u0246",
            "\u0001\u0247",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0249",
            "\u0001\u024a",
            "\u0001\u024b",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u024d",
            "\u0001\u024e",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0250",
            "\u0001\u0251",
            "\u0001\u0252",
            "\u0001\u0254\u0003\uffff\u0001\u0253",
            "\u0001\u0256\u000a\uffff\u0001\u0255",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0258",
            "\u0001\u0259",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u025c",
            "\u0001\u025d",
            "",
            "\u0001\u025e",
            "\u0001\u025f",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0261",
            "\u0001\u0262",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0264",
            "\u0001\u0265",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0267",
            "\u0001\u0268",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u0012\u0042\u0001\u0269"+
            "\u0007\u0042",
            "",
            "\u0001\u026b\u0001\u0042\u0001\uffff\u000a\u0042\u0007\uffff"+
            "\u001a\u0042\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u026d",
            "\u0001\u026e",
            "\u0001\u026f",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0271",
            "\u0001\u0272",
            "\u0001\u0273",
            "\u0001\u0274",
            "\u0001\u0275",
            "\u0001\u0276",
            "\u0001\u0277",
            "\u0001\u0278",
            "\u0001\u0279",
            "\u0001\u027a",
            "\u0001\u027b",
            "\u0001\u027c",
            "\u0001\u027d",
            "\u0001\u027e\u000c\uffff\u0001\u027f",
            "\u0001\u0280",
            "\u0001\u0281",
            "\u0001\u0282",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0284",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0286",
            "\u0001\u0287",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0289",
            "\u0001\u028a",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u028c",
            "\u0001\u028d",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u028f",
            "\u0001\u0290",
            "\u0001\u0291",
            "\u0001\u0292",
            "\u0001\u0293",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0296",
            "\u0001\u0297",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u0012\u0042\u0001\u0298"+
            "\u0007\u0042",
            "\u0001\u029a",
            "\u0001\u029b",
            "\u0001\u029c",
            "\u0001\u029d",
            "\u0001\u029e",
            "\u0001\u029f",
            "\u0001\u02a0",
            "\u0001\u02a1",
            "\u0001\u02a2",
            "\u0001\u02a3",
            "\u0001\u02a4",
            "\u0001\u02a5",
            "\u0001\u02a6",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u02a8",
            "\u0001\u02a9",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u000e\u0042\u0001\u02aa"+
            "\u000b\u0042",
            "\u0001\u02ac",
            "\u0001\u02ad",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u0012\u0042\u0001\u02ae"+
            "\u0007\u0042",
            "\u0001\u02b0",
            "",
            "\u0001\u02b1",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0000\u02b4",
            "\u0001\u02b5",
            "\u0001\u02b6",
            "\u0001\u02b7",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u02b9",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u02bb",
            "",
            "\u0001\u02bc",
            "\u0001\u02bd",
            "\u0001\u02be",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0001\u02c0",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u02c4",
            "\u0001\u02c5",
            "\u0001\u02c6",
            "\u0001\u02c7",
            "\u0001\u02c9\u0009\uffff\u0001\u02c8",
            "\u0001\u02ca",
            "\u0001\u02cb",
            "\u0001\u02cc",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u02ce",
            "\u0001\u02cf",
            "\u0001\u02d0",
            "\u0001\u02d1",
            "\u0001\u02d2",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u02d4",
            "\u0001\u02d5",
            "\u0001\u02d6",
            "\u0001\u02d7",
            "\u0001\u02d8",
            "",
            "\u0001\u02d9\u0001\u0042\u0001\uffff\u000a\u0042\u0007\uffff"+
            "\u001a\u0042\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u02db",
            "\u0001\u02dc",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u02de",
            "\u0001\u02df",
            "\u0001\u02e0",
            "",
            "\u0001\u02e1",
            "\u0001\u02e2",
            "\u0001\u02e3",
            "\u0001\u02e4",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0001\u02e6",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0001\u02e9",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u0008\u0042\u0001\u02ea"+
            "\u0011\u0042",
            "",
            "\u0001\u02ec",
            "\u0001\u02ed",
            "\u0001\u02ee",
            "\u0001\u02ef",
            "\u0001\u02f0",
            "\u0001\u02f1",
            "\u0001\u02f2",
            "",
            "\u0001\u02f3",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "",
            "\u0001\u02f5",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u02f7",
            "\u0001\u02f8",
            "",
            "\u0001\u02f9",
            "\u0001\u02fa",
            "",
            "\u0001\u02fb",
            "\u0001\u02fc",
            "",
            "\u0001\u02fd",
            "\u0001\u02fe",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0001\u0300",
            "",
            "\u0001\u0301",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u0004\u0042\u0001\u0302"+
            "\u0003\u0042\u0001\u0303\u0011\u0042",
            "\u0001\u0305",
            "",
            "\u0001\u0306",
            "\u0001\u0307",
            "\u0001\u0308",
            "\u0001\u0309",
            "\u0001\u030a",
            "\u0001\u030b",
            "\u0001\u030c",
            "\u0001\u030d",
            "\u0001\u030e",
            "\u0001\u030f",
            "\u0001\u0310",
            "\u0001\u0311",
            "\u0001\u0312",
            "\u0001\u0313",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0315",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0317",
            "",
            "\u0001\u0318",
            "",
            "\u0001\u0319",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0001\u031b",
            "\u0001\u031c",
            "",
            "\u0001\u031d",
            "\u0001\u031e",
            "",
            "\u0001\u031f",
            "\u0001\u0320",
            "\u0001\u0321",
            "\u0001\u0322",
            "\u0001\u0323",
            "",
            "",
            "\u0001\u0324",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0326",
            "",
            "\u0001\u0327",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u032a",
            "\u0001\u032b",
            "\u0001\u032c",
            "\u0001\u032d",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u032f",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0331",
            "\u0001\u0332",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0335",
            "\u0001\u0336",
            "",
            "\u0001\u0337",
            "\u0001\u0338",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0001\u033a",
            "\u0001\u033b",
            "",
            "",
            "",
            "\u0001\u033c",
            "\u0001\u033d",
            "\u0001\u033e",
            "",
            "\u0001\u033f",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0341",
            "\u0001\u0342",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0001\u0344",
            "",
            "",
            "",
            "\u0001\u0345",
            "\u0001\u0346",
            "\u0001\u0347",
            "\u0001\u0349\u0013\uffff\u0001\u0348",
            "\u0001\u034a",
            "\u0001\u034b",
            "\u0001\u034c",
            "\u0001\u034d",
            "\u0001\u034e",
            "",
            "\u0001\u034f",
            "\u0001\u0350",
            "\u0001\u0351",
            "\u0001\u0352",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0001\u0354",
            "\u0001\u0355",
            "\u0001\u0356",
            "\u0001\u0357",
            "\u0001\u0358",
            "\u0001\u0359",
            "",
            "\u0001\u035a",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u035d",
            "\u0001\u035e",
            "\u0001\u035f",
            "\u0001\u0360",
            "\u0001\u0361",
            "\u0001\u0362",
            "",
            "\u0001\u0363",
            "",
            "",
            "\u0001\u0364",
            "\u0001\u0365",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0367",
            "\u0001\u0368",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u036a",
            "\u0001\u036b",
            "\u0001\u036c",
            "\u0001\u036d",
            "",
            "\u0001\u036e",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0370",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0373",
            "\u0001\u0374",
            "\u0001\u0375",
            "\u0001\u0376",
            "",
            "\u0001\u0377",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0379",
            "\u0001\u037a",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u037e",
            "\u0001\u037f",
            "\u0001\u0380",
            "\u0001\u0381",
            "\u0001\u0382",
            "\u0001\u0383",
            "\u0001\u0384",
            "\u0001\u0385",
            "\u0001\u0386",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0388",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0001\u038b",
            "\u0001\u038c",
            "\u0001\u038d\u0001\u0042\u0001\uffff\u000a\u0042\u0007\uffff"+
            "\u001a\u0042\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0001\u038f",
            "\u0001\u0390",
            "\u0001\u0391",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u0008\u0042\u0001\u0393"+
            "\u0011\u0042",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0396",
            "\u0001\u0397",
            "\u0001\u0398",
            "\u0001\u0399",
            "",
            "\u0001\u039a",
            "\u0001\u039b",
            "",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u039d",
            "\u0001\u039e",
            "\u0001\u039f",
            "",
            "\u0001\u03a0",
            "",
            "\u0001\u03a1",
            "\u0001\u03a2",
            "",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u03a4",
            "\u0001\u03a5",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u03a8",
            "\u0001\u03a9",
            "\u0001\u03aa",
            "\u0001\u03ab",
            "\u0001\u03ac",
            "",
            "\u0001\u03ad",
            "\u0001\u03ae",
            "",
            "\u0001\u03af",
            "\u0001\u03b0",
            "\u0001\u03b1",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u03b3",
            "\u0001\u03b4",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u03b7",
            "\u0001\u03b8",
            "\u0001\u03b9",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u03bb",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u03bd\u0007\uffff\u0001\u03be",
            "",
            "\u0001\u03bf",
            "\u0001\u03c0",
            "\u0001\u03c1",
            "\u0001\u03c2",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u03c4",
            "\u0001\u03c5",
            "",
            "",
            "\u0001\u03c6",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u03c8",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u03cb",
            "\u0001\u03cc",
            "\u0001\u03cd",
            "\u0001\u03ce",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u03d0",
            "",
            "\u0001\u03d1",
            "\u0001\u03d2",
            "\u0001\u03d3",
            "\u0001\u03d4",
            "\u0001\u03d5",
            "",
            "\u0001\u03d6",
            "",
            "",
            "\u0001\u03d7",
            "\u0001\u03d8",
            "\u0001\u03d9",
            "\u0001\u03da",
            "\u0001\u03db",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u03dd",
            "",
            "",
            "",
            "\u0001\u03de",
            "\u0001\u03df",
            "\u0001\u03e0",
            "\u0001\u03e1",
            "\u0001\u03e2",
            "\u0001\u03e3",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u03e5",
            "\u0001\u03e6",
            "",
            "\u0001\u03e7",
            "",
            "",
            "\u0001\u03e8",
            "\u0001\u03e9",
            "\u0001\u03ea\u0003\uffff\u0001\u03eb",
            "",
            "\u0001\u03ec",
            "\u0001\u03ed",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0001\u03ef",
            "",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u03f1",
            "\u0001\u03f2",
            "\u0001\u03f3",
            "\u0001\u03f4",
            "\u0001\u03f5",
            "",
            "\u0001\u03f6",
            "\u0001\u03f7",
            "\u0001\u03f8",
            "\u0001\u03f9",
            "\u0001\u03fa",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u03fd",
            "",
            "",
            "\u0001\u03fe",
            "\u0001\u03ff\u0001\u0042\u0001\uffff\u000a\u0042\u0007\uffff"+
            "\u001a\u0042\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0401",
            "\u0001\u0402",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0405",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0407",
            "\u0001\u0408",
            "",
            "\u0001\u0409",
            "\u0001\u040a",
            "",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u040d",
            "",
            "\u0001\u040e\u000c\uffff\u0001\u040f",
            "",
            "\u0001\u0410",
            "\u0001\u0411",
            "\u0001\u0412",
            "\u0001\u0413",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0415\u0001\u0042\u0001\uffff\u000a\u0042\u0007\uffff"+
            "\u001a\u0042\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0001\u0417",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0001\u041a",
            "",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u041c",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u041e",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0420",
            "\u0001\u0421",
            "\u0001\u0422",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0425",
            "\u0001\u0426",
            "\u0001\u0427",
            "\u0001\u0428",
            "\u0001\u0429",
            "\u0001\u042a",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u042c",
            "\u0001\u042d",
            "\u0001\u042e",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0431",
            "",
            "\u0001\u0432",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0434",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0436",
            "\u0001\u0437",
            "\u0001\u0438",
            "\u0001\u0439",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u0012\u0042\u0001\u043a"+
            "\u0007\u0042",
            "",
            "\u0001\u043c",
            "",
            "\u0001\u043d",
            "\u0001\u043e",
            "\u0001\u043f",
            "\u0001\u0440",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0442",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0444",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "",
            "\u0001\u0447",
            "\u0001\u0448",
            "\u0001\u0449",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "",
            "\u0001\u044c",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u044e",
            "\u0001\u044f",
            "\u0001\u0450",
            "",
            "",
            "\u0001\u0451",
            "\u0001\u0452",
            "\u0001\u0453",
            "\u0001\u0454",
            "\u0001\u0455",
            "\u0001\u0456",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0001\u0458",
            "",
            "\u0001\u0459",
            "",
            "",
            "\u0001\u045a\u0001\u0042\u0001\uffff\u000a\u0042\u0007\uffff"+
            "\u001a\u0042\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0001\u045d",
            "",
            "\u0001\u045e",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0462",
            "\u0001\u0463\u0001\u0042\u0001\uffff\u000a\u0042\u0007\uffff"+
            "\u001a\u0042\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0465",
            "\u0001\u0466",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u0012\u0042\u0001\u0468"+
            "\u0007\u0042",
            "\u0001\u046a",
            "\u0001\u046b\u0001\u0042\u0001\uffff\u000a\u0042\u0007\uffff"+
            "\u001a\u0042\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "",
            "\u0001\u046d",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0001\u046f",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0471",
            "\u0001\u0472",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0476",
            "\u0001\u0477",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0479",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u047d",
            "\u0001\u047e",
            "",
            "",
            "\u0001\u047f",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0481",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0483",
            "\u0001\u0484",
            "\u0001\u0485",
            "\u0001\u0486\u0001\u0042\u0001\uffff\u000a\u0042\u0007\uffff"+
            "\u001a\u0042\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0001\u048a",
            "\u0001\u048b",
            "\u0001\u048c",
            "",
            "",
            "\u0001\u048d",
            "\u0001\u048e",
            "",
            "",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0490",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0492",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0001\u0494",
            "\u0001\u0495",
            "",
            "\u0001\u0496",
            "",
            "\u0001\u0497",
            "",
            "\u0001\u0498",
            "\u0001\u0499",
            "",
            "",
            "",
            "\u0001\u049a",
            "\u0001\u049b",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u049e",
            "\u0001\u049f",
            "",
            "\u0001\u04a0",
            "",
            "\u0001\u04a1",
            "\u0001\u04a2",
            "\u0001\u04a3",
            "\u0001\u04a4",
            "",
            "",
            "",
            "\u0001\u04a5",
            "\u0001\u04a6",
            "\u0001\u04a7",
            "\u0001\u04a8",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0001\u04aa",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0001\u04ac",
            "\u0001\u04ad",
            "\u0001\u04ae",
            "\u0001\u04af",
            "\u0001\u04b0",
            "\u0001\u04b1",
            "\u0001\u04b2",
            "\u0001\u04b3",
            "",
            "",
            "\u0001\u04b4",
            "\u0001\u04b5",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u04b7",
            "\u0001\u04b8",
            "\u0001\u04b9",
            "\u0001\u04ba",
            "\u0001\u04bb",
            "\u0001\u04bc",
            "\u0001\u04bd",
            "\u0001\u04be",
            "",
            "\u0001\u04bf",
            "",
            "\u0001\u04c0",
            "\u0001\u04c1",
            "\u0001\u04c2",
            "\u0001\u04c3",
            "\u0001\u04c4",
            "\u0001\u04c5",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u04c8",
            "\u0001\u04c9",
            "",
            "\u0001\u04ca",
            "\u0001\u04cb",
            "\u0001\u04cc",
            "\u0001\u04cd",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u04cf",
            "\u0001\u04d0",
            "\u0001\u04d1",
            "\u0001\u04d2",
            "\u0001\u04d3",
            "\u0001\u04d4",
            "\u0001\u04d5",
            "\u0001\u04d6",
            "\u0001\u04d7",
            "\u0001\u04d8",
            "",
            "",
            "\u0001\u04d9",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u04db",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u04dd",
            "\u0001\u04de",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u04e0",
            "\u0001\u04e1",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u04e3",
            "\u0001\u04e4",
            "\u0001\u04e5",
            "\u0001\u04e6",
            "\u0001\u04e7",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u04e9",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0001\u04eb",
            "\u0001\u04ec",
            "",
            "\u0001\u04ed",
            "\u0001\u04ee",
            "",
            "\u0001\u04ef",
            "\u0001\u04f0",
            "\u0001\u04f1",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u04f3",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0001\u04f5",
            "\u0001\u04f6",
            "\u0001\u04f7",
            "\u0001\u04f8",
            "\u0001\u04f9",
            "\u0001\u04fa",
            "\u0001\u04fb",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u04fe",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0500",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "\u0001\u0503",
            "",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            "",
            "",
            "\u0001\u0506",
            "",
            "",
            "\u0001\u0507",
            "\u0001\u0508",
            "\u0001\u0509",
            "\u0002\u0042\u0001\uffff\u000a\u0042\u0007\uffff\u001a\u0042"+
            "\u0004\uffff\u0001\u0042\u0001\uffff\u001a\u0042",
            ""
    ]
});

org.antlr.lang.augmentObject(XQueryLexer, {
    DFA19_eot:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryLexer.DFA19_eotS),
    DFA19_eof:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryLexer.DFA19_eofS),
    DFA19_min:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryLexer.DFA19_minS),
    DFA19_max:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryLexer.DFA19_maxS),
    DFA19_accept:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryLexer.DFA19_acceptS),
    DFA19_special:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryLexer.DFA19_specialS),
    DFA19_transition: (function() {
        var a = [],
            i,
            numStates = XQueryLexer.DFA19_transitionS.length;
        for (i=0; i<numStates; i++) {
            a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryLexer.DFA19_transitionS[i]));
        }
        return a;
    })()
});

XQueryLexer.DFA19 = function(recognizer) {
    this.recognizer = recognizer;
    this.decisionNumber = 19;
    this.eot = XQueryLexer.DFA19_eot;
    this.eof = XQueryLexer.DFA19_eof;
    this.min = XQueryLexer.DFA19_min;
    this.max = XQueryLexer.DFA19_max;
    this.accept = XQueryLexer.DFA19_accept;
    this.special = XQueryLexer.DFA19_special;
    this.transition = XQueryLexer.DFA19_transition;
};

org.antlr.lang.extend(XQueryLexer.DFA19, org.antlr.runtime.DFA, {
    getDescription: function() {
        return "1:1: Tokens : ( ANCESTOR | ANCESTOR_OR_SELF | AND | AS | ASCENDING | AT | ATTRIBUTE | BASE_URI | BOUNDARY_SPACE | BY | CASE | CAST | CASTABLE | CHILD | COLLATION | COMMENT | CONSTRUCTION | COPY_NAMESPACES | DECLARE | DEFAULT | DESCENDANT | DESCENDANT_OR_SELF | DESCENDING | DIV | DOCUMENT | DOCUMENT_NODE | ELEMENT | ELSE | EMPTY | EMPTY_SEQUENCE | ENCODING | EQ | EVERY | EXCEPT | EXTERNAL | FOLLOWING | FOLLOWING_SIBLING | FOR | FUNCTION | GE | GREATEST | GT | IDIV | IF | IMPORT | IN | INHERIT | INSTANCE | INTERSECT | IS | ITEM | LAX | LE | LEAST | LET | LT | MOD | MODULE | NAMESPACE | NE | NO_INHERIT | NO_PRESERVE | NODE | JSON | OF | OPTION | OR | ORDER | ORDERED | ORDERING | PARENT | PRECEDING | PRECEDING_SIBLING | PRESERVE | PROCESSING_INSTRUCTION | STRUCTURED_ITEM | JSON_ITEM | OBJECT | ARRAY | RETURN | SATISFIES | SCHEMA | SCHEMA_ATTRIBUTE | SCHEMA_ELEMENT | SELF | SOME | STABLE | STRICT | STRIP | TEXT | THEN | TO | TREAT | TYPESWITCH | UNION | UNORDERED | VALIDATE | VARIABLE | VERSION | WHERE | XQUERY | ALLOWING | CATCH | CONTEXT | COUNT | DECIMAL_FORMAT | DECIMAL_SEPARATOR | DIGIT | END | GROUP | GROUPING_SEPARATOR | INFINITY | MINUS_SIGN | NAMESPACE_NODE | NAN | NEXT | ONLY | PATTERN_SEPARATOR | PERCENT | PER_MILLE | PREVIOUS | SLIDING | START | SWITCH | TRY | TUMBLING | TYPE | WHEN | WINDOW | ZERO_DIGIT | AFTER | BEFORE | COPY | DELETE | FIRST | INSERT | INTO | POSITION | APPEND | LAST | MODIFY | NODES | RENAME | REPLACE | REVALIDATION | SKIP | UPDATING | VALUE | WITH | ALL | ANY | CONTAINS | CONTENT | DIACRITICS | DIFFERENT | DISTANCE | ENTIRE | EXACTLY | FROM | FT_OPTION | FTAND | FTNOT | FTOR | INSENSITIVE | LANGUAGE | LEVELS | LOWERCASE | MOST | NO | NOT | OCCURS | PARAGRAPH | PARAGRAPHS | PHRASE | RELATIONSHIP | SAME | SCORE | SENSITIVE | SENTENCE | SENTENCES | STEMMING | STOP | THESAURUS | TIMES | UPPERCASE | USING | WEIGHT | WILDCARDS | WITHOUT | WORD | WORDS | BREAK | CONTINUE | EXIT | LOOP | RETURNING | WHILE | CHECK | COLLECTION | CONSTRAINT | FOREACH | FOREIGN | INDEX | INTEGRITY | KEY | ON | UNIQUE | AMP_ER | APOS_ER | QUOT_ER | CONCAT | LPAREN | RPAREN | DOLLAR | L_UNION_BRACKET | R_UNION_BRACKET | LBRACKET | RBRACKET | LSQUARE | RSQUARE | EQUAL | BIND | NOTEQUAL | ANN_PERCENT | HASH | AMP | COMMA | QUESTION | STAR | PLUS | MINUS | SMALLER | GREATER | SMALLEREQ | GREATEREQ | SMALLER_SMALLER | GREATER_GREATER | SLASH | SLASH_SLASH | BANG | DOT | DOT_DOT | COLON | COLON_COLON | EMPTY_CLOSE_TAG | CLOSE_TAG | SEMICOLON | VBAR | PRAGMA_START | PRAGMA_END | XML_COMMENT_START | XML_COMMENT_END | PI_START | PI_END | ATTR_SIGN | Q | CHARREF_DEC | CHARREF_HEX | APOS | QUOT | L_NCName | S | L_Pragma | L_DirCommentConstructor | L_DirPIConstructor | L_IntegerLiteral | L_DecimalLiteral | L_DoubleLiteral | L_Comment | L_AnyChar );";
    },
    specialStateTransition: function(s, input) {
        var _s = s;
        var retval = (function(s, input) {
            switch ( s ) {
                        case 0 : 
                            var LA19_530 = input.LA(1);

                            s = -1;
                            if ( ((LA19_530>='\u0000' && LA19_530<='\uFFFF')) ) {s = 692;}

                            else s = 691;

                            if ( s>=0 ) return s;
                            break;
                        case 1 : 
                            var LA19_0 = input.LA(1);

                            s = -1;
                            if ( (LA19_0=='a') ) {s = 1;}

                            else if ( (LA19_0=='b') ) {s = 2;}

                            else if ( (LA19_0=='c') ) {s = 3;}

                            else if ( (LA19_0=='d') ) {s = 4;}

                            else if ( (LA19_0=='e') ) {s = 5;}

                            else if ( (LA19_0=='f') ) {s = 6;}

                            else if ( (LA19_0=='g') ) {s = 7;}

                            else if ( (LA19_0=='i') ) {s = 8;}

                            else if ( (LA19_0=='l') ) {s = 9;}

                            else if ( (LA19_0=='m') ) {s = 10;}

                            else if ( (LA19_0=='n') ) {s = 11;}

                            else if ( (LA19_0=='j') ) {s = 12;}

                            else if ( (LA19_0=='o') ) {s = 13;}

                            else if ( (LA19_0=='p') ) {s = 14;}

                            else if ( (LA19_0=='s') ) {s = 15;}

                            else if ( (LA19_0=='r') ) {s = 16;}

                            else if ( (LA19_0=='t') ) {s = 17;}

                            else if ( (LA19_0=='u') ) {s = 18;}

                            else if ( (LA19_0=='v') ) {s = 19;}

                            else if ( (LA19_0=='w') ) {s = 20;}

                            else if ( (LA19_0=='x') ) {s = 21;}

                            else if ( (LA19_0=='N') ) {s = 22;}

                            else if ( (LA19_0=='z') ) {s = 23;}

                            else if ( (LA19_0=='k') ) {s = 24;}

                            else if ( (LA19_0=='q') ) {s = 25;}

                            else if ( (LA19_0=='|') ) {s = 26;}

                            else if ( (LA19_0=='(') ) {s = 27;}

                            else if ( (LA19_0==')') ) {s = 28;}

                            else if ( (LA19_0=='$') ) {s = 29;}

                            else if ( (LA19_0=='{') ) {s = 30;}

                            else if ( (LA19_0=='}') ) {s = 31;}

                            else if ( (LA19_0=='[') ) {s = 32;}

                            else if ( (LA19_0==']') ) {s = 33;}

                            else if ( (LA19_0=='=') ) {s = 34;}

                            else if ( (LA19_0==':') ) {s = 35;}

                            else if ( (LA19_0=='!') ) {s = 36;}

                            else if ( (LA19_0=='%') ) {s = 37;}

                            else if ( (LA19_0=='#') ) {s = 38;}

                            else if ( (LA19_0=='&') ) {s = 39;}

                            else if ( (LA19_0==',') ) {s = 40;}

                            else if ( (LA19_0=='?') ) {s = 41;}

                            else if ( (LA19_0=='*') ) {s = 42;}

                            else if ( (LA19_0=='+') ) {s = 43;}

                            else if ( (LA19_0=='-') ) {s = 44;}

                            else if ( (LA19_0=='<') ) {s = 45;}

                            else if ( (LA19_0=='>') ) {s = 46;}

                            else if ( (LA19_0=='/') ) {s = 47;}

                            else if ( (LA19_0=='.') ) {s = 48;}

                            else if ( (LA19_0==';') ) {s = 49;}

                            else if ( (LA19_0=='@') ) {s = 50;}

                            else if ( (LA19_0=='Q') ) {s = 51;}

                            else if ( (LA19_0=='\'') ) {s = 52;}

                            else if ( (LA19_0=='\"') ) {s = 53;}

                            else if ( ((LA19_0>='A' && LA19_0<='M')||(LA19_0>='O' && LA19_0<='P')||(LA19_0>='R' && LA19_0<='Z')||LA19_0=='_'||LA19_0=='h'||LA19_0=='y') ) {s = 54;}

                            else if ( ((LA19_0>='\t' && LA19_0<='\n')||LA19_0=='\r'||LA19_0==' ') ) {s = 55;}

                            else if ( ((LA19_0>='0' && LA19_0<='9')) ) {s = 56;}

                            else if ( ((LA19_0>='\u0000' && LA19_0<='\b')||(LA19_0>='\u000B' && LA19_0<='\f')||(LA19_0>='\u000E' && LA19_0<='\u001F')||LA19_0=='\\'||LA19_0=='^'||LA19_0=='`'||(LA19_0>='~' && LA19_0<='\uFFFF')) ) {s = 57;}

                            if ( s>=0 ) return s;
                            break;
                        case 2 : 
                            var LA19_27 = input.LA(1);

                             
                            var index19_27 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA19_27=='#') ) {s = 152;}

                            else if ( (LA19_27==':') && ((!this.inStr))) {s = 153;}

                            else s = 154;

                             
                            input.seek(index19_27);
                            if ( s>=0 ) return s;
                            break;
            }
        }).call(this.recognizer, s, input);
        if (!org.antlr.lang.isUndefined(retval)) {
            return retval;
        }
        var nvae =
            new org.antlr.runtime.NoViableAltException(this.getDescription(), 19, _s, input);
        this.error(nvae);
        throw nvae;
    },
    dummy: null
});
 
})();
exports.XQueryLexer = XQueryLexer; });
define('ace/mode/xquery/XQDTLexer', ['require', 'exports', 'module' , 'ace/mode/xquery/antlr3-all'], function(require, exports, module) {

var org =  require("./antlr3-all").org;

var XQDTLexer = exports.XQDTLexer = function(input, state)
{
  XQDTLexer.superclass.constructor.call(this, input, state);
};

org.antlr.lang.extend(XQDTLexer, org.antlr.runtime.Lexer, {

  comments: [],

  addComment: function(start, stop){ this.comments.push({ start: start, stop: stop }); },

  isWsExplicit: false,

  setIsWsExplicit: function (wsExplicit) {
    //console.log("A WS: " + wsExplicit);
    this.isWsExplicit = wsExplicit;
    //console.log("B WS: " + wsExplicit);
  },

  addToStack: function (stack) {
    stack.push(this);
  },

  rewindToIndex: function(index) {
    var stream = this.input;
    stream.seek(index);
  }
});

});
define('ace/mode/xquery/XQueryParser', ['require', 'exports', 'module' , 'ace/mode/xquery/antlr3-all', 'ace/mode/xquery/StringLexer', 'ace/mode/xquery/XMLLexer', 'ace/mode/xquery/XQueryLexer', 'ace/mode/xquery/XQDTParser', 'ace/mode/xquery/Position'], function(require, exports, module) {// $ANTLR 3.3 Nov 30, 2010 12:50:56 /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g 2012-09-05 10:41:46

/* ***** BEGIN LICENSE BLOCK *****
 * Distributed under the BSD license:
 *
 * Copyright (c) 2010, Ajax.org B.V.
 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in the
 *       documentation and/or other materials provided with the distribution.
 *     * Neither the name of Ajax.org B.V. nor the
 *       names of its contributors may be used to endorse or promote products
 *       derived from this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * ***** END LICENSE BLOCK ***** */
var org =  require("./antlr3-all").org;
var StringLexer   = require("./StringLexer").StringLexer;
var XMLLexer   = require("./XMLLexer").XMLLexer;
var XQueryLexer   = require("./XQueryLexer").XQueryLexer;
var XQDTParser = require("./XQDTParser").XQDTParser;
var Position = require("./Position").Position;
var Exception = function(){};

var XQS = true;
var XQU = true;
var ZORBA = true;



var XQueryParser = function(input, state) {
    if (!state) {
        state = new org.antlr.runtime.RecognizerSharedState();
    }

    (function(){


        this.isInAttr = false;

        this.errors = [];

        this.hasErrors = function(){
          return this.errors.length > 0;
        };

        this.addError = function(error){
          this.errors.push(error);
        };

        this.getErrors = function(){
          return this.errors;
        };

        this.source = null;
        this.setSource = function(s){
          this.source = s;
          this.highlighter.setSource(s);
        };

        this.lexerStack = new Array();

        this.lc = function(b){ return b; };
        this.popLexer = function (){
          //console.log("popLexer");
          if(this.lexerStack.length == 0) return;
          this.getTokenStream().mark();
          var oldLexer = this.getTokenStream().getTokenSource();
          var newLexer = this.lexerStack.pop();
          if(oldLexer instanceof StringLexer && newLexer instanceof XQueryLexer) {
            newLexer.inStr = false;
          }
          this.getTokenStream().setTokenSource(newLexer);
        };

        this.pushXQueryLexer = function() {
          xqueryLexer = new XQueryLexer(this.source);
          this.pushLexer(xqueryLexer);
        };

        this.pushStringLexer = function(isAposStr){
          //console.log("pushStringLexer");
          var stringLexer = new StringLexer(this.source);
          stringLexer.inAposStr = isAposStr;
          stringLexer.inQuotStr = !isAposStr;
          stringLexer.setIsWsExplicit(true);
          this.pushLexer(stringLexer);
        };

        this.pushXMLLexer = function(){
          //console.log("pushXMLLexer");
          var xmlLexer = new XMLLexer(this.source);
          xmlLexer.setIsWsExplicit(true);
          this.pushLexer(xmlLexer);
        };

        this.pushLexer = function(lexer){
          var oldLexer = this.getTokenStream().getTokenSource();
          oldLexer.addToStack(this.lexerStack);
          this.getTokenStream().setTokenSource(lexer);
        };

        this.setWsExplicit = function(isExplicit){
          this.getTokenStream().setWsExplicit(isExplicit);
        };

        this.ap = function(token)
        {
          this.addToken(token, "xml_pe");
        };

        this.ax = function(start, stop)
        {
          this.highlighter.addToken(start.getStartIndex(), stop.getStopIndex(), "xml_pe");
        };

        this.at = function(start, stop)
        {
          this.highlighter.addToken(start.getStartIndex(), stop.getStopIndex(), "meta.tag");
        };

        this.av = function(start, stop)
        {
          this.highlighter.addToken(start.getStartIndex(), stop.getStopIndex(), "variable");
        };

        this.af = function(start, stop)
        {
          this.highlighter.addToken(start.getStartIndex(), stop.getStopIndex(), "support.function");
        };

        this.ao = function(t)
        {
          this.addToken(t, "keyword.operator");
        };

        this.ak = function(t)
        {
          this.addToken(t, "keyword");
        };

        this.ad = function(t)
        {
          this.addToken(t, "constant");
        };

        this.addString = function(start, stop)
        {
         if(stop == undefined) {
           this.addToken(start, "string");
         } else {
           this.highlighter.addToken(start.getStartIndex(), stop.getStopIndex(), "string");
         }
        };

        this.ac = function(t)
        {
          this.addToken(t, "comment");
        };

        this.addToken = function(k, type){
          if(org.antlr.lang.isArray(k)){
            for(i in k)
            {
              this.highlighter.addToken(k[i].getStartIndex(), k[i].getStopIndex(), type);
            }
          } else if(k != null ) {
            this.highlighter.addToken(k.getStartIndex(), k.getStopIndex(), type); 
          }
        };


    }).call(this);

    XQueryParser.superclass.constructor.call(this, input, state);

    this.dfa1 = new XQueryParser.DFA1(this);
    this.dfa2 = new XQueryParser.DFA2(this);
    this.dfa6 = new XQueryParser.DFA6(this);
    this.dfa9 = new XQueryParser.DFA9(this);
    this.dfa44 = new XQueryParser.DFA44(this);
    this.dfa46 = new XQueryParser.DFA46(this);
    this.dfa119 = new XQueryParser.DFA119(this);
    this.dfa121 = new XQueryParser.DFA121(this);
    this.dfa123 = new XQueryParser.DFA123(this);
    this.dfa128 = new XQueryParser.DFA128(this);
    this.dfa129 = new XQueryParser.DFA129(this);
    this.dfa136 = new XQueryParser.DFA136(this);
    this.dfa172 = new XQueryParser.DFA172(this);
    this.dfa195 = new XQueryParser.DFA195(this);
    this.dfa230 = new XQueryParser.DFA230(this);
    this.dfa249 = new XQueryParser.DFA249(this);
    this.dfa265 = new XQueryParser.DFA265(this);
    this.adaptor = new org.antlr.runtime.tree.CommonTreeAdaptor();

};

org.antlr.lang.augmentObject(XQueryParser, {
    EOF: -1,
    L_QuotAttrContentChar: 4,
    L_AposAttrContentChar: 5,
    L_ElementContentChar: 6,
    L_CDataSection: 7,
    L_PredefinedEntityRef: 8,
    L_CharRef: 9,
    ESCAPE_LBRACKET: 10,
    ESCAPE_RBRACKET: 11,
    ESCAPE_APOS: 12,
    ESCAPE_QUOT: 13,
    CDATA_START: 14,
    CDATA_END: 15,
    ANCESTOR: 16,
    ANCESTOR_OR_SELF: 17,
    AND: 18,
    AS: 19,
    ASCENDING: 20,
    AT: 21,
    ATTRIBUTE: 22,
    BASE_URI: 23,
    BOUNDARY_SPACE: 24,
    BY: 25,
    CASE: 26,
    CAST: 27,
    CASTABLE: 28,
    CHILD: 29,
    COLLATION: 30,
    COMMENT: 31,
    CONSTRUCTION: 32,
    COPY_NAMESPACES: 33,
    DECLARE: 34,
    DEFAULT: 35,
    DESCENDANT: 36,
    DESCENDANT_OR_SELF: 37,
    DESCENDING: 38,
    DIV: 39,
    DOCUMENT: 40,
    DOCUMENT_NODE: 41,
    ELEMENT: 42,
    ELSE: 43,
    EMPTY: 44,
    EMPTY_SEQUENCE: 45,
    ENCODING: 46,
    EQ: 47,
    EVERY: 48,
    EXCEPT: 49,
    EXTERNAL: 50,
    FOLLOWING: 51,
    FOLLOWING_SIBLING: 52,
    FOR: 53,
    FUNCTION: 54,
    GE: 55,
    GREATEST: 56,
    GT: 57,
    IDIV: 58,
    IF: 59,
    IMPORT: 60,
    IN: 61,
    INHERIT: 62,
    INSTANCE: 63,
    INTERSECT: 64,
    IS: 65,
    ITEM: 66,
    LAX: 67,
    LE: 68,
    LEAST: 69,
    LET: 70,
    LT: 71,
    MOD: 72,
    MODULE: 73,
    NAMESPACE: 74,
    NE: 75,
    NO_INHERIT: 76,
    NO_PRESERVE: 77,
    NODE: 78,
    JSON: 79,
    OF: 80,
    OPTION: 81,
    OR: 82,
    ORDER: 83,
    ORDERED: 84,
    ORDERING: 85,
    PARENT: 86,
    PRECEDING: 87,
    PRECEDING_SIBLING: 88,
    PRESERVE: 89,
    PROCESSING_INSTRUCTION: 90,
    STRUCTURED_ITEM: 91,
    JSON_ITEM: 92,
    OBJECT: 93,
    ARRAY: 94,
    RETURN: 95,
    SATISFIES: 96,
    SCHEMA: 97,
    SCHEMA_ATTRIBUTE: 98,
    SCHEMA_ELEMENT: 99,
    SELF: 100,
    SOME: 101,
    STABLE: 102,
    STRICT: 103,
    STRIP: 104,
    TEXT: 105,
    THEN: 106,
    TO: 107,
    TREAT: 108,
    TYPESWITCH: 109,
    UNION: 110,
    UNORDERED: 111,
    VALIDATE: 112,
    VARIABLE: 113,
    VERSION: 114,
    WHERE: 115,
    XQUERY: 116,
    ALLOWING: 117,
    CATCH: 118,
    CONTEXT: 119,
    COUNT: 120,
    DECIMAL_FORMAT: 121,
    DECIMAL_SEPARATOR: 122,
    DIGIT: 123,
    END: 124,
    GROUP: 125,
    GROUPING_SEPARATOR: 126,
    INFINITY: 127,
    MINUS_SIGN: 128,
    NAMESPACE_NODE: 129,
    NAN: 130,
    NEXT: 131,
    ONLY: 132,
    PATTERN_SEPARATOR: 133,
    PERCENT: 134,
    PER_MILLE: 135,
    PREVIOUS: 136,
    SLIDING: 137,
    START: 138,
    SWITCH: 139,
    TRY: 140,
    TUMBLING: 141,
    TYPE: 142,
    WHEN: 143,
    WINDOW: 144,
    ZERO_DIGIT: 145,
    AFTER: 146,
    BEFORE: 147,
    COPY: 148,
    DELETE: 149,
    FIRST: 150,
    INSERT: 151,
    INTO: 152,
    POSITION: 153,
    APPEND: 154,
    LAST: 155,
    MODIFY: 156,
    NODES: 157,
    RENAME: 158,
    REPLACE: 159,
    REVALIDATION: 160,
    SKIP: 161,
    UPDATING: 162,
    VALUE: 163,
    WITH: 164,
    ALL: 165,
    ANY: 166,
    CONTAINS: 167,
    CONTENT: 168,
    DIACRITICS: 169,
    DIFFERENT: 170,
    DISTANCE: 171,
    ENTIRE: 172,
    EXACTLY: 173,
    FROM: 174,
    FT_OPTION: 175,
    FTAND: 176,
    FTNOT: 177,
    FTOR: 178,
    INSENSITIVE: 179,
    LANGUAGE: 180,
    LEVELS: 181,
    LOWERCASE: 182,
    MOST: 183,
    NO: 184,
    NOT: 185,
    OCCURS: 186,
    PARAGRAPH: 187,
    PARAGRAPHS: 188,
    PHRASE: 189,
    RELATIONSHIP: 190,
    SAME: 191,
    SCORE: 192,
    SENSITIVE: 193,
    SENTENCE: 194,
    SENTENCES: 195,
    STEMMING: 196,
    STOP: 197,
    THESAURUS: 198,
    TIMES: 199,
    UPPERCASE: 200,
    USING: 201,
    WEIGHT: 202,
    WILDCARDS: 203,
    WITHOUT: 204,
    WORD: 205,
    WORDS: 206,
    BREAK: 207,
    CONTINUE: 208,
    EXIT: 209,
    LOOP: 210,
    RETURNING: 211,
    WHILE: 212,
    CHECK: 213,
    COLLECTION: 214,
    CONSTRAINT: 215,
    FOREACH: 216,
    FOREIGN: 217,
    INDEX: 218,
    INTEGRITY: 219,
    KEY: 220,
    ON: 221,
    UNIQUE: 222,
    AMP_ER: 223,
    APOS_ER: 224,
    QUOT_ER: 225,
    CONCAT: 226,
    LPAREN: 227,
    RPAREN: 228,
    DOLLAR: 229,
    L_UNION_BRACKET: 230,
    R_UNION_BRACKET: 231,
    LBRACKET: 232,
    RBRACKET: 233,
    LSQUARE: 234,
    RSQUARE: 235,
    EQUAL: 236,
    BIND: 237,
    NOTEQUAL: 238,
    ANN_PERCENT: 239,
    HASH: 240,
    AMP: 241,
    COMMA: 242,
    QUESTION: 243,
    STAR: 244,
    PLUS: 245,
    MINUS: 246,
    SMALLER: 247,
    GREATER: 248,
    SMALLEREQ: 249,
    GREATEREQ: 250,
    SMALLER_SMALLER: 251,
    GREATER_GREATER: 252,
    SLASH: 253,
    SLASH_SLASH: 254,
    BANG: 255,
    DOT: 256,
    DOT_DOT: 257,
    COLON: 258,
    COLON_COLON: 259,
    EMPTY_CLOSE_TAG: 260,
    CLOSE_TAG: 261,
    SEMICOLON: 262,
    VBAR: 263,
    PRAGMA_START: 264,
    PRAGMA_END: 265,
    XML_COMMENT_START: 266,
    XML_COMMENT_END: 267,
    PI_START: 268,
    PI_END: 269,
    ATTR_SIGN: 270,
    Q: 271,
    CHARREF_DEC: 272,
    CHARREF_HEX: 273,
    APOS: 274,
    QUOT: 275,
    NCNameStartChar: 276,
    NCNameChar: 277,
    L_NCName: 278,
    Letter: 279,
    HexLetter: 280,
    Digit: 281,
    Digits: 282,
    S: 283,
    SU: 284,
    L_Pragma: 285,
    L_DirCommentConstructor: 286,
    L_DirPIConstructor: 287,
    L_IntegerLiteral: 288,
    L_DecimalLiteral: 289,
    L_DoubleLiteral: 290,
    L_Comment: 291,
    L_AnyChar: 292,
    L_QuotStringLiteralChar: 293,
    L_AposStringLiteralChar: 294,
    LibraryModule: 295,
    MainModule: 296,
    VersionDecl: 297,
    VersionDeclEncoding: 298,
    VersionDeclVersion: 299,
    ModuleDecl: 300,
    Prolog: 301,
    DefaultNamespaceDecls: 302,
    DefaultNamespaceDecl: 303,
    Setters: 304,
    Setter: 305,
    NamespaceDecls: 306,
    NamespaceDecl: 307,
    Imports: 308,
    FTOptionDecls: 309,
    SchemaImport: 310,
    SchemaPrefix: 311,
    NamespaceName: 312,
    DefaultElementNamespace: 313,
    AtHints: 314,
    ModuleImport: 315,
    BaseURIDecl: 316,
    OrderedDecls: 317,
    VarDecl: 318,
    VarType: 319,
    VarValue: 320,
    VarDefaultValue: 321,
    VarVariableDecl: 322,
    FunctionDecl: 323,
    ParamList: 324,
    ReturnType: 325,
    OptionDecl: 326,
    TypeDeclaration: 327,
    Param: 328,
    EnclosedExpr: 329,
    QueryBody: 330,
    UnaryExpr: 331,
    DirElemConstructor: 332,
    DirAttributeList: 333,
    DirAttributeValue: 334,
    DirElemContent: 335,
    CommonContent: 336,
    SequenceType: 337,
    EmptySequenceTest: 338,
    KindTest: 339,
    ItemTest: 340,
    FunctionTest: 341,
    AtomicType: 342,
    AtomicOrUnionType: 343,
    StringLiteral: 344,
    ElementContentChar: 345,
    AttributeValueChar: 346,
    QName: 347,
    BlockExpr: 348
});

(function(){
// public class variables
var EOF= -1,
    L_QuotAttrContentChar= 4,
    L_AposAttrContentChar= 5,
    L_ElementContentChar= 6,
    L_CDataSection= 7,
    L_PredefinedEntityRef= 8,
    L_CharRef= 9,
    ESCAPE_LBRACKET= 10,
    ESCAPE_RBRACKET= 11,
    ESCAPE_APOS= 12,
    ESCAPE_QUOT= 13,
    CDATA_START= 14,
    CDATA_END= 15,
    ANCESTOR= 16,
    ANCESTOR_OR_SELF= 17,
    AND= 18,
    AS= 19,
    ASCENDING= 20,
    AT= 21,
    ATTRIBUTE= 22,
    BASE_URI= 23,
    BOUNDARY_SPACE= 24,
    BY= 25,
    CASE= 26,
    CAST= 27,
    CASTABLE= 28,
    CHILD= 29,
    COLLATION= 30,
    COMMENT= 31,
    CONSTRUCTION= 32,
    COPY_NAMESPACES= 33,
    DECLARE= 34,
    DEFAULT= 35,
    DESCENDANT= 36,
    DESCENDANT_OR_SELF= 37,
    DESCENDING= 38,
    DIV= 39,
    DOCUMENT= 40,
    DOCUMENT_NODE= 41,
    ELEMENT= 42,
    ELSE= 43,
    EMPTY= 44,
    EMPTY_SEQUENCE= 45,
    ENCODING= 46,
    EQ= 47,
    EVERY= 48,
    EXCEPT= 49,
    EXTERNAL= 50,
    FOLLOWING= 51,
    FOLLOWING_SIBLING= 52,
    FOR= 53,
    FUNCTION= 54,
    GE= 55,
    GREATEST= 56,
    GT= 57,
    IDIV= 58,
    IF= 59,
    IMPORT= 60,
    IN= 61,
    INHERIT= 62,
    INSTANCE= 63,
    INTERSECT= 64,
    IS= 65,
    ITEM= 66,
    LAX= 67,
    LE= 68,
    LEAST= 69,
    LET= 70,
    LT= 71,
    MOD= 72,
    MODULE= 73,
    NAMESPACE= 74,
    NE= 75,
    NO_INHERIT= 76,
    NO_PRESERVE= 77,
    NODE= 78,
    JSON= 79,
    OF= 80,
    OPTION= 81,
    OR= 82,
    ORDER= 83,
    ORDERED= 84,
    ORDERING= 85,
    PARENT= 86,
    PRECEDING= 87,
    PRECEDING_SIBLING= 88,
    PRESERVE= 89,
    PROCESSING_INSTRUCTION= 90,
    STRUCTURED_ITEM= 91,
    JSON_ITEM= 92,
    OBJECT= 93,
    ARRAY= 94,
    RETURN= 95,
    SATISFIES= 96,
    SCHEMA= 97,
    SCHEMA_ATTRIBUTE= 98,
    SCHEMA_ELEMENT= 99,
    SELF= 100,
    SOME= 101,
    STABLE= 102,
    STRICT= 103,
    STRIP= 104,
    TEXT= 105,
    THEN= 106,
    TO= 107,
    TREAT= 108,
    TYPESWITCH= 109,
    UNION= 110,
    UNORDERED= 111,
    VALIDATE= 112,
    VARIABLE= 113,
    VERSION= 114,
    WHERE= 115,
    XQUERY= 116,
    ALLOWING= 117,
    CATCH= 118,
    CONTEXT= 119,
    COUNT= 120,
    DECIMAL_FORMAT= 121,
    DECIMAL_SEPARATOR= 122,
    DIGIT= 123,
    END= 124,
    GROUP= 125,
    GROUPING_SEPARATOR= 126,
    INFINITY= 127,
    MINUS_SIGN= 128,
    NAMESPACE_NODE= 129,
    NAN= 130,
    NEXT= 131,
    ONLY= 132,
    PATTERN_SEPARATOR= 133,
    PERCENT= 134,
    PER_MILLE= 135,
    PREVIOUS= 136,
    SLIDING= 137,
    START= 138,
    SWITCH= 139,
    TRY= 140,
    TUMBLING= 141,
    TYPE= 142,
    WHEN= 143,
    WINDOW= 144,
    ZERO_DIGIT= 145,
    AFTER= 146,
    BEFORE= 147,
    COPY= 148,
    DELETE= 149,
    FIRST= 150,
    INSERT= 151,
    INTO= 152,
    POSITION= 153,
    APPEND= 154,
    LAST= 155,
    MODIFY= 156,
    NODES= 157,
    RENAME= 158,
    REPLACE= 159,
    REVALIDATION= 160,
    SKIP= 161,
    UPDATING= 162,
    VALUE= 163,
    WITH= 164,
    ALL= 165,
    ANY= 166,
    CONTAINS= 167,
    CONTENT= 168,
    DIACRITICS= 169,
    DIFFERENT= 170,
    DISTANCE= 171,
    ENTIRE= 172,
    EXACTLY= 173,
    FROM= 174,
    FT_OPTION= 175,
    FTAND= 176,
    FTNOT= 177,
    FTOR= 178,
    INSENSITIVE= 179,
    LANGUAGE= 180,
    LEVELS= 181,
    LOWERCASE= 182,
    MOST= 183,
    NO= 184,
    NOT= 185,
    OCCURS= 186,
    PARAGRAPH= 187,
    PARAGRAPHS= 188,
    PHRASE= 189,
    RELATIONSHIP= 190,
    SAME= 191,
    SCORE= 192,
    SENSITIVE= 193,
    SENTENCE= 194,
    SENTENCES= 195,
    STEMMING= 196,
    STOP= 197,
    THESAURUS= 198,
    TIMES= 199,
    UPPERCASE= 200,
    USING= 201,
    WEIGHT= 202,
    WILDCARDS= 203,
    WITHOUT= 204,
    WORD= 205,
    WORDS= 206,
    BREAK= 207,
    CONTINUE= 208,
    EXIT= 209,
    LOOP= 210,
    RETURNING= 211,
    WHILE= 212,
    CHECK= 213,
    COLLECTION= 214,
    CONSTRAINT= 215,
    FOREACH= 216,
    FOREIGN= 217,
    INDEX= 218,
    INTEGRITY= 219,
    KEY= 220,
    ON= 221,
    UNIQUE= 222,
    AMP_ER= 223,
    APOS_ER= 224,
    QUOT_ER= 225,
    CONCAT= 226,
    LPAREN= 227,
    RPAREN= 228,
    DOLLAR= 229,
    L_UNION_BRACKET= 230,
    R_UNION_BRACKET= 231,
    LBRACKET= 232,
    RBRACKET= 233,
    LSQUARE= 234,
    RSQUARE= 235,
    EQUAL= 236,
    BIND= 237,
    NOTEQUAL= 238,
    ANN_PERCENT= 239,
    HASH= 240,
    AMP= 241,
    COMMA= 242,
    QUESTION= 243,
    STAR= 244,
    PLUS= 245,
    MINUS= 246,
    SMALLER= 247,
    GREATER= 248,
    SMALLEREQ= 249,
    GREATEREQ= 250,
    SMALLER_SMALLER= 251,
    GREATER_GREATER= 252,
    SLASH= 253,
    SLASH_SLASH= 254,
    BANG= 255,
    DOT= 256,
    DOT_DOT= 257,
    COLON= 258,
    COLON_COLON= 259,
    EMPTY_CLOSE_TAG= 260,
    CLOSE_TAG= 261,
    SEMICOLON= 262,
    VBAR= 263,
    PRAGMA_START= 264,
    PRAGMA_END= 265,
    XML_COMMENT_START= 266,
    XML_COMMENT_END= 267,
    PI_START= 268,
    PI_END= 269,
    ATTR_SIGN= 270,
    Q= 271,
    CHARREF_DEC= 272,
    CHARREF_HEX= 273,
    APOS= 274,
    QUOT= 275,
    NCNameStartChar= 276,
    NCNameChar= 277,
    L_NCName= 278,
    Letter= 279,
    HexLetter= 280,
    Digit= 281,
    Digits= 282,
    S= 283,
    SU= 284,
    L_Pragma= 285,
    L_DirCommentConstructor= 286,
    L_DirPIConstructor= 287,
    L_IntegerLiteral= 288,
    L_DecimalLiteral= 289,
    L_DoubleLiteral= 290,
    L_Comment= 291,
    L_AnyChar= 292,
    L_QuotStringLiteralChar= 293,
    L_AposStringLiteralChar= 294,
    LibraryModule= 295,
    MainModule= 296,
    VersionDecl= 297,
    VersionDeclEncoding= 298,
    VersionDeclVersion= 299,
    ModuleDecl= 300,
    Prolog= 301,
    DefaultNamespaceDecls= 302,
    DefaultNamespaceDecl= 303,
    Setters= 304,
    Setter= 305,
    NamespaceDecls= 306,
    NamespaceDecl= 307,
    Imports= 308,
    FTOptionDecls= 309,
    SchemaImport= 310,
    SchemaPrefix= 311,
    NamespaceName= 312,
    DefaultElementNamespace= 313,
    AtHints= 314,
    ModuleImport= 315,
    BaseURIDecl= 316,
    OrderedDecls= 317,
    VarDecl= 318,
    VarType= 319,
    VarValue= 320,
    VarDefaultValue= 321,
    VarVariableDecl= 322,
    FunctionDecl= 323,
    ParamList= 324,
    ReturnType= 325,
    OptionDecl= 326,
    TypeDeclaration= 327,
    Param= 328,
    EnclosedExpr= 329,
    QueryBody= 330,
    UnaryExpr= 331,
    DirElemConstructor= 332,
    DirAttributeList= 333,
    DirAttributeValue= 334,
    DirElemContent= 335,
    CommonContent= 336,
    SequenceType= 337,
    EmptySequenceTest= 338,
    KindTest= 339,
    ItemTest= 340,
    FunctionTest= 341,
    AtomicType= 342,
    AtomicOrUnionType= 343,
    StringLiteral= 344,
    ElementContentChar= 345,
    AttributeValueChar= 346,
    QName= 347,
    BlockExpr= 348;

// public instance methods/vars
org.antlr.lang.extend(XQueryParser, XQDTParser, {
        
    setTreeAdaptor: function(adaptor) {
        this.adaptor = adaptor;
    },
    getTreeAdaptor: function() {
        return this.adaptor;
    },

    getTokenNames: function() { return XQueryParser.tokenNames; },
    getGrammarFileName: function() { return "/Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g"; }
});
org.antlr.lang.augmentObject(XQueryParser.prototype, {

    // inline static return class
    p_Module_return: (function() {
        XQueryParser.p_Module_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_Module_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:292:1: p_Module : (vd= p_VersionDecl )? (lm= p_LibraryModule[$vd.tree] -> | mm= p_MainModule[$vd.tree] ->) EOF ;
    // $ANTLR start "p_Module"
    p_Module: function() {
        var retval = new XQueryParser.p_Module_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var EOF1 = null;
         var vd = null;
         var lm = null;
         var mm = null;

        var EOF1_tree=null;
        var stream_EOF=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token EOF");
        var stream_p_VersionDecl=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_VersionDecl");
        var stream_p_LibraryModule=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_LibraryModule");
        var stream_p_MainModule=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_MainModule");
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:293:9: ( (vd= p_VersionDecl )? (lm= p_LibraryModule[$vd.tree] -> | mm= p_MainModule[$vd.tree] ->) EOF )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:293:11: (vd= p_VersionDecl )? (lm= p_LibraryModule[$vd.tree] -> | mm= p_MainModule[$vd.tree] ->) EOF
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:293:13: (vd= p_VersionDecl )?
            var alt1=2;
            alt1 = this.dfa1.predict(this.input);
            switch (alt1) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:293:13: vd= p_VersionDecl
                    this.pushFollow(XQueryParser.FOLLOW_p_VersionDecl_in_p_Module503);
                    vd=this.p_VersionDecl();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) stream_p_VersionDecl.add(vd.getTree());


                    break;

            }

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:294:13: (lm= p_LibraryModule[$vd.tree] -> | mm= p_MainModule[$vd.tree] ->)
            var alt2=2;
            alt2 = this.dfa2.predict(this.input);
            switch (alt2) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:295:15: lm= p_LibraryModule[$vd.tree]
                    this.pushFollow(XQueryParser.FOLLOW_p_LibraryModule_in_p_Module536);
                    lm=this.p_LibraryModule((vd?vd.tree:null));

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) stream_p_LibraryModule.add(lm.getTree());


                    // AST REWRITE
                    // elements: 
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    if ( this.state.backtracking===0 ) {
                    retval.tree = root_0;
                    var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);

                    root_0 = this.adaptor.nil();
                    // 295:44: ->
                    {
                        this.adaptor.addChild(root_0, (lm?lm.tree:null));

                    }

                    retval.tree = root_0;}

                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:296:15: mm= p_MainModule[$vd.tree]
                    this.pushFollow(XQueryParser.FOLLOW_p_MainModule_in_p_Module559);
                    mm=this.p_MainModule((vd?vd.tree:null));

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) stream_p_MainModule.add(mm.getTree());


                    // AST REWRITE
                    // elements: 
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    if ( this.state.backtracking===0 ) {
                    retval.tree = root_0;
                    var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);

                    root_0 = this.adaptor.nil();
                    // 296:44: ->
                    {
                        this.adaptor.addChild(root_0, (mm?mm.tree:null));

                    }

                    retval.tree = root_0;}

                    break;

            }

            EOF1=this.match(this.input,EOF,XQueryParser.FOLLOW_EOF_in_p_Module583); if (this.state.failed) return retval; 
            if ( this.state.backtracking===0 ) stream_EOF.add(EOF1);




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_VersionDecl_return: (function() {
        XQueryParser.p_VersionDecl_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_VersionDecl_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:301:1: p_VersionDecl : k= XQUERY ( (k= ENCODING enc= p_StringLiteral ) | (k= VERSION ver= p_StringLiteral (k= ENCODING enc= p_StringLiteral )? ) ) SEMICOLON -> ^( VersionDecl ^( VersionDeclVersion ( $ver)? ) ^( VersionDeclEncoding ( $enc)? ) ) ;
    // $ANTLR start "p_VersionDecl"
    p_VersionDecl: function() {
        var retval = new XQueryParser.p_VersionDecl_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var SEMICOLON2 = null;
         var enc = null;
         var ver = null;

        var k_tree=null;
        var SEMICOLON2_tree=null;
        var stream_ENCODING=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token ENCODING");
        var stream_VERSION=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token VERSION");
        var stream_SEMICOLON=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token SEMICOLON");
        var stream_XQUERY=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token XQUERY");
        var stream_p_StringLiteral=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_StringLiteral");
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:302:9: (k= XQUERY ( (k= ENCODING enc= p_StringLiteral ) | (k= VERSION ver= p_StringLiteral (k= ENCODING enc= p_StringLiteral )? ) ) SEMICOLON -> ^( VersionDecl ^( VersionDeclVersion ( $ver)? ) ^( VersionDeclEncoding ( $enc)? ) ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:302:11: k= XQUERY ( (k= ENCODING enc= p_StringLiteral ) | (k= VERSION ver= p_StringLiteral (k= ENCODING enc= p_StringLiteral )? ) ) SEMICOLON
            k=this.match(this.input,XQUERY,XQueryParser.FOLLOW_XQUERY_in_p_VersionDecl611); if (this.state.failed) return retval; 
            if ( this.state.backtracking===0 ) stream_XQUERY.add(k);

            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:302:35: ( (k= ENCODING enc= p_StringLiteral ) | (k= VERSION ver= p_StringLiteral (k= ENCODING enc= p_StringLiteral )? ) )
            var alt4=2;
            var LA4_0 = this.input.LA(1);

            if ( (LA4_0==ENCODING) ) {
                alt4=1;
            }
            else if ( (LA4_0==VERSION) ) {
                alt4=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 4, 0, this.input);

                throw nvae;
            }
            switch (alt4) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:302:36: (k= ENCODING enc= p_StringLiteral )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:302:36: (k= ENCODING enc= p_StringLiteral )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:302:37: k= ENCODING enc= p_StringLiteral
                    k=this.match(this.input,ENCODING,XQueryParser.FOLLOW_ENCODING_in_p_VersionDecl619); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_ENCODING.add(k);

                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_VersionDecl625);
                    enc=this.p_StringLiteral();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) stream_p_StringLiteral.add(enc.getTree());





                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:303:13: (k= VERSION ver= p_StringLiteral (k= ENCODING enc= p_StringLiteral )? )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:303:13: (k= VERSION ver= p_StringLiteral (k= ENCODING enc= p_StringLiteral )? )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:303:14: k= VERSION ver= p_StringLiteral (k= ENCODING enc= p_StringLiteral )?
                    k=this.match(this.input,VERSION,XQueryParser.FOLLOW_VERSION_in_p_VersionDecl646); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_VERSION.add(k);

                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_VersionDecl652);
                    ver=this.p_StringLiteral();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) stream_p_StringLiteral.add(ver.getTree());
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:303:59: (k= ENCODING enc= p_StringLiteral )?
                    var alt3=2;
                    var LA3_0 = this.input.LA(1);

                    if ( (LA3_0==ENCODING) ) {
                        alt3=1;
                    }
                    switch (alt3) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:303:60: k= ENCODING enc= p_StringLiteral
                            k=this.match(this.input,ENCODING,XQueryParser.FOLLOW_ENCODING_in_p_VersionDecl657); if (this.state.failed) return retval; 
                            if ( this.state.backtracking===0 ) stream_ENCODING.add(k);

                            if ( this.state.backtracking===0 ) {
                              this.ak(k);
                            }
                            this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_VersionDecl663);
                            enc=this.p_StringLiteral();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) stream_p_StringLiteral.add(enc.getTree());


                            break;

                    }






                    break;

            }

            SEMICOLON2=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_p_VersionDecl669); if (this.state.failed) return retval; 
            if ( this.state.backtracking===0 ) stream_SEMICOLON.add(SEMICOLON2);



            // AST REWRITE
            // elements: ver, enc
            // token labels: 
            // rule labels: retval, ver, enc
            // token list labels: 
            // rule list labels: 
            if ( this.state.backtracking===0 ) {
            retval.tree = root_0;
            var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
            var stream_ver=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token ver",ver!=null?ver.tree:null);
            var stream_enc=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token enc",enc!=null?enc.tree:null);

            root_0 = this.adaptor.nil();
            // 304:17: -> ^( VersionDecl ^( VersionDeclVersion ( $ver)? ) ^( VersionDeclEncoding ( $enc)? ) )
            {
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:304:20: ^( VersionDecl ^( VersionDeclVersion ( $ver)? ) ^( VersionDeclEncoding ( $enc)? ) )
                {
                var root_1 = this.adaptor.nil();
                root_1 = this.adaptor.becomeRoot(this.adaptor.create(VersionDecl, "VersionDecl"), root_1);

                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:304:34: ^( VersionDeclVersion ( $ver)? )
                {
                var root_2 = this.adaptor.nil();
                root_2 = this.adaptor.becomeRoot(this.adaptor.create(VersionDeclVersion, "VersionDeclVersion"), root_2);

                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:304:55: ( $ver)?
                if ( stream_ver.hasNext() ) {
                    this.adaptor.addChild(root_2, stream_ver.nextTree());

                }
                stream_ver.reset();

                this.adaptor.addChild(root_1, root_2);
                }
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:304:62: ^( VersionDeclEncoding ( $enc)? )
                {
                var root_2 = this.adaptor.nil();
                root_2 = this.adaptor.becomeRoot(this.adaptor.create(VersionDeclEncoding, "VersionDeclEncoding"), root_2);

                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:304:84: ( $enc)?
                if ( stream_enc.hasNext() ) {
                    this.adaptor.addChild(root_2, stream_enc.nextTree());

                }
                stream_enc.reset();

                this.adaptor.addChild(root_1, root_2);
                }

                this.adaptor.addChild(root_0, root_1);
                }

            }

            retval.tree = root_0;}


            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_MainModule_return: (function() {
        XQueryParser.p_MainModule_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_MainModule_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:308:1: p_MainModule[vd] : pm_Prolog pm_QueryBody -> ^( MainModule pm_Prolog ) ;
    // $ANTLR start "p_MainModule"
    p_MainModule: function(vd) {
        var retval = new XQueryParser.p_MainModule_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var pm_Prolog3 = null;
         var pm_QueryBody4 = null;

        var stream_pm_QueryBody=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule pm_QueryBody");
        var stream_pm_Prolog=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule pm_Prolog");
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:309:9: ( pm_Prolog pm_QueryBody -> ^( MainModule pm_Prolog ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:309:11: pm_Prolog pm_QueryBody
            this.pushFollow(XQueryParser.FOLLOW_pm_Prolog_in_p_MainModule735);
            pm_Prolog3=this.pm_Prolog();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) stream_pm_Prolog.add(pm_Prolog3.getTree());
            this.pushFollow(XQueryParser.FOLLOW_pm_QueryBody_in_p_MainModule737);
            pm_QueryBody4=this.pm_QueryBody();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) stream_pm_QueryBody.add(pm_QueryBody4.getTree());


            // AST REWRITE
            // elements: pm_Prolog
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            if ( this.state.backtracking===0 ) {
            retval.tree = root_0;
            var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);

            root_0 = this.adaptor.nil();
            // 310:17: -> ^( MainModule pm_Prolog )
            {
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:310:20: ^( MainModule pm_Prolog )
                {
                var root_1 = this.adaptor.nil();
                root_1 = this.adaptor.becomeRoot(this.adaptor.create(MainModule, "MainModule"), root_1);

                this.adaptor.addChild(root_1, vd);
                this.adaptor.addChild(root_1, stream_pm_Prolog.nextTree());

                this.adaptor.addChild(root_0, root_1);
                }

            }

            retval.tree = root_0;}


            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_LibraryModule_return: (function() {
        XQueryParser.p_LibraryModule_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_LibraryModule_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:314:1: p_LibraryModule[vd] : p_ModuleDecl pm_Prolog -> ^( LibraryModule p_ModuleDecl pm_Prolog ) ;
    // $ANTLR start "p_LibraryModule"
    p_LibraryModule: function(vd) {
        var retval = new XQueryParser.p_LibraryModule_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_ModuleDecl5 = null;
         var pm_Prolog6 = null;

        var stream_pm_Prolog=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule pm_Prolog");
        var stream_p_ModuleDecl=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_ModuleDecl");
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:315:9: ( p_ModuleDecl pm_Prolog -> ^( LibraryModule p_ModuleDecl pm_Prolog ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:315:11: p_ModuleDecl pm_Prolog
            this.pushFollow(XQueryParser.FOLLOW_p_ModuleDecl_in_p_LibraryModule793);
            p_ModuleDecl5=this.p_ModuleDecl();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) stream_p_ModuleDecl.add(p_ModuleDecl5.getTree());
            this.pushFollow(XQueryParser.FOLLOW_pm_Prolog_in_p_LibraryModule795);
            pm_Prolog6=this.pm_Prolog();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) stream_pm_Prolog.add(pm_Prolog6.getTree());


            // AST REWRITE
            // elements: pm_Prolog, p_ModuleDecl
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            if ( this.state.backtracking===0 ) {
            retval.tree = root_0;
            var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);

            root_0 = this.adaptor.nil();
            // 316:17: -> ^( LibraryModule p_ModuleDecl pm_Prolog )
            {
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:316:20: ^( LibraryModule p_ModuleDecl pm_Prolog )
                {
                var root_1 = this.adaptor.nil();
                root_1 = this.adaptor.becomeRoot(this.adaptor.create(LibraryModule, "LibraryModule"), root_1);

                this.adaptor.addChild(root_1, vd);
                this.adaptor.addChild(root_1, stream_p_ModuleDecl.nextTree());
                this.adaptor.addChild(root_1, stream_pm_Prolog.nextTree());

                this.adaptor.addChild(root_0, root_1);
                }

            }

            retval.tree = root_0;}


            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ModuleDecl_return: (function() {
        XQueryParser.p_ModuleDecl_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ModuleDecl_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:320:1: p_ModuleDecl : k+= MODULE k+= NAMESPACE p_NCName EQUAL p_StringLiteral SEMICOLON -> ^( ModuleDecl p_NCName p_StringLiteral ) ;
    // $ANTLR start "p_ModuleDecl"
    p_ModuleDecl: function() {
        var retval = new XQueryParser.p_ModuleDecl_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var EQUAL8 = null;
        var SEMICOLON10 = null;
        var k = null;
        var list_k=null;
         var p_NCName7 = null;
         var p_StringLiteral9 = null;

        var EQUAL8_tree=null;
        var SEMICOLON10_tree=null;
        var k_tree=null;
        var stream_SEMICOLON=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token SEMICOLON");
        var stream_MODULE=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token MODULE");
        var stream_NAMESPACE=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token NAMESPACE");
        var stream_EQUAL=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token EQUAL");
        var stream_p_NCName=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_NCName");
        var stream_p_StringLiteral=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_StringLiteral");
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:321:9: (k+= MODULE k+= NAMESPACE p_NCName EQUAL p_StringLiteral SEMICOLON -> ^( ModuleDecl p_NCName p_StringLiteral ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:321:11: k+= MODULE k+= NAMESPACE p_NCName EQUAL p_StringLiteral SEMICOLON
            k=this.match(this.input,MODULE,XQueryParser.FOLLOW_MODULE_in_p_ModuleDecl851); if (this.state.failed) return retval; 
            if ( this.state.backtracking===0 ) stream_MODULE.add(k);

            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            k=this.match(this.input,NAMESPACE,XQueryParser.FOLLOW_NAMESPACE_in_p_ModuleDecl855); if (this.state.failed) return retval; 
            if ( this.state.backtracking===0 ) stream_NAMESPACE.add(k);

            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_NCName_in_p_ModuleDecl859);
            p_NCName7=this.p_NCName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) stream_p_NCName.add(p_NCName7.getTree());
            EQUAL8=this.match(this.input,EQUAL,XQueryParser.FOLLOW_EQUAL_in_p_ModuleDecl861); if (this.state.failed) return retval; 
            if ( this.state.backtracking===0 ) stream_EQUAL.add(EQUAL8);

            this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_ModuleDecl863);
            p_StringLiteral9=this.p_StringLiteral();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) stream_p_StringLiteral.add(p_StringLiteral9.getTree());
            SEMICOLON10=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_p_ModuleDecl865); if (this.state.failed) return retval; 
            if ( this.state.backtracking===0 ) stream_SEMICOLON.add(SEMICOLON10);



            // AST REWRITE
            // elements: p_NCName, p_StringLiteral
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            if ( this.state.backtracking===0 ) {
            retval.tree = root_0;
            var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);

            root_0 = this.adaptor.nil();
            // 322:17: -> ^( ModuleDecl p_NCName p_StringLiteral )
            {
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:322:21: ^( ModuleDecl p_NCName p_StringLiteral )
                {
                var root_1 = this.adaptor.nil();
                root_1 = this.adaptor.becomeRoot(this.adaptor.create(ModuleDecl, "ModuleDecl"), root_1);

                this.adaptor.addChild(root_1, stream_p_NCName.nextTree());
                this.adaptor.addChild(root_1, stream_p_StringLiteral.nextTree());

                this.adaptor.addChild(root_0, root_1);
                }

            }

            retval.tree = root_0;}


            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pm_Prolog_return: (function() {
        XQueryParser.pm_Prolog_return = function(){};
        org.antlr.lang.extend(XQueryParser.pm_Prolog_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:328:1: pm_Prolog : ( (dnd+= pm_DefaultNamespaceDecl | s+= p_Setter | nd+= pm_NamespaceDecl | i+= p_Import | fto+= pm_FTOptionDecl ) )* (od+= pg_OrderedDecl )* -> ^( Prolog ^( DefaultNamespaceDecls ( $dnd)* ) ^( Setters ( $s)* ) ^( NamespaceDecls ( $nd)* ) ^( Imports ( $i)* ) ^( FTOptionDecls ( $fto)* ) ^( OrderedDecls ( $od)* ) ) ;
    // $ANTLR start "pm_Prolog"
    pm_Prolog: function() {
        var retval = new XQueryParser.pm_Prolog_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var list_dnd=null;
        var list_s=null;
        var list_nd=null;
        var list_i=null;
        var list_fto=null;
        var list_od=null;
        var dnd = null;
        var s = null;
        var nd = null;
        var i = null;
        var fto = null;
        var od = null;
        var stream_pm_NamespaceDecl=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule pm_NamespaceDecl");
        var stream_p_Import=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_Import");
        var stream_p_Setter=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_Setter");
        var stream_pm_DefaultNamespaceDecl=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule pm_DefaultNamespaceDecl");
        var stream_pg_OrderedDecl=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule pg_OrderedDecl");
        var stream_pm_FTOptionDecl=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule pm_FTOptionDecl");
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:329:9: ( ( (dnd+= pm_DefaultNamespaceDecl | s+= p_Setter | nd+= pm_NamespaceDecl | i+= p_Import | fto+= pm_FTOptionDecl ) )* (od+= pg_OrderedDecl )* -> ^( Prolog ^( DefaultNamespaceDecls ( $dnd)* ) ^( Setters ( $s)* ) ^( NamespaceDecls ( $nd)* ) ^( Imports ( $i)* ) ^( FTOptionDecls ( $fto)* ) ^( OrderedDecls ( $od)* ) ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:329:11: ( (dnd+= pm_DefaultNamespaceDecl | s+= p_Setter | nd+= pm_NamespaceDecl | i+= p_Import | fto+= pm_FTOptionDecl ) )* (od+= pg_OrderedDecl )*
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:329:11: ( (dnd+= pm_DefaultNamespaceDecl | s+= p_Setter | nd+= pm_NamespaceDecl | i+= p_Import | fto+= pm_FTOptionDecl ) )*
            loop6:
            do {
                var alt6=2;
                alt6 = this.dfa6.predict(this.input);
                switch (alt6) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:329:12: (dnd+= pm_DefaultNamespaceDecl | s+= p_Setter | nd+= pm_NamespaceDecl | i+= p_Import | fto+= pm_FTOptionDecl )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:329:12: (dnd+= pm_DefaultNamespaceDecl | s+= p_Setter | nd+= pm_NamespaceDecl | i+= p_Import | fto+= pm_FTOptionDecl )
                    var alt5=5;
                    var LA5_0 = this.input.LA(1);

                    if ( (LA5_0==DECLARE) ) {
                        var LA5_1 = this.input.LA(2);

                        if ( (LA5_1==REVALIDATION) && ((this.lc(XQU)))) {
                            alt5=2;
                        }
                        else if ( (LA5_1==FT_OPTION) ) {
                            alt5=5;
                        }
                        else if ( (LA5_1==DEFAULT) ) {
                            var LA5_5 = this.input.LA(3);

                            if ( (LA5_5==ELEMENT||LA5_5==FUNCTION) ) {
                                alt5=1;
                            }
                            else if ( (LA5_5==COLLATION||LA5_5==ORDER||LA5_5==DECIMAL_FORMAT) ) {
                                alt5=2;
                            }
                            else {
                                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                                var nvae =
                                    new org.antlr.runtime.NoViableAltException("", 5, 5, this.input);

                                throw nvae;
                            }
                        }
                        else if ( ((LA5_1>=BASE_URI && LA5_1<=BOUNDARY_SPACE)||(LA5_1>=CONSTRUCTION && LA5_1<=COPY_NAMESPACES)||LA5_1==ORDERING||LA5_1==DECIMAL_FORMAT) ) {
                            alt5=2;
                        }
                        else if ( (LA5_1==NAMESPACE) ) {
                            alt5=3;
                        }
                        else {
                            if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                            var nvae =
                                new org.antlr.runtime.NoViableAltException("", 5, 1, this.input);

                            throw nvae;
                        }
                    }
                    else if ( (LA5_0==IMPORT) ) {
                        alt5=4;
                    }
                    else {
                        if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        var nvae =
                            new org.antlr.runtime.NoViableAltException("", 5, 0, this.input);

                        throw nvae;
                    }
                    switch (alt5) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:329:13: dnd+= pm_DefaultNamespaceDecl
                            this.pushFollow(XQueryParser.FOLLOW_pm_DefaultNamespaceDecl_in_pm_Prolog924);
                            dnd=this.pm_DefaultNamespaceDecl();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) stream_pm_DefaultNamespaceDecl.add(dnd.getTree());
                            if (org.antlr.lang.isNull(list_dnd)) list_dnd = [];
                            list_dnd.push(dnd.getTree());



                            break;
                        case 2 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:329:44: s+= p_Setter
                            this.pushFollow(XQueryParser.FOLLOW_p_Setter_in_pm_Prolog930);
                            s=this.p_Setter();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) stream_p_Setter.add(s.getTree());
                            if (org.antlr.lang.isNull(list_s)) list_s = [];
                            list_s.push(s.getTree());



                            break;
                        case 3 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:329:58: nd+= pm_NamespaceDecl
                            this.pushFollow(XQueryParser.FOLLOW_pm_NamespaceDecl_in_pm_Prolog936);
                            nd=this.pm_NamespaceDecl();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) stream_pm_NamespaceDecl.add(nd.getTree());
                            if (org.antlr.lang.isNull(list_nd)) list_nd = [];
                            list_nd.push(nd.getTree());



                            break;
                        case 4 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:329:81: i+= p_Import
                            this.pushFollow(XQueryParser.FOLLOW_p_Import_in_pm_Prolog942);
                            i=this.p_Import();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) stream_p_Import.add(i.getTree());
                            if (org.antlr.lang.isNull(list_i)) list_i = [];
                            list_i.push(i.getTree());



                            break;
                        case 5 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:329:95: fto+= pm_FTOptionDecl
                            this.pushFollow(XQueryParser.FOLLOW_pm_FTOptionDecl_in_pm_Prolog948);
                            fto=this.pm_FTOptionDecl();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) stream_pm_FTOptionDecl.add(fto.getTree());
                            if (org.antlr.lang.isNull(list_fto)) list_fto = [];
                            list_fto.push(fto.getTree());



                            break;

                    }



                    break;

                default :
                    break loop6;
                }
            } while (true);

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:329:121: (od+= pg_OrderedDecl )*
            loop7:
            do {
                var alt7=2;
                var LA7_0 = this.input.LA(1);

                if ( (LA7_0==DECLARE) ) {
                    var LA7_3 = this.input.LA(2);

                    if ( (LA7_3==FUNCTION||LA7_3==OPTION||LA7_3==VARIABLE||LA7_3==CONTEXT||LA7_3==UPDATING||LA7_3==COLLECTION||(LA7_3>=INDEX && LA7_3<=INTEGRITY)||LA7_3==ANN_PERCENT) ) {
                        alt7=1;
                    }


                }


                switch (alt7) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:329:121: od+= pg_OrderedDecl
                    this.pushFollow(XQueryParser.FOLLOW_pg_OrderedDecl_in_pm_Prolog955);
                    od=this.pg_OrderedDecl();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) stream_pg_OrderedDecl.add(od.getTree());
                    if (org.antlr.lang.isNull(list_od)) list_od = [];
                    list_od.push(od.getTree());



                    break;

                default :
                    break loop7;
                }
            } while (true);



            // AST REWRITE
            // elements: fto, od, dnd, nd, i, s
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: od, s, fto, nd, dnd, i
            if ( this.state.backtracking===0 ) {
            retval.tree = root_0;
            var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
            var stream_od=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token od",list_od);
            var stream_s=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token s",list_s);
            var stream_fto=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token fto",list_fto);
            var stream_nd=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token nd",list_nd);
            var stream_dnd=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token dnd",list_dnd);
            var stream_i=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token i",list_i);
            root_0 = this.adaptor.nil();
            // 330:17: -> ^( Prolog ^( DefaultNamespaceDecls ( $dnd)* ) ^( Setters ( $s)* ) ^( NamespaceDecls ( $nd)* ) ^( Imports ( $i)* ) ^( FTOptionDecls ( $fto)* ) ^( OrderedDecls ( $od)* ) )
            {
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:330:21: ^( Prolog ^( DefaultNamespaceDecls ( $dnd)* ) ^( Setters ( $s)* ) ^( NamespaceDecls ( $nd)* ) ^( Imports ( $i)* ) ^( FTOptionDecls ( $fto)* ) ^( OrderedDecls ( $od)* ) )
                {
                var root_1 = this.adaptor.nil();
                root_1 = this.adaptor.becomeRoot(this.adaptor.create(Prolog, "Prolog"), root_1);

                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:331:33: ^( DefaultNamespaceDecls ( $dnd)* )
                {
                var root_2 = this.adaptor.nil();
                root_2 = this.adaptor.becomeRoot(this.adaptor.create(DefaultNamespaceDecls, "DefaultNamespaceDecls"), root_2);

                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:331:57: ( $dnd)*
                while ( stream_dnd.hasNext() ) {
                    this.adaptor.addChild(root_2, stream_dnd.nextTree());

                }
                stream_dnd.reset();

                this.adaptor.addChild(root_1, root_2);
                }
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:332:33: ^( Setters ( $s)* )
                {
                var root_2 = this.adaptor.nil();
                root_2 = this.adaptor.becomeRoot(this.adaptor.create(Setters, "Setters"), root_2);

                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:332:43: ( $s)*
                while ( stream_s.hasNext() ) {
                    this.adaptor.addChild(root_2, stream_s.nextTree());

                }
                stream_s.reset();

                this.adaptor.addChild(root_1, root_2);
                }
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:333:33: ^( NamespaceDecls ( $nd)* )
                {
                var root_2 = this.adaptor.nil();
                root_2 = this.adaptor.becomeRoot(this.adaptor.create(NamespaceDecls, "NamespaceDecls"), root_2);

                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:333:50: ( $nd)*
                while ( stream_nd.hasNext() ) {
                    this.adaptor.addChild(root_2, stream_nd.nextTree());

                }
                stream_nd.reset();

                this.adaptor.addChild(root_1, root_2);
                }
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:334:33: ^( Imports ( $i)* )
                {
                var root_2 = this.adaptor.nil();
                root_2 = this.adaptor.becomeRoot(this.adaptor.create(Imports, "Imports"), root_2);

                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:334:43: ( $i)*
                while ( stream_i.hasNext() ) {
                    this.adaptor.addChild(root_2, stream_i.nextTree());

                }
                stream_i.reset();

                this.adaptor.addChild(root_1, root_2);
                }
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:335:33: ^( FTOptionDecls ( $fto)* )
                {
                var root_2 = this.adaptor.nil();
                root_2 = this.adaptor.becomeRoot(this.adaptor.create(FTOptionDecls, "FTOptionDecls"), root_2);

                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:335:49: ( $fto)*
                while ( stream_fto.hasNext() ) {
                    this.adaptor.addChild(root_2, stream_fto.nextTree());

                }
                stream_fto.reset();

                this.adaptor.addChild(root_1, root_2);
                }
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:336:33: ^( OrderedDecls ( $od)* )
                {
                var root_2 = this.adaptor.nil();
                root_2 = this.adaptor.becomeRoot(this.adaptor.create(OrderedDecls, "OrderedDecls"), root_2);

                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:336:48: ( $od)*
                while ( stream_od.hasNext() ) {
                    this.adaptor.addChild(root_2, stream_od.nextTree());

                }
                stream_od.reset();

                this.adaptor.addChild(root_1, root_2);
                }

                this.adaptor.addChild(root_0, root_1);
                }

            }

            retval.tree = root_0;}


            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pg_OrderedDecl_return: (function() {
        XQueryParser.pg_OrderedDecl_return = function(){};
        org.antlr.lang.extend(XQueryParser.pg_OrderedDecl_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:344:1: pg_OrderedDecl : ( pm_ContextItemDecl | pm_AnnotatedDecl | pm_OptionDecl );
    // $ANTLR start "pg_OrderedDecl"
    pg_OrderedDecl: function() {
        var retval = new XQueryParser.pg_OrderedDecl_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var pm_ContextItemDecl11 = null;
         var pm_AnnotatedDecl12 = null;
         var pm_OptionDecl13 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:345:9: ( pm_ContextItemDecl | pm_AnnotatedDecl | pm_OptionDecl )
            var alt8=3;
            var LA8_0 = this.input.LA(1);

            if ( (LA8_0==DECLARE) ) {
                switch ( this.input.LA(2) ) {
                case CONTEXT:
                    alt8=1;
                    break;
                case FUNCTION:
                case VARIABLE:
                case UPDATING:
                case COLLECTION:
                case INDEX:
                case INTEGRITY:
                case ANN_PERCENT:
                    alt8=2;
                    break;
                case OPTION:
                    alt8=3;
                    break;
                default:
                    if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                    var nvae =
                        new org.antlr.runtime.NoViableAltException("", 8, 1, this.input);

                    throw nvae;
                }

            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 8, 0, this.input);

                throw nvae;
            }
            switch (alt8) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:345:11: pm_ContextItemDecl
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_pm_ContextItemDecl_in_pg_OrderedDecl1270);
                    pm_ContextItemDecl11=this.pm_ContextItemDecl();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_ContextItemDecl11.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:346:11: pm_AnnotatedDecl
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_pm_AnnotatedDecl_in_pg_OrderedDecl1282);
                    pm_AnnotatedDecl12=this.pm_AnnotatedDecl();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_AnnotatedDecl12.getTree());


                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:347:11: pm_OptionDecl
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_pm_OptionDecl_in_pg_OrderedDecl1294);
                    pm_OptionDecl13=this.pm_OptionDecl();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_OptionDecl13.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_Setter_return: (function() {
        XQueryParser.p_Setter_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_Setter_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:355:1: p_Setter : ( pm_BoundarySpaceDecl | pm_DefaultCollationDecl | pm_BaseURIDecl | pm_ConstructionDecl | pm_OrderingModeDecl | pm_EmptyOrderDecl | {...}? => pm_RevalidationDecl | pm_CopyNamespacesDecl | pm_DecimalFormatDecl );
    // $ANTLR start "p_Setter"
    p_Setter: function() {
        var retval = new XQueryParser.p_Setter_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var pm_BoundarySpaceDecl14 = null;
         var pm_DefaultCollationDecl15 = null;
         var pm_BaseURIDecl16 = null;
         var pm_ConstructionDecl17 = null;
         var pm_OrderingModeDecl18 = null;
         var pm_EmptyOrderDecl19 = null;
         var pm_RevalidationDecl20 = null;
         var pm_CopyNamespacesDecl21 = null;
         var pm_DecimalFormatDecl22 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:356:9: ( pm_BoundarySpaceDecl | pm_DefaultCollationDecl | pm_BaseURIDecl | pm_ConstructionDecl | pm_OrderingModeDecl | pm_EmptyOrderDecl | {...}? => pm_RevalidationDecl | pm_CopyNamespacesDecl | pm_DecimalFormatDecl )
            var alt9=9;
            alt9 = this.dfa9.predict(this.input);
            switch (alt9) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:356:11: pm_BoundarySpaceDecl
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_pm_BoundarySpaceDecl_in_p_Setter1324);
                    pm_BoundarySpaceDecl14=this.pm_BoundarySpaceDecl();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_BoundarySpaceDecl14.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:357:11: pm_DefaultCollationDecl
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_pm_DefaultCollationDecl_in_p_Setter1336);
                    pm_DefaultCollationDecl15=this.pm_DefaultCollationDecl();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_DefaultCollationDecl15.getTree());


                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:358:11: pm_BaseURIDecl
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_pm_BaseURIDecl_in_p_Setter1348);
                    pm_BaseURIDecl16=this.pm_BaseURIDecl();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_BaseURIDecl16.getTree());


                    break;
                case 4 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:359:11: pm_ConstructionDecl
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_pm_ConstructionDecl_in_p_Setter1360);
                    pm_ConstructionDecl17=this.pm_ConstructionDecl();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_ConstructionDecl17.getTree());


                    break;
                case 5 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:360:11: pm_OrderingModeDecl
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_pm_OrderingModeDecl_in_p_Setter1372);
                    pm_OrderingModeDecl18=this.pm_OrderingModeDecl();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_OrderingModeDecl18.getTree());


                    break;
                case 6 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:361:11: pm_EmptyOrderDecl
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_pm_EmptyOrderDecl_in_p_Setter1384);
                    pm_EmptyOrderDecl19=this.pm_EmptyOrderDecl();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_EmptyOrderDecl19.getTree());


                    break;
                case 7 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:362:11: {...}? => pm_RevalidationDecl
                    root_0 = this.adaptor.nil();

                    if ( !((this.lc(XQU))) ) {
                        if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        throw new org.antlr.runtime.FailedPredicateException(this.input, "p_Setter", "this.lc(XQU)");
                    }
                    this.pushFollow(XQueryParser.FOLLOW_pm_RevalidationDecl_in_p_Setter1399);
                    pm_RevalidationDecl20=this.pm_RevalidationDecl();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_RevalidationDecl20.getTree());


                    break;
                case 8 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:363:11: pm_CopyNamespacesDecl
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_pm_CopyNamespacesDecl_in_p_Setter1411);
                    pm_CopyNamespacesDecl21=this.pm_CopyNamespacesDecl();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_CopyNamespacesDecl21.getTree());


                    break;
                case 9 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:364:11: pm_DecimalFormatDecl
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_pm_DecimalFormatDecl_in_p_Setter1423);
                    pm_DecimalFormatDecl22=this.pm_DecimalFormatDecl();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_DecimalFormatDecl22.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pm_BoundarySpaceDecl_return: (function() {
        XQueryParser.pm_BoundarySpaceDecl_return = function(){};
        org.antlr.lang.extend(XQueryParser.pm_BoundarySpaceDecl_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:368:1: pm_BoundarySpaceDecl : k= DECLARE k= BOUNDARY_SPACE ( (k= PRESERVE ) | (k= STRIP ) ) SEMICOLON ;
    // $ANTLR start "pm_BoundarySpaceDecl"
    pm_BoundarySpaceDecl: function() {
        var retval = new XQueryParser.pm_BoundarySpaceDecl_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var SEMICOLON23 = null;

        var k_tree=null;
        var SEMICOLON23_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:369:9: (k= DECLARE k= BOUNDARY_SPACE ( (k= PRESERVE ) | (k= STRIP ) ) SEMICOLON )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:369:11: k= DECLARE k= BOUNDARY_SPACE ( (k= PRESERVE ) | (k= STRIP ) ) SEMICOLON
            root_0 = this.adaptor.nil();

            k=this.match(this.input,DECLARE,XQueryParser.FOLLOW_DECLARE_in_pm_BoundarySpaceDecl1455); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,BOUNDARY_SPACE,XQueryParser.FOLLOW_BOUNDARY_SPACE_in_pm_BoundarySpaceDecl1461); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:369:68: ( (k= PRESERVE ) | (k= STRIP ) )
            var alt10=2;
            var LA10_0 = this.input.LA(1);

            if ( (LA10_0==PRESERVE) ) {
                alt10=1;
            }
            else if ( (LA10_0==STRIP) ) {
                alt10=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 10, 0, this.input);

                throw nvae;
            }
            switch (alt10) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:369:70: (k= PRESERVE )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:369:70: (k= PRESERVE )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:369:71: k= PRESERVE
                    k=this.match(this.input,PRESERVE,XQueryParser.FOLLOW_PRESERVE_in_pm_BoundarySpaceDecl1470); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }





                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:369:100: (k= STRIP )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:369:100: (k= STRIP )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:369:101: k= STRIP
                    k=this.match(this.input,STRIP,XQueryParser.FOLLOW_STRIP_in_pm_BoundarySpaceDecl1480); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }





                    break;

            }

            SEMICOLON23=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_BoundarySpaceDecl1487); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            SEMICOLON23_tree = this.adaptor.create(SEMICOLON23);
            this.adaptor.addChild(root_0, SEMICOLON23_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pm_DefaultCollationDecl_return: (function() {
        XQueryParser.pm_DefaultCollationDecl_return = function(){};
        org.antlr.lang.extend(XQueryParser.pm_DefaultCollationDecl_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:373:1: pm_DefaultCollationDecl : k= DECLARE k= DEFAULT k= COLLATION p_StringLiteral SEMICOLON ;
    // $ANTLR start "pm_DefaultCollationDecl"
    pm_DefaultCollationDecl: function() {
        var retval = new XQueryParser.pm_DefaultCollationDecl_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var SEMICOLON25 = null;
         var p_StringLiteral24 = null;

        var k_tree=null;
        var SEMICOLON25_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:374:9: (k= DECLARE k= DEFAULT k= COLLATION p_StringLiteral SEMICOLON )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:374:11: k= DECLARE k= DEFAULT k= COLLATION p_StringLiteral SEMICOLON
            root_0 = this.adaptor.nil();

            k=this.match(this.input,DECLARE,XQueryParser.FOLLOW_DECLARE_in_pm_DefaultCollationDecl1515); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,DEFAULT,XQueryParser.FOLLOW_DEFAULT_in_pm_DefaultCollationDecl1521); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,COLLATION,XQueryParser.FOLLOW_COLLATION_in_pm_DefaultCollationDecl1527); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_pm_DefaultCollationDecl1531);
            p_StringLiteral24=this.p_StringLiteral();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral24.getTree());
            SEMICOLON25=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_DefaultCollationDecl1533); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            SEMICOLON25_tree = this.adaptor.create(SEMICOLON25);
            this.adaptor.addChild(root_0, SEMICOLON25_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pm_BaseURIDecl_return: (function() {
        XQueryParser.pm_BaseURIDecl_return = function(){};
        org.antlr.lang.extend(XQueryParser.pm_BaseURIDecl_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:378:1: pm_BaseURIDecl : k= DECLARE k= BASE_URI sl= p_StringLiteral SEMICOLON -> ^( BaseURIDecl $sl) ;
    // $ANTLR start "pm_BaseURIDecl"
    pm_BaseURIDecl: function() {
        var retval = new XQueryParser.pm_BaseURIDecl_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var SEMICOLON26 = null;
         var sl = null;

        var k_tree=null;
        var SEMICOLON26_tree=null;
        var stream_DECLARE=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token DECLARE");
        var stream_SEMICOLON=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token SEMICOLON");
        var stream_BASE_URI=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token BASE_URI");
        var stream_p_StringLiteral=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_StringLiteral");
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:379:9: (k= DECLARE k= BASE_URI sl= p_StringLiteral SEMICOLON -> ^( BaseURIDecl $sl) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:379:11: k= DECLARE k= BASE_URI sl= p_StringLiteral SEMICOLON
            k=this.match(this.input,DECLARE,XQueryParser.FOLLOW_DECLARE_in_pm_BaseURIDecl1569); if (this.state.failed) return retval; 
            if ( this.state.backtracking===0 ) stream_DECLARE.add(k);

            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,BASE_URI,XQueryParser.FOLLOW_BASE_URI_in_pm_BaseURIDecl1575); if (this.state.failed) return retval; 
            if ( this.state.backtracking===0 ) stream_BASE_URI.add(k);

            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_pm_BaseURIDecl1581);
            sl=this.p_StringLiteral();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) stream_p_StringLiteral.add(sl.getTree());
            SEMICOLON26=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_BaseURIDecl1583); if (this.state.failed) return retval; 
            if ( this.state.backtracking===0 ) stream_SEMICOLON.add(SEMICOLON26);



            // AST REWRITE
            // elements: sl
            // token labels: 
            // rule labels: sl, retval
            // token list labels: 
            // rule list labels: 
            if ( this.state.backtracking===0 ) {
            retval.tree = root_0;
            var stream_sl=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token sl",sl!=null?sl.tree:null);
            var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);

            root_0 = this.adaptor.nil();
            // 380:17: -> ^( BaseURIDecl $sl)
            {
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:380:20: ^( BaseURIDecl $sl)
                {
                var root_1 = this.adaptor.nil();
                root_1 = this.adaptor.becomeRoot(this.adaptor.create(BaseURIDecl, "BaseURIDecl"), root_1);

                this.adaptor.addChild(root_1, stream_sl.nextTree());

                this.adaptor.addChild(root_0, root_1);
                }

            }

            retval.tree = root_0;}


            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pm_ConstructionDecl_return: (function() {
        XQueryParser.pm_ConstructionDecl_return = function(){};
        org.antlr.lang.extend(XQueryParser.pm_ConstructionDecl_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:384:1: pm_ConstructionDecl : k= DECLARE k= CONSTRUCTION ( (k= STRIP | k= PRESERVE ) ) SEMICOLON ;
    // $ANTLR start "pm_ConstructionDecl"
    pm_ConstructionDecl: function() {
        var retval = new XQueryParser.pm_ConstructionDecl_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var SEMICOLON27 = null;

        var k_tree=null;
        var SEMICOLON27_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:385:9: (k= DECLARE k= CONSTRUCTION ( (k= STRIP | k= PRESERVE ) ) SEMICOLON )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:385:11: k= DECLARE k= CONSTRUCTION ( (k= STRIP | k= PRESERVE ) ) SEMICOLON
            root_0 = this.adaptor.nil();

            k=this.match(this.input,DECLARE,XQueryParser.FOLLOW_DECLARE_in_pm_ConstructionDecl1636); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,CONSTRUCTION,XQueryParser.FOLLOW_CONSTRUCTION_in_pm_ConstructionDecl1642); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:385:66: ( (k= STRIP | k= PRESERVE ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:385:68: (k= STRIP | k= PRESERVE )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:385:68: (k= STRIP | k= PRESERVE )
            var alt11=2;
            var LA11_0 = this.input.LA(1);

            if ( (LA11_0==STRIP) ) {
                alt11=1;
            }
            else if ( (LA11_0==PRESERVE) ) {
                alt11=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 11, 0, this.input);

                throw nvae;
            }
            switch (alt11) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:385:69: k= STRIP
                    k=this.match(this.input,STRIP,XQueryParser.FOLLOW_STRIP_in_pm_ConstructionDecl1651); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:385:79: k= PRESERVE
                    k=this.match(this.input,PRESERVE,XQueryParser.FOLLOW_PRESERVE_in_pm_ConstructionDecl1657); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }


                    break;

            }

            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }



            SEMICOLON27=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_ConstructionDecl1664); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            SEMICOLON27_tree = this.adaptor.create(SEMICOLON27);
            this.adaptor.addChild(root_0, SEMICOLON27_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pm_OrderingModeDecl_return: (function() {
        XQueryParser.pm_OrderingModeDecl_return = function(){};
        org.antlr.lang.extend(XQueryParser.pm_OrderingModeDecl_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:389:1: pm_OrderingModeDecl : k= DECLARE k= ORDERING ( (k= ORDERED | k= UNORDERED ) ) SEMICOLON ;
    // $ANTLR start "pm_OrderingModeDecl"
    pm_OrderingModeDecl: function() {
        var retval = new XQueryParser.pm_OrderingModeDecl_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var SEMICOLON28 = null;

        var k_tree=null;
        var SEMICOLON28_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:390:9: (k= DECLARE k= ORDERING ( (k= ORDERED | k= UNORDERED ) ) SEMICOLON )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:390:11: k= DECLARE k= ORDERING ( (k= ORDERED | k= UNORDERED ) ) SEMICOLON
            root_0 = this.adaptor.nil();

            k=this.match(this.input,DECLARE,XQueryParser.FOLLOW_DECLARE_in_pm_OrderingModeDecl1692); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,ORDERING,XQueryParser.FOLLOW_ORDERING_in_pm_OrderingModeDecl1698); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:390:62: ( (k= ORDERED | k= UNORDERED ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:390:64: (k= ORDERED | k= UNORDERED )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:390:64: (k= ORDERED | k= UNORDERED )
            var alt12=2;
            var LA12_0 = this.input.LA(1);

            if ( (LA12_0==ORDERED) ) {
                alt12=1;
            }
            else if ( (LA12_0==UNORDERED) ) {
                alt12=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 12, 0, this.input);

                throw nvae;
            }
            switch (alt12) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:390:65: k= ORDERED
                    k=this.match(this.input,ORDERED,XQueryParser.FOLLOW_ORDERED_in_pm_OrderingModeDecl1707); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:390:77: k= UNORDERED
                    k=this.match(this.input,UNORDERED,XQueryParser.FOLLOW_UNORDERED_in_pm_OrderingModeDecl1713); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }


                    break;

            }

            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }



            SEMICOLON28=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_OrderingModeDecl1720); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            SEMICOLON28_tree = this.adaptor.create(SEMICOLON28);
            this.adaptor.addChild(root_0, SEMICOLON28_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pm_EmptyOrderDecl_return: (function() {
        XQueryParser.pm_EmptyOrderDecl_return = function(){};
        org.antlr.lang.extend(XQueryParser.pm_EmptyOrderDecl_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:394:1: pm_EmptyOrderDecl : k= DECLARE k= DEFAULT k= ORDER k= EMPTY ( (k= GREATEST | k= LEAST ) ) SEMICOLON ;
    // $ANTLR start "pm_EmptyOrderDecl"
    pm_EmptyOrderDecl: function() {
        var retval = new XQueryParser.pm_EmptyOrderDecl_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var SEMICOLON29 = null;

        var k_tree=null;
        var SEMICOLON29_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:395:9: (k= DECLARE k= DEFAULT k= ORDER k= EMPTY ( (k= GREATEST | k= LEAST ) ) SEMICOLON )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:395:11: k= DECLARE k= DEFAULT k= ORDER k= EMPTY ( (k= GREATEST | k= LEAST ) ) SEMICOLON
            root_0 = this.adaptor.nil();

            k=this.match(this.input,DECLARE,XQueryParser.FOLLOW_DECLARE_in_pm_EmptyOrderDecl1748); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,DEFAULT,XQueryParser.FOLLOW_DEFAULT_in_pm_EmptyOrderDecl1754); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,ORDER,XQueryParser.FOLLOW_ORDER_in_pm_EmptyOrderDecl1760); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,EMPTY,XQueryParser.FOLLOW_EMPTY_in_pm_EmptyOrderDecl1766); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:395:107: ( (k= GREATEST | k= LEAST ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:395:109: (k= GREATEST | k= LEAST )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:395:109: (k= GREATEST | k= LEAST )
            var alt13=2;
            var LA13_0 = this.input.LA(1);

            if ( (LA13_0==GREATEST) ) {
                alt13=1;
            }
            else if ( (LA13_0==LEAST) ) {
                alt13=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 13, 0, this.input);

                throw nvae;
            }
            switch (alt13) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:395:110: k= GREATEST
                    k=this.match(this.input,GREATEST,XQueryParser.FOLLOW_GREATEST_in_pm_EmptyOrderDecl1775); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:395:123: k= LEAST
                    k=this.match(this.input,LEAST,XQueryParser.FOLLOW_LEAST_in_pm_EmptyOrderDecl1781); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }


                    break;

            }

            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }



            SEMICOLON29=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_EmptyOrderDecl1788); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            SEMICOLON29_tree = this.adaptor.create(SEMICOLON29);
            this.adaptor.addChild(root_0, SEMICOLON29_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pm_CopyNamespacesDecl_return: (function() {
        XQueryParser.pm_CopyNamespacesDecl_return = function(){};
        org.antlr.lang.extend(XQueryParser.pm_CopyNamespacesDecl_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:399:1: pm_CopyNamespacesDecl : k= DECLARE k= COPY_NAMESPACES p_PreserveMode COMMA p_InheritMode SEMICOLON ;
    // $ANTLR start "pm_CopyNamespacesDecl"
    pm_CopyNamespacesDecl: function() {
        var retval = new XQueryParser.pm_CopyNamespacesDecl_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var COMMA31 = null;
        var SEMICOLON33 = null;
         var p_PreserveMode30 = null;
         var p_InheritMode32 = null;

        var k_tree=null;
        var COMMA31_tree=null;
        var SEMICOLON33_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:400:9: (k= DECLARE k= COPY_NAMESPACES p_PreserveMode COMMA p_InheritMode SEMICOLON )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:400:11: k= DECLARE k= COPY_NAMESPACES p_PreserveMode COMMA p_InheritMode SEMICOLON
            root_0 = this.adaptor.nil();

            k=this.match(this.input,DECLARE,XQueryParser.FOLLOW_DECLARE_in_pm_CopyNamespacesDecl1816); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,COPY_NAMESPACES,XQueryParser.FOLLOW_COPY_NAMESPACES_in_pm_CopyNamespacesDecl1822); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_PreserveMode_in_pm_CopyNamespacesDecl1826);
            p_PreserveMode30=this.p_PreserveMode();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PreserveMode30.getTree());
            COMMA31=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_pm_CopyNamespacesDecl1828); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            COMMA31_tree = this.adaptor.create(COMMA31);
            this.adaptor.addChild(root_0, COMMA31_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_InheritMode_in_pm_CopyNamespacesDecl1830);
            p_InheritMode32=this.p_InheritMode();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_InheritMode32.getTree());
            SEMICOLON33=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_CopyNamespacesDecl1832); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            SEMICOLON33_tree = this.adaptor.create(SEMICOLON33);
            this.adaptor.addChild(root_0, SEMICOLON33_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_PreserveMode_return: (function() {
        XQueryParser.p_PreserveMode_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_PreserveMode_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:404:1: p_PreserveMode : (k+= PRESERVE | k+= NO_PRESERVE ) ;
    // $ANTLR start "p_PreserveMode"
    p_PreserveMode: function() {
        var retval = new XQueryParser.p_PreserveMode_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var list_k=null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:405:9: ( (k+= PRESERVE | k+= NO_PRESERVE ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:405:11: (k+= PRESERVE | k+= NO_PRESERVE )
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:405:11: (k+= PRESERVE | k+= NO_PRESERVE )
            var alt14=2;
            var LA14_0 = this.input.LA(1);

            if ( (LA14_0==PRESERVE) ) {
                alt14=1;
            }
            else if ( (LA14_0==NO_PRESERVE) ) {
                alt14=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 14, 0, this.input);

                throw nvae;
            }
            switch (alt14) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:405:12: k+= PRESERVE
                    k=this.match(this.input,PRESERVE,XQueryParser.FOLLOW_PRESERVE_in_p_PreserveMode1861); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);



                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:405:26: k+= NO_PRESERVE
                    k=this.match(this.input,NO_PRESERVE,XQueryParser.FOLLOW_NO_PRESERVE_in_p_PreserveMode1867); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);



                    break;

            }

            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_InheritMode_return: (function() {
        XQueryParser.p_InheritMode_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_InheritMode_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:409:1: p_InheritMode : (k+= INHERIT | k+= NO_INHERIT ) ;
    // $ANTLR start "p_InheritMode"
    p_InheritMode: function() {
        var retval = new XQueryParser.p_InheritMode_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var list_k=null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:410:9: ( (k+= INHERIT | k+= NO_INHERIT ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:410:11: (k+= INHERIT | k+= NO_INHERIT )
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:410:11: (k+= INHERIT | k+= NO_INHERIT )
            var alt15=2;
            var LA15_0 = this.input.LA(1);

            if ( (LA15_0==INHERIT) ) {
                alt15=1;
            }
            else if ( (LA15_0==NO_INHERIT) ) {
                alt15=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 15, 0, this.input);

                throw nvae;
            }
            switch (alt15) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:410:12: k+= INHERIT
                    k=this.match(this.input,INHERIT,XQueryParser.FOLLOW_INHERIT_in_p_InheritMode1899); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);



                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:410:25: k+= NO_INHERIT
                    k=this.match(this.input,NO_INHERIT,XQueryParser.FOLLOW_NO_INHERIT_in_p_InheritMode1905); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);



                    break;

            }

            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pm_DecimalFormatDecl_return: (function() {
        XQueryParser.pm_DecimalFormatDecl_return = function(){};
        org.antlr.lang.extend(XQueryParser.pm_DecimalFormatDecl_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:414:1: pm_DecimalFormatDecl : k= DECLARE ( (k= DECIMAL_FORMAT p_EQName ) | (k= DEFAULT k= DECIMAL_FORMAT ) ) ( p_DFPropertyName EQUAL p_StringLiteral )* SEMICOLON ;
    // $ANTLR start "pm_DecimalFormatDecl"
    pm_DecimalFormatDecl: function() {
        var retval = new XQueryParser.pm_DecimalFormatDecl_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var EQUAL36 = null;
        var SEMICOLON38 = null;
         var p_EQName34 = null;
         var p_DFPropertyName35 = null;
         var p_StringLiteral37 = null;

        var k_tree=null;
        var EQUAL36_tree=null;
        var SEMICOLON38_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:415:9: (k= DECLARE ( (k= DECIMAL_FORMAT p_EQName ) | (k= DEFAULT k= DECIMAL_FORMAT ) ) ( p_DFPropertyName EQUAL p_StringLiteral )* SEMICOLON )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:415:11: k= DECLARE ( (k= DECIMAL_FORMAT p_EQName ) | (k= DEFAULT k= DECIMAL_FORMAT ) ) ( p_DFPropertyName EQUAL p_StringLiteral )* SEMICOLON
            root_0 = this.adaptor.nil();

            k=this.match(this.input,DECLARE,XQueryParser.FOLLOW_DECLARE_in_pm_DecimalFormatDecl1944); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:415:36: ( (k= DECIMAL_FORMAT p_EQName ) | (k= DEFAULT k= DECIMAL_FORMAT ) )
            var alt16=2;
            var LA16_0 = this.input.LA(1);

            if ( (LA16_0==DECIMAL_FORMAT) ) {
                alt16=1;
            }
            else if ( (LA16_0==DEFAULT) ) {
                alt16=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 16, 0, this.input);

                throw nvae;
            }
            switch (alt16) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:415:37: (k= DECIMAL_FORMAT p_EQName )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:415:37: (k= DECIMAL_FORMAT p_EQName )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:415:38: k= DECIMAL_FORMAT p_EQName
                    k=this.match(this.input,DECIMAL_FORMAT,XQueryParser.FOLLOW_DECIMAL_FORMAT_in_pm_DecimalFormatDecl1952); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_pm_DecimalFormatDecl1956);
                    p_EQName34=this.p_EQName();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_EQName34.getTree());





                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:415:82: (k= DEFAULT k= DECIMAL_FORMAT )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:415:82: (k= DEFAULT k= DECIMAL_FORMAT )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:415:83: k= DEFAULT k= DECIMAL_FORMAT
                    k=this.match(this.input,DEFAULT,XQueryParser.FOLLOW_DEFAULT_in_pm_DecimalFormatDecl1964); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    k=this.match(this.input,DECIMAL_FORMAT,XQueryParser.FOLLOW_DECIMAL_FORMAT_in_pm_DecimalFormatDecl1970); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }





                    break;

            }

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:415:142: ( p_DFPropertyName EQUAL p_StringLiteral )*
            loop17:
            do {
                var alt17=2;
                var LA17_0 = this.input.LA(1);

                if ( ((LA17_0>=DECIMAL_SEPARATOR && LA17_0<=DIGIT)||(LA17_0>=GROUPING_SEPARATOR && LA17_0<=MINUS_SIGN)||LA17_0==NAN||(LA17_0>=PATTERN_SEPARATOR && LA17_0<=PER_MILLE)||LA17_0==ZERO_DIGIT) ) {
                    alt17=1;
                }


                switch (alt17) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:415:143: p_DFPropertyName EQUAL p_StringLiteral
                    this.pushFollow(XQueryParser.FOLLOW_p_DFPropertyName_in_pm_DecimalFormatDecl1977);
                    p_DFPropertyName35=this.p_DFPropertyName();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_DFPropertyName35.getTree());
                    EQUAL36=this.match(this.input,EQUAL,XQueryParser.FOLLOW_EQUAL_in_pm_DecimalFormatDecl1979); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    EQUAL36_tree = this.adaptor.create(EQUAL36);
                    this.adaptor.addChild(root_0, EQUAL36_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_pm_DecimalFormatDecl1981);
                    p_StringLiteral37=this.p_StringLiteral();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral37.getTree());


                    break;

                default :
                    break loop17;
                }
            } while (true);

            SEMICOLON38=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_DecimalFormatDecl1985); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            SEMICOLON38_tree = this.adaptor.create(SEMICOLON38);
            this.adaptor.addChild(root_0, SEMICOLON38_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_DFPropertyName_return: (function() {
        XQueryParser.p_DFPropertyName_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_DFPropertyName_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:419:1: p_DFPropertyName : (k= DECIMAL_SEPARATOR | k= GROUPING_SEPARATOR | k= INFINITY | k= MINUS_SIGN | k= NAN | k= PERCENT | k= PER_MILLE | k= ZERO_DIGIT | k= DIGIT | k= PATTERN_SEPARATOR ) ;
    // $ANTLR start "p_DFPropertyName"
    p_DFPropertyName: function() {
        var retval = new XQueryParser.p_DFPropertyName_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:420:9: ( (k= DECIMAL_SEPARATOR | k= GROUPING_SEPARATOR | k= INFINITY | k= MINUS_SIGN | k= NAN | k= PERCENT | k= PER_MILLE | k= ZERO_DIGIT | k= DIGIT | k= PATTERN_SEPARATOR ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:420:11: (k= DECIMAL_SEPARATOR | k= GROUPING_SEPARATOR | k= INFINITY | k= MINUS_SIGN | k= NAN | k= PERCENT | k= PER_MILLE | k= ZERO_DIGIT | k= DIGIT | k= PATTERN_SEPARATOR )
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:420:11: (k= DECIMAL_SEPARATOR | k= GROUPING_SEPARATOR | k= INFINITY | k= MINUS_SIGN | k= NAN | k= PERCENT | k= PER_MILLE | k= ZERO_DIGIT | k= DIGIT | k= PATTERN_SEPARATOR )
            var alt18=10;
            switch ( this.input.LA(1) ) {
            case DECIMAL_SEPARATOR:
                alt18=1;
                break;
            case GROUPING_SEPARATOR:
                alt18=2;
                break;
            case INFINITY:
                alt18=3;
                break;
            case MINUS_SIGN:
                alt18=4;
                break;
            case NAN:
                alt18=5;
                break;
            case PERCENT:
                alt18=6;
                break;
            case PER_MILLE:
                alt18=7;
                break;
            case ZERO_DIGIT:
                alt18=8;
                break;
            case DIGIT:
                alt18=9;
                break;
            case PATTERN_SEPARATOR:
                alt18=10;
                break;
            default:
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 18, 0, this.input);

                throw nvae;
            }

            switch (alt18) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:420:12: k= DECIMAL_SEPARATOR
                    k=this.match(this.input,DECIMAL_SEPARATOR,XQueryParser.FOLLOW_DECIMAL_SEPARATOR_in_p_DFPropertyName2014); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:420:34: k= GROUPING_SEPARATOR
                    k=this.match(this.input,GROUPING_SEPARATOR,XQueryParser.FOLLOW_GROUPING_SEPARATOR_in_p_DFPropertyName2020); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }


                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:420:57: k= INFINITY
                    k=this.match(this.input,INFINITY,XQueryParser.FOLLOW_INFINITY_in_p_DFPropertyName2026); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }


                    break;
                case 4 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:420:70: k= MINUS_SIGN
                    k=this.match(this.input,MINUS_SIGN,XQueryParser.FOLLOW_MINUS_SIGN_in_p_DFPropertyName2032); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }


                    break;
                case 5 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:420:85: k= NAN
                    k=this.match(this.input,NAN,XQueryParser.FOLLOW_NAN_in_p_DFPropertyName2038); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }


                    break;
                case 6 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:420:93: k= PERCENT
                    k=this.match(this.input,PERCENT,XQueryParser.FOLLOW_PERCENT_in_p_DFPropertyName2044); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }


                    break;
                case 7 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:420:105: k= PER_MILLE
                    k=this.match(this.input,PER_MILLE,XQueryParser.FOLLOW_PER_MILLE_in_p_DFPropertyName2050); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }


                    break;
                case 8 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:420:119: k= ZERO_DIGIT
                    k=this.match(this.input,ZERO_DIGIT,XQueryParser.FOLLOW_ZERO_DIGIT_in_p_DFPropertyName2056); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }


                    break;
                case 9 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:420:134: k= DIGIT
                    k=this.match(this.input,DIGIT,XQueryParser.FOLLOW_DIGIT_in_p_DFPropertyName2062); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }


                    break;
                case 10 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:420:144: k= PATTERN_SEPARATOR
                    k=this.match(this.input,PATTERN_SEPARATOR,XQueryParser.FOLLOW_PATTERN_SEPARATOR_in_p_DFPropertyName2068); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }


                    break;

            }

            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_Import_return: (function() {
        XQueryParser.p_Import_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_Import_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:424:1: p_Import : ( pm_SchemaImport | pm_ModuleImport );
    // $ANTLR start "p_Import"
    p_Import: function() {
        var retval = new XQueryParser.p_Import_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var pm_SchemaImport39 = null;
         var pm_ModuleImport40 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:425:9: ( pm_SchemaImport | pm_ModuleImport )
            var alt19=2;
            var LA19_0 = this.input.LA(1);

            if ( (LA19_0==IMPORT) ) {
                var LA19_1 = this.input.LA(2);

                if ( (LA19_1==SCHEMA) ) {
                    alt19=1;
                }
                else if ( (LA19_1==MODULE) ) {
                    alt19=2;
                }
                else {
                    if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                    var nvae =
                        new org.antlr.runtime.NoViableAltException("", 19, 1, this.input);

                    throw nvae;
                }
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 19, 0, this.input);

                throw nvae;
            }
            switch (alt19) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:425:11: pm_SchemaImport
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_pm_SchemaImport_in_p_Import2097);
                    pm_SchemaImport39=this.pm_SchemaImport();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_SchemaImport39.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:425:29: pm_ModuleImport
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_pm_ModuleImport_in_p_Import2101);
                    pm_ModuleImport40=this.pm_ModuleImport();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_ModuleImport40.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pm_SchemaImport_return: (function() {
        XQueryParser.pm_SchemaImport_return = function(){};
        org.antlr.lang.extend(XQueryParser.pm_SchemaImport_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:429:1: pm_SchemaImport : k= IMPORT k= SCHEMA (sp= p_SchemaPrefix )? us= p_StringLiteral (k= AT ah+= p_StringLiteral ( COMMA ah+= p_StringLiteral )* )? SEMICOLON -> ^( SchemaImport ^( SchemaPrefix ( $sp)? ) $us ^( AtHints ( $ah)* ) ) ;
    // $ANTLR start "pm_SchemaImport"
    pm_SchemaImport: function() {
        var retval = new XQueryParser.pm_SchemaImport_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var COMMA41 = null;
        var SEMICOLON42 = null;
        var list_ah=null;
         var sp = null;
         var us = null;
        var ah = null;
        var k_tree=null;
        var COMMA41_tree=null;
        var SEMICOLON42_tree=null;
        var stream_AT=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token AT");
        var stream_IMPORT=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token IMPORT");
        var stream_SCHEMA=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token SCHEMA");
        var stream_SEMICOLON=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token SEMICOLON");
        var stream_COMMA=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token COMMA");
        var stream_p_SchemaPrefix=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_SchemaPrefix");
        var stream_p_StringLiteral=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_StringLiteral");
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:430:9: (k= IMPORT k= SCHEMA (sp= p_SchemaPrefix )? us= p_StringLiteral (k= AT ah+= p_StringLiteral ( COMMA ah+= p_StringLiteral )* )? SEMICOLON -> ^( SchemaImport ^( SchemaPrefix ( $sp)? ) $us ^( AtHints ( $ah)* ) ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:430:11: k= IMPORT k= SCHEMA (sp= p_SchemaPrefix )? us= p_StringLiteral (k= AT ah+= p_StringLiteral ( COMMA ah+= p_StringLiteral )* )? SEMICOLON
            k=this.match(this.input,IMPORT,XQueryParser.FOLLOW_IMPORT_in_pm_SchemaImport2137); if (this.state.failed) return retval; 
            if ( this.state.backtracking===0 ) stream_IMPORT.add(k);

            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,SCHEMA,XQueryParser.FOLLOW_SCHEMA_in_pm_SchemaImport2143); if (this.state.failed) return retval; 
            if ( this.state.backtracking===0 ) stream_SCHEMA.add(k);

            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:430:61: (sp= p_SchemaPrefix )?
            var alt20=2;
            var LA20_0 = this.input.LA(1);

            if ( (LA20_0==DEFAULT||LA20_0==NAMESPACE) ) {
                alt20=1;
            }
            switch (alt20) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:430:61: sp= p_SchemaPrefix
                    this.pushFollow(XQueryParser.FOLLOW_p_SchemaPrefix_in_pm_SchemaImport2149);
                    sp=this.p_SchemaPrefix();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) stream_p_SchemaPrefix.add(sp.getTree());


                    break;

            }

            this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_pm_SchemaImport2154);
            us=this.p_StringLiteral();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) stream_p_StringLiteral.add(us.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:430:97: (k= AT ah+= p_StringLiteral ( COMMA ah+= p_StringLiteral )* )?
            var alt22=2;
            var LA22_0 = this.input.LA(1);

            if ( (LA22_0==AT) ) {
                alt22=1;
            }
            switch (alt22) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:430:98: k= AT ah+= p_StringLiteral ( COMMA ah+= p_StringLiteral )*
                    k=this.match(this.input,AT,XQueryParser.FOLLOW_AT_in_pm_SchemaImport2159); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_AT.add(k);

                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_pm_SchemaImport2165);
                    ah=this.p_StringLiteral();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) stream_p_StringLiteral.add(ah.getTree());
                    if (org.antlr.lang.isNull(list_ah)) list_ah = [];
                    list_ah.push(ah.getTree());

                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:430:138: ( COMMA ah+= p_StringLiteral )*
                    loop21:
                    do {
                        var alt21=2;
                        var LA21_0 = this.input.LA(1);

                        if ( (LA21_0==COMMA) ) {
                            alt21=1;
                        }


                        switch (alt21) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:430:139: COMMA ah+= p_StringLiteral
                            COMMA41=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_pm_SchemaImport2168); if (this.state.failed) return retval; 
                            if ( this.state.backtracking===0 ) stream_COMMA.add(COMMA41);

                            this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_pm_SchemaImport2172);
                            ah=this.p_StringLiteral();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) stream_p_StringLiteral.add(ah.getTree());
                            if (org.antlr.lang.isNull(list_ah)) list_ah = [];
                            list_ah.push(ah.getTree());



                            break;

                        default :
                            break loop21;
                        }
                    } while (true);



                    break;

            }

            SEMICOLON42=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_SchemaImport2178); if (this.state.failed) return retval; 
            if ( this.state.backtracking===0 ) stream_SEMICOLON.add(SEMICOLON42);



            // AST REWRITE
            // elements: us, ah, sp
            // token labels: 
            // rule labels: retval, sp, us
            // token list labels: 
            // rule list labels: ah
            if ( this.state.backtracking===0 ) {
            retval.tree = root_0;
            var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
            var stream_sp=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token sp",sp!=null?sp.tree:null);
            var stream_us=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token us",us!=null?us.tree:null);
            var stream_ah=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token ah",list_ah);
            root_0 = this.adaptor.nil();
            // 431:17: -> ^( SchemaImport ^( SchemaPrefix ( $sp)? ) $us ^( AtHints ( $ah)* ) )
            {
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:431:20: ^( SchemaImport ^( SchemaPrefix ( $sp)? ) $us ^( AtHints ( $ah)* ) )
                {
                var root_1 = this.adaptor.nil();
                root_1 = this.adaptor.becomeRoot(this.adaptor.create(SchemaImport, "SchemaImport"), root_1);

                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:431:35: ^( SchemaPrefix ( $sp)? )
                {
                var root_2 = this.adaptor.nil();
                root_2 = this.adaptor.becomeRoot(this.adaptor.create(SchemaPrefix, "SchemaPrefix"), root_2);

                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:431:50: ( $sp)?
                if ( stream_sp.hasNext() ) {
                    this.adaptor.addChild(root_2, stream_sp.nextTree());

                }
                stream_sp.reset();

                this.adaptor.addChild(root_1, root_2);
                }
                this.adaptor.addChild(root_1, stream_us.nextTree());
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:431:60: ^( AtHints ( $ah)* )
                {
                var root_2 = this.adaptor.nil();
                root_2 = this.adaptor.becomeRoot(this.adaptor.create(AtHints, "AtHints"), root_2);

                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:431:70: ( $ah)*
                while ( stream_ah.hasNext() ) {
                    this.adaptor.addChild(root_2, stream_ah.nextTree());

                }
                stream_ah.reset();

                this.adaptor.addChild(root_1, root_2);
                }

                this.adaptor.addChild(root_0, root_1);
                }

            }

            retval.tree = root_0;}


            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_SchemaPrefix_return: (function() {
        XQueryParser.p_SchemaPrefix_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_SchemaPrefix_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:435:1: p_SchemaPrefix : (k= NAMESPACE nn= p_NCName EQUAL -> ^( NamespaceName $nn) | k= DEFAULT k= ELEMENT k= NAMESPACE -> DefaultElementNamespace );
    // $ANTLR start "p_SchemaPrefix"
    p_SchemaPrefix: function() {
        var retval = new XQueryParser.p_SchemaPrefix_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var EQUAL43 = null;
         var nn = null;

        var k_tree=null;
        var EQUAL43_tree=null;
        var stream_ELEMENT=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token ELEMENT");
        var stream_NAMESPACE=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token NAMESPACE");
        var stream_EQUAL=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token EQUAL");
        var stream_DEFAULT=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token DEFAULT");
        var stream_p_NCName=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_NCName");
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:436:9: (k= NAMESPACE nn= p_NCName EQUAL -> ^( NamespaceName $nn) | k= DEFAULT k= ELEMENT k= NAMESPACE -> DefaultElementNamespace )
            var alt23=2;
            var LA23_0 = this.input.LA(1);

            if ( (LA23_0==NAMESPACE) ) {
                alt23=1;
            }
            else if ( (LA23_0==DEFAULT) ) {
                alt23=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 23, 0, this.input);

                throw nvae;
            }
            switch (alt23) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:436:11: k= NAMESPACE nn= p_NCName EQUAL
                    k=this.match(this.input,NAMESPACE,XQueryParser.FOLLOW_NAMESPACE_in_p_SchemaPrefix2248); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_NAMESPACE.add(k);

                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_NCName_in_p_SchemaPrefix2254);
                    nn=this.p_NCName();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) stream_p_NCName.add(nn.getTree());
                    EQUAL43=this.match(this.input,EQUAL,XQueryParser.FOLLOW_EQUAL_in_p_SchemaPrefix2256); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_EQUAL.add(EQUAL43);



                    // AST REWRITE
                    // elements: nn
                    // token labels: 
                    // rule labels: retval, nn
                    // token list labels: 
                    // rule list labels: 
                    if ( this.state.backtracking===0 ) {
                    retval.tree = root_0;
                    var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
                    var stream_nn=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token nn",nn!=null?nn.tree:null);

                    root_0 = this.adaptor.nil();
                    // 437:17: -> ^( NamespaceName $nn)
                    {
                        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:437:20: ^( NamespaceName $nn)
                        {
                        var root_1 = this.adaptor.nil();
                        root_1 = this.adaptor.becomeRoot(this.adaptor.create(NamespaceName, "NamespaceName"), root_1);

                        this.adaptor.addChild(root_1, stream_nn.nextTree());

                        this.adaptor.addChild(root_0, root_1);
                        }

                    }

                    retval.tree = root_0;}

                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:438:11: k= DEFAULT k= ELEMENT k= NAMESPACE
                    k=this.match(this.input,DEFAULT,XQueryParser.FOLLOW_DEFAULT_in_p_SchemaPrefix2295); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_DEFAULT.add(k);

                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    k=this.match(this.input,ELEMENT,XQueryParser.FOLLOW_ELEMENT_in_p_SchemaPrefix2301); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_ELEMENT.add(k);

                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    k=this.match(this.input,NAMESPACE,XQueryParser.FOLLOW_NAMESPACE_in_p_SchemaPrefix2307); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_NAMESPACE.add(k);

                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }


                    // AST REWRITE
                    // elements: 
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    if ( this.state.backtracking===0 ) {
                    retval.tree = root_0;
                    var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);

                    root_0 = this.adaptor.nil();
                    // 439:17: -> DefaultElementNamespace
                    {
                        this.adaptor.addChild(root_0, this.adaptor.create(DefaultElementNamespace, "DefaultElementNamespace"));

                    }

                    retval.tree = root_0;}

                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pm_ModuleImport_return: (function() {
        XQueryParser.pm_ModuleImport_return = function(){};
        org.antlr.lang.extend(XQueryParser.pm_ModuleImport_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:443:1: pm_ModuleImport : k= IMPORT k= MODULE (k= NAMESPACE nn= p_NCName EQUAL )? us= p_StringLiteral (k= AT ah+= p_StringLiteral ( COMMA ah+= p_StringLiteral )* )? SEMICOLON -> ^( ModuleImport ^( NamespaceName ( $nn)? ) $us ^( AtHints ( $ah)* ) ) ;
    // $ANTLR start "pm_ModuleImport"
    pm_ModuleImport: function() {
        var retval = new XQueryParser.pm_ModuleImport_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var EQUAL44 = null;
        var COMMA45 = null;
        var SEMICOLON46 = null;
        var list_ah=null;
         var nn = null;
         var us = null;
        var ah = null;
        var k_tree=null;
        var EQUAL44_tree=null;
        var COMMA45_tree=null;
        var SEMICOLON46_tree=null;
        var stream_AT=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token AT");
        var stream_IMPORT=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token IMPORT");
        var stream_SEMICOLON=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token SEMICOLON");
        var stream_MODULE=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token MODULE");
        var stream_COMMA=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token COMMA");
        var stream_NAMESPACE=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token NAMESPACE");
        var stream_EQUAL=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token EQUAL");
        var stream_p_NCName=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_NCName");
        var stream_p_StringLiteral=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_StringLiteral");
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:444:9: (k= IMPORT k= MODULE (k= NAMESPACE nn= p_NCName EQUAL )? us= p_StringLiteral (k= AT ah+= p_StringLiteral ( COMMA ah+= p_StringLiteral )* )? SEMICOLON -> ^( ModuleImport ^( NamespaceName ( $nn)? ) $us ^( AtHints ( $ah)* ) ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:444:11: k= IMPORT k= MODULE (k= NAMESPACE nn= p_NCName EQUAL )? us= p_StringLiteral (k= AT ah+= p_StringLiteral ( COMMA ah+= p_StringLiteral )* )? SEMICOLON
            k=this.match(this.input,IMPORT,XQueryParser.FOLLOW_IMPORT_in_pm_ModuleImport2357); if (this.state.failed) return retval; 
            if ( this.state.backtracking===0 ) stream_IMPORT.add(k);

            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,MODULE,XQueryParser.FOLLOW_MODULE_in_pm_ModuleImport2363); if (this.state.failed) return retval; 
            if ( this.state.backtracking===0 ) stream_MODULE.add(k);

            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:444:59: (k= NAMESPACE nn= p_NCName EQUAL )?
            var alt24=2;
            var LA24_0 = this.input.LA(1);

            if ( (LA24_0==NAMESPACE) ) {
                alt24=1;
            }
            switch (alt24) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:444:60: k= NAMESPACE nn= p_NCName EQUAL
                    k=this.match(this.input,NAMESPACE,XQueryParser.FOLLOW_NAMESPACE_in_pm_ModuleImport2370); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_NAMESPACE.add(k);

                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_NCName_in_pm_ModuleImport2376);
                    nn=this.p_NCName();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) stream_p_NCName.add(nn.getTree());
                    EQUAL44=this.match(this.input,EQUAL,XQueryParser.FOLLOW_EQUAL_in_pm_ModuleImport2378); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_EQUAL.add(EQUAL44);



                    break;

            }

            this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_pm_ModuleImport2384);
            us=this.p_StringLiteral();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) stream_p_StringLiteral.add(us.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:444:126: (k= AT ah+= p_StringLiteral ( COMMA ah+= p_StringLiteral )* )?
            var alt26=2;
            var LA26_0 = this.input.LA(1);

            if ( (LA26_0==AT) ) {
                alt26=1;
            }
            switch (alt26) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:444:127: k= AT ah+= p_StringLiteral ( COMMA ah+= p_StringLiteral )*
                    k=this.match(this.input,AT,XQueryParser.FOLLOW_AT_in_pm_ModuleImport2389); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_AT.add(k);

                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_pm_ModuleImport2395);
                    ah=this.p_StringLiteral();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) stream_p_StringLiteral.add(ah.getTree());
                    if (org.antlr.lang.isNull(list_ah)) list_ah = [];
                    list_ah.push(ah.getTree());

                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:444:167: ( COMMA ah+= p_StringLiteral )*
                    loop25:
                    do {
                        var alt25=2;
                        var LA25_0 = this.input.LA(1);

                        if ( (LA25_0==COMMA) ) {
                            alt25=1;
                        }


                        switch (alt25) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:444:168: COMMA ah+= p_StringLiteral
                            COMMA45=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_pm_ModuleImport2398); if (this.state.failed) return retval; 
                            if ( this.state.backtracking===0 ) stream_COMMA.add(COMMA45);

                            this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_pm_ModuleImport2402);
                            ah=this.p_StringLiteral();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) stream_p_StringLiteral.add(ah.getTree());
                            if (org.antlr.lang.isNull(list_ah)) list_ah = [];
                            list_ah.push(ah.getTree());



                            break;

                        default :
                            break loop25;
                        }
                    } while (true);



                    break;

            }

            SEMICOLON46=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_ModuleImport2408); if (this.state.failed) return retval; 
            if ( this.state.backtracking===0 ) stream_SEMICOLON.add(SEMICOLON46);



            // AST REWRITE
            // elements: nn, us, ah
            // token labels: 
            // rule labels: retval, nn, us
            // token list labels: 
            // rule list labels: ah
            if ( this.state.backtracking===0 ) {
            retval.tree = root_0;
            var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
            var stream_nn=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token nn",nn!=null?nn.tree:null);
            var stream_us=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token us",us!=null?us.tree:null);
            var stream_ah=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token ah",list_ah);
            root_0 = this.adaptor.nil();
            // 445:17: -> ^( ModuleImport ^( NamespaceName ( $nn)? ) $us ^( AtHints ( $ah)* ) )
            {
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:445:20: ^( ModuleImport ^( NamespaceName ( $nn)? ) $us ^( AtHints ( $ah)* ) )
                {
                var root_1 = this.adaptor.nil();
                root_1 = this.adaptor.becomeRoot(this.adaptor.create(ModuleImport, "ModuleImport"), root_1);

                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:445:35: ^( NamespaceName ( $nn)? )
                {
                var root_2 = this.adaptor.nil();
                root_2 = this.adaptor.becomeRoot(this.adaptor.create(NamespaceName, "NamespaceName"), root_2);

                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:445:51: ( $nn)?
                if ( stream_nn.hasNext() ) {
                    this.adaptor.addChild(root_2, stream_nn.nextTree());

                }
                stream_nn.reset();

                this.adaptor.addChild(root_1, root_2);
                }
                this.adaptor.addChild(root_1, stream_us.nextTree());
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:445:61: ^( AtHints ( $ah)* )
                {
                var root_2 = this.adaptor.nil();
                root_2 = this.adaptor.becomeRoot(this.adaptor.create(AtHints, "AtHints"), root_2);

                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:445:71: ( $ah)*
                while ( stream_ah.hasNext() ) {
                    this.adaptor.addChild(root_2, stream_ah.nextTree());

                }
                stream_ah.reset();

                this.adaptor.addChild(root_1, root_2);
                }

                this.adaptor.addChild(root_0, root_1);
                }

            }

            retval.tree = root_0;}


            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pm_NamespaceDecl_return: (function() {
        XQueryParser.pm_NamespaceDecl_return = function(){};
        org.antlr.lang.extend(XQueryParser.pm_NamespaceDecl_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:449:1: pm_NamespaceDecl : k= DECLARE k= NAMESPACE nn= p_NCName EQUAL us= p_StringLiteral SEMICOLON -> ^( NamespaceDecl $nn $us) ;
    // $ANTLR start "pm_NamespaceDecl"
    pm_NamespaceDecl: function() {
        var retval = new XQueryParser.pm_NamespaceDecl_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var EQUAL47 = null;
        var SEMICOLON48 = null;
         var nn = null;
         var us = null;

        var k_tree=null;
        var EQUAL47_tree=null;
        var SEMICOLON48_tree=null;
        var stream_DECLARE=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token DECLARE");
        var stream_SEMICOLON=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token SEMICOLON");
        var stream_NAMESPACE=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token NAMESPACE");
        var stream_EQUAL=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token EQUAL");
        var stream_p_NCName=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_NCName");
        var stream_p_StringLiteral=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_StringLiteral");
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:450:9: (k= DECLARE k= NAMESPACE nn= p_NCName EQUAL us= p_StringLiteral SEMICOLON -> ^( NamespaceDecl $nn $us) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:450:11: k= DECLARE k= NAMESPACE nn= p_NCName EQUAL us= p_StringLiteral SEMICOLON
            k=this.match(this.input,DECLARE,XQueryParser.FOLLOW_DECLARE_in_pm_NamespaceDecl2477); if (this.state.failed) return retval; 
            if ( this.state.backtracking===0 ) stream_DECLARE.add(k);

            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,NAMESPACE,XQueryParser.FOLLOW_NAMESPACE_in_pm_NamespaceDecl2483); if (this.state.failed) return retval; 
            if ( this.state.backtracking===0 ) stream_NAMESPACE.add(k);

            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_NCName_in_pm_NamespaceDecl2489);
            nn=this.p_NCName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) stream_p_NCName.add(nn.getTree());
            EQUAL47=this.match(this.input,EQUAL,XQueryParser.FOLLOW_EQUAL_in_pm_NamespaceDecl2491); if (this.state.failed) return retval; 
            if ( this.state.backtracking===0 ) stream_EQUAL.add(EQUAL47);

            this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_pm_NamespaceDecl2495);
            us=this.p_StringLiteral();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) stream_p_StringLiteral.add(us.getTree());
            SEMICOLON48=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_NamespaceDecl2497); if (this.state.failed) return retval; 
            if ( this.state.backtracking===0 ) stream_SEMICOLON.add(SEMICOLON48);



            // AST REWRITE
            // elements: nn, us
            // token labels: 
            // rule labels: retval, nn, us
            // token list labels: 
            // rule list labels: 
            if ( this.state.backtracking===0 ) {
            retval.tree = root_0;
            var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
            var stream_nn=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token nn",nn!=null?nn.tree:null);
            var stream_us=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token us",us!=null?us.tree:null);

            root_0 = this.adaptor.nil();
            // 451:17: -> ^( NamespaceDecl $nn $us)
            {
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:451:20: ^( NamespaceDecl $nn $us)
                {
                var root_1 = this.adaptor.nil();
                root_1 = this.adaptor.becomeRoot(this.adaptor.create(NamespaceDecl, "NamespaceDecl"), root_1);

                this.adaptor.addChild(root_1, stream_nn.nextTree());
                this.adaptor.addChild(root_1, stream_us.nextTree());

                this.adaptor.addChild(root_0, root_1);
                }

            }

            retval.tree = root_0;}


            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pm_DefaultNamespaceDecl_return: (function() {
        XQueryParser.pm_DefaultNamespaceDecl_return = function(){};
        org.antlr.lang.extend(XQueryParser.pm_DefaultNamespaceDecl_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:455:1: pm_DefaultNamespaceDecl : k= DECLARE k= DEFAULT (k= ELEMENT | k= FUNCTION ) k= NAMESPACE p_StringLiteral SEMICOLON ;
    // $ANTLR start "pm_DefaultNamespaceDecl"
    pm_DefaultNamespaceDecl: function() {
        var retval = new XQueryParser.pm_DefaultNamespaceDecl_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var SEMICOLON50 = null;
         var p_StringLiteral49 = null;

        var k_tree=null;
        var SEMICOLON50_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:456:9: (k= DECLARE k= DEFAULT (k= ELEMENT | k= FUNCTION ) k= NAMESPACE p_StringLiteral SEMICOLON )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:456:11: k= DECLARE k= DEFAULT (k= ELEMENT | k= FUNCTION ) k= NAMESPACE p_StringLiteral SEMICOLON
            root_0 = this.adaptor.nil();

            k=this.match(this.input,DECLARE,XQueryParser.FOLLOW_DECLARE_in_pm_DefaultNamespaceDecl2554); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,DEFAULT,XQueryParser.FOLLOW_DEFAULT_in_pm_DefaultNamespaceDecl2560); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:456:61: (k= ELEMENT | k= FUNCTION )
            var alt27=2;
            var LA27_0 = this.input.LA(1);

            if ( (LA27_0==ELEMENT) ) {
                alt27=1;
            }
            else if ( (LA27_0==FUNCTION) ) {
                alt27=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 27, 0, this.input);

                throw nvae;
            }
            switch (alt27) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:456:62: k= ELEMENT
                    k=this.match(this.input,ELEMENT,XQueryParser.FOLLOW_ELEMENT_in_pm_DefaultNamespaceDecl2567); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:456:74: k= FUNCTION
                    k=this.match(this.input,FUNCTION,XQueryParser.FOLLOW_FUNCTION_in_pm_DefaultNamespaceDecl2573); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }


                    break;

            }

            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,NAMESPACE,XQueryParser.FOLLOW_NAMESPACE_in_pm_DefaultNamespaceDecl2580); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_pm_DefaultNamespaceDecl2584);
            p_StringLiteral49=this.p_StringLiteral();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral49.getTree());
            SEMICOLON50=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_DefaultNamespaceDecl2586); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            SEMICOLON50_tree = this.adaptor.create(SEMICOLON50);
            this.adaptor.addChild(root_0, SEMICOLON50_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pm_AnnotatedDecl_return: (function() {
        XQueryParser.pm_AnnotatedDecl_return = function(){};
        org.antlr.lang.extend(XQueryParser.pm_AnnotatedDecl_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:460:1: pm_AnnotatedDecl : k= DECLARE ( p_Annotation )* pg_AnnotatedDecl SEMICOLON ;
    // $ANTLR start "pm_AnnotatedDecl"
    pm_AnnotatedDecl: function() {
        var retval = new XQueryParser.pm_AnnotatedDecl_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var SEMICOLON53 = null;
         var p_Annotation51 = null;
         var pg_AnnotatedDecl52 = null;

        var k_tree=null;
        var SEMICOLON53_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:461:9: (k= DECLARE ( p_Annotation )* pg_AnnotatedDecl SEMICOLON )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:461:11: k= DECLARE ( p_Annotation )* pg_AnnotatedDecl SEMICOLON
            root_0 = this.adaptor.nil();

            k=this.match(this.input,DECLARE,XQueryParser.FOLLOW_DECLARE_in_pm_AnnotatedDecl2614); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:461:36: ( p_Annotation )*
            loop28:
            do {
                var alt28=2;
                var LA28_0 = this.input.LA(1);

                if ( (LA28_0==ANN_PERCENT) ) {
                    alt28=1;
                }


                switch (alt28) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:461:36: p_Annotation
                    this.pushFollow(XQueryParser.FOLLOW_p_Annotation_in_pm_AnnotatedDecl2618);
                    p_Annotation51=this.p_Annotation();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Annotation51.getTree());


                    break;

                default :
                    break loop28;
                }
            } while (true);

            this.pushFollow(XQueryParser.FOLLOW_pg_AnnotatedDecl_in_pm_AnnotatedDecl2621);
            pg_AnnotatedDecl52=this.pg_AnnotatedDecl();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pg_AnnotatedDecl52.getTree());
            SEMICOLON53=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_AnnotatedDecl2623); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            SEMICOLON53_tree = this.adaptor.create(SEMICOLON53);
            this.adaptor.addChild(root_0, SEMICOLON53_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pg_AnnotatedDecl_return: (function() {
        XQueryParser.pg_AnnotatedDecl_return = function(){};
        org.antlr.lang.extend(XQueryParser.pg_AnnotatedDecl_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:463:1: pg_AnnotatedDecl : ( p_VarDecl | pm_FunctionDecl | {...}? => p_CollectionDecl | {...}? => p_IndexDecl | {...}? => p_ICDecl );
    // $ANTLR start "pg_AnnotatedDecl"
    pg_AnnotatedDecl: function() {
        var retval = new XQueryParser.pg_AnnotatedDecl_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_VarDecl54 = null;
         var pm_FunctionDecl55 = null;
         var p_CollectionDecl56 = null;
         var p_IndexDecl57 = null;
         var p_ICDecl58 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:464:9: ( p_VarDecl | pm_FunctionDecl | {...}? => p_CollectionDecl | {...}? => p_IndexDecl | {...}? => p_ICDecl )
            var alt29=5;
            var LA29_0 = this.input.LA(1);

            if ( (LA29_0==VARIABLE) ) {
                alt29=1;
            }
            else if ( (LA29_0==UPDATING) && ((this.lc(XQU)))) {
                alt29=2;
            }
            else if ( (LA29_0==FUNCTION) ) {
                alt29=2;
            }
            else if ( (LA29_0==COLLECTION) && ((this.lc(ZORBA)))) {
                alt29=3;
            }
            else if ( (LA29_0==INDEX) && ((this.lc(ZORBA)))) {
                alt29=4;
            }
            else if ( (LA29_0==INTEGRITY) && ((this.lc(ZORBA)))) {
                alt29=5;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 29, 0, this.input);

                throw nvae;
            }
            switch (alt29) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:464:11: p_VarDecl
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_VarDecl_in_pg_AnnotatedDecl2647);
                    p_VarDecl54=this.p_VarDecl();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_VarDecl54.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:465:11: pm_FunctionDecl
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_pm_FunctionDecl_in_pg_AnnotatedDecl2659);
                    pm_FunctionDecl55=this.pm_FunctionDecl();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_FunctionDecl55.getTree());


                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:466:11: {...}? => p_CollectionDecl
                    root_0 = this.adaptor.nil();

                    if ( !((this.lc(ZORBA))) ) {
                        if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        throw new org.antlr.runtime.FailedPredicateException(this.input, "pg_AnnotatedDecl", "this.lc(ZORBA)");
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_CollectionDecl_in_pg_AnnotatedDecl2674);
                    p_CollectionDecl56=this.p_CollectionDecl();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_CollectionDecl56.getTree());


                    break;
                case 4 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:467:11: {...}? => p_IndexDecl
                    root_0 = this.adaptor.nil();

                    if ( !((this.lc(ZORBA))) ) {
                        if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        throw new org.antlr.runtime.FailedPredicateException(this.input, "pg_AnnotatedDecl", "this.lc(ZORBA)");
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_IndexDecl_in_pg_AnnotatedDecl2689);
                    p_IndexDecl57=this.p_IndexDecl();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_IndexDecl57.getTree());


                    break;
                case 5 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:468:11: {...}? => p_ICDecl
                    root_0 = this.adaptor.nil();

                    if ( !((this.lc(ZORBA))) ) {
                        if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        throw new org.antlr.runtime.FailedPredicateException(this.input, "pg_AnnotatedDecl", "this.lc(ZORBA)");
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_ICDecl_in_pg_AnnotatedDecl2704);
                    p_ICDecl58=this.p_ICDecl();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ICDecl58.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_Annotation_return: (function() {
        XQueryParser.p_Annotation_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_Annotation_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:472:1: p_Annotation : ANN_PERCENT p_EQName ( LPAREN p_Literal ( COMMA p_Literal )* RPAREN )? ;
    // $ANTLR start "p_Annotation"
    p_Annotation: function() {
        var retval = new XQueryParser.p_Annotation_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var ANN_PERCENT59 = null;
        var LPAREN61 = null;
        var COMMA63 = null;
        var RPAREN65 = null;
         var p_EQName60 = null;
         var p_Literal62 = null;
         var p_Literal64 = null;

        var ANN_PERCENT59_tree=null;
        var LPAREN61_tree=null;
        var COMMA63_tree=null;
        var RPAREN65_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:473:9: ( ANN_PERCENT p_EQName ( LPAREN p_Literal ( COMMA p_Literal )* RPAREN )? )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:473:11: ANN_PERCENT p_EQName ( LPAREN p_Literal ( COMMA p_Literal )* RPAREN )?
            root_0 = this.adaptor.nil();

            ANN_PERCENT59=this.match(this.input,ANN_PERCENT,XQueryParser.FOLLOW_ANN_PERCENT_in_p_Annotation2730); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            ANN_PERCENT59_tree = this.adaptor.create(ANN_PERCENT59);
            this.adaptor.addChild(root_0, ANN_PERCENT59_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_p_Annotation2732);
            p_EQName60=this.p_EQName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_EQName60.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:473:32: ( LPAREN p_Literal ( COMMA p_Literal )* RPAREN )?
            var alt31=2;
            var LA31_0 = this.input.LA(1);

            if ( (LA31_0==LPAREN) ) {
                alt31=1;
            }
            switch (alt31) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:473:33: LPAREN p_Literal ( COMMA p_Literal )* RPAREN
                    LPAREN61=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_Annotation2735); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    LPAREN61_tree = this.adaptor.create(LPAREN61);
                    this.adaptor.addChild(root_0, LPAREN61_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_Literal_in_p_Annotation2737);
                    p_Literal62=this.p_Literal();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Literal62.getTree());
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:473:50: ( COMMA p_Literal )*
                    loop30:
                    do {
                        var alt30=2;
                        var LA30_0 = this.input.LA(1);

                        if ( (LA30_0==COMMA) ) {
                            alt30=1;
                        }


                        switch (alt30) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:473:51: COMMA p_Literal
                            COMMA63=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_Annotation2740); if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) {
                            COMMA63_tree = this.adaptor.create(COMMA63);
                            this.adaptor.addChild(root_0, COMMA63_tree);
                            }
                            this.pushFollow(XQueryParser.FOLLOW_p_Literal_in_p_Annotation2742);
                            p_Literal64=this.p_Literal();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Literal64.getTree());


                            break;

                        default :
                            break loop30;
                        }
                    } while (true);

                    RPAREN65=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_Annotation2746); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    RPAREN65_tree = this.adaptor.create(RPAREN65);
                    this.adaptor.addChild(root_0, RPAREN65_tree);
                    }


                    break;

            }




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_VarDecl_return: (function() {
        XQueryParser.p_VarDecl_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_VarDecl_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:477:1: p_VarDecl : k= VARIABLE d= DOLLAR qn= p_EQName (td= p_TypeDeclaration )? ( ( BIND vv= p_VarValue ) | (k= EXTERNAL ( BIND vdv= p_VarDefaultValue )? ) ) -> ^( VarDecl $qn ^( VarType ( $td)? ) ^( VarValue ( $vv)? ^( VarDefaultValue ( $vdv)? ) ) ) ;
    // $ANTLR start "p_VarDecl"
    p_VarDecl: function() {
        var retval = new XQueryParser.p_VarDecl_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var d = null;
        var BIND66 = null;
        var BIND67 = null;
         var qn = null;
         var td = null;
         var vv = null;
         var vdv = null;

        var k_tree=null;
        var d_tree=null;
        var BIND66_tree=null;
        var BIND67_tree=null;
        var stream_DOLLAR=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token DOLLAR");
        var stream_EXTERNAL=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token EXTERNAL");
        var stream_VARIABLE=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token VARIABLE");
        var stream_BIND=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token BIND");
        var stream_p_TypeDeclaration=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_TypeDeclaration");
        var stream_p_VarDefaultValue=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_VarDefaultValue");
        var stream_p_VarValue=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_VarValue");
        var stream_p_EQName=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_EQName");
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:478:9: (k= VARIABLE d= DOLLAR qn= p_EQName (td= p_TypeDeclaration )? ( ( BIND vv= p_VarValue ) | (k= EXTERNAL ( BIND vdv= p_VarDefaultValue )? ) ) -> ^( VarDecl $qn ^( VarType ( $td)? ) ^( VarValue ( $vv)? ^( VarDefaultValue ( $vdv)? ) ) ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:478:11: k= VARIABLE d= DOLLAR qn= p_EQName (td= p_TypeDeclaration )? ( ( BIND vv= p_VarValue ) | (k= EXTERNAL ( BIND vdv= p_VarDefaultValue )? ) )
            k=this.match(this.input,VARIABLE,XQueryParser.FOLLOW_VARIABLE_in_p_VarDecl2776); if (this.state.failed) return retval; 
            if ( this.state.backtracking===0 ) stream_VARIABLE.add(k);

            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_VarDecl2782); if (this.state.failed) return retval; 
            if ( this.state.backtracking===0 ) stream_DOLLAR.add(d);

            this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_p_VarDecl2786);
            qn=this.p_EQName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) stream_p_EQName.add(qn.getTree());
            if ( this.state.backtracking===0 ) {
               this.av(d, (qn?qn.stop:null)); 
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:478:87: (td= p_TypeDeclaration )?
            var alt32=2;
            var LA32_0 = this.input.LA(1);

            if ( (LA32_0==AS) ) {
                alt32=1;
            }
            switch (alt32) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:478:87: td= p_TypeDeclaration
                    this.pushFollow(XQueryParser.FOLLOW_p_TypeDeclaration_in_p_VarDecl2792);
                    td=this.p_TypeDeclaration();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) stream_p_TypeDeclaration.add(td.getTree());


                    break;

            }

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:478:107: ( ( BIND vv= p_VarValue ) | (k= EXTERNAL ( BIND vdv= p_VarDefaultValue )? ) )
            var alt34=2;
            var LA34_0 = this.input.LA(1);

            if ( (LA34_0==BIND) ) {
                alt34=1;
            }
            else if ( (LA34_0==EXTERNAL) ) {
                alt34=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 34, 0, this.input);

                throw nvae;
            }
            switch (alt34) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:478:108: ( BIND vv= p_VarValue )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:478:108: ( BIND vv= p_VarValue )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:478:109: BIND vv= p_VarValue
                    BIND66=this.match(this.input,BIND,XQueryParser.FOLLOW_BIND_in_p_VarDecl2797); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_BIND.add(BIND66);

                    this.pushFollow(XQueryParser.FOLLOW_p_VarValue_in_p_VarDecl2801);
                    vv=this.p_VarValue();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) stream_p_VarValue.add(vv.getTree());





                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:478:131: (k= EXTERNAL ( BIND vdv= p_VarDefaultValue )? )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:478:131: (k= EXTERNAL ( BIND vdv= p_VarDefaultValue )? )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:478:132: k= EXTERNAL ( BIND vdv= p_VarDefaultValue )?
                    k=this.match(this.input,EXTERNAL,XQueryParser.FOLLOW_EXTERNAL_in_p_VarDecl2809); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_EXTERNAL.add(k);

                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:478:158: ( BIND vdv= p_VarDefaultValue )?
                    var alt33=2;
                    var LA33_0 = this.input.LA(1);

                    if ( (LA33_0==BIND) ) {
                        alt33=1;
                    }
                    switch (alt33) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:478:159: BIND vdv= p_VarDefaultValue
                            BIND67=this.match(this.input,BIND,XQueryParser.FOLLOW_BIND_in_p_VarDecl2814); if (this.state.failed) return retval; 
                            if ( this.state.backtracking===0 ) stream_BIND.add(BIND67);

                            this.pushFollow(XQueryParser.FOLLOW_p_VarDefaultValue_in_p_VarDecl2818);
                            vdv=this.p_VarDefaultValue();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) stream_p_VarDefaultValue.add(vdv.getTree());


                            break;

                    }






                    break;

            }



            // AST REWRITE
            // elements: vv, qn, td, vdv
            // token labels: 
            // rule labels: qn, vv, retval, vdv, td
            // token list labels: 
            // rule list labels: 
            if ( this.state.backtracking===0 ) {
            retval.tree = root_0;
            var stream_qn=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token qn",qn!=null?qn.tree:null);
            var stream_vv=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token vv",vv!=null?vv.tree:null);
            var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
            var stream_vdv=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token vdv",vdv!=null?vdv.tree:null);
            var stream_td=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token td",td!=null?td.tree:null);

            root_0 = this.adaptor.nil();
            // 479:17: -> ^( VarDecl $qn ^( VarType ( $td)? ) ^( VarValue ( $vv)? ^( VarDefaultValue ( $vdv)? ) ) )
            {
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:479:20: ^( VarDecl $qn ^( VarType ( $td)? ) ^( VarValue ( $vv)? ^( VarDefaultValue ( $vdv)? ) ) )
                {
                var root_1 = this.adaptor.nil();
                root_1 = this.adaptor.becomeRoot(this.adaptor.create(VarDecl, "VarDecl"), root_1);

                this.adaptor.addChild(root_1, stream_qn.nextTree());
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:479:34: ^( VarType ( $td)? )
                {
                var root_2 = this.adaptor.nil();
                root_2 = this.adaptor.becomeRoot(this.adaptor.create(VarType, "VarType"), root_2);

                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:479:44: ( $td)?
                if ( stream_td.hasNext() ) {
                    this.adaptor.addChild(root_2, stream_td.nextTree());

                }
                stream_td.reset();

                this.adaptor.addChild(root_1, root_2);
                }
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:479:50: ^( VarValue ( $vv)? ^( VarDefaultValue ( $vdv)? ) )
                {
                var root_2 = this.adaptor.nil();
                root_2 = this.adaptor.becomeRoot(this.adaptor.create(VarValue, "VarValue"), root_2);

                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:479:61: ( $vv)?
                if ( stream_vv.hasNext() ) {
                    this.adaptor.addChild(root_2, stream_vv.nextTree());

                }
                stream_vv.reset();
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:479:66: ^( VarDefaultValue ( $vdv)? )
                {
                var root_3 = this.adaptor.nil();
                root_3 = this.adaptor.becomeRoot(this.adaptor.create(VarDefaultValue, "VarDefaultValue"), root_3);

                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:479:84: ( $vdv)?
                if ( stream_vdv.hasNext() ) {
                    this.adaptor.addChild(root_3, stream_vdv.nextTree());

                }
                stream_vdv.reset();

                this.adaptor.addChild(root_2, root_3);
                }

                this.adaptor.addChild(root_1, root_2);
                }

                this.adaptor.addChild(root_0, root_1);
                }

            }

            retval.tree = root_0;}


            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_VarValue_return: (function() {
        XQueryParser.p_VarValue_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_VarValue_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:483:1: p_VarValue : p_ExprSingle[true] ;
    // $ANTLR start "p_VarValue"
    p_VarValue: function() {
        var retval = new XQueryParser.p_VarValue_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_ExprSingle68 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:484:9: ( p_ExprSingle[true] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:484:11: p_ExprSingle[true]
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_VarValue2897);
            p_ExprSingle68=this.p_ExprSingle(true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle68.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_VarDefaultValue_return: (function() {
        XQueryParser.p_VarDefaultValue_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_VarDefaultValue_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:488:1: p_VarDefaultValue : p_ExprSingle[true] ;
    // $ANTLR start "p_VarDefaultValue"
    p_VarDefaultValue: function() {
        var retval = new XQueryParser.p_VarDefaultValue_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_ExprSingle69 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:489:9: ( p_ExprSingle[true] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:489:11: p_ExprSingle[true]
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_VarDefaultValue2924);
            p_ExprSingle69=this.p_ExprSingle(true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle69.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pm_ContextItemDecl_return: (function() {
        XQueryParser.pm_ContextItemDecl_return = function(){};
        org.antlr.lang.extend(XQueryParser.pm_ContextItemDecl_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:493:1: pm_ContextItemDecl : k= DECLARE k= CONTEXT k= ITEM (k= AS p_ItemType )? ( ( BIND p_VarValue ) | (k= EXTERNAL ( BIND p_VarDefaultValue )? ) ) SEMICOLON ;
    // $ANTLR start "pm_ContextItemDecl"
    pm_ContextItemDecl: function() {
        var retval = new XQueryParser.pm_ContextItemDecl_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var BIND71 = null;
        var BIND73 = null;
        var SEMICOLON75 = null;
         var p_ItemType70 = null;
         var p_VarValue72 = null;
         var p_VarDefaultValue74 = null;

        var k_tree=null;
        var BIND71_tree=null;
        var BIND73_tree=null;
        var SEMICOLON75_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:494:9: (k= DECLARE k= CONTEXT k= ITEM (k= AS p_ItemType )? ( ( BIND p_VarValue ) | (k= EXTERNAL ( BIND p_VarDefaultValue )? ) ) SEMICOLON )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:494:11: k= DECLARE k= CONTEXT k= ITEM (k= AS p_ItemType )? ( ( BIND p_VarValue ) | (k= EXTERNAL ( BIND p_VarDefaultValue )? ) ) SEMICOLON
            root_0 = this.adaptor.nil();

            k=this.match(this.input,DECLARE,XQueryParser.FOLLOW_DECLARE_in_pm_ContextItemDecl2953); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,CONTEXT,XQueryParser.FOLLOW_CONTEXT_in_pm_ContextItemDecl2959); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,ITEM,XQueryParser.FOLLOW_ITEM_in_pm_ContextItemDecl2965); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:494:83: (k= AS p_ItemType )?
            var alt35=2;
            var LA35_0 = this.input.LA(1);

            if ( (LA35_0==AS) ) {
                alt35=1;
            }
            switch (alt35) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:494:84: k= AS p_ItemType
                    k=this.match(this.input,AS,XQueryParser.FOLLOW_AS_in_pm_ContextItemDecl2972); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_ItemType_in_pm_ContextItemDecl2976);
                    p_ItemType70=this.p_ItemType();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ItemType70.getTree());


                    break;

            }

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:494:117: ( ( BIND p_VarValue ) | (k= EXTERNAL ( BIND p_VarDefaultValue )? ) )
            var alt37=2;
            var LA37_0 = this.input.LA(1);

            if ( (LA37_0==BIND) ) {
                alt37=1;
            }
            else if ( (LA37_0==EXTERNAL) ) {
                alt37=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 37, 0, this.input);

                throw nvae;
            }
            switch (alt37) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:494:118: ( BIND p_VarValue )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:494:118: ( BIND p_VarValue )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:494:119: BIND p_VarValue
                    BIND71=this.match(this.input,BIND,XQueryParser.FOLLOW_BIND_in_pm_ContextItemDecl2982); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    BIND71_tree = this.adaptor.create(BIND71);
                    this.adaptor.addChild(root_0, BIND71_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_VarValue_in_pm_ContextItemDecl2984);
                    p_VarValue72=this.p_VarValue();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_VarValue72.getTree());





                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:494:138: (k= EXTERNAL ( BIND p_VarDefaultValue )? )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:494:138: (k= EXTERNAL ( BIND p_VarDefaultValue )? )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:494:139: k= EXTERNAL ( BIND p_VarDefaultValue )?
                    k=this.match(this.input,EXTERNAL,XQueryParser.FOLLOW_EXTERNAL_in_pm_ContextItemDecl2992); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:494:165: ( BIND p_VarDefaultValue )?
                    var alt36=2;
                    var LA36_0 = this.input.LA(1);

                    if ( (LA36_0==BIND) ) {
                        alt36=1;
                    }
                    switch (alt36) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:494:166: BIND p_VarDefaultValue
                            BIND73=this.match(this.input,BIND,XQueryParser.FOLLOW_BIND_in_pm_ContextItemDecl2997); if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) {
                            BIND73_tree = this.adaptor.create(BIND73);
                            this.adaptor.addChild(root_0, BIND73_tree);
                            }
                            this.pushFollow(XQueryParser.FOLLOW_p_VarDefaultValue_in_pm_ContextItemDecl2999);
                            p_VarDefaultValue74=this.p_VarDefaultValue();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_VarDefaultValue74.getTree());


                            break;

                    }






                    break;

            }

            SEMICOLON75=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_ContextItemDecl3005); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            SEMICOLON75_tree = this.adaptor.create(SEMICOLON75);
            this.adaptor.addChild(root_0, SEMICOLON75_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pm_FunctionDecl_return: (function() {
        XQueryParser.pm_FunctionDecl_return = function(){};
        org.antlr.lang.extend(XQueryParser.pm_FunctionDecl_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:499:1: pm_FunctionDecl : ({...}? =>k= UPDATING )? k= FUNCTION qn= pg_FQName LPAREN (pl= p_ParamList )? RPAREN (k= AS st= p_SequenceType )? ( LBRACKET soe= p_StatementsAndOptionalExpr RBRACKET | k= EXTERNAL ) -> ^( FunctionDecl $qn ^( ParamList ( $pl)? ) ^( ReturnType ( $st)? ) ( $soe)? ) ;
    // $ANTLR start "pm_FunctionDecl"
    pm_FunctionDecl: function() {
        var retval = new XQueryParser.pm_FunctionDecl_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var LPAREN76 = null;
        var RPAREN77 = null;
        var LBRACKET78 = null;
        var RBRACKET79 = null;
         var qn = null;
         var pl = null;
         var st = null;
         var soe = null;

        var k_tree=null;
        var LPAREN76_tree=null;
        var RPAREN77_tree=null;
        var LBRACKET78_tree=null;
        var RBRACKET79_tree=null;
        var stream_FUNCTION=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token FUNCTION");
        var stream_LBRACKET=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token LBRACKET");
        var stream_AS=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token AS");
        var stream_RPAREN=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token RPAREN");
        var stream_EXTERNAL=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token EXTERNAL");
        var stream_RBRACKET=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token RBRACKET");
        var stream_LPAREN=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token LPAREN");
        var stream_UPDATING=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token UPDATING");
        var stream_p_StatementsAndOptionalExpr=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_StatementsAndOptionalExpr");
        var stream_p_ParamList=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_ParamList");
        var stream_pg_FQName=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule pg_FQName");
        var stream_p_SequenceType=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_SequenceType");
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:500:9: ( ({...}? =>k= UPDATING )? k= FUNCTION qn= pg_FQName LPAREN (pl= p_ParamList )? RPAREN (k= AS st= p_SequenceType )? ( LBRACKET soe= p_StatementsAndOptionalExpr RBRACKET | k= EXTERNAL ) -> ^( FunctionDecl $qn ^( ParamList ( $pl)? ) ^( ReturnType ( $st)? ) ( $soe)? ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:500:11: ({...}? =>k= UPDATING )? k= FUNCTION qn= pg_FQName LPAREN (pl= p_ParamList )? RPAREN (k= AS st= p_SequenceType )? ( LBRACKET soe= p_StatementsAndOptionalExpr RBRACKET | k= EXTERNAL )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:500:11: ({...}? =>k= UPDATING )?
            var alt38=2;
            var LA38_0 = this.input.LA(1);

            if ( (LA38_0==UPDATING) && ((this.lc(XQU)))) {
                alt38=1;
            }
            switch (alt38) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:500:12: {...}? =>k= UPDATING
                    if ( !((this.lc(XQU))) ) {
                        if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        throw new org.antlr.runtime.FailedPredicateException(this.input, "pm_FunctionDecl", "this.lc(XQU)");
                    }
                    k=this.match(this.input,UPDATING,XQueryParser.FOLLOW_UPDATING_in_pm_FunctionDecl3038); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_UPDATING.add(k);

                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }


                    break;

            }

            k=this.match(this.input,FUNCTION,XQueryParser.FOLLOW_FUNCTION_in_pm_FunctionDecl3046); if (this.state.failed) return retval; 
            if ( this.state.backtracking===0 ) stream_FUNCTION.add(k);

            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_pg_FQName_in_pm_FunctionDecl3052);
            qn=this.pg_FQName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) stream_pg_FQName.add(qn.getTree());
            LPAREN76=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_pm_FunctionDecl3054); if (this.state.failed) return retval; 
            if ( this.state.backtracking===0 ) stream_LPAREN.add(LPAREN76);

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:500:106: (pl= p_ParamList )?
            var alt39=2;
            var LA39_0 = this.input.LA(1);

            if ( (LA39_0==DOLLAR) ) {
                alt39=1;
            }
            switch (alt39) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:500:106: pl= p_ParamList
                    this.pushFollow(XQueryParser.FOLLOW_p_ParamList_in_pm_FunctionDecl3058);
                    pl=this.p_ParamList();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) stream_p_ParamList.add(pl.getTree());


                    break;

            }

            RPAREN77=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_pm_FunctionDecl3061); if (this.state.failed) return retval; 
            if ( this.state.backtracking===0 ) stream_RPAREN.add(RPAREN77);

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:500:127: (k= AS st= p_SequenceType )?
            var alt40=2;
            var LA40_0 = this.input.LA(1);

            if ( (LA40_0==AS) ) {
                alt40=1;
            }
            switch (alt40) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:500:128: k= AS st= p_SequenceType
                    k=this.match(this.input,AS,XQueryParser.FOLLOW_AS_in_pm_FunctionDecl3066); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_AS.add(k);

                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_SequenceType_in_pm_FunctionDecl3072);
                    st=this.p_SequenceType();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) stream_p_SequenceType.add(st.getTree());


                    break;

            }

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:500:168: ( LBRACKET soe= p_StatementsAndOptionalExpr RBRACKET | k= EXTERNAL )
            var alt41=2;
            var LA41_0 = this.input.LA(1);

            if ( (LA41_0==LBRACKET) ) {
                alt41=1;
            }
            else if ( (LA41_0==EXTERNAL) ) {
                alt41=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 41, 0, this.input);

                throw nvae;
            }
            switch (alt41) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:500:169: LBRACKET soe= p_StatementsAndOptionalExpr RBRACKET
                    LBRACKET78=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_pm_FunctionDecl3077); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_LBRACKET.add(LBRACKET78);

                    this.pushFollow(XQueryParser.FOLLOW_p_StatementsAndOptionalExpr_in_pm_FunctionDecl3081);
                    soe=this.p_StatementsAndOptionalExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) stream_p_StatementsAndOptionalExpr.add(soe.getTree());
                    RBRACKET79=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_pm_FunctionDecl3083); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_RBRACKET.add(RBRACKET79);



                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:500:221: k= EXTERNAL
                    k=this.match(this.input,EXTERNAL,XQueryParser.FOLLOW_EXTERNAL_in_pm_FunctionDecl3089); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_EXTERNAL.add(k);

                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }


                    break;

            }



            // AST REWRITE
            // elements: soe, pl, st, qn
            // token labels: 
            // rule labels: qn, soe, retval, pl, st
            // token list labels: 
            // rule list labels: 
            if ( this.state.backtracking===0 ) {
            retval.tree = root_0;
            var stream_qn=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token qn",qn!=null?qn.tree:null);
            var stream_soe=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token soe",soe!=null?soe.tree:null);
            var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
            var stream_pl=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token pl",pl!=null?pl.tree:null);
            var stream_st=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token st",st!=null?st.tree:null);

            root_0 = this.adaptor.nil();
            // 501:17: -> ^( FunctionDecl $qn ^( ParamList ( $pl)? ) ^( ReturnType ( $st)? ) ( $soe)? )
            {
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:501:20: ^( FunctionDecl $qn ^( ParamList ( $pl)? ) ^( ReturnType ( $st)? ) ( $soe)? )
                {
                var root_1 = this.adaptor.nil();
                root_1 = this.adaptor.becomeRoot(this.adaptor.create(FunctionDecl, "FunctionDecl"), root_1);

                this.adaptor.addChild(root_1, stream_qn.nextTree());
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:501:39: ^( ParamList ( $pl)? )
                {
                var root_2 = this.adaptor.nil();
                root_2 = this.adaptor.becomeRoot(this.adaptor.create(ParamList, "ParamList"), root_2);

                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:501:51: ( $pl)?
                if ( stream_pl.hasNext() ) {
                    this.adaptor.addChild(root_2, stream_pl.nextTree());

                }
                stream_pl.reset();

                this.adaptor.addChild(root_1, root_2);
                }
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:501:57: ^( ReturnType ( $st)? )
                {
                var root_2 = this.adaptor.nil();
                root_2 = this.adaptor.becomeRoot(this.adaptor.create(ReturnType, "ReturnType"), root_2);

                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:501:70: ( $st)?
                if ( stream_st.hasNext() ) {
                    this.adaptor.addChild(root_2, stream_st.nextTree());

                }
                stream_st.reset();

                this.adaptor.addChild(root_1, root_2);
                }
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:501:76: ( $soe)?
                if ( stream_soe.hasNext() ) {
                    this.adaptor.addChild(root_1, stream_soe.nextTree());

                }
                stream_soe.reset();

                this.adaptor.addChild(root_0, root_1);
                }

            }

            retval.tree = root_0;}


            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ParamList_return: (function() {
        XQueryParser.p_ParamList_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ParamList_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:505:1: p_ParamList : p+= p_Param ( COMMA p+= p_Param )* -> ( $p)+ ;
    // $ANTLR start "p_ParamList"
    p_ParamList: function() {
        var retval = new XQueryParser.p_ParamList_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var COMMA80 = null;
        var list_p=null;
        var p = null;
        var COMMA80_tree=null;
        var stream_COMMA=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token COMMA");
        var stream_p_Param=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_Param");
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:506:9: (p+= p_Param ( COMMA p+= p_Param )* -> ( $p)+ )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:506:11: p+= p_Param ( COMMA p+= p_Param )*
            this.pushFollow(XQueryParser.FOLLOW_p_Param_in_p_ParamList3166);
            p=this.p_Param();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) stream_p_Param.add(p.getTree());
            if (org.antlr.lang.isNull(list_p)) list_p = [];
            list_p.push(p.getTree());

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:506:22: ( COMMA p+= p_Param )*
            loop42:
            do {
                var alt42=2;
                var LA42_0 = this.input.LA(1);

                if ( (LA42_0==COMMA) ) {
                    alt42=1;
                }


                switch (alt42) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:506:23: COMMA p+= p_Param
                    COMMA80=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_ParamList3169); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_COMMA.add(COMMA80);

                    this.pushFollow(XQueryParser.FOLLOW_p_Param_in_p_ParamList3173);
                    p=this.p_Param();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) stream_p_Param.add(p.getTree());
                    if (org.antlr.lang.isNull(list_p)) list_p = [];
                    list_p.push(p.getTree());



                    break;

                default :
                    break loop42;
                }
            } while (true);



            // AST REWRITE
            // elements: p
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: p
            if ( this.state.backtracking===0 ) {
            retval.tree = root_0;
            var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
            var stream_p=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token p",list_p);
            root_0 = this.adaptor.nil();
            // 507:17: -> ( $p)+
            {
                if ( !(stream_p.hasNext()) ) {
                    throw new org.antlr.runtime.tree.RewriteEarlyExitException();
                }
                while ( stream_p.hasNext() ) {
                    this.adaptor.addChild(root_0, stream_p.nextTree());

                }
                stream_p.reset();

            }

            retval.tree = root_0;}


            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_Param_return: (function() {
        XQueryParser.p_Param_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_Param_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:511:1: p_Param : d= DOLLAR qn= p_EQName (td= p_TypeDeclaration )? -> ^( Param $qn ( $td)? ) ;
    // $ANTLR start "p_Param"
    p_Param: function() {
        var retval = new XQueryParser.p_Param_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var d = null;
         var qn = null;
         var td = null;

        var d_tree=null;
        var stream_DOLLAR=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token DOLLAR");
        var stream_p_TypeDeclaration=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_TypeDeclaration");
        var stream_p_EQName=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_EQName");
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:512:9: (d= DOLLAR qn= p_EQName (td= p_TypeDeclaration )? -> ^( Param $qn ( $td)? ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:512:11: d= DOLLAR qn= p_EQName (td= p_TypeDeclaration )?
            d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_Param3233); if (this.state.failed) return retval; 
            if ( this.state.backtracking===0 ) stream_DOLLAR.add(d);

            this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_p_Param3237);
            qn=this.p_EQName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) stream_p_EQName.add(qn.getTree());
            if ( this.state.backtracking===0 ) {
               this.av(d, (qn?qn.stop:null)); 
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:512:61: (td= p_TypeDeclaration )?
            var alt43=2;
            var LA43_0 = this.input.LA(1);

            if ( (LA43_0==AS) ) {
                alt43=1;
            }
            switch (alt43) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:512:61: td= p_TypeDeclaration
                    this.pushFollow(XQueryParser.FOLLOW_p_TypeDeclaration_in_p_Param3243);
                    td=this.p_TypeDeclaration();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) stream_p_TypeDeclaration.add(td.getTree());


                    break;

            }



            // AST REWRITE
            // elements: qn, td
            // token labels: 
            // rule labels: qn, retval, td
            // token list labels: 
            // rule list labels: 
            if ( this.state.backtracking===0 ) {
            retval.tree = root_0;
            var stream_qn=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token qn",qn!=null?qn.tree:null);
            var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
            var stream_td=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token td",td!=null?td.tree:null);

            root_0 = this.adaptor.nil();
            // 513:17: -> ^( Param $qn ( $td)? )
            {
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:513:20: ^( Param $qn ( $td)? )
                {
                var root_1 = this.adaptor.nil();
                root_1 = this.adaptor.becomeRoot(this.adaptor.create(Param, "Param"), root_1);

                this.adaptor.addChild(root_1, stream_qn.nextTree());
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:513:32: ( $td)?
                if ( stream_td.hasNext() ) {
                    this.adaptor.addChild(root_1, stream_td.nextTree());

                }
                stream_td.reset();

                this.adaptor.addChild(root_0, root_1);
                }

            }

            retval.tree = root_0;}


            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pm_FunctionBody_return: (function() {
        XQueryParser.pm_FunctionBody_return = function(){};
        org.antlr.lang.extend(XQueryParser.pm_FunctionBody_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:517:1: pm_FunctionBody : p_EnclosedExpr ;
    // $ANTLR start "pm_FunctionBody"
    pm_FunctionBody: function() {
        var retval = new XQueryParser.pm_FunctionBody_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_EnclosedExpr81 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:518:9: ( p_EnclosedExpr )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:518:11: p_EnclosedExpr
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_EnclosedExpr_in_pm_FunctionBody3299);
            p_EnclosedExpr81=this.p_EnclosedExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_EnclosedExpr81.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_EnclosedExpr_return: (function() {
        XQueryParser.p_EnclosedExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_EnclosedExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:523:1: p_EnclosedExpr : LBRACKET p_Expr[true,true] RBRACKET -> ^( EnclosedExpr p_Expr ) ;
    // $ANTLR start "p_EnclosedExpr"
    p_EnclosedExpr: function() {
        var retval = new XQueryParser.p_EnclosedExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var LBRACKET82 = null;
        var RBRACKET84 = null;
         var p_Expr83 = null;

        var LBRACKET82_tree=null;
        var RBRACKET84_tree=null;
        var stream_LBRACKET=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token LBRACKET");
        var stream_RBRACKET=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token RBRACKET");
        var stream_p_Expr=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_Expr");
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:524:9: ( LBRACKET p_Expr[true,true] RBRACKET -> ^( EnclosedExpr p_Expr ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:524:11: LBRACKET p_Expr[true,true] RBRACKET
            LBRACKET82=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_EnclosedExpr3326); if (this.state.failed) return retval; 
            if ( this.state.backtracking===0 ) stream_LBRACKET.add(LBRACKET82);

            this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_EnclosedExpr3328);
            p_Expr83=this.p_Expr(true, true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) stream_p_Expr.add(p_Expr83.getTree());
            RBRACKET84=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_EnclosedExpr3331); if (this.state.failed) return retval; 
            if ( this.state.backtracking===0 ) stream_RBRACKET.add(RBRACKET84);



            // AST REWRITE
            // elements: p_Expr
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            if ( this.state.backtracking===0 ) {
            retval.tree = root_0;
            var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);

            root_0 = this.adaptor.nil();
            // 525:17: -> ^( EnclosedExpr p_Expr )
            {
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:525:20: ^( EnclosedExpr p_Expr )
                {
                var root_1 = this.adaptor.nil();
                root_1 = this.adaptor.becomeRoot(this.adaptor.create(EnclosedExpr, "EnclosedExpr"), root_1);

                this.adaptor.addChild(root_1, stream_p_Expr.nextTree());

                this.adaptor.addChild(root_0, root_1);
                }

            }

            retval.tree = root_0;}


            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pm_OptionDecl_return: (function() {
        XQueryParser.pm_OptionDecl_return = function(){};
        org.antlr.lang.extend(XQueryParser.pm_OptionDecl_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:529:1: pm_OptionDecl : k= DECLARE k= OPTION p_EQName p_StringLiteral SEMICOLON ;
    // $ANTLR start "pm_OptionDecl"
    pm_OptionDecl: function() {
        var retval = new XQueryParser.pm_OptionDecl_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var SEMICOLON87 = null;
         var p_EQName85 = null;
         var p_StringLiteral86 = null;

        var k_tree=null;
        var SEMICOLON87_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:530:9: (k= DECLARE k= OPTION p_EQName p_StringLiteral SEMICOLON )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:530:11: k= DECLARE k= OPTION p_EQName p_StringLiteral SEMICOLON
            root_0 = this.adaptor.nil();

            k=this.match(this.input,DECLARE,XQueryParser.FOLLOW_DECLARE_in_pm_OptionDecl3383); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,OPTION,XQueryParser.FOLLOW_OPTION_in_pm_OptionDecl3389); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_pm_OptionDecl3393);
            p_EQName85=this.p_EQName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_EQName85.getTree());
            this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_pm_OptionDecl3395);
            p_StringLiteral86=this.p_StringLiteral();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral86.getTree());
            SEMICOLON87=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_OptionDecl3397); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            SEMICOLON87_tree = this.adaptor.create(SEMICOLON87);
            this.adaptor.addChild(root_0, SEMICOLON87_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pm_QueryBody_return: (function() {
        XQueryParser.pm_QueryBody_return = function(){};
        org.antlr.lang.extend(XQueryParser.pm_QueryBody_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:534:1: pm_QueryBody : ({...}? => p_Program | p_Expr[true,true] );
    // $ANTLR start "pm_QueryBody"
    pm_QueryBody: function() {
        var retval = new XQueryParser.pm_QueryBody_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_Program88 = null;
         var p_Expr89 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:535:9: ({...}? => p_Program | p_Expr[true,true] )
            var alt44=2;
            alt44 = this.dfa44.predict(this.input);
            switch (alt44) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:535:11: {...}? => p_Program
                    root_0 = this.adaptor.nil();

                    if ( !((this.lc(XQS))) ) {
                        if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        throw new org.antlr.runtime.FailedPredicateException(this.input, "pm_QueryBody", "this.lc(XQS)");
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_Program_in_pm_QueryBody3426);
                    p_Program88=this.p_Program();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Program88.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:536:11: p_Expr[true,true]
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_pm_QueryBody3438);
                    p_Expr89=this.p_Expr(true, true);

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr89.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_Expr_return: (function() {
        XQueryParser.p_Expr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_Expr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:546:1: p_Expr[strict, allowConcat] : es= p_ExprSingle[$strict] ( COMMA p_ExprSingle[$strict] )* ;
    // $ANTLR start "p_Expr"
    p_Expr: function(strict, allowConcat) {
        var retval = new XQueryParser.p_Expr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var COMMA90 = null;
         var es = null;
         var p_ExprSingle91 = null;

        var COMMA90_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:547:9: (es= p_ExprSingle[$strict] ( COMMA p_ExprSingle[$strict] )* )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:547:11: es= p_ExprSingle[$strict] ( COMMA p_ExprSingle[$strict] )*
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_Expr3474);
            es=this.p_ExprSingle(strict);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, es.getTree());
            if ( this.state.backtracking===0 ) {
               if (!allowConcat) throw new Exception(); 
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:548:11: ( COMMA p_ExprSingle[$strict] )*
            loop45:
            do {
                var alt45=2;
                var LA45_0 = this.input.LA(1);

                if ( (LA45_0==COMMA) ) {
                    alt45=1;
                }


                switch (alt45) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:548:12: COMMA p_ExprSingle[$strict]
                    COMMA90=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_Expr3490); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    COMMA90_tree = this.adaptor.create(COMMA90);
                    this.adaptor.addChild(root_0, COMMA90_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_Expr3492);
                    p_ExprSingle91=this.p_ExprSingle(strict);

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle91.getTree());


                    break;

                default :
                    break loop45;
                }
            } while (true);




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (e) {

              if(e instanceof org.antlr.runtime.RecognitionException) {
                //console.log("catch1");
                reportError(e);
                recover(this.input, e);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), e);
              } else if(e instanceof Exception) {
                //console.log("catch2");
                root_0 = this.adaptor.nil();
                this.adaptor.addChild(root_0, es.getTree());
                retval.stop = this.input.LT(-1);
                retval.tree = this.adaptor.rulePostProcessing(root_0);
                this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
              } else {
                throw e;
              }

        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ExprSingle_return: (function() {
        XQueryParser.p_ExprSingle_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ExprSingle_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:570:1: p_ExprSingle[strict] : ( ( ( ( FOR | LET ) DOLLAR ) | ( FOR ( TUMBLING | SLIDING ) ) )=> p_FLWORHybrid[$strict] | ( IF LPAREN )=> p_IfHybrid[$strict] | ( SWITCH LPAREN )=> p_SwitchHybrid[$strict] | ( TYPESWITCH LPAREN )=> p_TypeswitchHybrid[$strict] | ( TRY LBRACKET )=> p_TryCatchHybrid[$strict] | p_ExprSimple );
    // $ANTLR start "p_ExprSingle"
    p_ExprSingle: function(strict) {
        var retval = new XQueryParser.p_ExprSingle_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_FLWORHybrid92 = null;
         var p_IfHybrid93 = null;
         var p_SwitchHybrid94 = null;
         var p_TypeswitchHybrid95 = null;
         var p_TryCatchHybrid96 = null;
         var p_ExprSimple97 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:571:9: ( ( ( ( FOR | LET ) DOLLAR ) | ( FOR ( TUMBLING | SLIDING ) ) )=> p_FLWORHybrid[$strict] | ( IF LPAREN )=> p_IfHybrid[$strict] | ( SWITCH LPAREN )=> p_SwitchHybrid[$strict] | ( TYPESWITCH LPAREN )=> p_TypeswitchHybrid[$strict] | ( TRY LBRACKET )=> p_TryCatchHybrid[$strict] | p_ExprSimple )
            var alt46=6;
            alt46 = this.dfa46.predict(this.input);
            switch (alt46) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:571:11: ( ( ( FOR | LET ) DOLLAR ) | ( FOR ( TUMBLING | SLIDING ) ) )=> p_FLWORHybrid[$strict]
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_FLWORHybrid_in_p_ExprSingle3559);
                    p_FLWORHybrid92=this.p_FLWORHybrid(strict);

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FLWORHybrid92.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:572:11: ( IF LPAREN )=> p_IfHybrid[$strict]
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_IfHybrid_in_p_ExprSingle3589);
                    p_IfHybrid93=this.p_IfHybrid(strict);

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_IfHybrid93.getTree());


                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:573:11: ( SWITCH LPAREN )=> p_SwitchHybrid[$strict]
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_SwitchHybrid_in_p_ExprSingle3615);
                    p_SwitchHybrid94=this.p_SwitchHybrid(strict);

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SwitchHybrid94.getTree());


                    break;
                case 4 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:574:11: ( TYPESWITCH LPAREN )=> p_TypeswitchHybrid[$strict]
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_TypeswitchHybrid_in_p_ExprSingle3637);
                    p_TypeswitchHybrid95=this.p_TypeswitchHybrid(strict);

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TypeswitchHybrid95.getTree());


                    break;
                case 5 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:575:11: ( TRY LBRACKET )=> p_TryCatchHybrid[$strict]
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_TryCatchHybrid_in_p_ExprSingle3664);
                    p_TryCatchHybrid96=this.p_TryCatchHybrid(strict);

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TryCatchHybrid96.getTree());


                    break;
                case 6 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:576:11: p_ExprSimple
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_ExprSimple_in_p_ExprSingle3677);
                    p_ExprSimple97=this.p_ExprSimple();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSimple97.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FLWORHybrid_return: (function() {
        XQueryParser.p_FLWORHybrid_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FLWORHybrid_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:580:1: p_FLWORHybrid[strict] : p_InitialClause ( p_IntermediateClause )* p_ReturnHybrid[$strict] ;
    // $ANTLR start "p_FLWORHybrid"
    p_FLWORHybrid: function(strict) {
        var retval = new XQueryParser.p_FLWORHybrid_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_InitialClause98 = null;
         var p_IntermediateClause99 = null;
         var p_ReturnHybrid100 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:581:9: ( p_InitialClause ( p_IntermediateClause )* p_ReturnHybrid[$strict] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:581:11: p_InitialClause ( p_IntermediateClause )* p_ReturnHybrid[$strict]
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_InitialClause_in_p_FLWORHybrid3704);
            p_InitialClause98=this.p_InitialClause();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_InitialClause98.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:581:27: ( p_IntermediateClause )*
            loop47:
            do {
                var alt47=2;
                var LA47_0 = this.input.LA(1);

                if ( (LA47_0==FOR||LA47_0==LET||LA47_0==ORDER||LA47_0==STABLE||LA47_0==WHERE||LA47_0==COUNT||LA47_0==GROUP) ) {
                    alt47=1;
                }


                switch (alt47) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:581:27: p_IntermediateClause
                    this.pushFollow(XQueryParser.FOLLOW_p_IntermediateClause_in_p_FLWORHybrid3706);
                    p_IntermediateClause99=this.p_IntermediateClause();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_IntermediateClause99.getTree());


                    break;

                default :
                    break loop47;
                }
            } while (true);

            this.pushFollow(XQueryParser.FOLLOW_p_ReturnHybrid_in_p_FLWORHybrid3709);
            p_ReturnHybrid100=this.p_ReturnHybrid(strict);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ReturnHybrid100.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_InitialClause_return: (function() {
        XQueryParser.p_InitialClause_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_InitialClause_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:585:1: p_InitialClause : ( p_ForClause | p_LetClause | p_WindowClause );
    // $ANTLR start "p_InitialClause"
    p_InitialClause: function() {
        var retval = new XQueryParser.p_InitialClause_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_ForClause101 = null;
         var p_LetClause102 = null;
         var p_WindowClause103 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:586:9: ( p_ForClause | p_LetClause | p_WindowClause )
            var alt48=3;
            var LA48_0 = this.input.LA(1);

            if ( (LA48_0==FOR) ) {
                var LA48_1 = this.input.LA(2);

                if ( (LA48_1==DOLLAR) ) {
                    alt48=1;
                }
                else if ( (LA48_1==SLIDING||LA48_1==TUMBLING) ) {
                    alt48=3;
                }
                else {
                    if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                    var nvae =
                        new org.antlr.runtime.NoViableAltException("", 48, 1, this.input);

                    throw nvae;
                }
            }
            else if ( (LA48_0==LET) ) {
                alt48=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 48, 0, this.input);

                throw nvae;
            }
            switch (alt48) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:586:11: p_ForClause
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_ForClause_in_p_InitialClause3736);
                    p_ForClause101=this.p_ForClause();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ForClause101.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:586:25: p_LetClause
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_LetClause_in_p_InitialClause3740);
                    p_LetClause102=this.p_LetClause();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_LetClause102.getTree());


                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:586:39: p_WindowClause
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_WindowClause_in_p_InitialClause3744);
                    p_WindowClause103=this.p_WindowClause();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_WindowClause103.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_IntermediateClause_return: (function() {
        XQueryParser.p_IntermediateClause_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_IntermediateClause_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:590:1: p_IntermediateClause : ( p_InitialClause | p_WhereClause | p_GroupByClause | p_OrderByClause | p_CountClause );
    // $ANTLR start "p_IntermediateClause"
    p_IntermediateClause: function() {
        var retval = new XQueryParser.p_IntermediateClause_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_InitialClause104 = null;
         var p_WhereClause105 = null;
         var p_GroupByClause106 = null;
         var p_OrderByClause107 = null;
         var p_CountClause108 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:591:9: ( p_InitialClause | p_WhereClause | p_GroupByClause | p_OrderByClause | p_CountClause )
            var alt49=5;
            switch ( this.input.LA(1) ) {
            case FOR:
            case LET:
                alt49=1;
                break;
            case WHERE:
                alt49=2;
                break;
            case GROUP:
                alt49=3;
                break;
            case ORDER:
            case STABLE:
                alt49=4;
                break;
            case COUNT:
                alt49=5;
                break;
            default:
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 49, 0, this.input);

                throw nvae;
            }

            switch (alt49) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:591:11: p_InitialClause
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_InitialClause_in_p_IntermediateClause3770);
                    p_InitialClause104=this.p_InitialClause();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_InitialClause104.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:591:29: p_WhereClause
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_WhereClause_in_p_IntermediateClause3774);
                    p_WhereClause105=this.p_WhereClause();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_WhereClause105.getTree());


                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:591:45: p_GroupByClause
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_GroupByClause_in_p_IntermediateClause3778);
                    p_GroupByClause106=this.p_GroupByClause();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_GroupByClause106.getTree());


                    break;
                case 4 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:591:63: p_OrderByClause
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_OrderByClause_in_p_IntermediateClause3782);
                    p_OrderByClause107=this.p_OrderByClause();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_OrderByClause107.getTree());


                    break;
                case 5 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:591:81: p_CountClause
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_CountClause_in_p_IntermediateClause3786);
                    p_CountClause108=this.p_CountClause();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_CountClause108.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_StringConcatExpr_return: (function() {
        XQueryParser.p_StringConcatExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_StringConcatExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:595:1: p_StringConcatExpr : p_RangeExpr (o= CONCAT p_RangeExpr )* ;
    // $ANTLR start "p_StringConcatExpr"
    p_StringConcatExpr: function() {
        var retval = new XQueryParser.p_StringConcatExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var o = null;
         var p_RangeExpr109 = null;
         var p_RangeExpr110 = null;

        var o_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:596:4: ( p_RangeExpr (o= CONCAT p_RangeExpr )* )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:596:6: p_RangeExpr (o= CONCAT p_RangeExpr )*
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_RangeExpr_in_p_StringConcatExpr3807);
            p_RangeExpr109=this.p_RangeExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_RangeExpr109.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:596:18: (o= CONCAT p_RangeExpr )*
            loop50:
            do {
                var alt50=2;
                var LA50_0 = this.input.LA(1);

                if ( (LA50_0==CONCAT) ) {
                    alt50=1;
                }


                switch (alt50) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:596:20: o= CONCAT p_RangeExpr
                    o=this.match(this.input,CONCAT,XQueryParser.FOLLOW_CONCAT_in_p_StringConcatExpr3813); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    o_tree = this.adaptor.create(o);
                    this.adaptor.addChild(root_0, o_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                       this.ao(o); 
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_RangeExpr_in_p_StringConcatExpr3817);
                    p_RangeExpr110=this.p_RangeExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_RangeExpr110.getTree());


                    break;

                default :
                    break loop50;
                }
            } while (true);




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ForClause_return: (function() {
        XQueryParser.p_ForClause_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ForClause_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:601:1: p_ForClause : k= FOR p_ForBinding ( COMMA p_ForBinding )* ;
    // $ANTLR start "p_ForClause"
    p_ForClause: function() {
        var retval = new XQueryParser.p_ForClause_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var COMMA112 = null;
         var p_ForBinding111 = null;
         var p_ForBinding113 = null;

        var k_tree=null;
        var COMMA112_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:602:9: (k= FOR p_ForBinding ( COMMA p_ForBinding )* )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:602:11: k= FOR p_ForBinding ( COMMA p_ForBinding )*
            root_0 = this.adaptor.nil();

            k=this.match(this.input,FOR,XQueryParser.FOLLOW_FOR_in_p_ForClause3844); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_ForBinding_in_p_ForClause3848);
            p_ForBinding111=this.p_ForBinding();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ForBinding111.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:602:45: ( COMMA p_ForBinding )*
            loop51:
            do {
                var alt51=2;
                var LA51_0 = this.input.LA(1);

                if ( (LA51_0==COMMA) ) {
                    alt51=1;
                }


                switch (alt51) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:602:46: COMMA p_ForBinding
                    COMMA112=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_ForClause3851); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    COMMA112_tree = this.adaptor.create(COMMA112);
                    this.adaptor.addChild(root_0, COMMA112_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_ForBinding_in_p_ForClause3853);
                    p_ForBinding113=this.p_ForBinding();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ForBinding113.getTree());


                    break;

                default :
                    break loop51;
                }
            } while (true);




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ForBinding_return: (function() {
        XQueryParser.p_ForBinding_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ForBinding_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:606:1: p_ForBinding : s= DOLLAR v= p_VarName ( p_TypeDeclaration )? ( p_AllowingEmpty )? ( p_PositionalVar )? ( p_FTScoreVar )? k= IN p_ExprSingle[true] ;
    // $ANTLR start "p_ForBinding"
    p_ForBinding: function() {
        var retval = new XQueryParser.p_ForBinding_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var s = null;
        var k = null;
         var v = null;
         var p_TypeDeclaration114 = null;
         var p_AllowingEmpty115 = null;
         var p_PositionalVar116 = null;
         var p_FTScoreVar117 = null;
         var p_ExprSingle118 = null;

        var s_tree=null;
        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:607:9: (s= DOLLAR v= p_VarName ( p_TypeDeclaration )? ( p_AllowingEmpty )? ( p_PositionalVar )? ( p_FTScoreVar )? k= IN p_ExprSingle[true] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:607:11: s= DOLLAR v= p_VarName ( p_TypeDeclaration )? ( p_AllowingEmpty )? ( p_PositionalVar )? ( p_FTScoreVar )? k= IN p_ExprSingle[true]
            root_0 = this.adaptor.nil();

            s=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_ForBinding3883); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            s_tree = this.adaptor.create(s);
            this.adaptor.addChild(root_0, s_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_ForBinding3887);
            v=this.p_VarName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
            if ( this.state.backtracking===0 ) {
               this.av(s, (v?v.stop:null)); 
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:607:58: ( p_TypeDeclaration )?
            var alt52=2;
            var LA52_0 = this.input.LA(1);

            if ( (LA52_0==AS) ) {
                alt52=1;
            }
            switch (alt52) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:607:58: p_TypeDeclaration
                    this.pushFollow(XQueryParser.FOLLOW_p_TypeDeclaration_in_p_ForBinding3891);
                    p_TypeDeclaration114=this.p_TypeDeclaration();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TypeDeclaration114.getTree());


                    break;

            }

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:607:77: ( p_AllowingEmpty )?
            var alt53=2;
            var LA53_0 = this.input.LA(1);

            if ( (LA53_0==ALLOWING) ) {
                alt53=1;
            }
            switch (alt53) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:607:77: p_AllowingEmpty
                    this.pushFollow(XQueryParser.FOLLOW_p_AllowingEmpty_in_p_ForBinding3894);
                    p_AllowingEmpty115=this.p_AllowingEmpty();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AllowingEmpty115.getTree());


                    break;

            }

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:607:94: ( p_PositionalVar )?
            var alt54=2;
            var LA54_0 = this.input.LA(1);

            if ( (LA54_0==AT) ) {
                alt54=1;
            }
            switch (alt54) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:607:94: p_PositionalVar
                    this.pushFollow(XQueryParser.FOLLOW_p_PositionalVar_in_p_ForBinding3897);
                    p_PositionalVar116=this.p_PositionalVar();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PositionalVar116.getTree());


                    break;

            }

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:607:111: ( p_FTScoreVar )?
            var alt55=2;
            var LA55_0 = this.input.LA(1);

            if ( (LA55_0==SCORE) ) {
                alt55=1;
            }
            switch (alt55) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:607:111: p_FTScoreVar
                    this.pushFollow(XQueryParser.FOLLOW_p_FTScoreVar_in_p_ForBinding3900);
                    p_FTScoreVar117=this.p_FTScoreVar();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTScoreVar117.getTree());


                    break;

            }

            k=this.match(this.input,IN,XQueryParser.FOLLOW_IN_in_p_ForBinding3905); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_ForBinding3909);
            p_ExprSingle118=this.p_ExprSingle(true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle118.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_AllowingEmpty_return: (function() {
        XQueryParser.p_AllowingEmpty_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_AllowingEmpty_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:611:1: p_AllowingEmpty : k= ALLOWING k= EMPTY ;
    // $ANTLR start "p_AllowingEmpty"
    p_AllowingEmpty: function() {
        var retval = new XQueryParser.p_AllowingEmpty_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:612:9: (k= ALLOWING k= EMPTY )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:612:11: k= ALLOWING k= EMPTY
            root_0 = this.adaptor.nil();

            k=this.match(this.input,ALLOWING,XQueryParser.FOLLOW_ALLOWING_in_p_AllowingEmpty3938); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,EMPTY,XQueryParser.FOLLOW_EMPTY_in_p_AllowingEmpty3944); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_PositionalVar_return: (function() {
        XQueryParser.p_PositionalVar_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_PositionalVar_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:616:1: p_PositionalVar : k= AT d= DOLLAR v= p_VarName ;
    // $ANTLR start "p_PositionalVar"
    p_PositionalVar: function() {
        var retval = new XQueryParser.p_PositionalVar_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var d = null;
         var v = null;

        var k_tree=null;
        var d_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:617:9: (k= AT d= DOLLAR v= p_VarName )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:617:11: k= AT d= DOLLAR v= p_VarName
            root_0 = this.adaptor.nil();

            k=this.match(this.input,AT,XQueryParser.FOLLOW_AT_in_p_PositionalVar3974); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_PositionalVar3980); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            d_tree = this.adaptor.create(d);
            this.adaptor.addChild(root_0, d_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_PositionalVar3984);
            v=this.p_VarName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
            if ( this.state.backtracking===0 ) {
               this.av(d, (v?v.stop:null)); 
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_LetClause_return: (function() {
        XQueryParser.p_LetClause_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_LetClause_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:621:1: p_LetClause : k= LET p_LetBinding ( COMMA p_LetBinding )* ;
    // $ANTLR start "p_LetClause"
    p_LetClause: function() {
        var retval = new XQueryParser.p_LetClause_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var COMMA120 = null;
         var p_LetBinding119 = null;
         var p_LetBinding121 = null;

        var k_tree=null;
        var COMMA120_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:622:9: (k= LET p_LetBinding ( COMMA p_LetBinding )* )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:622:11: k= LET p_LetBinding ( COMMA p_LetBinding )*
            root_0 = this.adaptor.nil();

            k=this.match(this.input,LET,XQueryParser.FOLLOW_LET_in_p_LetClause4014); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_LetBinding_in_p_LetClause4018);
            p_LetBinding119=this.p_LetBinding();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_LetBinding119.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:622:45: ( COMMA p_LetBinding )*
            loop56:
            do {
                var alt56=2;
                var LA56_0 = this.input.LA(1);

                if ( (LA56_0==COMMA) ) {
                    alt56=1;
                }


                switch (alt56) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:622:46: COMMA p_LetBinding
                    COMMA120=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_LetClause4021); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    COMMA120_tree = this.adaptor.create(COMMA120);
                    this.adaptor.addChild(root_0, COMMA120_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_LetBinding_in_p_LetClause4023);
                    p_LetBinding121=this.p_LetBinding();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_LetBinding121.getTree());


                    break;

                default :
                    break loop56;
                }
            } while (true);




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_LetBinding_return: (function() {
        XQueryParser.p_LetBinding_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_LetBinding_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:627:1: p_LetBinding : ( (d= DOLLAR v= p_VarName ( p_TypeDeclaration )? ) | p_FTScoreVar ) BIND p_ExprSingle[true] ;
    // $ANTLR start "p_LetBinding"
    p_LetBinding: function() {
        var retval = new XQueryParser.p_LetBinding_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var d = null;
        var BIND124 = null;
         var v = null;
         var p_TypeDeclaration122 = null;
         var p_FTScoreVar123 = null;
         var p_ExprSingle125 = null;

        var d_tree=null;
        var BIND124_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:628:9: ( ( (d= DOLLAR v= p_VarName ( p_TypeDeclaration )? ) | p_FTScoreVar ) BIND p_ExprSingle[true] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:628:11: ( (d= DOLLAR v= p_VarName ( p_TypeDeclaration )? ) | p_FTScoreVar ) BIND p_ExprSingle[true]
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:628:11: ( (d= DOLLAR v= p_VarName ( p_TypeDeclaration )? ) | p_FTScoreVar )
            var alt58=2;
            var LA58_0 = this.input.LA(1);

            if ( (LA58_0==DOLLAR) ) {
                alt58=1;
            }
            else if ( (LA58_0==SCORE) ) {
                alt58=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 58, 0, this.input);

                throw nvae;
            }
            switch (alt58) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:628:13: (d= DOLLAR v= p_VarName ( p_TypeDeclaration )? )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:628:13: (d= DOLLAR v= p_VarName ( p_TypeDeclaration )? )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:628:14: d= DOLLAR v= p_VarName ( p_TypeDeclaration )?
                    d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_LetBinding4057); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    d_tree = this.adaptor.create(d);
                    this.adaptor.addChild(root_0, d_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_LetBinding4061);
                    v=this.p_VarName();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
                    if ( this.state.backtracking===0 ) {
                      this.av(d, (v?v.stop:null));
                    }
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:628:59: ( p_TypeDeclaration )?
                    var alt57=2;
                    var LA57_0 = this.input.LA(1);

                    if ( (LA57_0==AS) ) {
                        alt57=1;
                    }
                    switch (alt57) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:628:59: p_TypeDeclaration
                            this.pushFollow(XQueryParser.FOLLOW_p_TypeDeclaration_in_p_LetBinding4065);
                            p_TypeDeclaration122=this.p_TypeDeclaration();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TypeDeclaration122.getTree());


                            break;

                    }






                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:628:81: p_FTScoreVar
                    this.pushFollow(XQueryParser.FOLLOW_p_FTScoreVar_in_p_LetBinding4071);
                    p_FTScoreVar123=this.p_FTScoreVar();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTScoreVar123.getTree());


                    break;

            }

            BIND124=this.match(this.input,BIND,XQueryParser.FOLLOW_BIND_in_p_LetBinding4075); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            BIND124_tree = this.adaptor.create(BIND124);
            this.adaptor.addChild(root_0, BIND124_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_LetBinding4077);
            p_ExprSingle125=this.p_ExprSingle(true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle125.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_WindowClause_return: (function() {
        XQueryParser.p_WindowClause_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_WindowClause_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:632:1: p_WindowClause : k= FOR ( p_TumblingWindowClause | p_SlidingWindowClause ) ;
    // $ANTLR start "p_WindowClause"
    p_WindowClause: function() {
        var retval = new XQueryParser.p_WindowClause_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
         var p_TumblingWindowClause126 = null;
         var p_SlidingWindowClause127 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:633:9: (k= FOR ( p_TumblingWindowClause | p_SlidingWindowClause ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:633:11: k= FOR ( p_TumblingWindowClause | p_SlidingWindowClause )
            root_0 = this.adaptor.nil();

            k=this.match(this.input,FOR,XQueryParser.FOLLOW_FOR_in_p_WindowClause4106); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:633:32: ( p_TumblingWindowClause | p_SlidingWindowClause )
            var alt59=2;
            var LA59_0 = this.input.LA(1);

            if ( (LA59_0==TUMBLING) ) {
                alt59=1;
            }
            else if ( (LA59_0==SLIDING) ) {
                alt59=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 59, 0, this.input);

                throw nvae;
            }
            switch (alt59) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:633:33: p_TumblingWindowClause
                    this.pushFollow(XQueryParser.FOLLOW_p_TumblingWindowClause_in_p_WindowClause4111);
                    p_TumblingWindowClause126=this.p_TumblingWindowClause();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TumblingWindowClause126.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:633:58: p_SlidingWindowClause
                    this.pushFollow(XQueryParser.FOLLOW_p_SlidingWindowClause_in_p_WindowClause4115);
                    p_SlidingWindowClause127=this.p_SlidingWindowClause();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SlidingWindowClause127.getTree());


                    break;

            }




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_TumblingWindowClause_return: (function() {
        XQueryParser.p_TumblingWindowClause_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_TumblingWindowClause_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:637:1: p_TumblingWindowClause : k= TUMBLING k= WINDOW d= DOLLAR v= p_VarName ( p_TypeDeclaration )? k= IN p_ExprSingle[true] p_WindowStartCondition ( p_WindowEndCondition )? ;
    // $ANTLR start "p_TumblingWindowClause"
    p_TumblingWindowClause: function() {
        var retval = new XQueryParser.p_TumblingWindowClause_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var d = null;
         var v = null;
         var p_TypeDeclaration128 = null;
         var p_ExprSingle129 = null;
         var p_WindowStartCondition130 = null;
         var p_WindowEndCondition131 = null;

        var k_tree=null;
        var d_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:638:9: (k= TUMBLING k= WINDOW d= DOLLAR v= p_VarName ( p_TypeDeclaration )? k= IN p_ExprSingle[true] p_WindowStartCondition ( p_WindowEndCondition )? )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:638:11: k= TUMBLING k= WINDOW d= DOLLAR v= p_VarName ( p_TypeDeclaration )? k= IN p_ExprSingle[true] p_WindowStartCondition ( p_WindowEndCondition )?
            root_0 = this.adaptor.nil();

            k=this.match(this.input,TUMBLING,XQueryParser.FOLLOW_TUMBLING_in_p_TumblingWindowClause4152); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,WINDOW,XQueryParser.FOLLOW_WINDOW_in_p_TumblingWindowClause4158); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_TumblingWindowClause4164); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            d_tree = this.adaptor.create(d);
            this.adaptor.addChild(root_0, d_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_TumblingWindowClause4168);
            v=this.p_VarName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
            if ( this.state.backtracking===0 ) {
              this.av(d, (v?v.stop:null));
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:638:106: ( p_TypeDeclaration )?
            var alt60=2;
            var LA60_0 = this.input.LA(1);

            if ( (LA60_0==AS) ) {
                alt60=1;
            }
            switch (alt60) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:638:106: p_TypeDeclaration
                    this.pushFollow(XQueryParser.FOLLOW_p_TypeDeclaration_in_p_TumblingWindowClause4172);
                    p_TypeDeclaration128=this.p_TypeDeclaration();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TypeDeclaration128.getTree());


                    break;

            }

            k=this.match(this.input,IN,XQueryParser.FOLLOW_IN_in_p_TumblingWindowClause4177); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_TumblingWindowClause4181);
            p_ExprSingle129=this.p_ExprSingle(true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle129.getTree());
            this.pushFollow(XQueryParser.FOLLOW_p_WindowStartCondition_in_p_TumblingWindowClause4184);
            p_WindowStartCondition130=this.p_WindowStartCondition();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_WindowStartCondition130.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:638:187: ( p_WindowEndCondition )?
            var alt61=2;
            var LA61_0 = this.input.LA(1);

            if ( (LA61_0==END||LA61_0==ONLY) ) {
                alt61=1;
            }
            switch (alt61) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:638:187: p_WindowEndCondition
                    this.pushFollow(XQueryParser.FOLLOW_p_WindowEndCondition_in_p_TumblingWindowClause4186);
                    p_WindowEndCondition131=this.p_WindowEndCondition();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_WindowEndCondition131.getTree());


                    break;

            }




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_SlidingWindowClause_return: (function() {
        XQueryParser.p_SlidingWindowClause_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_SlidingWindowClause_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:642:1: p_SlidingWindowClause : k= SLIDING k= WINDOW d= DOLLAR v= p_VarName ( p_TypeDeclaration )? k= IN p_ExprSingle[true] p_WindowStartCondition ( p_WindowEndCondition )? ;
    // $ANTLR start "p_SlidingWindowClause"
    p_SlidingWindowClause: function() {
        var retval = new XQueryParser.p_SlidingWindowClause_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var d = null;
         var v = null;
         var p_TypeDeclaration132 = null;
         var p_ExprSingle133 = null;
         var p_WindowStartCondition134 = null;
         var p_WindowEndCondition135 = null;

        var k_tree=null;
        var d_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:643:9: (k= SLIDING k= WINDOW d= DOLLAR v= p_VarName ( p_TypeDeclaration )? k= IN p_ExprSingle[true] p_WindowStartCondition ( p_WindowEndCondition )? )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:643:11: k= SLIDING k= WINDOW d= DOLLAR v= p_VarName ( p_TypeDeclaration )? k= IN p_ExprSingle[true] p_WindowStartCondition ( p_WindowEndCondition )?
            root_0 = this.adaptor.nil();

            k=this.match(this.input,SLIDING,XQueryParser.FOLLOW_SLIDING_in_p_SlidingWindowClause4215); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,WINDOW,XQueryParser.FOLLOW_WINDOW_in_p_SlidingWindowClause4221); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_SlidingWindowClause4227); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            d_tree = this.adaptor.create(d);
            this.adaptor.addChild(root_0, d_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_SlidingWindowClause4231);
            v=this.p_VarName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
            if ( this.state.backtracking===0 ) {
               this.av(d, (v?v.stop:null)); 
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:643:107: ( p_TypeDeclaration )?
            var alt62=2;
            var LA62_0 = this.input.LA(1);

            if ( (LA62_0==AS) ) {
                alt62=1;
            }
            switch (alt62) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:643:107: p_TypeDeclaration
                    this.pushFollow(XQueryParser.FOLLOW_p_TypeDeclaration_in_p_SlidingWindowClause4235);
                    p_TypeDeclaration132=this.p_TypeDeclaration();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TypeDeclaration132.getTree());


                    break;

            }

            k=this.match(this.input,IN,XQueryParser.FOLLOW_IN_in_p_SlidingWindowClause4240); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_SlidingWindowClause4244);
            p_ExprSingle133=this.p_ExprSingle(true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle133.getTree());
            this.pushFollow(XQueryParser.FOLLOW_p_WindowStartCondition_in_p_SlidingWindowClause4247);
            p_WindowStartCondition134=this.p_WindowStartCondition();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_WindowStartCondition134.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:643:188: ( p_WindowEndCondition )?
            var alt63=2;
            var LA63_0 = this.input.LA(1);

            if ( (LA63_0==END||LA63_0==ONLY) ) {
                alt63=1;
            }
            switch (alt63) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:643:188: p_WindowEndCondition
                    this.pushFollow(XQueryParser.FOLLOW_p_WindowEndCondition_in_p_SlidingWindowClause4249);
                    p_WindowEndCondition135=this.p_WindowEndCondition();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_WindowEndCondition135.getTree());


                    break;

            }




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_WindowStartCondition_return: (function() {
        XQueryParser.p_WindowStartCondition_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_WindowStartCondition_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:647:1: p_WindowStartCondition : k= START p_WindowVars k= WHEN p_ExprSingle[true] ;
    // $ANTLR start "p_WindowStartCondition"
    p_WindowStartCondition: function() {
        var retval = new XQueryParser.p_WindowStartCondition_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
         var p_WindowVars136 = null;
         var p_ExprSingle137 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:648:9: (k= START p_WindowVars k= WHEN p_ExprSingle[true] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:648:11: k= START p_WindowVars k= WHEN p_ExprSingle[true]
            root_0 = this.adaptor.nil();

            k=this.match(this.input,START,XQueryParser.FOLLOW_START_in_p_WindowStartCondition4278); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_WindowVars_in_p_WindowStartCondition4282);
            p_WindowVars136=this.p_WindowVars();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_WindowVars136.getTree());
            k=this.match(this.input,WHEN,XQueryParser.FOLLOW_WHEN_in_p_WindowStartCondition4286); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_WindowStartCondition4290);
            p_ExprSingle137=this.p_ExprSingle(true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle137.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_WindowEndCondition_return: (function() {
        XQueryParser.p_WindowEndCondition_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_WindowEndCondition_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:652:1: p_WindowEndCondition : (k= ONLY )? k= END p_WindowVars k= WHEN p_ExprSingle[true] ;
    // $ANTLR start "p_WindowEndCondition"
    p_WindowEndCondition: function() {
        var retval = new XQueryParser.p_WindowEndCondition_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
         var p_WindowVars138 = null;
         var p_ExprSingle139 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:653:9: ( (k= ONLY )? k= END p_WindowVars k= WHEN p_ExprSingle[true] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:653:11: (k= ONLY )? k= END p_WindowVars k= WHEN p_ExprSingle[true]
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:653:11: (k= ONLY )?
            var alt64=2;
            var LA64_0 = this.input.LA(1);

            if ( (LA64_0==ONLY) ) {
                alt64=1;
            }
            switch (alt64) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:653:12: k= ONLY
                    k=this.match(this.input,ONLY,XQueryParser.FOLLOW_ONLY_in_p_WindowEndCondition4320); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }


                    break;

            }

            k=this.match(this.input,END,XQueryParser.FOLLOW_END_in_p_WindowEndCondition4328); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_WindowVars_in_p_WindowEndCondition4332);
            p_WindowVars138=this.p_WindowVars();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_WindowVars138.getTree());
            k=this.match(this.input,WHEN,XQueryParser.FOLLOW_WHEN_in_p_WindowEndCondition4336); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_WindowEndCondition4340);
            p_ExprSingle139=this.p_ExprSingle(true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle139.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_WindowVars_return: (function() {
        XQueryParser.p_WindowVars_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_WindowVars_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:657:1: p_WindowVars : (d= DOLLAR v= p_CurrentItem )? ( p_PositionalVar )? (k= PREVIOUS DOLLAR p_PreviousItem )? (k= NEXT DOLLAR p_NextItem )? ;
    // $ANTLR start "p_WindowVars"
    p_WindowVars: function() {
        var retval = new XQueryParser.p_WindowVars_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var d = null;
        var k = null;
        var DOLLAR141 = null;
        var DOLLAR143 = null;
         var v = null;
         var p_PositionalVar140 = null;
         var p_PreviousItem142 = null;
         var p_NextItem144 = null;

        var d_tree=null;
        var k_tree=null;
        var DOLLAR141_tree=null;
        var DOLLAR143_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:658:9: ( (d= DOLLAR v= p_CurrentItem )? ( p_PositionalVar )? (k= PREVIOUS DOLLAR p_PreviousItem )? (k= NEXT DOLLAR p_NextItem )? )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:658:11: (d= DOLLAR v= p_CurrentItem )? ( p_PositionalVar )? (k= PREVIOUS DOLLAR p_PreviousItem )? (k= NEXT DOLLAR p_NextItem )?
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:658:11: (d= DOLLAR v= p_CurrentItem )?
            var alt65=2;
            var LA65_0 = this.input.LA(1);

            if ( (LA65_0==DOLLAR) ) {
                alt65=1;
            }
            switch (alt65) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:658:12: d= DOLLAR v= p_CurrentItem
                    d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_WindowVars4370); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    d_tree = this.adaptor.create(d);
                    this.adaptor.addChild(root_0, d_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_CurrentItem_in_p_WindowVars4374);
                    v=this.p_CurrentItem();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
                    if ( this.state.backtracking===0 ) {
                       this.av(d, (v?v.stop:null)); 
                    }


                    break;

            }

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:658:65: ( p_PositionalVar )?
            var alt66=2;
            var LA66_0 = this.input.LA(1);

            if ( (LA66_0==AT) ) {
                alt66=1;
            }
            switch (alt66) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:658:65: p_PositionalVar
                    this.pushFollow(XQueryParser.FOLLOW_p_PositionalVar_in_p_WindowVars4380);
                    p_PositionalVar140=this.p_PositionalVar();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PositionalVar140.getTree());


                    break;

            }

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:658:82: (k= PREVIOUS DOLLAR p_PreviousItem )?
            var alt67=2;
            var LA67_0 = this.input.LA(1);

            if ( (LA67_0==PREVIOUS) ) {
                alt67=1;
            }
            switch (alt67) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:658:83: k= PREVIOUS DOLLAR p_PreviousItem
                    k=this.match(this.input,PREVIOUS,XQueryParser.FOLLOW_PREVIOUS_in_p_WindowVars4386); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    DOLLAR141=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_WindowVars4390); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    DOLLAR141_tree = this.adaptor.create(DOLLAR141);
                    this.adaptor.addChild(root_0, DOLLAR141_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_PreviousItem_in_p_WindowVars4392);
                    p_PreviousItem142=this.p_PreviousItem();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PreviousItem142.getTree());


                    break;

            }

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:658:133: (k= NEXT DOLLAR p_NextItem )?
            var alt68=2;
            var LA68_0 = this.input.LA(1);

            if ( (LA68_0==NEXT) ) {
                alt68=1;
            }
            switch (alt68) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:658:134: k= NEXT DOLLAR p_NextItem
                    k=this.match(this.input,NEXT,XQueryParser.FOLLOW_NEXT_in_p_WindowVars4399); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    DOLLAR143=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_WindowVars4403); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    DOLLAR143_tree = this.adaptor.create(DOLLAR143);
                    this.adaptor.addChild(root_0, DOLLAR143_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_NextItem_in_p_WindowVars4405);
                    p_NextItem144=this.p_NextItem();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NextItem144.getTree());


                    break;

            }




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_CurrentItem_return: (function() {
        XQueryParser.p_CurrentItem_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_CurrentItem_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:662:1: p_CurrentItem : p_EQName ;
    // $ANTLR start "p_CurrentItem"
    p_CurrentItem: function() {
        var retval = new XQueryParser.p_CurrentItem_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_EQName145 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:663:9: ( p_EQName )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:663:11: p_EQName
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_p_CurrentItem4433);
            p_EQName145=this.p_EQName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_EQName145.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_PreviousItem_return: (function() {
        XQueryParser.p_PreviousItem_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_PreviousItem_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:667:1: p_PreviousItem : p_EQName ;
    // $ANTLR start "p_PreviousItem"
    p_PreviousItem: function() {
        var retval = new XQueryParser.p_PreviousItem_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_EQName146 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:668:9: ( p_EQName )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:668:11: p_EQName
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_p_PreviousItem4459);
            p_EQName146=this.p_EQName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_EQName146.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_NextItem_return: (function() {
        XQueryParser.p_NextItem_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_NextItem_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:672:1: p_NextItem : p_EQName ;
    // $ANTLR start "p_NextItem"
    p_NextItem: function() {
        var retval = new XQueryParser.p_NextItem_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_EQName147 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:673:9: ( p_EQName )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:673:11: p_EQName
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_p_NextItem4485);
            p_EQName147=this.p_EQName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_EQName147.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_CountClause_return: (function() {
        XQueryParser.p_CountClause_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_CountClause_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:677:1: p_CountClause : k= COUNT d= DOLLAR v= p_VarName ;
    // $ANTLR start "p_CountClause"
    p_CountClause: function() {
        var retval = new XQueryParser.p_CountClause_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var d = null;
         var v = null;

        var k_tree=null;
        var d_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:678:9: (k= COUNT d= DOLLAR v= p_VarName )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:678:11: k= COUNT d= DOLLAR v= p_VarName
            root_0 = this.adaptor.nil();

            k=this.match(this.input,COUNT,XQueryParser.FOLLOW_COUNT_in_p_CountClause4513); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_CountClause4519); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            d_tree = this.adaptor.create(d);
            this.adaptor.addChild(root_0, d_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_CountClause4523);
            v=this.p_VarName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
            if ( this.state.backtracking===0 ) {
               this.av(d, (v?v.stop:null)); 
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_WhereClause_return: (function() {
        XQueryParser.p_WhereClause_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_WhereClause_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:682:1: p_WhereClause : k= WHERE p_ExprSingle[true] ;
    // $ANTLR start "p_WhereClause"
    p_WhereClause: function() {
        var retval = new XQueryParser.p_WhereClause_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
         var p_ExprSingle148 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:683:9: (k= WHERE p_ExprSingle[true] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:683:11: k= WHERE p_ExprSingle[true]
            root_0 = this.adaptor.nil();

            k=this.match(this.input,WHERE,XQueryParser.FOLLOW_WHERE_in_p_WhereClause4561); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_WhereClause4565);
            p_ExprSingle148=this.p_ExprSingle(true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle148.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_GroupByClause_return: (function() {
        XQueryParser.p_GroupByClause_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_GroupByClause_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:687:1: p_GroupByClause : k= GROUP k= BY p_GroupingSpecList ;
    // $ANTLR start "p_GroupByClause"
    p_GroupByClause: function() {
        var retval = new XQueryParser.p_GroupByClause_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
         var p_GroupingSpecList149 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:688:9: (k= GROUP k= BY p_GroupingSpecList )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:688:11: k= GROUP k= BY p_GroupingSpecList
            root_0 = this.adaptor.nil();

            k=this.match(this.input,GROUP,XQueryParser.FOLLOW_GROUP_in_p_GroupByClause4594); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,BY,XQueryParser.FOLLOW_BY_in_p_GroupByClause4600); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_GroupingSpecList_in_p_GroupByClause4604);
            p_GroupingSpecList149=this.p_GroupingSpecList();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_GroupingSpecList149.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_GroupingSpecList_return: (function() {
        XQueryParser.p_GroupingSpecList_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_GroupingSpecList_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:692:1: p_GroupingSpecList : p_GroupingSpec ( COMMA p_GroupingSpec )* ;
    // $ANTLR start "p_GroupingSpecList"
    p_GroupingSpecList: function() {
        var retval = new XQueryParser.p_GroupingSpecList_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var COMMA151 = null;
         var p_GroupingSpec150 = null;
         var p_GroupingSpec152 = null;

        var COMMA151_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:693:9: ( p_GroupingSpec ( COMMA p_GroupingSpec )* )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:693:11: p_GroupingSpec ( COMMA p_GroupingSpec )*
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_GroupingSpec_in_p_GroupingSpecList4630);
            p_GroupingSpec150=this.p_GroupingSpec();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_GroupingSpec150.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:693:26: ( COMMA p_GroupingSpec )*
            loop69:
            do {
                var alt69=2;
                var LA69_0 = this.input.LA(1);

                if ( (LA69_0==COMMA) ) {
                    alt69=1;
                }


                switch (alt69) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:693:27: COMMA p_GroupingSpec
                    COMMA151=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_GroupingSpecList4633); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    COMMA151_tree = this.adaptor.create(COMMA151);
                    this.adaptor.addChild(root_0, COMMA151_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_GroupingSpec_in_p_GroupingSpecList4635);
                    p_GroupingSpec152=this.p_GroupingSpec();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_GroupingSpec152.getTree());


                    break;

                default :
                    break loop69;
                }
            } while (true);




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_GroupingSpec_return: (function() {
        XQueryParser.p_GroupingSpec_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_GroupingSpec_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:697:1: p_GroupingSpec : p_GroupingVariable ( ( p_TypeDeclaration )? BIND p_ExprSingle[true] )? (k= COLLATION p_StringLiteral )? ;
    // $ANTLR start "p_GroupingSpec"
    p_GroupingSpec: function() {
        var retval = new XQueryParser.p_GroupingSpec_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var BIND155 = null;
         var p_GroupingVariable153 = null;
         var p_TypeDeclaration154 = null;
         var p_ExprSingle156 = null;
         var p_StringLiteral157 = null;

        var k_tree=null;
        var BIND155_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:698:9: ( p_GroupingVariable ( ( p_TypeDeclaration )? BIND p_ExprSingle[true] )? (k= COLLATION p_StringLiteral )? )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:698:11: p_GroupingVariable ( ( p_TypeDeclaration )? BIND p_ExprSingle[true] )? (k= COLLATION p_StringLiteral )?
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_GroupingVariable_in_p_GroupingSpec4663);
            p_GroupingVariable153=this.p_GroupingVariable();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_GroupingVariable153.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:698:30: ( ( p_TypeDeclaration )? BIND p_ExprSingle[true] )?
            var alt71=2;
            var LA71_0 = this.input.LA(1);

            if ( (LA71_0==AS||LA71_0==BIND) ) {
                alt71=1;
            }
            switch (alt71) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:698:31: ( p_TypeDeclaration )? BIND p_ExprSingle[true]
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:698:31: ( p_TypeDeclaration )?
                    var alt70=2;
                    var LA70_0 = this.input.LA(1);

                    if ( (LA70_0==AS) ) {
                        alt70=1;
                    }
                    switch (alt70) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:698:31: p_TypeDeclaration
                            this.pushFollow(XQueryParser.FOLLOW_p_TypeDeclaration_in_p_GroupingSpec4666);
                            p_TypeDeclaration154=this.p_TypeDeclaration();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TypeDeclaration154.getTree());


                            break;

                    }

                    BIND155=this.match(this.input,BIND,XQueryParser.FOLLOW_BIND_in_p_GroupingSpec4669); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    BIND155_tree = this.adaptor.create(BIND155);
                    this.adaptor.addChild(root_0, BIND155_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_GroupingSpec4671);
                    p_ExprSingle156=this.p_ExprSingle(true);

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle156.getTree());


                    break;

            }

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:698:76: (k= COLLATION p_StringLiteral )?
            var alt72=2;
            var LA72_0 = this.input.LA(1);

            if ( (LA72_0==COLLATION) ) {
                alt72=1;
            }
            switch (alt72) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:698:77: k= COLLATION p_StringLiteral
                    k=this.match(this.input,COLLATION,XQueryParser.FOLLOW_COLLATION_in_p_GroupingSpec4679); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_GroupingSpec4683);
                    p_StringLiteral157=this.p_StringLiteral();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral157.getTree());


                    break;

            }




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_GroupingVariable_return: (function() {
        XQueryParser.p_GroupingVariable_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_GroupingVariable_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:701:1: p_GroupingVariable : d= DOLLAR v= p_VarName ;
    // $ANTLR start "p_GroupingVariable"
    p_GroupingVariable: function() {
        var retval = new XQueryParser.p_GroupingVariable_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var d = null;
         var v = null;

        var d_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:702:9: (d= DOLLAR v= p_VarName )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:702:11: d= DOLLAR v= p_VarName
            root_0 = this.adaptor.nil();

            d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_GroupingVariable4712); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            d_tree = this.adaptor.create(d);
            this.adaptor.addChild(root_0, d_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_GroupingVariable4716);
            v=this.p_VarName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
            if ( this.state.backtracking===0 ) {
               this.av(d, (v?v.stop:null)); 
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_OrderByClause_return: (function() {
        XQueryParser.p_OrderByClause_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_OrderByClause_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:706:1: p_OrderByClause : ( (k+= ORDER k+= BY ) | (k+= STABLE k+= ORDER k+= BY ) ) p_OrderSpecList ;
    // $ANTLR start "p_OrderByClause"
    p_OrderByClause: function() {
        var retval = new XQueryParser.p_OrderByClause_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var list_k=null;
         var p_OrderSpecList158 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:707:9: ( ( (k+= ORDER k+= BY ) | (k+= STABLE k+= ORDER k+= BY ) ) p_OrderSpecList )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:707:11: ( (k+= ORDER k+= BY ) | (k+= STABLE k+= ORDER k+= BY ) ) p_OrderSpecList
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:707:11: ( (k+= ORDER k+= BY ) | (k+= STABLE k+= ORDER k+= BY ) )
            var alt73=2;
            var LA73_0 = this.input.LA(1);

            if ( (LA73_0==ORDER) ) {
                alt73=1;
            }
            else if ( (LA73_0==STABLE) ) {
                alt73=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 73, 0, this.input);

                throw nvae;
            }
            switch (alt73) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:707:12: (k+= ORDER k+= BY )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:707:12: (k+= ORDER k+= BY )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:707:13: k+= ORDER k+= BY
                    k=this.match(this.input,ORDER,XQueryParser.FOLLOW_ORDER_in_p_OrderByClause4748); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    k=this.match(this.input,BY,XQueryParser.FOLLOW_BY_in_p_OrderByClause4752); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);






                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:707:31: (k+= STABLE k+= ORDER k+= BY )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:707:31: (k+= STABLE k+= ORDER k+= BY )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:707:32: k+= STABLE k+= ORDER k+= BY
                    k=this.match(this.input,STABLE,XQueryParser.FOLLOW_STABLE_in_p_OrderByClause4760); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    k=this.match(this.input,ORDER,XQueryParser.FOLLOW_ORDER_in_p_OrderByClause4764); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    k=this.match(this.input,BY,XQueryParser.FOLLOW_BY_in_p_OrderByClause4768); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);






                    break;

            }

            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_OrderSpecList_in_p_OrderByClause4774);
            p_OrderSpecList158=this.p_OrderSpecList();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_OrderSpecList158.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_OrderSpecList_return: (function() {
        XQueryParser.p_OrderSpecList_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_OrderSpecList_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:711:1: p_OrderSpecList : p_OrderSpec ( COMMA p_OrderSpec )* ;
    // $ANTLR start "p_OrderSpecList"
    p_OrderSpecList: function() {
        var retval = new XQueryParser.p_OrderSpecList_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var COMMA160 = null;
         var p_OrderSpec159 = null;
         var p_OrderSpec161 = null;

        var COMMA160_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:712:9: ( p_OrderSpec ( COMMA p_OrderSpec )* )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:712:11: p_OrderSpec ( COMMA p_OrderSpec )*
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_OrderSpec_in_p_OrderSpecList4800);
            p_OrderSpec159=this.p_OrderSpec();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_OrderSpec159.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:712:23: ( COMMA p_OrderSpec )*
            loop74:
            do {
                var alt74=2;
                var LA74_0 = this.input.LA(1);

                if ( (LA74_0==COMMA) ) {
                    alt74=1;
                }


                switch (alt74) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:712:24: COMMA p_OrderSpec
                    COMMA160=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_OrderSpecList4803); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    COMMA160_tree = this.adaptor.create(COMMA160);
                    this.adaptor.addChild(root_0, COMMA160_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_OrderSpec_in_p_OrderSpecList4805);
                    p_OrderSpec161=this.p_OrderSpec();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_OrderSpec161.getTree());


                    break;

                default :
                    break loop74;
                }
            } while (true);




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_OrderSpec_return: (function() {
        XQueryParser.p_OrderSpec_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_OrderSpec_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:716:1: p_OrderSpec : p_ExprSingle[true] p_OrderModifier ;
    // $ANTLR start "p_OrderSpec"
    p_OrderSpec: function() {
        var retval = new XQueryParser.p_OrderSpec_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_ExprSingle162 = null;
         var p_OrderModifier163 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:717:9: ( p_ExprSingle[true] p_OrderModifier )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:717:11: p_ExprSingle[true] p_OrderModifier
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_OrderSpec4833);
            p_ExprSingle162=this.p_ExprSingle(true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle162.getTree());
            this.pushFollow(XQueryParser.FOLLOW_p_OrderModifier_in_p_OrderSpec4836);
            p_OrderModifier163=this.p_OrderModifier();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_OrderModifier163.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_OrderModifier_return: (function() {
        XQueryParser.p_OrderModifier_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_OrderModifier_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:721:1: p_OrderModifier : (k+= ASCENDING | k+= DESCENDING )? (k+= EMPTY (k+= GREATEST | k+= LEAST ) )? (k+= COLLATION p_StringLiteral )? ;
    // $ANTLR start "p_OrderModifier"
    p_OrderModifier: function() {
        var retval = new XQueryParser.p_OrderModifier_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var list_k=null;
         var p_StringLiteral164 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:722:9: ( (k+= ASCENDING | k+= DESCENDING )? (k+= EMPTY (k+= GREATEST | k+= LEAST ) )? (k+= COLLATION p_StringLiteral )? )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:722:11: (k+= ASCENDING | k+= DESCENDING )? (k+= EMPTY (k+= GREATEST | k+= LEAST ) )? (k+= COLLATION p_StringLiteral )?
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:722:11: (k+= ASCENDING | k+= DESCENDING )?
            var alt75=3;
            var LA75_0 = this.input.LA(1);

            if ( (LA75_0==ASCENDING) ) {
                alt75=1;
            }
            else if ( (LA75_0==DESCENDING) ) {
                alt75=2;
            }
            switch (alt75) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:722:12: k+= ASCENDING
                    k=this.match(this.input,ASCENDING,XQueryParser.FOLLOW_ASCENDING_in_p_OrderModifier4865); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);



                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:722:27: k+= DESCENDING
                    k=this.match(this.input,DESCENDING,XQueryParser.FOLLOW_DESCENDING_in_p_OrderModifier4871); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);



                    break;

            }

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:722:43: (k+= EMPTY (k+= GREATEST | k+= LEAST ) )?
            var alt77=2;
            var LA77_0 = this.input.LA(1);

            if ( (LA77_0==EMPTY) ) {
                alt77=1;
            }
            switch (alt77) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:722:44: k+= EMPTY (k+= GREATEST | k+= LEAST )
                    k=this.match(this.input,EMPTY,XQueryParser.FOLLOW_EMPTY_in_p_OrderModifier4878); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:722:53: (k+= GREATEST | k+= LEAST )
                    var alt76=2;
                    var LA76_0 = this.input.LA(1);

                    if ( (LA76_0==GREATEST) ) {
                        alt76=1;
                    }
                    else if ( (LA76_0==LEAST) ) {
                        alt76=2;
                    }
                    else {
                        if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        var nvae =
                            new org.antlr.runtime.NoViableAltException("", 76, 0, this.input);

                        throw nvae;
                    }
                    switch (alt76) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:722:54: k+= GREATEST
                            k=this.match(this.input,GREATEST,XQueryParser.FOLLOW_GREATEST_in_p_OrderModifier4883); if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) {
                            k_tree = this.adaptor.create(k);
                            this.adaptor.addChild(root_0, k_tree);
                            }
                            if (org.antlr.lang.isNull(list_k)) list_k = [];
                            list_k.push(k);



                            break;
                        case 2 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:722:68: k+= LEAST
                            k=this.match(this.input,LEAST,XQueryParser.FOLLOW_LEAST_in_p_OrderModifier4889); if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) {
                            k_tree = this.adaptor.create(k);
                            this.adaptor.addChild(root_0, k_tree);
                            }
                            if (org.antlr.lang.isNull(list_k)) list_k = [];
                            list_k.push(k);



                            break;

                    }



                    break;

            }

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:722:80: (k+= COLLATION p_StringLiteral )?
            var alt78=2;
            var LA78_0 = this.input.LA(1);

            if ( (LA78_0==COLLATION) ) {
                alt78=1;
            }
            switch (alt78) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:722:81: k+= COLLATION p_StringLiteral
                    k=this.match(this.input,COLLATION,XQueryParser.FOLLOW_COLLATION_in_p_OrderModifier4897); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_OrderModifier4899);
                    p_StringLiteral164=this.p_StringLiteral();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral164.getTree());


                    break;

            }

            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ReturnHybrid_return: (function() {
        XQueryParser.p_ReturnHybrid_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ReturnHybrid_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:726:1: p_ReturnHybrid[strict] : k= RETURN p_Hybrid[$strict,false] ;
    // $ANTLR start "p_ReturnHybrid"
    p_ReturnHybrid: function(strict) {
        var retval = new XQueryParser.p_ReturnHybrid_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
         var p_Hybrid165 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:727:9: (k= RETURN p_Hybrid[$strict,false] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:727:11: k= RETURN p_Hybrid[$strict,false]
            root_0 = this.adaptor.nil();

            k=this.match(this.input,RETURN,XQueryParser.FOLLOW_RETURN_in_p_ReturnHybrid4932); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_Hybrid_in_p_ReturnHybrid4936);
            p_Hybrid165=this.p_Hybrid(strict, false);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Hybrid165.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_QuantifiedExpr_return: (function() {
        XQueryParser.p_QuantifiedExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_QuantifiedExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:731:1: p_QuantifiedExpr : (k= SOME | k= EVERY ) d= DOLLAR v= p_VarName ( p_TypeDeclaration )? k= IN p_ExprSingle[true] ( COMMA e= DOLLAR w= p_EQName ( p_TypeDeclaration )? k= IN p_ExprSingle[true] )* k= SATISFIES p_ExprSingle[true] ;
    // $ANTLR start "p_QuantifiedExpr"
    p_QuantifiedExpr: function() {
        var retval = new XQueryParser.p_QuantifiedExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var d = null;
        var e = null;
        var COMMA168 = null;
         var v = null;
         var w = null;
         var p_TypeDeclaration166 = null;
         var p_ExprSingle167 = null;
         var p_TypeDeclaration169 = null;
         var p_ExprSingle170 = null;
         var p_ExprSingle171 = null;

        var k_tree=null;
        var d_tree=null;
        var e_tree=null;
        var COMMA168_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:732:9: ( (k= SOME | k= EVERY ) d= DOLLAR v= p_VarName ( p_TypeDeclaration )? k= IN p_ExprSingle[true] ( COMMA e= DOLLAR w= p_EQName ( p_TypeDeclaration )? k= IN p_ExprSingle[true] )* k= SATISFIES p_ExprSingle[true] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:732:11: (k= SOME | k= EVERY ) d= DOLLAR v= p_VarName ( p_TypeDeclaration )? k= IN p_ExprSingle[true] ( COMMA e= DOLLAR w= p_EQName ( p_TypeDeclaration )? k= IN p_ExprSingle[true] )* k= SATISFIES p_ExprSingle[true]
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:732:11: (k= SOME | k= EVERY )
            var alt79=2;
            var LA79_0 = this.input.LA(1);

            if ( (LA79_0==SOME) ) {
                alt79=1;
            }
            else if ( (LA79_0==EVERY) ) {
                alt79=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 79, 0, this.input);

                throw nvae;
            }
            switch (alt79) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:732:12: k= SOME
                    k=this.match(this.input,SOME,XQueryParser.FOLLOW_SOME_in_p_QuantifiedExpr4966); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:732:21: k= EVERY
                    k=this.match(this.input,EVERY,XQueryParser.FOLLOW_EVERY_in_p_QuantifiedExpr4972); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }


                    break;

            }

            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_QuantifiedExpr4979); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            d_tree = this.adaptor.create(d);
            this.adaptor.addChild(root_0, d_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_QuantifiedExpr4983);
            v=this.p_VarName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
            if ( this.state.backtracking===0 ) {
               this.av(d, (v?v.stop:null)); 
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:732:92: ( p_TypeDeclaration )?
            var alt80=2;
            var LA80_0 = this.input.LA(1);

            if ( (LA80_0==AS) ) {
                alt80=1;
            }
            switch (alt80) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:732:92: p_TypeDeclaration
                    this.pushFollow(XQueryParser.FOLLOW_p_TypeDeclaration_in_p_QuantifiedExpr4987);
                    p_TypeDeclaration166=this.p_TypeDeclaration();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TypeDeclaration166.getTree());


                    break;

            }

            k=this.match(this.input,IN,XQueryParser.FOLLOW_IN_in_p_QuantifiedExpr4992); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_QuantifiedExpr4996);
            p_ExprSingle167=this.p_ExprSingle(true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle167.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:732:150: ( COMMA e= DOLLAR w= p_EQName ( p_TypeDeclaration )? k= IN p_ExprSingle[true] )*
            loop82:
            do {
                var alt82=2;
                var LA82_0 = this.input.LA(1);

                if ( (LA82_0==COMMA) ) {
                    alt82=1;
                }


                switch (alt82) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:732:151: COMMA e= DOLLAR w= p_EQName ( p_TypeDeclaration )? k= IN p_ExprSingle[true]
                    COMMA168=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_QuantifiedExpr5000); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    COMMA168_tree = this.adaptor.create(COMMA168);
                    this.adaptor.addChild(root_0, COMMA168_tree);
                    }
                    e=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_QuantifiedExpr5004); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    e_tree = this.adaptor.create(e);
                    this.adaptor.addChild(root_0, e_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_p_QuantifiedExpr5008);
                    w=this.p_EQName();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, w.getTree());
                    if ( this.state.backtracking===0 ) {
                      this.av(e, (w?w.stop:null));
                    }
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:732:201: ( p_TypeDeclaration )?
                    var alt81=2;
                    var LA81_0 = this.input.LA(1);

                    if ( (LA81_0==AS) ) {
                        alt81=1;
                    }
                    switch (alt81) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:732:201: p_TypeDeclaration
                            this.pushFollow(XQueryParser.FOLLOW_p_TypeDeclaration_in_p_QuantifiedExpr5012);
                            p_TypeDeclaration169=this.p_TypeDeclaration();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TypeDeclaration169.getTree());


                            break;

                    }

                    k=this.match(this.input,IN,XQueryParser.FOLLOW_IN_in_p_QuantifiedExpr5017); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_QuantifiedExpr5021);
                    p_ExprSingle170=this.p_ExprSingle(true);

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle170.getTree());


                    break;

                default :
                    break loop82;
                }
            } while (true);

            k=this.match(this.input,SATISFIES,XQueryParser.FOLLOW_SATISFIES_in_p_QuantifiedExpr5028); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_QuantifiedExpr5032);
            p_ExprSingle171=this.p_ExprSingle(true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle171.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_SwitchHybrid_return: (function() {
        XQueryParser.p_SwitchHybrid_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_SwitchHybrid_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:736:1: p_SwitchHybrid[strict] : k= SWITCH LPAREN p_Expr[true,true] RPAREN ( p_SwitchCaseHybrid[$strict] )+ k= DEFAULT k= RETURN p_Hybrid[$strict,false] ;
    // $ANTLR start "p_SwitchHybrid"
    p_SwitchHybrid: function(strict) {
        var retval = new XQueryParser.p_SwitchHybrid_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var LPAREN172 = null;
        var RPAREN174 = null;
         var p_Expr173 = null;
         var p_SwitchCaseHybrid175 = null;
         var p_Hybrid176 = null;

        var k_tree=null;
        var LPAREN172_tree=null;
        var RPAREN174_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:737:9: (k= SWITCH LPAREN p_Expr[true,true] RPAREN ( p_SwitchCaseHybrid[$strict] )+ k= DEFAULT k= RETURN p_Hybrid[$strict,false] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:737:11: k= SWITCH LPAREN p_Expr[true,true] RPAREN ( p_SwitchCaseHybrid[$strict] )+ k= DEFAULT k= RETURN p_Hybrid[$strict,false]
            root_0 = this.adaptor.nil();

            k=this.match(this.input,SWITCH,XQueryParser.FOLLOW_SWITCH_in_p_SwitchHybrid5062); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            LPAREN172=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_SwitchHybrid5066); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LPAREN172_tree = this.adaptor.create(LPAREN172);
            this.adaptor.addChild(root_0, LPAREN172_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_SwitchHybrid5068);
            p_Expr173=this.p_Expr(true, true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr173.getTree());
            RPAREN174=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_SwitchHybrid5071); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RPAREN174_tree = this.adaptor.create(RPAREN174);
            this.adaptor.addChild(root_0, RPAREN174_tree);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:737:67: ( p_SwitchCaseHybrid[$strict] )+
            var cnt83=0;
            loop83:
            do {
                var alt83=2;
                var LA83_0 = this.input.LA(1);

                if ( (LA83_0==CASE) ) {
                    alt83=1;
                }


                switch (alt83) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:737:67: p_SwitchCaseHybrid[$strict]
                    this.pushFollow(XQueryParser.FOLLOW_p_SwitchCaseHybrid_in_p_SwitchHybrid5073);
                    p_SwitchCaseHybrid175=this.p_SwitchCaseHybrid(strict);

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SwitchCaseHybrid175.getTree());


                    break;

                default :
                    if ( cnt83 >= 1 ) {
                        break loop83;
                    }
                    if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        var eee = new org.antlr.runtime.EarlyExitException(83, this.input);
                        throw eee;
                }
                cnt83++;
            } while (true);

            k=this.match(this.input,DEFAULT,XQueryParser.FOLLOW_DEFAULT_in_p_SwitchHybrid5079); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,RETURN,XQueryParser.FOLLOW_RETURN_in_p_SwitchHybrid5085); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_Hybrid_in_p_SwitchHybrid5089);
            p_Hybrid176=this.p_Hybrid(strict, false);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Hybrid176.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_SwitchCaseHybrid_return: (function() {
        XQueryParser.p_SwitchCaseHybrid_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_SwitchCaseHybrid_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:741:1: p_SwitchCaseHybrid[strict] : (k= CASE p_SwitchCaseOperand )+ k= RETURN p_Hybrid[$strict,false] ;
    // $ANTLR start "p_SwitchCaseHybrid"
    p_SwitchCaseHybrid: function(strict) {
        var retval = new XQueryParser.p_SwitchCaseHybrid_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
         var p_SwitchCaseOperand177 = null;
         var p_Hybrid178 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:742:9: ( (k= CASE p_SwitchCaseOperand )+ k= RETURN p_Hybrid[$strict,false] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:742:11: (k= CASE p_SwitchCaseOperand )+ k= RETURN p_Hybrid[$strict,false]
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:742:11: (k= CASE p_SwitchCaseOperand )+
            var cnt84=0;
            loop84:
            do {
                var alt84=2;
                var LA84_0 = this.input.LA(1);

                if ( (LA84_0==CASE) ) {
                    alt84=1;
                }


                switch (alt84) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:742:12: k= CASE p_SwitchCaseOperand
                    k=this.match(this.input,CASE,XQueryParser.FOLLOW_CASE_in_p_SwitchCaseHybrid5120); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_SwitchCaseOperand_in_p_SwitchCaseHybrid5124);
                    p_SwitchCaseOperand177=this.p_SwitchCaseOperand();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SwitchCaseOperand177.getTree());


                    break;

                default :
                    if ( cnt84 >= 1 ) {
                        break loop84;
                    }
                    if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        var eee = new org.antlr.runtime.EarlyExitException(84, this.input);
                        throw eee;
                }
                cnt84++;
            } while (true);

            k=this.match(this.input,RETURN,XQueryParser.FOLLOW_RETURN_in_p_SwitchCaseHybrid5130); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_Hybrid_in_p_SwitchCaseHybrid5134);
            p_Hybrid178=this.p_Hybrid(strict, false);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Hybrid178.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_SwitchCaseOperand_return: (function() {
        XQueryParser.p_SwitchCaseOperand_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_SwitchCaseOperand_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:746:1: p_SwitchCaseOperand : p_ExprSingle[true] ;
    // $ANTLR start "p_SwitchCaseOperand"
    p_SwitchCaseOperand: function() {
        var retval = new XQueryParser.p_SwitchCaseOperand_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_ExprSingle179 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:747:9: ( p_ExprSingle[true] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:747:11: p_ExprSingle[true]
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_SwitchCaseOperand5161);
            p_ExprSingle179=this.p_ExprSingle(true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle179.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_TypeswitchHybrid_return: (function() {
        XQueryParser.p_TypeswitchHybrid_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_TypeswitchHybrid_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:751:1: p_TypeswitchHybrid[strict] : k= TYPESWITCH LPAREN p_Expr[true,true] RPAREN ( p_CaseHybrid[$strict] )+ k= DEFAULT (d= DOLLAR v= p_VarName )? k= RETURN p_Hybrid[$strict,false] ;
    // $ANTLR start "p_TypeswitchHybrid"
    p_TypeswitchHybrid: function(strict) {
        var retval = new XQueryParser.p_TypeswitchHybrid_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var d = null;
        var LPAREN180 = null;
        var RPAREN182 = null;
         var v = null;
         var p_Expr181 = null;
         var p_CaseHybrid183 = null;
         var p_Hybrid184 = null;

        var k_tree=null;
        var d_tree=null;
        var LPAREN180_tree=null;
        var RPAREN182_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:752:9: (k= TYPESWITCH LPAREN p_Expr[true,true] RPAREN ( p_CaseHybrid[$strict] )+ k= DEFAULT (d= DOLLAR v= p_VarName )? k= RETURN p_Hybrid[$strict,false] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:752:11: k= TYPESWITCH LPAREN p_Expr[true,true] RPAREN ( p_CaseHybrid[$strict] )+ k= DEFAULT (d= DOLLAR v= p_VarName )? k= RETURN p_Hybrid[$strict,false]
            root_0 = this.adaptor.nil();

            k=this.match(this.input,TYPESWITCH,XQueryParser.FOLLOW_TYPESWITCH_in_p_TypeswitchHybrid5191); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            LPAREN180=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_TypeswitchHybrid5195); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LPAREN180_tree = this.adaptor.create(LPAREN180);
            this.adaptor.addChild(root_0, LPAREN180_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_TypeswitchHybrid5197);
            p_Expr181=this.p_Expr(true, true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr181.getTree());
            RPAREN182=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_TypeswitchHybrid5200); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RPAREN182_tree = this.adaptor.create(RPAREN182);
            this.adaptor.addChild(root_0, RPAREN182_tree);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:752:71: ( p_CaseHybrid[$strict] )+
            var cnt85=0;
            loop85:
            do {
                var alt85=2;
                var LA85_0 = this.input.LA(1);

                if ( (LA85_0==CASE) ) {
                    alt85=1;
                }


                switch (alt85) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:752:71: p_CaseHybrid[$strict]
                    this.pushFollow(XQueryParser.FOLLOW_p_CaseHybrid_in_p_TypeswitchHybrid5202);
                    p_CaseHybrid183=this.p_CaseHybrid(strict);

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_CaseHybrid183.getTree());


                    break;

                default :
                    if ( cnt85 >= 1 ) {
                        break loop85;
                    }
                    if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        var eee = new org.antlr.runtime.EarlyExitException(85, this.input);
                        throw eee;
                }
                cnt85++;
            } while (true);

            k=this.match(this.input,DEFAULT,XQueryParser.FOLLOW_DEFAULT_in_p_TypeswitchHybrid5208); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:752:119: (d= DOLLAR v= p_VarName )?
            var alt86=2;
            var LA86_0 = this.input.LA(1);

            if ( (LA86_0==DOLLAR) ) {
                alt86=1;
            }
            switch (alt86) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:752:120: d= DOLLAR v= p_VarName
                    d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_TypeswitchHybrid5215); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    d_tree = this.adaptor.create(d);
                    this.adaptor.addChild(root_0, d_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_TypeswitchHybrid5219);
                    v=this.p_VarName();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
                    if ( this.state.backtracking===0 ) {
                       this.av(d, (v?v.stop:null)); 
                    }


                    break;

            }

            k=this.match(this.input,RETURN,XQueryParser.FOLLOW_RETURN_in_p_TypeswitchHybrid5227); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_Hybrid_in_p_TypeswitchHybrid5231);
            p_Hybrid184=this.p_Hybrid(strict, false);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Hybrid184.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_CaseHybrid_return: (function() {
        XQueryParser.p_CaseHybrid_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_CaseHybrid_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:756:1: p_CaseHybrid[strict] : k= CASE (d= DOLLAR v= p_VarName k= AS )? p_SequenceTypeUnion k= RETURN p_ExprSingle[false] ;
    // $ANTLR start "p_CaseHybrid"
    p_CaseHybrid: function(strict) {
        var retval = new XQueryParser.p_CaseHybrid_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var d = null;
         var v = null;
         var p_SequenceTypeUnion185 = null;
         var p_ExprSingle186 = null;

        var k_tree=null;
        var d_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:757:9: (k= CASE (d= DOLLAR v= p_VarName k= AS )? p_SequenceTypeUnion k= RETURN p_ExprSingle[false] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:757:11: k= CASE (d= DOLLAR v= p_VarName k= AS )? p_SequenceTypeUnion k= RETURN p_ExprSingle[false]
            root_0 = this.adaptor.nil();

            k=this.match(this.input,CASE,XQueryParser.FOLLOW_CASE_in_p_CaseHybrid5261); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:757:33: (d= DOLLAR v= p_VarName k= AS )?
            var alt87=2;
            var LA87_0 = this.input.LA(1);

            if ( (LA87_0==DOLLAR) ) {
                alt87=1;
            }
            switch (alt87) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:757:34: d= DOLLAR v= p_VarName k= AS
                    d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_CaseHybrid5268); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    d_tree = this.adaptor.create(d);
                    this.adaptor.addChild(root_0, d_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_CaseHybrid5272);
                    v=this.p_VarName();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
                    if ( this.state.backtracking===0 ) {
                       this.av(d, (v?v.stop:null)); 
                    }
                    k=this.match(this.input,AS,XQueryParser.FOLLOW_AS_in_p_CaseHybrid5278); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }


                    break;

            }

            this.pushFollow(XQueryParser.FOLLOW_p_SequenceTypeUnion_in_p_CaseHybrid5284);
            p_SequenceTypeUnion185=this.p_SequenceTypeUnion();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SequenceTypeUnion185.getTree());
            k=this.match(this.input,RETURN,XQueryParser.FOLLOW_RETURN_in_p_CaseHybrid5288); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_CaseHybrid5292);
            p_ExprSingle186=this.p_ExprSingle(false);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle186.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_SequenceTypeUnion_return: (function() {
        XQueryParser.p_SequenceTypeUnion_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_SequenceTypeUnion_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:761:1: p_SequenceTypeUnion : p_SequenceType ( VBAR p_SequenceType )* ;
    // $ANTLR start "p_SequenceTypeUnion"
    p_SequenceTypeUnion: function() {
        var retval = new XQueryParser.p_SequenceTypeUnion_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var VBAR188 = null;
         var p_SequenceType187 = null;
         var p_SequenceType189 = null;

        var VBAR188_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:762:9: ( p_SequenceType ( VBAR p_SequenceType )* )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:762:11: p_SequenceType ( VBAR p_SequenceType )*
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_SequenceType_in_p_SequenceTypeUnion5319);
            p_SequenceType187=this.p_SequenceType();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SequenceType187.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:762:26: ( VBAR p_SequenceType )*
            loop88:
            do {
                var alt88=2;
                var LA88_0 = this.input.LA(1);

                if ( (LA88_0==VBAR) ) {
                    alt88=1;
                }


                switch (alt88) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:762:27: VBAR p_SequenceType
                    VBAR188=this.match(this.input,VBAR,XQueryParser.FOLLOW_VBAR_in_p_SequenceTypeUnion5322); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    VBAR188_tree = this.adaptor.create(VBAR188);
                    this.adaptor.addChild(root_0, VBAR188_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_SequenceType_in_p_SequenceTypeUnion5324);
                    p_SequenceType189=this.p_SequenceType();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SequenceType189.getTree());


                    break;

                default :
                    break loop88;
                }
            } while (true);




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_IfHybrid_return: (function() {
        XQueryParser.p_IfHybrid_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_IfHybrid_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:766:1: p_IfHybrid[strict] : k= IF LPAREN p_Expr[true,true] RPAREN k= THEN p_Hybrid[$strict,false] k= ELSE p_Hybrid[$strict,false] ;
    // $ANTLR start "p_IfHybrid"
    p_IfHybrid: function(strict) {
        var retval = new XQueryParser.p_IfHybrid_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var LPAREN190 = null;
        var RPAREN192 = null;
         var p_Expr191 = null;
         var p_Hybrid193 = null;
         var p_Hybrid194 = null;

        var k_tree=null;
        var LPAREN190_tree=null;
        var RPAREN192_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:767:9: (k= IF LPAREN p_Expr[true,true] RPAREN k= THEN p_Hybrid[$strict,false] k= ELSE p_Hybrid[$strict,false] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:767:11: k= IF LPAREN p_Expr[true,true] RPAREN k= THEN p_Hybrid[$strict,false] k= ELSE p_Hybrid[$strict,false]
            root_0 = this.adaptor.nil();

            k=this.match(this.input,IF,XQueryParser.FOLLOW_IF_in_p_IfHybrid5355); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            LPAREN190=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_IfHybrid5359); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LPAREN190_tree = this.adaptor.create(LPAREN190);
            this.adaptor.addChild(root_0, LPAREN190_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_IfHybrid5361);
            p_Expr191=this.p_Expr(true, true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr191.getTree());
            RPAREN192=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_IfHybrid5364); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RPAREN192_tree = this.adaptor.create(RPAREN192);
            this.adaptor.addChild(root_0, RPAREN192_tree);
            }
            k=this.match(this.input,THEN,XQueryParser.FOLLOW_THEN_in_p_IfHybrid5368); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_Hybrid_in_p_IfHybrid5372);
            p_Hybrid193=this.p_Hybrid(strict, false);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Hybrid193.getTree());
            k=this.match(this.input,ELSE,XQueryParser.FOLLOW_ELSE_in_p_IfHybrid5377); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_Hybrid_in_p_IfHybrid5381);
            p_Hybrid194=this.p_Hybrid(strict, false);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Hybrid194.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_TryCatchExpr_return: (function() {
        XQueryParser.p_TryCatchExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_TryCatchExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:771:1: p_TryCatchExpr : p_TryClause ( p_CatchClause )+ ;
    // $ANTLR start "p_TryCatchExpr"
    p_TryCatchExpr: function() {
        var retval = new XQueryParser.p_TryCatchExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_TryClause195 = null;
         var p_CatchClause196 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:772:9: ( p_TryClause ( p_CatchClause )+ )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:772:11: p_TryClause ( p_CatchClause )+
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_TryClause_in_p_TryCatchExpr5408);
            p_TryClause195=this.p_TryClause();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TryClause195.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:772:23: ( p_CatchClause )+
            var cnt89=0;
            loop89:
            do {
                var alt89=2;
                var LA89_0 = this.input.LA(1);

                if ( (LA89_0==CATCH) ) {
                    alt89=1;
                }


                switch (alt89) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:772:23: p_CatchClause
                    this.pushFollow(XQueryParser.FOLLOW_p_CatchClause_in_p_TryCatchExpr5410);
                    p_CatchClause196=this.p_CatchClause();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_CatchClause196.getTree());


                    break;

                default :
                    if ( cnt89 >= 1 ) {
                        break loop89;
                    }
                    if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        var eee = new org.antlr.runtime.EarlyExitException(89, this.input);
                        throw eee;
                }
                cnt89++;
            } while (true);




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_TryClause_return: (function() {
        XQueryParser.p_TryClause_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_TryClause_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:776:1: p_TryClause : k= TRY LBRACKET p_TryTargetExpr RBRACKET ;
    // $ANTLR start "p_TryClause"
    p_TryClause: function() {
        var retval = new XQueryParser.p_TryClause_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var LBRACKET197 = null;
        var RBRACKET199 = null;
         var p_TryTargetExpr198 = null;

        var k_tree=null;
        var LBRACKET197_tree=null;
        var RBRACKET199_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:777:9: (k= TRY LBRACKET p_TryTargetExpr RBRACKET )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:777:11: k= TRY LBRACKET p_TryTargetExpr RBRACKET
            root_0 = this.adaptor.nil();

            k=this.match(this.input,TRY,XQueryParser.FOLLOW_TRY_in_p_TryClause5439); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            LBRACKET197=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_TryClause5443); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LBRACKET197_tree = this.adaptor.create(LBRACKET197);
            this.adaptor.addChild(root_0, LBRACKET197_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_TryTargetExpr_in_p_TryClause5445);
            p_TryTargetExpr198=this.p_TryTargetExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TryTargetExpr198.getTree());
            RBRACKET199=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_TryClause5447); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RBRACKET199_tree = this.adaptor.create(RBRACKET199);
            this.adaptor.addChild(root_0, RBRACKET199_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_TryTargetExpr_return: (function() {
        XQueryParser.p_TryTargetExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_TryTargetExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:781:1: p_TryTargetExpr : p_Expr[false,false] ;
    // $ANTLR start "p_TryTargetExpr"
    p_TryTargetExpr: function() {
        var retval = new XQueryParser.p_TryTargetExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_Expr200 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:782:9: ( p_Expr[false,false] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:782:11: p_Expr[false,false]
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_TryTargetExpr5473);
            p_Expr200=this.p_Expr(false, false);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr200.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_CatchClause_return: (function() {
        XQueryParser.p_CatchClause_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_CatchClause_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:786:1: p_CatchClause : k= CATCH p_CatchErrorList LBRACKET p_Expr[false,false] RBRACKET ;
    // $ANTLR start "p_CatchClause"
    p_CatchClause: function() {
        var retval = new XQueryParser.p_CatchClause_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var LBRACKET202 = null;
        var RBRACKET204 = null;
         var p_CatchErrorList201 = null;
         var p_Expr203 = null;

        var k_tree=null;
        var LBRACKET202_tree=null;
        var RBRACKET204_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:787:9: (k= CATCH p_CatchErrorList LBRACKET p_Expr[false,false] RBRACKET )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:787:11: k= CATCH p_CatchErrorList LBRACKET p_Expr[false,false] RBRACKET
            root_0 = this.adaptor.nil();

            k=this.match(this.input,CATCH,XQueryParser.FOLLOW_CATCH_in_p_CatchClause5502); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_CatchErrorList_in_p_CatchClause5506);
            p_CatchErrorList201=this.p_CatchErrorList();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_CatchErrorList201.getTree());
            LBRACKET202=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_CatchClause5508); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LBRACKET202_tree = this.adaptor.create(LBRACKET202);
            this.adaptor.addChild(root_0, LBRACKET202_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_CatchClause5510);
            p_Expr203=this.p_Expr(false, false);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr203.getTree());
            RBRACKET204=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_CatchClause5513); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RBRACKET204_tree = this.adaptor.create(RBRACKET204);
            this.adaptor.addChild(root_0, RBRACKET204_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_CatchErrorList_return: (function() {
        XQueryParser.p_CatchErrorList_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_CatchErrorList_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:791:1: p_CatchErrorList : p_NameTest ( VBAR p_NameTest )* ;
    // $ANTLR start "p_CatchErrorList"
    p_CatchErrorList: function() {
        var retval = new XQueryParser.p_CatchErrorList_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var VBAR206 = null;
         var p_NameTest205 = null;
         var p_NameTest207 = null;

        var VBAR206_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:792:9: ( p_NameTest ( VBAR p_NameTest )* )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:792:11: p_NameTest ( VBAR p_NameTest )*
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_NameTest_in_p_CatchErrorList5539);
            p_NameTest205=this.p_NameTest();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NameTest205.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:792:22: ( VBAR p_NameTest )*
            loop90:
            do {
                var alt90=2;
                var LA90_0 = this.input.LA(1);

                if ( (LA90_0==VBAR) ) {
                    alt90=1;
                }


                switch (alt90) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:792:23: VBAR p_NameTest
                    VBAR206=this.match(this.input,VBAR,XQueryParser.FOLLOW_VBAR_in_p_CatchErrorList5542); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    VBAR206_tree = this.adaptor.create(VBAR206);
                    this.adaptor.addChild(root_0, VBAR206_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_NameTest_in_p_CatchErrorList5544);
                    p_NameTest207=this.p_NameTest();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NameTest207.getTree());


                    break;

                default :
                    break loop90;
                }
            } while (true);




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_OrExpr_return: (function() {
        XQueryParser.p_OrExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_OrExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:796:1: p_OrExpr : p_AndExpr (k= OR p_AndExpr )* ;
    // $ANTLR start "p_OrExpr"
    p_OrExpr: function() {
        var retval = new XQueryParser.p_OrExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
         var p_AndExpr208 = null;
         var p_AndExpr209 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:797:9: ( p_AndExpr (k= OR p_AndExpr )* )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:797:11: p_AndExpr (k= OR p_AndExpr )*
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_AndExpr_in_p_OrExpr5572);
            p_AndExpr208=this.p_AndExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AndExpr208.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:797:21: (k= OR p_AndExpr )*
            loop91:
            do {
                var alt91=2;
                var LA91_0 = this.input.LA(1);

                if ( (LA91_0==OR) ) {
                    alt91=1;
                }


                switch (alt91) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:797:23: k= OR p_AndExpr
                    k=this.match(this.input,OR,XQueryParser.FOLLOW_OR_in_p_OrExpr5578); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_AndExpr_in_p_OrExpr5582);
                    p_AndExpr209=this.p_AndExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AndExpr209.getTree());


                    break;

                default :
                    break loop91;
                }
            } while (true);




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_AndExpr_return: (function() {
        XQueryParser.p_AndExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_AndExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:801:1: p_AndExpr : p_ComparisonExpr (k= AND p_ComparisonExpr )* ;
    // $ANTLR start "p_AndExpr"
    p_AndExpr: function() {
        var retval = new XQueryParser.p_AndExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
         var p_ComparisonExpr210 = null;
         var p_ComparisonExpr211 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:802:9: ( p_ComparisonExpr (k= AND p_ComparisonExpr )* )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:802:11: p_ComparisonExpr (k= AND p_ComparisonExpr )*
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_ComparisonExpr_in_p_AndExpr5611);
            p_ComparisonExpr210=this.p_ComparisonExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ComparisonExpr210.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:802:28: (k= AND p_ComparisonExpr )*
            loop92:
            do {
                var alt92=2;
                var LA92_0 = this.input.LA(1);

                if ( (LA92_0==AND) ) {
                    alt92=1;
                }


                switch (alt92) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:802:30: k= AND p_ComparisonExpr
                    k=this.match(this.input,AND,XQueryParser.FOLLOW_AND_in_p_AndExpr5617); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_ComparisonExpr_in_p_AndExpr5621);
                    p_ComparisonExpr211=this.p_ComparisonExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ComparisonExpr211.getTree());


                    break;

                default :
                    break loop92;
                }
            } while (true);




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ComparisonExpr_return: (function() {
        XQueryParser.p_ComparisonExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ComparisonExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:807:1: p_ComparisonExpr : p_FTContainsExpr ( ( p_ValueComp | p_GeneralComp | p_NodeComp ) p_FTContainsExpr )? ;
    // $ANTLR start "p_ComparisonExpr"
    p_ComparisonExpr: function() {
        var retval = new XQueryParser.p_ComparisonExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_FTContainsExpr212 = null;
         var p_ValueComp213 = null;
         var p_GeneralComp214 = null;
         var p_NodeComp215 = null;
         var p_FTContainsExpr216 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:808:9: ( p_FTContainsExpr ( ( p_ValueComp | p_GeneralComp | p_NodeComp ) p_FTContainsExpr )? )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:808:11: p_FTContainsExpr ( ( p_ValueComp | p_GeneralComp | p_NodeComp ) p_FTContainsExpr )?
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_FTContainsExpr_in_p_ComparisonExpr5651);
            p_FTContainsExpr212=this.p_FTContainsExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTContainsExpr212.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:808:28: ( ( p_ValueComp | p_GeneralComp | p_NodeComp ) p_FTContainsExpr )?
            var alt94=2;
            var LA94_0 = this.input.LA(1);

            if ( (LA94_0==EQ||LA94_0==GE||LA94_0==GT||LA94_0==IS||LA94_0==LE||LA94_0==LT||LA94_0==NE||LA94_0==EQUAL||LA94_0==NOTEQUAL||(LA94_0>=SMALLER && LA94_0<=GREATER_GREATER)) ) {
                alt94=1;
            }
            switch (alt94) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:808:30: ( p_ValueComp | p_GeneralComp | p_NodeComp ) p_FTContainsExpr
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:808:30: ( p_ValueComp | p_GeneralComp | p_NodeComp )
                    var alt93=3;
                    switch ( this.input.LA(1) ) {
                    case EQ:
                    case GE:
                    case GT:
                    case LE:
                    case LT:
                    case NE:
                        alt93=1;
                        break;
                    case EQUAL:
                    case NOTEQUAL:
                    case SMALLER:
                    case GREATER:
                    case SMALLEREQ:
                    case GREATEREQ:
                        alt93=2;
                        break;
                    case IS:
                    case SMALLER_SMALLER:
                    case GREATER_GREATER:
                        alt93=3;
                        break;
                    default:
                        if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        var nvae =
                            new org.antlr.runtime.NoViableAltException("", 93, 0, this.input);

                        throw nvae;
                    }

                    switch (alt93) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:808:31: p_ValueComp
                            this.pushFollow(XQueryParser.FOLLOW_p_ValueComp_in_p_ComparisonExpr5656);
                            p_ValueComp213=this.p_ValueComp();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ValueComp213.getTree());


                            break;
                        case 2 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:808:45: p_GeneralComp
                            this.pushFollow(XQueryParser.FOLLOW_p_GeneralComp_in_p_ComparisonExpr5660);
                            p_GeneralComp214=this.p_GeneralComp();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_GeneralComp214.getTree());


                            break;
                        case 3 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:808:61: p_NodeComp
                            this.pushFollow(XQueryParser.FOLLOW_p_NodeComp_in_p_ComparisonExpr5664);
                            p_NodeComp215=this.p_NodeComp();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NodeComp215.getTree());


                            break;

                    }

                    this.pushFollow(XQueryParser.FOLLOW_p_FTContainsExpr_in_p_ComparisonExpr5667);
                    p_FTContainsExpr216=this.p_FTContainsExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTContainsExpr216.getTree());


                    break;

            }




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_RangeExpr_return: (function() {
        XQueryParser.p_RangeExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_RangeExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:812:1: p_RangeExpr : p_AdditiveExpr (k= TO p_AdditiveExpr )? ;
    // $ANTLR start "p_RangeExpr"
    p_RangeExpr: function() {
        var retval = new XQueryParser.p_RangeExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
         var p_AdditiveExpr217 = null;
         var p_AdditiveExpr218 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:813:9: ( p_AdditiveExpr (k= TO p_AdditiveExpr )? )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:813:11: p_AdditiveExpr (k= TO p_AdditiveExpr )?
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_AdditiveExpr_in_p_RangeExpr5696);
            p_AdditiveExpr217=this.p_AdditiveExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AdditiveExpr217.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:813:26: (k= TO p_AdditiveExpr )?
            var alt95=2;
            var LA95_0 = this.input.LA(1);

            if ( (LA95_0==TO) ) {
                alt95=1;
            }
            switch (alt95) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:813:28: k= TO p_AdditiveExpr
                    k=this.match(this.input,TO,XQueryParser.FOLLOW_TO_in_p_RangeExpr5702); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_AdditiveExpr_in_p_RangeExpr5706);
                    p_AdditiveExpr218=this.p_AdditiveExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AdditiveExpr218.getTree());


                    break;

            }




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_AdditiveExpr_return: (function() {
        XQueryParser.p_AdditiveExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_AdditiveExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:817:1: p_AdditiveExpr : p_MultiplicativeExpr ( (o= PLUS | o= MINUS ) p_MultiplicativeExpr )* ;
    // $ANTLR start "p_AdditiveExpr"
    p_AdditiveExpr: function() {
        var retval = new XQueryParser.p_AdditiveExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var o = null;
         var p_MultiplicativeExpr219 = null;
         var p_MultiplicativeExpr220 = null;

        var o_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:818:9: ( p_MultiplicativeExpr ( (o= PLUS | o= MINUS ) p_MultiplicativeExpr )* )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:818:11: p_MultiplicativeExpr ( (o= PLUS | o= MINUS ) p_MultiplicativeExpr )*
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_MultiplicativeExpr_in_p_AdditiveExpr5735);
            p_MultiplicativeExpr219=this.p_MultiplicativeExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_MultiplicativeExpr219.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:818:32: ( (o= PLUS | o= MINUS ) p_MultiplicativeExpr )*
            loop97:
            do {
                var alt97=2;
                var LA97_0 = this.input.LA(1);

                if ( ((LA97_0>=PLUS && LA97_0<=MINUS)) ) {
                    alt97=1;
                }


                switch (alt97) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:818:34: (o= PLUS | o= MINUS ) p_MultiplicativeExpr
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:818:34: (o= PLUS | o= MINUS )
                    var alt96=2;
                    var LA96_0 = this.input.LA(1);

                    if ( (LA96_0==PLUS) ) {
                        alt96=1;
                    }
                    else if ( (LA96_0==MINUS) ) {
                        alt96=2;
                    }
                    else {
                        if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        var nvae =
                            new org.antlr.runtime.NoViableAltException("", 96, 0, this.input);

                        throw nvae;
                    }
                    switch (alt96) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:818:35: o= PLUS
                            o=this.match(this.input,PLUS,XQueryParser.FOLLOW_PLUS_in_p_AdditiveExpr5742); if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) {
                            o_tree = this.adaptor.create(o);
                            this.adaptor.addChild(root_0, o_tree);
                            }
                            if ( this.state.backtracking===0 ) {
                              this.ao(o);
                            }


                            break;
                        case 2 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:818:59: o= MINUS
                            o=this.match(this.input,MINUS,XQueryParser.FOLLOW_MINUS_in_p_AdditiveExpr5750); if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) {
                            o_tree = this.adaptor.create(o);
                            this.adaptor.addChild(root_0, o_tree);
                            }
                            if ( this.state.backtracking===0 ) {
                              this.ao(o);
                            }


                            break;

                    }

                    this.pushFollow(XQueryParser.FOLLOW_p_MultiplicativeExpr_in_p_AdditiveExpr5755);
                    p_MultiplicativeExpr220=this.p_MultiplicativeExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_MultiplicativeExpr220.getTree());


                    break;

                default :
                    break loop97;
                }
            } while (true);




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_MultiplicativeExpr_return: (function() {
        XQueryParser.p_MultiplicativeExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_MultiplicativeExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:822:1: p_MultiplicativeExpr : p_UnionExpr ( (o= STAR | (k= DIV | k= IDIV | k= MOD ) ) p_UnionExpr )* ;
    // $ANTLR start "p_MultiplicativeExpr"
    p_MultiplicativeExpr: function() {
        var retval = new XQueryParser.p_MultiplicativeExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var o = null;
        var k = null;
         var p_UnionExpr221 = null;
         var p_UnionExpr222 = null;

        var o_tree=null;
        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:823:9: ( p_UnionExpr ( (o= STAR | (k= DIV | k= IDIV | k= MOD ) ) p_UnionExpr )* )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:823:11: p_UnionExpr ( (o= STAR | (k= DIV | k= IDIV | k= MOD ) ) p_UnionExpr )*
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_UnionExpr_in_p_MultiplicativeExpr5784);
            p_UnionExpr221=this.p_UnionExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_UnionExpr221.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:823:23: ( (o= STAR | (k= DIV | k= IDIV | k= MOD ) ) p_UnionExpr )*
            loop100:
            do {
                var alt100=2;
                var LA100_0 = this.input.LA(1);

                if ( (LA100_0==DIV||LA100_0==IDIV||LA100_0==MOD||LA100_0==STAR) ) {
                    alt100=1;
                }


                switch (alt100) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:823:25: (o= STAR | (k= DIV | k= IDIV | k= MOD ) ) p_UnionExpr
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:823:25: (o= STAR | (k= DIV | k= IDIV | k= MOD ) )
                    var alt99=2;
                    var LA99_0 = this.input.LA(1);

                    if ( (LA99_0==STAR) ) {
                        alt99=1;
                    }
                    else if ( (LA99_0==DIV||LA99_0==IDIV||LA99_0==MOD) ) {
                        alt99=2;
                    }
                    else {
                        if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        var nvae =
                            new org.antlr.runtime.NoViableAltException("", 99, 0, this.input);

                        throw nvae;
                    }
                    switch (alt99) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:823:26: o= STAR
                            o=this.match(this.input,STAR,XQueryParser.FOLLOW_STAR_in_p_MultiplicativeExpr5791); if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) {
                            o_tree = this.adaptor.create(o);
                            this.adaptor.addChild(root_0, o_tree);
                            }
                            if ( this.state.backtracking===0 ) {
                              this.ao(o);
                            }


                            break;
                        case 2 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:823:50: (k= DIV | k= IDIV | k= MOD )
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:823:50: (k= DIV | k= IDIV | k= MOD )
                            var alt98=3;
                            switch ( this.input.LA(1) ) {
                            case DIV:
                                alt98=1;
                                break;
                            case IDIV:
                                alt98=2;
                                break;
                            case MOD:
                                alt98=3;
                                break;
                            default:
                                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                                var nvae =
                                    new org.antlr.runtime.NoViableAltException("", 98, 0, this.input);

                                throw nvae;
                            }

                            switch (alt98) {
                                case 1 :
                                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:823:51: k= DIV
                                    k=this.match(this.input,DIV,XQueryParser.FOLLOW_DIV_in_p_MultiplicativeExpr5800); if (this.state.failed) return retval;
                                    if ( this.state.backtracking===0 ) {
                                    k_tree = this.adaptor.create(k);
                                    this.adaptor.addChild(root_0, k_tree);
                                    }


                                    break;
                                case 2 :
                                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:823:59: k= IDIV
                                    k=this.match(this.input,IDIV,XQueryParser.FOLLOW_IDIV_in_p_MultiplicativeExpr5806); if (this.state.failed) return retval;
                                    if ( this.state.backtracking===0 ) {
                                    k_tree = this.adaptor.create(k);
                                    this.adaptor.addChild(root_0, k_tree);
                                    }


                                    break;
                                case 3 :
                                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:823:68: k= MOD
                                    k=this.match(this.input,MOD,XQueryParser.FOLLOW_MOD_in_p_MultiplicativeExpr5812); if (this.state.failed) return retval;
                                    if ( this.state.backtracking===0 ) {
                                    k_tree = this.adaptor.create(k);
                                    this.adaptor.addChild(root_0, k_tree);
                                    }


                                    break;

                            }

                            if ( this.state.backtracking===0 ) {
                              this.ak(k);
                            }


                            break;

                    }

                    this.pushFollow(XQueryParser.FOLLOW_p_UnionExpr_in_p_MultiplicativeExpr5818);
                    p_UnionExpr222=this.p_UnionExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_UnionExpr222.getTree());


                    break;

                default :
                    break loop100;
                }
            } while (true);




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_UnionExpr_return: (function() {
        XQueryParser.p_UnionExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_UnionExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:827:1: p_UnionExpr : p_IntersectExceptExpr ( (k= UNION | VBAR ) p_IntersectExceptExpr )* ;
    // $ANTLR start "p_UnionExpr"
    p_UnionExpr: function() {
        var retval = new XQueryParser.p_UnionExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var VBAR224 = null;
         var p_IntersectExceptExpr223 = null;
         var p_IntersectExceptExpr225 = null;

        var k_tree=null;
        var VBAR224_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:828:9: ( p_IntersectExceptExpr ( (k= UNION | VBAR ) p_IntersectExceptExpr )* )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:828:11: p_IntersectExceptExpr ( (k= UNION | VBAR ) p_IntersectExceptExpr )*
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_IntersectExceptExpr_in_p_UnionExpr5847);
            p_IntersectExceptExpr223=this.p_IntersectExceptExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_IntersectExceptExpr223.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:828:33: ( (k= UNION | VBAR ) p_IntersectExceptExpr )*
            loop102:
            do {
                var alt102=2;
                var LA102_0 = this.input.LA(1);

                if ( (LA102_0==UNION||LA102_0==VBAR) ) {
                    alt102=1;
                }


                switch (alt102) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:828:35: (k= UNION | VBAR ) p_IntersectExceptExpr
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:828:35: (k= UNION | VBAR )
                    var alt101=2;
                    var LA101_0 = this.input.LA(1);

                    if ( (LA101_0==UNION) ) {
                        alt101=1;
                    }
                    else if ( (LA101_0==VBAR) ) {
                        alt101=2;
                    }
                    else {
                        if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        var nvae =
                            new org.antlr.runtime.NoViableAltException("", 101, 0, this.input);

                        throw nvae;
                    }
                    switch (alt101) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:828:36: k= UNION
                            k=this.match(this.input,UNION,XQueryParser.FOLLOW_UNION_in_p_UnionExpr5854); if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) {
                            k_tree = this.adaptor.create(k);
                            this.adaptor.addChild(root_0, k_tree);
                            }
                            if ( this.state.backtracking===0 ) {
                              this.ak(k);
                            }


                            break;
                        case 2 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:828:61: VBAR
                            VBAR224=this.match(this.input,VBAR,XQueryParser.FOLLOW_VBAR_in_p_UnionExpr5860); if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) {
                            VBAR224_tree = this.adaptor.create(VBAR224);
                            this.adaptor.addChild(root_0, VBAR224_tree);
                            }


                            break;

                    }

                    this.pushFollow(XQueryParser.FOLLOW_p_IntersectExceptExpr_in_p_UnionExpr5863);
                    p_IntersectExceptExpr225=this.p_IntersectExceptExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_IntersectExceptExpr225.getTree());


                    break;

                default :
                    break loop102;
                }
            } while (true);




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_IntersectExceptExpr_return: (function() {
        XQueryParser.p_IntersectExceptExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_IntersectExceptExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:832:1: p_IntersectExceptExpr : p_InstanceofExpr ( (k= INTERSECT | k= EXCEPT ) p_InstanceofExpr )* ;
    // $ANTLR start "p_IntersectExceptExpr"
    p_IntersectExceptExpr: function() {
        var retval = new XQueryParser.p_IntersectExceptExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
         var p_InstanceofExpr226 = null;
         var p_InstanceofExpr227 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:833:9: ( p_InstanceofExpr ( (k= INTERSECT | k= EXCEPT ) p_InstanceofExpr )* )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:833:11: p_InstanceofExpr ( (k= INTERSECT | k= EXCEPT ) p_InstanceofExpr )*
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_InstanceofExpr_in_p_IntersectExceptExpr5892);
            p_InstanceofExpr226=this.p_InstanceofExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_InstanceofExpr226.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:833:28: ( (k= INTERSECT | k= EXCEPT ) p_InstanceofExpr )*
            loop104:
            do {
                var alt104=2;
                var LA104_0 = this.input.LA(1);

                if ( (LA104_0==EXCEPT||LA104_0==INTERSECT) ) {
                    alt104=1;
                }


                switch (alt104) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:833:30: (k= INTERSECT | k= EXCEPT ) p_InstanceofExpr
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:833:30: (k= INTERSECT | k= EXCEPT )
                    var alt103=2;
                    var LA103_0 = this.input.LA(1);

                    if ( (LA103_0==INTERSECT) ) {
                        alt103=1;
                    }
                    else if ( (LA103_0==EXCEPT) ) {
                        alt103=2;
                    }
                    else {
                        if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        var nvae =
                            new org.antlr.runtime.NoViableAltException("", 103, 0, this.input);

                        throw nvae;
                    }
                    switch (alt103) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:833:31: k= INTERSECT
                            k=this.match(this.input,INTERSECT,XQueryParser.FOLLOW_INTERSECT_in_p_IntersectExceptExpr5899); if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) {
                            k_tree = this.adaptor.create(k);
                            this.adaptor.addChild(root_0, k_tree);
                            }


                            break;
                        case 2 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:833:45: k= EXCEPT
                            k=this.match(this.input,EXCEPT,XQueryParser.FOLLOW_EXCEPT_in_p_IntersectExceptExpr5905); if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) {
                            k_tree = this.adaptor.create(k);
                            this.adaptor.addChild(root_0, k_tree);
                            }


                            break;

                    }

                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_InstanceofExpr_in_p_IntersectExceptExpr5910);
                    p_InstanceofExpr227=this.p_InstanceofExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_InstanceofExpr227.getTree());


                    break;

                default :
                    break loop104;
                }
            } while (true);




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_InstanceofExpr_return: (function() {
        XQueryParser.p_InstanceofExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_InstanceofExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:837:1: p_InstanceofExpr : p_TreatExpr (k= INSTANCE k= OF p_SequenceType )? ;
    // $ANTLR start "p_InstanceofExpr"
    p_InstanceofExpr: function() {
        var retval = new XQueryParser.p_InstanceofExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
         var p_TreatExpr228 = null;
         var p_SequenceType229 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:838:9: ( p_TreatExpr (k= INSTANCE k= OF p_SequenceType )? )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:838:11: p_TreatExpr (k= INSTANCE k= OF p_SequenceType )?
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_TreatExpr_in_p_InstanceofExpr5939);
            p_TreatExpr228=this.p_TreatExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TreatExpr228.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:838:23: (k= INSTANCE k= OF p_SequenceType )?
            var alt105=2;
            var LA105_0 = this.input.LA(1);

            if ( (LA105_0==INSTANCE) ) {
                alt105=1;
            }
            switch (alt105) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:838:25: k= INSTANCE k= OF p_SequenceType
                    k=this.match(this.input,INSTANCE,XQueryParser.FOLLOW_INSTANCE_in_p_InstanceofExpr5945); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    k=this.match(this.input,OF,XQueryParser.FOLLOW_OF_in_p_InstanceofExpr5951); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_SequenceType_in_p_InstanceofExpr5955);
                    p_SequenceType229=this.p_SequenceType();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SequenceType229.getTree());


                    break;

            }




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_TreatExpr_return: (function() {
        XQueryParser.p_TreatExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_TreatExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:842:1: p_TreatExpr : p_CastableExpr (k= TREAT k= AS p_SequenceType )? ;
    // $ANTLR start "p_TreatExpr"
    p_TreatExpr: function() {
        var retval = new XQueryParser.p_TreatExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
         var p_CastableExpr230 = null;
         var p_SequenceType231 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:843:9: ( p_CastableExpr (k= TREAT k= AS p_SequenceType )? )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:843:11: p_CastableExpr (k= TREAT k= AS p_SequenceType )?
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_CastableExpr_in_p_TreatExpr5983);
            p_CastableExpr230=this.p_CastableExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_CastableExpr230.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:843:26: (k= TREAT k= AS p_SequenceType )?
            var alt106=2;
            var LA106_0 = this.input.LA(1);

            if ( (LA106_0==TREAT) ) {
                alt106=1;
            }
            switch (alt106) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:843:28: k= TREAT k= AS p_SequenceType
                    k=this.match(this.input,TREAT,XQueryParser.FOLLOW_TREAT_in_p_TreatExpr5989); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    k=this.match(this.input,AS,XQueryParser.FOLLOW_AS_in_p_TreatExpr5995); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_SequenceType_in_p_TreatExpr5999);
                    p_SequenceType231=this.p_SequenceType();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SequenceType231.getTree());


                    break;

            }




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_CastableExpr_return: (function() {
        XQueryParser.p_CastableExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_CastableExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:847:1: p_CastableExpr : p_CastExpr (k= CASTABLE k= AS p_SingleType )? ;
    // $ANTLR start "p_CastableExpr"
    p_CastableExpr: function() {
        var retval = new XQueryParser.p_CastableExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
         var p_CastExpr232 = null;
         var p_SingleType233 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:848:9: ( p_CastExpr (k= CASTABLE k= AS p_SingleType )? )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:848:11: p_CastExpr (k= CASTABLE k= AS p_SingleType )?
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_CastExpr_in_p_CastableExpr6036);
            p_CastExpr232=this.p_CastExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_CastExpr232.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:848:22: (k= CASTABLE k= AS p_SingleType )?
            var alt107=2;
            var LA107_0 = this.input.LA(1);

            if ( (LA107_0==CASTABLE) ) {
                alt107=1;
            }
            switch (alt107) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:848:24: k= CASTABLE k= AS p_SingleType
                    k=this.match(this.input,CASTABLE,XQueryParser.FOLLOW_CASTABLE_in_p_CastableExpr6042); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    k=this.match(this.input,AS,XQueryParser.FOLLOW_AS_in_p_CastableExpr6048); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_SingleType_in_p_CastableExpr6052);
                    p_SingleType233=this.p_SingleType();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SingleType233.getTree());


                    break;

            }




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_CastExpr_return: (function() {
        XQueryParser.p_CastExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_CastExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:852:1: p_CastExpr : p_UnaryExpr (k= CAST k= AS p_SingleType )? ;
    // $ANTLR start "p_CastExpr"
    p_CastExpr: function() {
        var retval = new XQueryParser.p_CastExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
         var p_UnaryExpr234 = null;
         var p_SingleType235 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:853:9: ( p_UnaryExpr (k= CAST k= AS p_SingleType )? )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:853:11: p_UnaryExpr (k= CAST k= AS p_SingleType )?
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_UnaryExpr_in_p_CastExpr6089);
            p_UnaryExpr234=this.p_UnaryExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_UnaryExpr234.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:853:23: (k= CAST k= AS p_SingleType )?
            var alt108=2;
            var LA108_0 = this.input.LA(1);

            if ( (LA108_0==CAST) ) {
                alt108=1;
            }
            switch (alt108) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:853:25: k= CAST k= AS p_SingleType
                    k=this.match(this.input,CAST,XQueryParser.FOLLOW_CAST_in_p_CastExpr6095); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    k=this.match(this.input,AS,XQueryParser.FOLLOW_AS_in_p_CastExpr6101); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_SingleType_in_p_CastExpr6105);
                    p_SingleType235=this.p_SingleType();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SingleType235.getTree());


                    break;

            }




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_UnaryExpr_return: (function() {
        XQueryParser.p_UnaryExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_UnaryExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:857:1: p_UnaryExpr : (o= PLUS | o= MINUS )* p_ValueExpr -> ^( UnaryExpr ( PLUS )* p_ValueExpr ) ;
    // $ANTLR start "p_UnaryExpr"
    p_UnaryExpr: function() {
        var retval = new XQueryParser.p_UnaryExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var o = null;
         var p_ValueExpr236 = null;

        var o_tree=null;
        var stream_PLUS=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token PLUS");
        var stream_MINUS=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token MINUS");
        var stream_p_ValueExpr=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_ValueExpr");
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:858:9: ( (o= PLUS | o= MINUS )* p_ValueExpr -> ^( UnaryExpr ( PLUS )* p_ValueExpr ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:858:11: (o= PLUS | o= MINUS )* p_ValueExpr
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:858:11: (o= PLUS | o= MINUS )*
            loop109:
            do {
                var alt109=3;
                var LA109_0 = this.input.LA(1);

                if ( (LA109_0==PLUS) ) {
                    alt109=1;
                }
                else if ( (LA109_0==MINUS) ) {
                    alt109=2;
                }


                switch (alt109) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:858:12: o= PLUS
                    o=this.match(this.input,PLUS,XQueryParser.FOLLOW_PLUS_in_p_UnaryExpr6137); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_PLUS.add(o);

                    if ( this.state.backtracking===0 ) {
                      this.ao(o);
                    }


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:858:36: o= MINUS
                    o=this.match(this.input,MINUS,XQueryParser.FOLLOW_MINUS_in_p_UnaryExpr6145); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_MINUS.add(o);

                    if ( this.state.backtracking===0 ) {
                      this.ao(o);
                    }


                    break;

                default :
                    break loop109;
                }
            } while (true);

            this.pushFollow(XQueryParser.FOLLOW_p_ValueExpr_in_p_UnaryExpr6150);
            p_ValueExpr236=this.p_ValueExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) stream_p_ValueExpr.add(p_ValueExpr236.getTree());


            // AST REWRITE
            // elements: p_ValueExpr, PLUS
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            if ( this.state.backtracking===0 ) {
            retval.tree = root_0;
            var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);

            root_0 = this.adaptor.nil();
            // 859:17: -> ^( UnaryExpr ( PLUS )* p_ValueExpr )
            {
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:859:20: ^( UnaryExpr ( PLUS )* p_ValueExpr )
                {
                var root_1 = this.adaptor.nil();
                root_1 = this.adaptor.becomeRoot(this.adaptor.create(UnaryExpr, "UnaryExpr"), root_1);

                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:859:32: ( PLUS )*
                while ( stream_PLUS.hasNext() ) {
                    this.adaptor.addChild(root_1, stream_PLUS.nextNode());

                }
                stream_PLUS.reset();
                this.adaptor.addChild(root_1, stream_p_ValueExpr.nextTree());

                this.adaptor.addChild(root_0, root_1);
                }

            }

            retval.tree = root_0;}


            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ValueExpr_return: (function() {
        XQueryParser.p_ValueExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ValueExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:863:1: p_ValueExpr : ( ( VALIDATE ( p_ValidationMode | TYPE )? )=> p_ValidateExpr | p_SimpleMapExpr | p_ExtensionExpr );
    // $ANTLR start "p_ValueExpr"
    p_ValueExpr: function() {
        var retval = new XQueryParser.p_ValueExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_ValidateExpr237 = null;
         var p_SimpleMapExpr238 = null;
         var p_ExtensionExpr239 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:864:9: ( ( VALIDATE ( p_ValidationMode | TYPE )? )=> p_ValidateExpr | p_SimpleMapExpr | p_ExtensionExpr )
            var alt110=3;
            switch ( this.input.LA(1) ) {
            case VALIDATE:
                var LA110_1 = this.input.LA(2);

                if ( (LA110_1==LAX) && (this.synpred6_XQueryParser())) {
                    alt110=1;
                }
                else if ( (LA110_1==STRICT) && (this.synpred6_XQueryParser())) {
                    alt110=1;
                }
                else if ( (LA110_1==TYPE) && (this.synpred6_XQueryParser())) {
                    alt110=1;
                }
                else if ( (LA110_1==LBRACKET) && (this.synpred6_XQueryParser())) {
                    alt110=1;
                }
                else if ( (LA110_1==EOF||(LA110_1>=AND && LA110_1<=AT)||(LA110_1>=CASE && LA110_1<=CASTABLE)||LA110_1==COLLATION||LA110_1==DEFAULT||(LA110_1>=DESCENDING && LA110_1<=DIV)||LA110_1==EMPTY||LA110_1==EQ||LA110_1==EXCEPT||LA110_1==FOR||LA110_1==GE||(LA110_1>=GT && LA110_1<=IDIV)||(LA110_1>=INSTANCE && LA110_1<=IS)||LA110_1==LE||(LA110_1>=LET && LA110_1<=MOD)||LA110_1==NE||(LA110_1>=OR && LA110_1<=ORDER)||(LA110_1>=RETURN && LA110_1<=SATISFIES)||LA110_1==STABLE||(LA110_1>=TO && LA110_1<=TREAT)||LA110_1==UNION||LA110_1==WHERE||LA110_1==COUNT||(LA110_1>=END && LA110_1<=GROUP)||LA110_1==ONLY||LA110_1==START||(LA110_1>=AFTER && LA110_1<=BEFORE)||LA110_1==INTO||LA110_1==MODIFY||LA110_1==WITH||LA110_1==CONTAINS||LA110_1==PARAGRAPHS||LA110_1==SENTENCES||LA110_1==TIMES||LA110_1==WORDS||(LA110_1>=CONCAT && LA110_1<=RPAREN)||LA110_1==R_UNION_BRACKET||(LA110_1>=RBRACKET && LA110_1<=EQUAL)||LA110_1==NOTEQUAL||LA110_1==HASH||LA110_1==COMMA||(LA110_1>=STAR && LA110_1<=BANG)||LA110_1==COLON||(LA110_1>=SEMICOLON && LA110_1<=VBAR)) ) {
                    alt110=2;
                }
                else {
                    if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                    var nvae =
                        new org.antlr.runtime.NoViableAltException("", 110, 1, this.input);

                    throw nvae;
                }
                break;
            case ANCESTOR:
            case ANCESTOR_OR_SELF:
            case AND:
            case AS:
            case ASCENDING:
            case AT:
            case ATTRIBUTE:
            case BASE_URI:
            case BOUNDARY_SPACE:
            case BY:
            case CASE:
            case CAST:
            case CASTABLE:
            case CHILD:
            case COLLATION:
            case COMMENT:
            case CONSTRUCTION:
            case COPY_NAMESPACES:
            case DECLARE:
            case DEFAULT:
            case DESCENDANT:
            case DESCENDANT_OR_SELF:
            case DESCENDING:
            case DIV:
            case DOCUMENT:
            case DOCUMENT_NODE:
            case ELEMENT:
            case ELSE:
            case EMPTY:
            case EMPTY_SEQUENCE:
            case ENCODING:
            case EQ:
            case EVERY:
            case EXCEPT:
            case EXTERNAL:
            case FOLLOWING:
            case FOLLOWING_SIBLING:
            case FOR:
            case FUNCTION:
            case GE:
            case GREATEST:
            case GT:
            case IDIV:
            case IF:
            case IMPORT:
            case IN:
            case INHERIT:
            case INSTANCE:
            case INTERSECT:
            case IS:
            case ITEM:
            case LAX:
            case LE:
            case LEAST:
            case LET:
            case LT:
            case MOD:
            case MODULE:
            case NAMESPACE:
            case NE:
            case NO_INHERIT:
            case NO_PRESERVE:
            case NODE:
            case JSON:
            case OF:
            case OPTION:
            case OR:
            case ORDER:
            case ORDERED:
            case ORDERING:
            case PARENT:
            case PRECEDING:
            case PRECEDING_SIBLING:
            case PRESERVE:
            case PROCESSING_INSTRUCTION:
            case STRUCTURED_ITEM:
            case JSON_ITEM:
            case OBJECT:
            case ARRAY:
            case RETURN:
            case SATISFIES:
            case SCHEMA:
            case SCHEMA_ATTRIBUTE:
            case SCHEMA_ELEMENT:
            case SELF:
            case SOME:
            case STABLE:
            case STRICT:
            case STRIP:
            case TEXT:
            case THEN:
            case TO:
            case TREAT:
            case TYPESWITCH:
            case UNION:
            case UNORDERED:
            case VARIABLE:
            case VERSION:
            case WHERE:
            case XQUERY:
            case ALLOWING:
            case CATCH:
            case CONTEXT:
            case COUNT:
            case DECIMAL_FORMAT:
            case DECIMAL_SEPARATOR:
            case DIGIT:
            case END:
            case GROUP:
            case GROUPING_SEPARATOR:
            case INFINITY:
            case MINUS_SIGN:
            case NAMESPACE_NODE:
            case NAN:
            case NEXT:
            case ONLY:
            case PATTERN_SEPARATOR:
            case PERCENT:
            case PER_MILLE:
            case PREVIOUS:
            case SLIDING:
            case START:
            case SWITCH:
            case TRY:
            case TUMBLING:
            case TYPE:
            case WHEN:
            case WINDOW:
            case ZERO_DIGIT:
            case AFTER:
            case BEFORE:
            case COPY:
            case DELETE:
            case FIRST:
            case INSERT:
            case INTO:
            case POSITION:
            case APPEND:
            case LAST:
            case MODIFY:
            case NODES:
            case RENAME:
            case REPLACE:
            case REVALIDATION:
            case SKIP:
            case UPDATING:
            case VALUE:
            case WITH:
            case ALL:
            case ANY:
            case CONTAINS:
            case CONTENT:
            case DIACRITICS:
            case DIFFERENT:
            case DISTANCE:
            case ENTIRE:
            case EXACTLY:
            case FROM:
            case FT_OPTION:
            case FTAND:
            case FTNOT:
            case FTOR:
            case INSENSITIVE:
            case LANGUAGE:
            case LEVELS:
            case LOWERCASE:
            case MOST:
            case NO:
            case NOT:
            case OCCURS:
            case PARAGRAPH:
            case PARAGRAPHS:
            case PHRASE:
            case RELATIONSHIP:
            case SAME:
            case SCORE:
            case SENSITIVE:
            case SENTENCE:
            case SENTENCES:
            case STEMMING:
            case STOP:
            case THESAURUS:
            case TIMES:
            case UPPERCASE:
            case USING:
            case WEIGHT:
            case WILDCARDS:
            case WITHOUT:
            case WORD:
            case WORDS:
            case BREAK:
            case CONTINUE:
            case EXIT:
            case LOOP:
            case RETURNING:
            case WHILE:
            case CHECK:
            case COLLECTION:
            case CONSTRAINT:
            case FOREACH:
            case FOREIGN:
            case INDEX:
            case INTEGRITY:
            case KEY:
            case ON:
            case UNIQUE:
            case AMP_ER:
            case APOS_ER:
            case QUOT_ER:
            case LPAREN:
            case DOLLAR:
            case L_UNION_BRACKET:
            case LBRACKET:
            case LSQUARE:
            case STAR:
            case SMALLER:
            case SLASH:
            case SLASH_SLASH:
            case DOT:
            case DOT_DOT:
            case ATTR_SIGN:
            case Q:
            case APOS:
            case QUOT:
            case L_NCName:
            case L_DirCommentConstructor:
            case L_DirPIConstructor:
            case L_IntegerLiteral:
            case L_DecimalLiteral:
            case L_DoubleLiteral:
                alt110=2;
                break;
            case L_Pragma:
                alt110=3;
                break;
            default:
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 110, 0, this.input);

                throw nvae;
            }

            switch (alt110) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:864:11: ( VALIDATE ( p_ValidationMode | TYPE )? )=> p_ValidateExpr
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_ValidateExpr_in_p_ValueExpr6220);
                    p_ValidateExpr237=this.p_ValidateExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ValidateExpr237.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:865:11: p_SimpleMapExpr
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_SimpleMapExpr_in_p_ValueExpr6232);
                    p_SimpleMapExpr238=this.p_SimpleMapExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SimpleMapExpr238.getTree());


                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:866:11: p_ExtensionExpr
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_ExtensionExpr_in_p_ValueExpr6244);
                    p_ExtensionExpr239=this.p_ExtensionExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExtensionExpr239.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_SimpleMapExpr_return: (function() {
        XQueryParser.p_SimpleMapExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_SimpleMapExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:869:1: p_SimpleMapExpr : p_PathExpr ( BANG p_PathExpr )* ;
    // $ANTLR start "p_SimpleMapExpr"
    p_SimpleMapExpr: function() {
        var retval = new XQueryParser.p_SimpleMapExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var BANG241 = null;
         var p_PathExpr240 = null;
         var p_PathExpr242 = null;

        var BANG241_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:870:9: ( p_PathExpr ( BANG p_PathExpr )* )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:870:11: p_PathExpr ( BANG p_PathExpr )*
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_PathExpr_in_p_SimpleMapExpr6269);
            p_PathExpr240=this.p_PathExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PathExpr240.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:870:22: ( BANG p_PathExpr )*
            loop111:
            do {
                var alt111=2;
                var LA111_0 = this.input.LA(1);

                if ( (LA111_0==BANG) ) {
                    alt111=1;
                }


                switch (alt111) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:870:23: BANG p_PathExpr
                    BANG241=this.match(this.input,BANG,XQueryParser.FOLLOW_BANG_in_p_SimpleMapExpr6272); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    BANG241_tree = this.adaptor.create(BANG241);
                    this.adaptor.addChild(root_0, BANG241_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_PathExpr_in_p_SimpleMapExpr6274);
                    p_PathExpr242=this.p_PathExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PathExpr242.getTree());


                    break;

                default :
                    break loop111;
                }
            } while (true);




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_GeneralComp_return: (function() {
        XQueryParser.p_GeneralComp_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_GeneralComp_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:874:1: p_GeneralComp : (o= EQUAL | o= NOTEQUAL | o= SMALLER | o= SMALLEREQ | o= GREATER | o= GREATEREQ ) ;
    // $ANTLR start "p_GeneralComp"
    p_GeneralComp: function() {
        var retval = new XQueryParser.p_GeneralComp_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var o = null;

        var o_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:875:9: ( (o= EQUAL | o= NOTEQUAL | o= SMALLER | o= SMALLEREQ | o= GREATER | o= GREATEREQ ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:875:11: (o= EQUAL | o= NOTEQUAL | o= SMALLER | o= SMALLEREQ | o= GREATER | o= GREATEREQ )
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:875:11: (o= EQUAL | o= NOTEQUAL | o= SMALLER | o= SMALLEREQ | o= GREATER | o= GREATEREQ )
            var alt112=6;
            switch ( this.input.LA(1) ) {
            case EQUAL:
                alt112=1;
                break;
            case NOTEQUAL:
                alt112=2;
                break;
            case SMALLER:
                alt112=3;
                break;
            case SMALLEREQ:
                alt112=4;
                break;
            case GREATER:
                alt112=5;
                break;
            case GREATEREQ:
                alt112=6;
                break;
            default:
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 112, 0, this.input);

                throw nvae;
            }

            switch (alt112) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:875:12: o= EQUAL
                    o=this.match(this.input,EQUAL,XQueryParser.FOLLOW_EQUAL_in_p_GeneralComp6305); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    o_tree = this.adaptor.create(o);
                    this.adaptor.addChild(root_0, o_tree);
                    }


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:875:22: o= NOTEQUAL
                    o=this.match(this.input,NOTEQUAL,XQueryParser.FOLLOW_NOTEQUAL_in_p_GeneralComp6311); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    o_tree = this.adaptor.create(o);
                    this.adaptor.addChild(root_0, o_tree);
                    }


                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:875:35: o= SMALLER
                    o=this.match(this.input,SMALLER,XQueryParser.FOLLOW_SMALLER_in_p_GeneralComp6317); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    o_tree = this.adaptor.create(o);
                    this.adaptor.addChild(root_0, o_tree);
                    }


                    break;
                case 4 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:875:47: o= SMALLEREQ
                    o=this.match(this.input,SMALLEREQ,XQueryParser.FOLLOW_SMALLEREQ_in_p_GeneralComp6323); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    o_tree = this.adaptor.create(o);
                    this.adaptor.addChild(root_0, o_tree);
                    }


                    break;
                case 5 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:875:61: o= GREATER
                    o=this.match(this.input,GREATER,XQueryParser.FOLLOW_GREATER_in_p_GeneralComp6329); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    o_tree = this.adaptor.create(o);
                    this.adaptor.addChild(root_0, o_tree);
                    }


                    break;
                case 6 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:875:73: o= GREATEREQ
                    o=this.match(this.input,GREATEREQ,XQueryParser.FOLLOW_GREATEREQ_in_p_GeneralComp6335); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    o_tree = this.adaptor.create(o);
                    this.adaptor.addChild(root_0, o_tree);
                    }


                    break;

            }

            if ( this.state.backtracking===0 ) {
               this.ao(o); 
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ValueComp_return: (function() {
        XQueryParser.p_ValueComp_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ValueComp_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:879:1: p_ValueComp : (k= EQ | k= NE | k= LT | k= LE | k= GT | k= GE ) ;
    // $ANTLR start "p_ValueComp"
    p_ValueComp: function() {
        var retval = new XQueryParser.p_ValueComp_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:880:9: ( (k= EQ | k= NE | k= LT | k= LE | k= GT | k= GE ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:880:11: (k= EQ | k= NE | k= LT | k= LE | k= GT | k= GE )
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:880:11: (k= EQ | k= NE | k= LT | k= LE | k= GT | k= GE )
            var alt113=6;
            switch ( this.input.LA(1) ) {
            case EQ:
                alt113=1;
                break;
            case NE:
                alt113=2;
                break;
            case LT:
                alt113=3;
                break;
            case LE:
                alt113=4;
                break;
            case GT:
                alt113=5;
                break;
            case GE:
                alt113=6;
                break;
            default:
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 113, 0, this.input);

                throw nvae;
            }

            switch (alt113) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:880:12: k= EQ
                    k=this.match(this.input,EQ,XQueryParser.FOLLOW_EQ_in_p_ValueComp6367); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:880:19: k= NE
                    k=this.match(this.input,NE,XQueryParser.FOLLOW_NE_in_p_ValueComp6373); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }


                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:880:26: k= LT
                    k=this.match(this.input,LT,XQueryParser.FOLLOW_LT_in_p_ValueComp6379); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }


                    break;
                case 4 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:880:33: k= LE
                    k=this.match(this.input,LE,XQueryParser.FOLLOW_LE_in_p_ValueComp6385); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }


                    break;
                case 5 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:880:40: k= GT
                    k=this.match(this.input,GT,XQueryParser.FOLLOW_GT_in_p_ValueComp6391); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }


                    break;
                case 6 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:880:47: k= GE
                    k=this.match(this.input,GE,XQueryParser.FOLLOW_GE_in_p_ValueComp6397); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }


                    break;

            }

            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_NodeComp_return: (function() {
        XQueryParser.p_NodeComp_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_NodeComp_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:884:1: p_NodeComp : (k= IS | SMALLER_SMALLER | GREATER_GREATER );
    // $ANTLR start "p_NodeComp"
    p_NodeComp: function() {
        var retval = new XQueryParser.p_NodeComp_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var SMALLER_SMALLER243 = null;
        var GREATER_GREATER244 = null;

        var k_tree=null;
        var SMALLER_SMALLER243_tree=null;
        var GREATER_GREATER244_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:885:9: (k= IS | SMALLER_SMALLER | GREATER_GREATER )
            var alt114=3;
            switch ( this.input.LA(1) ) {
            case IS:
                alt114=1;
                break;
            case SMALLER_SMALLER:
                alt114=2;
                break;
            case GREATER_GREATER:
                alt114=3;
                break;
            default:
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 114, 0, this.input);

                throw nvae;
            }

            switch (alt114) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:885:11: k= IS
                    root_0 = this.adaptor.nil();

                    k=this.match(this.input,IS,XQueryParser.FOLLOW_IS_in_p_NodeComp6428); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:885:33: SMALLER_SMALLER
                    root_0 = this.adaptor.nil();

                    SMALLER_SMALLER243=this.match(this.input,SMALLER_SMALLER,XQueryParser.FOLLOW_SMALLER_SMALLER_in_p_NodeComp6434); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    SMALLER_SMALLER243_tree = this.adaptor.create(SMALLER_SMALLER243);
                    this.adaptor.addChild(root_0, SMALLER_SMALLER243_tree);
                    }


                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:885:51: GREATER_GREATER
                    root_0 = this.adaptor.nil();

                    GREATER_GREATER244=this.match(this.input,GREATER_GREATER,XQueryParser.FOLLOW_GREATER_GREATER_in_p_NodeComp6438); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    GREATER_GREATER244_tree = this.adaptor.create(GREATER_GREATER244);
                    this.adaptor.addChild(root_0, GREATER_GREATER244_tree);
                    }


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ValidateExpr_return: (function() {
        XQueryParser.p_ValidateExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ValidateExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:889:1: p_ValidateExpr : k= VALIDATE ( p_ValidationMode | k= TYPE p_TypeName )? LBRACKET p_Expr[true,true] RBRACKET ;
    // $ANTLR start "p_ValidateExpr"
    p_ValidateExpr: function() {
        var retval = new XQueryParser.p_ValidateExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var LBRACKET247 = null;
        var RBRACKET249 = null;
         var p_ValidationMode245 = null;
         var p_TypeName246 = null;
         var p_Expr248 = null;

        var k_tree=null;
        var LBRACKET247_tree=null;
        var RBRACKET249_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:890:9: (k= VALIDATE ( p_ValidationMode | k= TYPE p_TypeName )? LBRACKET p_Expr[true,true] RBRACKET )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:890:11: k= VALIDATE ( p_ValidationMode | k= TYPE p_TypeName )? LBRACKET p_Expr[true,true] RBRACKET
            root_0 = this.adaptor.nil();

            k=this.match(this.input,VALIDATE,XQueryParser.FOLLOW_VALIDATE_in_p_ValidateExpr6466); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:890:37: ( p_ValidationMode | k= TYPE p_TypeName )?
            var alt115=3;
            var LA115_0 = this.input.LA(1);

            if ( (LA115_0==LAX||LA115_0==STRICT) ) {
                alt115=1;
            }
            else if ( (LA115_0==TYPE) ) {
                alt115=2;
            }
            switch (alt115) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:890:39: p_ValidationMode
                    this.pushFollow(XQueryParser.FOLLOW_p_ValidationMode_in_p_ValidateExpr6472);
                    p_ValidationMode245=this.p_ValidationMode();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ValidationMode245.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:890:58: k= TYPE p_TypeName
                    k=this.match(this.input,TYPE,XQueryParser.FOLLOW_TYPE_in_p_ValidateExpr6478); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_TypeName_in_p_ValidateExpr6482);
                    p_TypeName246=this.p_TypeName();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TypeName246.getTree());


                    break;

            }

            LBRACKET247=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_ValidateExpr6487); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LBRACKET247_tree = this.adaptor.create(LBRACKET247);
            this.adaptor.addChild(root_0, LBRACKET247_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_ValidateExpr6489);
            p_Expr248=this.p_Expr(true, true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr248.getTree());
            RBRACKET249=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_ValidateExpr6492); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RBRACKET249_tree = this.adaptor.create(RBRACKET249);
            this.adaptor.addChild(root_0, RBRACKET249_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ValidationMode_return: (function() {
        XQueryParser.p_ValidationMode_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ValidationMode_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:894:1: p_ValidationMode : (k= LAX | k= STRICT ) ;
    // $ANTLR start "p_ValidationMode"
    p_ValidationMode: function() {
        var retval = new XQueryParser.p_ValidationMode_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:895:9: ( (k= LAX | k= STRICT ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:895:11: (k= LAX | k= STRICT )
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:895:11: (k= LAX | k= STRICT )
            var alt116=2;
            var LA116_0 = this.input.LA(1);

            if ( (LA116_0==LAX) ) {
                alt116=1;
            }
            else if ( (LA116_0==STRICT) ) {
                alt116=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 116, 0, this.input);

                throw nvae;
            }
            switch (alt116) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:895:12: k= LAX
                    k=this.match(this.input,LAX,XQueryParser.FOLLOW_LAX_in_p_ValidationMode6521); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:895:20: k= STRICT
                    k=this.match(this.input,STRICT,XQueryParser.FOLLOW_STRICT_in_p_ValidationMode6527); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }


                    break;

            }

            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ExtensionExpr_return: (function() {
        XQueryParser.p_ExtensionExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ExtensionExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:899:1: p_ExtensionExpr : ( L_Pragma )+ LBRACKET ( p_Expr[true,true] )? RBRACKET ;
    // $ANTLR start "p_ExtensionExpr"
    p_ExtensionExpr: function() {
        var retval = new XQueryParser.p_ExtensionExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var L_Pragma250 = null;
        var LBRACKET251 = null;
        var RBRACKET253 = null;
         var p_Expr252 = null;

        var L_Pragma250_tree=null;
        var LBRACKET251_tree=null;
        var RBRACKET253_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:900:9: ( ( L_Pragma )+ LBRACKET ( p_Expr[true,true] )? RBRACKET )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:900:11: ( L_Pragma )+ LBRACKET ( p_Expr[true,true] )? RBRACKET
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:900:11: ( L_Pragma )+
            var cnt117=0;
            loop117:
            do {
                var alt117=2;
                var LA117_0 = this.input.LA(1);

                if ( (LA117_0==L_Pragma) ) {
                    alt117=1;
                }


                switch (alt117) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:900:11: L_Pragma
                    L_Pragma250=this.match(this.input,L_Pragma,XQueryParser.FOLLOW_L_Pragma_in_p_ExtensionExpr6556); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    L_Pragma250_tree = this.adaptor.create(L_Pragma250);
                    this.adaptor.addChild(root_0, L_Pragma250_tree);
                    }


                    break;

                default :
                    if ( cnt117 >= 1 ) {
                        break loop117;
                    }
                    if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        var eee = new org.antlr.runtime.EarlyExitException(117, this.input);
                        throw eee;
                }
                cnt117++;
            } while (true);

            LBRACKET251=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_ExtensionExpr6559); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LBRACKET251_tree = this.adaptor.create(LBRACKET251);
            this.adaptor.addChild(root_0, LBRACKET251_tree);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:900:30: ( p_Expr[true,true] )?
            var alt118=2;
            var LA118_0 = this.input.LA(1);

            if ( ((LA118_0>=ANCESTOR && LA118_0<=QUOT_ER)||LA118_0==LPAREN||(LA118_0>=DOLLAR && LA118_0<=L_UNION_BRACKET)||LA118_0==LBRACKET||LA118_0==LSQUARE||(LA118_0>=STAR && LA118_0<=SMALLER)||(LA118_0>=SLASH && LA118_0<=SLASH_SLASH)||(LA118_0>=DOT && LA118_0<=DOT_DOT)||(LA118_0>=ATTR_SIGN && LA118_0<=Q)||(LA118_0>=APOS && LA118_0<=QUOT)||LA118_0==L_NCName||(LA118_0>=L_Pragma && LA118_0<=L_DoubleLiteral)) ) {
                alt118=1;
            }
            switch (alt118) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:900:30: p_Expr[true,true]
                    this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_ExtensionExpr6561);
                    p_Expr252=this.p_Expr(true, true);

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr252.getTree());


                    break;

            }

            RBRACKET253=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_ExtensionExpr6565); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RBRACKET253_tree = this.adaptor.create(RBRACKET253);
            this.adaptor.addChild(root_0, RBRACKET253_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_PathExpr_return: (function() {
        XQueryParser.p_PathExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_PathExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:912:1: p_PathExpr : ( ( SLASH p_RelativePathExpr )=> ( SLASH p_RelativePathExpr ) | SLASH | SLASH_SLASH p_RelativePathExpr | p_RelativePathExpr );
    // $ANTLR start "p_PathExpr"
    p_PathExpr: function() {
        var retval = new XQueryParser.p_PathExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var SLASH254 = null;
        var SLASH256 = null;
        var SLASH_SLASH257 = null;
         var p_RelativePathExpr255 = null;
         var p_RelativePathExpr258 = null;
         var p_RelativePathExpr259 = null;

        var SLASH254_tree=null;
        var SLASH256_tree=null;
        var SLASH_SLASH257_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:913:9: ( ( SLASH p_RelativePathExpr )=> ( SLASH p_RelativePathExpr ) | SLASH | SLASH_SLASH p_RelativePathExpr | p_RelativePathExpr )
            var alt119=4;
            alt119 = this.dfa119.predict(this.input);
            switch (alt119) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:913:11: ( SLASH p_RelativePathExpr )=> ( SLASH p_RelativePathExpr )
                    root_0 = this.adaptor.nil();

                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:913:41: ( SLASH p_RelativePathExpr )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:913:42: SLASH p_RelativePathExpr
                    SLASH254=this.match(this.input,SLASH,XQueryParser.FOLLOW_SLASH_in_p_PathExpr6608); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    SLASH254_tree = this.adaptor.create(SLASH254);
                    this.adaptor.addChild(root_0, SLASH254_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_RelativePathExpr_in_p_PathExpr6610);
                    p_RelativePathExpr255=this.p_RelativePathExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_RelativePathExpr255.getTree());





                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:914:11: SLASH
                    root_0 = this.adaptor.nil();

                    SLASH256=this.match(this.input,SLASH,XQueryParser.FOLLOW_SLASH_in_p_PathExpr6623); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    SLASH256_tree = this.adaptor.create(SLASH256);
                    this.adaptor.addChild(root_0, SLASH256_tree);
                    }


                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:915:11: SLASH_SLASH p_RelativePathExpr
                    root_0 = this.adaptor.nil();

                    SLASH_SLASH257=this.match(this.input,SLASH_SLASH,XQueryParser.FOLLOW_SLASH_SLASH_in_p_PathExpr6635); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    SLASH_SLASH257_tree = this.adaptor.create(SLASH_SLASH257);
                    this.adaptor.addChild(root_0, SLASH_SLASH257_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_RelativePathExpr_in_p_PathExpr6637);
                    p_RelativePathExpr258=this.p_RelativePathExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_RelativePathExpr258.getTree());


                    break;
                case 4 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:916:11: p_RelativePathExpr
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_RelativePathExpr_in_p_PathExpr6649);
                    p_RelativePathExpr259=this.p_RelativePathExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_RelativePathExpr259.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_RelativePathExpr_return: (function() {
        XQueryParser.p_RelativePathExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_RelativePathExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:920:1: p_RelativePathExpr : p_StepExpr ( ( SLASH | SLASH_SLASH ) p_StepExpr )* ;
    // $ANTLR start "p_RelativePathExpr"
    p_RelativePathExpr: function() {
        var retval = new XQueryParser.p_RelativePathExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var set261 = null;
         var p_StepExpr260 = null;
         var p_StepExpr262 = null;

        var set261_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:921:9: ( p_StepExpr ( ( SLASH | SLASH_SLASH ) p_StepExpr )* )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:921:11: p_StepExpr ( ( SLASH | SLASH_SLASH ) p_StepExpr )*
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_StepExpr_in_p_RelativePathExpr6677);
            p_StepExpr260=this.p_StepExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StepExpr260.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:921:22: ( ( SLASH | SLASH_SLASH ) p_StepExpr )*
            loop120:
            do {
                var alt120=2;
                var LA120_0 = this.input.LA(1);

                if ( ((LA120_0>=SLASH && LA120_0<=SLASH_SLASH)) ) {
                    alt120=1;
                }


                switch (alt120) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:921:23: ( SLASH | SLASH_SLASH ) p_StepExpr
                    set261=this.input.LT(1);
                    if ( (this.input.LA(1)>=SLASH && this.input.LA(1)<=SLASH_SLASH) ) {
                        this.input.consume();
                        if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, this.adaptor.create(set261));
                        this.state.errorRecovery=false;this.state.failed=false;
                    }
                    else {
                        if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
                        throw mse;
                    }

                    this.pushFollow(XQueryParser.FOLLOW_p_StepExpr_in_p_RelativePathExpr6688);
                    p_StepExpr262=this.p_StepExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StepExpr262.getTree());


                    break;

                default :
                    break loop120;
                }
            } while (true);




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_StepExpr_return: (function() {
        XQueryParser.p_StepExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_StepExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:925:1: p_StepExpr : ( ( LBRACKET | LPAREN | SMALLER | QUOT | APOS | DOLLAR )=> p_PostfixExpr | ( ( ( ELEMENT | ATTRIBUTE ) ( p_EQName )? LBRACKET ) | ( ( NAMESPACE | PROCESSING_INSTRUCTION ) ( p_NCName )? LBRACKET ) | ( ( DOCUMENT | TEXT | COMMENT ) LBRACKET ) )=> p_PostfixExpr | ( p_KindTest )=> p_AxisStep | ( p_EQName LPAREN )=> p_PostfixExpr | ( p_PrimaryExpr )=> p_PostfixExpr | p_AxisStep );
    // $ANTLR start "p_StepExpr"
    p_StepExpr: function() {
        var retval = new XQueryParser.p_StepExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_PostfixExpr263 = null;
         var p_PostfixExpr264 = null;
         var p_AxisStep265 = null;
         var p_PostfixExpr266 = null;
         var p_PostfixExpr267 = null;
         var p_AxisStep268 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:926:9: ( ( LBRACKET | LPAREN | SMALLER | QUOT | APOS | DOLLAR )=> p_PostfixExpr | ( ( ( ELEMENT | ATTRIBUTE ) ( p_EQName )? LBRACKET ) | ( ( NAMESPACE | PROCESSING_INSTRUCTION ) ( p_NCName )? LBRACKET ) | ( ( DOCUMENT | TEXT | COMMENT ) LBRACKET ) )=> p_PostfixExpr | ( p_KindTest )=> p_AxisStep | ( p_EQName LPAREN )=> p_PostfixExpr | ( p_PrimaryExpr )=> p_PostfixExpr | p_AxisStep )
            var alt121=6;
            alt121 = this.dfa121.predict(this.input);
            switch (alt121) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:926:11: ( LBRACKET | LPAREN | SMALLER | QUOT | APOS | DOLLAR )=> p_PostfixExpr
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_PostfixExpr_in_p_StepExpr6742);
                    p_PostfixExpr263=this.p_PostfixExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PostfixExpr263.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:927:11: ( ( ( ELEMENT | ATTRIBUTE ) ( p_EQName )? LBRACKET ) | ( ( NAMESPACE | PROCESSING_INSTRUCTION ) ( p_NCName )? LBRACKET ) | ( ( DOCUMENT | TEXT | COMMENT ) LBRACKET ) )=> p_PostfixExpr
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_PostfixExpr_in_p_StepExpr6856);
                    p_PostfixExpr264=this.p_PostfixExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PostfixExpr264.getTree());


                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:932:11: ( p_KindTest )=> p_AxisStep
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_AxisStep_in_p_StepExpr6874);
                    p_AxisStep265=this.p_AxisStep();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AxisStep265.getTree());


                    break;
                case 4 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:933:11: ( p_EQName LPAREN )=> p_PostfixExpr
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_PostfixExpr_in_p_StepExpr6895);
                    p_PostfixExpr266=this.p_PostfixExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PostfixExpr266.getTree());


                    break;
                case 5 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:934:11: ( p_PrimaryExpr )=> p_PostfixExpr
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_PostfixExpr_in_p_StepExpr6913);
                    p_PostfixExpr267=this.p_PostfixExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PostfixExpr267.getTree());


                    break;
                case 6 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:935:11: p_AxisStep
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_AxisStep_in_p_StepExpr6925);
                    p_AxisStep268=this.p_AxisStep();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AxisStep268.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_AxisStep_return: (function() {
        XQueryParser.p_AxisStep_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_AxisStep_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:939:1: p_AxisStep : ( p_ReverseStep | p_ForwardStep ) p_PredicateList ;
    // $ANTLR start "p_AxisStep"
    p_AxisStep: function() {
        var retval = new XQueryParser.p_AxisStep_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_ReverseStep269 = null;
         var p_ForwardStep270 = null;
         var p_PredicateList271 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:940:9: ( ( p_ReverseStep | p_ForwardStep ) p_PredicateList )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:940:11: ( p_ReverseStep | p_ForwardStep ) p_PredicateList
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:940:11: ( p_ReverseStep | p_ForwardStep )
            var alt122=2;
            switch ( this.input.LA(1) ) {
            case PARENT:
                var LA122_1 = this.input.LA(2);

                if ( (LA122_1==COLON_COLON) ) {
                    alt122=1;
                }
                else if ( (LA122_1==EOF||(LA122_1>=AND && LA122_1<=AT)||(LA122_1>=BY && LA122_1<=CASTABLE)||LA122_1==COLLATION||LA122_1==DEFAULT||(LA122_1>=DESCENDING && LA122_1<=DIV)||LA122_1==EMPTY||LA122_1==EQ||LA122_1==EXCEPT||LA122_1==FOR||LA122_1==GE||(LA122_1>=GT && LA122_1<=IDIV)||(LA122_1>=INSTANCE && LA122_1<=IS)||LA122_1==LE||(LA122_1>=LET && LA122_1<=MOD)||LA122_1==NE||(LA122_1>=OR && LA122_1<=ORDER)||(LA122_1>=RETURN && LA122_1<=SATISFIES)||LA122_1==STABLE||(LA122_1>=TO && LA122_1<=TREAT)||LA122_1==UNION||LA122_1==WHERE||LA122_1==COUNT||(LA122_1>=END && LA122_1<=GROUP)||LA122_1==ONLY||LA122_1==START||(LA122_1>=AFTER && LA122_1<=BEFORE)||LA122_1==INTO||LA122_1==MODIFY||LA122_1==WITH||LA122_1==CONTAINS||LA122_1==PARAGRAPHS||LA122_1==SENTENCES||LA122_1==TIMES||LA122_1==WORDS||LA122_1==CONCAT||LA122_1==RPAREN||LA122_1==R_UNION_BRACKET||(LA122_1>=RBRACKET && LA122_1<=EQUAL)||LA122_1==NOTEQUAL||LA122_1==COMMA||(LA122_1>=STAR && LA122_1<=BANG)||LA122_1==COLON||(LA122_1>=SEMICOLON && LA122_1<=VBAR)) ) {
                    alt122=2;
                }
                else {
                    if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                    var nvae =
                        new org.antlr.runtime.NoViableAltException("", 122, 1, this.input);

                    throw nvae;
                }
                break;
            case ANCESTOR:
                var LA122_2 = this.input.LA(2);

                if ( (LA122_2==COLON_COLON) ) {
                    alt122=1;
                }
                else if ( (LA122_2==EOF||(LA122_2>=AND && LA122_2<=AT)||(LA122_2>=BY && LA122_2<=CASTABLE)||LA122_2==COLLATION||LA122_2==DEFAULT||(LA122_2>=DESCENDING && LA122_2<=DIV)||LA122_2==EMPTY||LA122_2==EQ||LA122_2==EXCEPT||LA122_2==FOR||LA122_2==GE||(LA122_2>=GT && LA122_2<=IDIV)||(LA122_2>=INSTANCE && LA122_2<=IS)||LA122_2==LE||(LA122_2>=LET && LA122_2<=MOD)||LA122_2==NE||(LA122_2>=OR && LA122_2<=ORDER)||(LA122_2>=RETURN && LA122_2<=SATISFIES)||LA122_2==STABLE||(LA122_2>=TO && LA122_2<=TREAT)||LA122_2==UNION||LA122_2==WHERE||LA122_2==COUNT||(LA122_2>=END && LA122_2<=GROUP)||LA122_2==ONLY||LA122_2==START||(LA122_2>=AFTER && LA122_2<=BEFORE)||LA122_2==INTO||LA122_2==MODIFY||LA122_2==WITH||LA122_2==CONTAINS||LA122_2==PARAGRAPHS||LA122_2==SENTENCES||LA122_2==TIMES||LA122_2==WORDS||LA122_2==CONCAT||LA122_2==RPAREN||LA122_2==R_UNION_BRACKET||(LA122_2>=RBRACKET && LA122_2<=EQUAL)||LA122_2==NOTEQUAL||LA122_2==COMMA||(LA122_2>=STAR && LA122_2<=BANG)||LA122_2==COLON||(LA122_2>=SEMICOLON && LA122_2<=VBAR)) ) {
                    alt122=2;
                }
                else {
                    if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                    var nvae =
                        new org.antlr.runtime.NoViableAltException("", 122, 2, this.input);

                    throw nvae;
                }
                break;
            case PRECEDING_SIBLING:
                var LA122_3 = this.input.LA(2);

                if ( (LA122_3==COLON_COLON) ) {
                    alt122=1;
                }
                else if ( (LA122_3==EOF||(LA122_3>=AND && LA122_3<=AT)||(LA122_3>=BY && LA122_3<=CASTABLE)||LA122_3==COLLATION||LA122_3==DEFAULT||(LA122_3>=DESCENDING && LA122_3<=DIV)||LA122_3==EMPTY||LA122_3==EQ||LA122_3==EXCEPT||LA122_3==FOR||LA122_3==GE||(LA122_3>=GT && LA122_3<=IDIV)||(LA122_3>=INSTANCE && LA122_3<=IS)||LA122_3==LE||(LA122_3>=LET && LA122_3<=MOD)||LA122_3==NE||(LA122_3>=OR && LA122_3<=ORDER)||(LA122_3>=RETURN && LA122_3<=SATISFIES)||LA122_3==STABLE||(LA122_3>=TO && LA122_3<=TREAT)||LA122_3==UNION||LA122_3==WHERE||LA122_3==COUNT||(LA122_3>=END && LA122_3<=GROUP)||LA122_3==ONLY||LA122_3==START||(LA122_3>=AFTER && LA122_3<=BEFORE)||LA122_3==INTO||LA122_3==MODIFY||LA122_3==WITH||LA122_3==CONTAINS||LA122_3==PARAGRAPHS||LA122_3==SENTENCES||LA122_3==TIMES||LA122_3==WORDS||LA122_3==CONCAT||LA122_3==RPAREN||LA122_3==R_UNION_BRACKET||(LA122_3>=RBRACKET && LA122_3<=EQUAL)||LA122_3==NOTEQUAL||LA122_3==COMMA||(LA122_3>=STAR && LA122_3<=BANG)||LA122_3==COLON||(LA122_3>=SEMICOLON && LA122_3<=VBAR)) ) {
                    alt122=2;
                }
                else {
                    if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                    var nvae =
                        new org.antlr.runtime.NoViableAltException("", 122, 3, this.input);

                    throw nvae;
                }
                break;
            case PRECEDING:
                var LA122_4 = this.input.LA(2);

                if ( (LA122_4==COLON_COLON) ) {
                    alt122=1;
                }
                else if ( (LA122_4==EOF||(LA122_4>=AND && LA122_4<=AT)||(LA122_4>=BY && LA122_4<=CASTABLE)||LA122_4==COLLATION||LA122_4==DEFAULT||(LA122_4>=DESCENDING && LA122_4<=DIV)||LA122_4==EMPTY||LA122_4==EQ||LA122_4==EXCEPT||LA122_4==FOR||LA122_4==GE||(LA122_4>=GT && LA122_4<=IDIV)||(LA122_4>=INSTANCE && LA122_4<=IS)||LA122_4==LE||(LA122_4>=LET && LA122_4<=MOD)||LA122_4==NE||(LA122_4>=OR && LA122_4<=ORDER)||(LA122_4>=RETURN && LA122_4<=SATISFIES)||LA122_4==STABLE||(LA122_4>=TO && LA122_4<=TREAT)||LA122_4==UNION||LA122_4==WHERE||LA122_4==COUNT||(LA122_4>=END && LA122_4<=GROUP)||LA122_4==ONLY||LA122_4==START||(LA122_4>=AFTER && LA122_4<=BEFORE)||LA122_4==INTO||LA122_4==MODIFY||LA122_4==WITH||LA122_4==CONTAINS||LA122_4==PARAGRAPHS||LA122_4==SENTENCES||LA122_4==TIMES||LA122_4==WORDS||LA122_4==CONCAT||LA122_4==RPAREN||LA122_4==R_UNION_BRACKET||(LA122_4>=RBRACKET && LA122_4<=EQUAL)||LA122_4==NOTEQUAL||LA122_4==COMMA||(LA122_4>=STAR && LA122_4<=BANG)||LA122_4==COLON||(LA122_4>=SEMICOLON && LA122_4<=VBAR)) ) {
                    alt122=2;
                }
                else {
                    if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                    var nvae =
                        new org.antlr.runtime.NoViableAltException("", 122, 4, this.input);

                    throw nvae;
                }
                break;
            case ANCESTOR_OR_SELF:
                var LA122_5 = this.input.LA(2);

                if ( (LA122_5==COLON_COLON) ) {
                    alt122=1;
                }
                else if ( (LA122_5==EOF||(LA122_5>=AND && LA122_5<=AT)||(LA122_5>=BY && LA122_5<=CASTABLE)||LA122_5==COLLATION||LA122_5==DEFAULT||(LA122_5>=DESCENDING && LA122_5<=DIV)||LA122_5==EMPTY||LA122_5==EQ||LA122_5==EXCEPT||LA122_5==FOR||LA122_5==GE||(LA122_5>=GT && LA122_5<=IDIV)||(LA122_5>=INSTANCE && LA122_5<=IS)||LA122_5==LE||(LA122_5>=LET && LA122_5<=MOD)||LA122_5==NE||(LA122_5>=OR && LA122_5<=ORDER)||(LA122_5>=RETURN && LA122_5<=SATISFIES)||LA122_5==STABLE||(LA122_5>=TO && LA122_5<=TREAT)||LA122_5==UNION||LA122_5==WHERE||LA122_5==COUNT||(LA122_5>=END && LA122_5<=GROUP)||LA122_5==ONLY||LA122_5==START||(LA122_5>=AFTER && LA122_5<=BEFORE)||LA122_5==INTO||LA122_5==MODIFY||LA122_5==WITH||LA122_5==CONTAINS||LA122_5==PARAGRAPHS||LA122_5==SENTENCES||LA122_5==TIMES||LA122_5==WORDS||LA122_5==CONCAT||LA122_5==RPAREN||LA122_5==R_UNION_BRACKET||(LA122_5>=RBRACKET && LA122_5<=EQUAL)||LA122_5==NOTEQUAL||LA122_5==COMMA||(LA122_5>=STAR && LA122_5<=BANG)||LA122_5==COLON||(LA122_5>=SEMICOLON && LA122_5<=VBAR)) ) {
                    alt122=2;
                }
                else {
                    if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                    var nvae =
                        new org.antlr.runtime.NoViableAltException("", 122, 5, this.input);

                    throw nvae;
                }
                break;
            case DOT_DOT:
                alt122=1;
                break;
            case AND:
            case AS:
            case ASCENDING:
            case AT:
            case ATTRIBUTE:
            case BASE_URI:
            case BOUNDARY_SPACE:
            case BY:
            case CASE:
            case CAST:
            case CASTABLE:
            case CHILD:
            case COLLATION:
            case COMMENT:
            case CONSTRUCTION:
            case COPY_NAMESPACES:
            case DECLARE:
            case DEFAULT:
            case DESCENDANT:
            case DESCENDANT_OR_SELF:
            case DESCENDING:
            case DIV:
            case DOCUMENT:
            case DOCUMENT_NODE:
            case ELEMENT:
            case ELSE:
            case EMPTY:
            case EMPTY_SEQUENCE:
            case ENCODING:
            case EQ:
            case EVERY:
            case EXCEPT:
            case EXTERNAL:
            case FOLLOWING:
            case FOLLOWING_SIBLING:
            case FOR:
            case FUNCTION:
            case GE:
            case GREATEST:
            case GT:
            case IDIV:
            case IF:
            case IMPORT:
            case IN:
            case INHERIT:
            case INSTANCE:
            case INTERSECT:
            case IS:
            case ITEM:
            case LAX:
            case LE:
            case LEAST:
            case LET:
            case LT:
            case MOD:
            case MODULE:
            case NAMESPACE:
            case NE:
            case NO_INHERIT:
            case NO_PRESERVE:
            case NODE:
            case JSON:
            case OF:
            case OPTION:
            case OR:
            case ORDER:
            case ORDERED:
            case ORDERING:
            case PRESERVE:
            case PROCESSING_INSTRUCTION:
            case STRUCTURED_ITEM:
            case JSON_ITEM:
            case OBJECT:
            case ARRAY:
            case RETURN:
            case SATISFIES:
            case SCHEMA:
            case SCHEMA_ATTRIBUTE:
            case SCHEMA_ELEMENT:
            case SELF:
            case SOME:
            case STABLE:
            case STRICT:
            case STRIP:
            case TEXT:
            case THEN:
            case TO:
            case TREAT:
            case TYPESWITCH:
            case UNION:
            case UNORDERED:
            case VALIDATE:
            case VARIABLE:
            case VERSION:
            case WHERE:
            case XQUERY:
            case ALLOWING:
            case CATCH:
            case CONTEXT:
            case COUNT:
            case DECIMAL_FORMAT:
            case DECIMAL_SEPARATOR:
            case DIGIT:
            case END:
            case GROUP:
            case GROUPING_SEPARATOR:
            case INFINITY:
            case MINUS_SIGN:
            case NAMESPACE_NODE:
            case NAN:
            case NEXT:
            case ONLY:
            case PATTERN_SEPARATOR:
            case PERCENT:
            case PER_MILLE:
            case PREVIOUS:
            case SLIDING:
            case START:
            case SWITCH:
            case TRY:
            case TUMBLING:
            case TYPE:
            case WHEN:
            case WINDOW:
            case ZERO_DIGIT:
            case AFTER:
            case BEFORE:
            case COPY:
            case DELETE:
            case FIRST:
            case INSERT:
            case INTO:
            case POSITION:
            case APPEND:
            case LAST:
            case MODIFY:
            case NODES:
            case RENAME:
            case REPLACE:
            case REVALIDATION:
            case SKIP:
            case VALUE:
            case WITH:
            case ALL:
            case ANY:
            case CONTAINS:
            case CONTENT:
            case DIACRITICS:
            case DIFFERENT:
            case DISTANCE:
            case ENTIRE:
            case EXACTLY:
            case FROM:
            case FT_OPTION:
            case FTAND:
            case FTNOT:
            case FTOR:
            case INSENSITIVE:
            case LANGUAGE:
            case LEVELS:
            case LOWERCASE:
            case MOST:
            case NO:
            case NOT:
            case OCCURS:
            case PARAGRAPH:
            case PARAGRAPHS:
            case PHRASE:
            case RELATIONSHIP:
            case SAME:
            case SCORE:
            case SENSITIVE:
            case SENTENCE:
            case SENTENCES:
            case STEMMING:
            case STOP:
            case THESAURUS:
            case TIMES:
            case UPPERCASE:
            case USING:
            case WEIGHT:
            case WILDCARDS:
            case WITHOUT:
            case WORD:
            case WORDS:
            case BREAK:
            case CONTINUE:
            case EXIT:
            case LOOP:
            case RETURNING:
            case WHILE:
            case CHECK:
            case COLLECTION:
            case CONSTRAINT:
            case FOREACH:
            case FOREIGN:
            case INDEX:
            case INTEGRITY:
            case KEY:
            case ON:
            case UNIQUE:
            case AMP_ER:
            case APOS_ER:
            case QUOT_ER:
            case STAR:
            case ATTR_SIGN:
            case Q:
            case L_NCName:
                alt122=2;
                break;
            default:
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 122, 0, this.input);

                throw nvae;
            }

            switch (alt122) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:940:12: p_ReverseStep
                    this.pushFollow(XQueryParser.FOLLOW_p_ReverseStep_in_p_AxisStep6952);
                    p_ReverseStep269=this.p_ReverseStep();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ReverseStep269.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:940:28: p_ForwardStep
                    this.pushFollow(XQueryParser.FOLLOW_p_ForwardStep_in_p_AxisStep6956);
                    p_ForwardStep270=this.p_ForwardStep();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ForwardStep270.getTree());


                    break;

            }

            this.pushFollow(XQueryParser.FOLLOW_p_PredicateList_in_p_AxisStep6959);
            p_PredicateList271=this.p_PredicateList();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PredicateList271.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ForwardStep_return: (function() {
        XQueryParser.p_ForwardStep_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ForwardStep_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:944:1: p_ForwardStep : ( p_ForwardAxis p_NodeTest | p_AbbrevForwardStep );
    // $ANTLR start "p_ForwardStep"
    p_ForwardStep: function() {
        var retval = new XQueryParser.p_ForwardStep_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_ForwardAxis272 = null;
         var p_NodeTest273 = null;
         var p_AbbrevForwardStep274 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:945:9: ( p_ForwardAxis p_NodeTest | p_AbbrevForwardStep )
            var alt123=2;
            alt123 = this.dfa123.predict(this.input);
            switch (alt123) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:945:11: p_ForwardAxis p_NodeTest
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_ForwardAxis_in_p_ForwardStep6985);
                    p_ForwardAxis272=this.p_ForwardAxis();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ForwardAxis272.getTree());
                    this.pushFollow(XQueryParser.FOLLOW_p_NodeTest_in_p_ForwardStep6987);
                    p_NodeTest273=this.p_NodeTest();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NodeTest273.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:946:11: p_AbbrevForwardStep
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_AbbrevForwardStep_in_p_ForwardStep6999);
                    p_AbbrevForwardStep274=this.p_AbbrevForwardStep();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AbbrevForwardStep274.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ForwardAxis_return: (function() {
        XQueryParser.p_ForwardAxis_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ForwardAxis_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:950:1: p_ForwardAxis : ( CHILD COLON_COLON | DESCENDANT COLON_COLON | ATTRIBUTE COLON_COLON | SELF COLON_COLON | DESCENDANT_OR_SELF COLON_COLON | FOLLOWING_SIBLING COLON_COLON | FOLLOWING COLON_COLON );
    // $ANTLR start "p_ForwardAxis"
    p_ForwardAxis: function() {
        var retval = new XQueryParser.p_ForwardAxis_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var CHILD275 = null;
        var COLON_COLON276 = null;
        var DESCENDANT277 = null;
        var COLON_COLON278 = null;
        var ATTRIBUTE279 = null;
        var COLON_COLON280 = null;
        var SELF281 = null;
        var COLON_COLON282 = null;
        var DESCENDANT_OR_SELF283 = null;
        var COLON_COLON284 = null;
        var FOLLOWING_SIBLING285 = null;
        var COLON_COLON286 = null;
        var FOLLOWING287 = null;
        var COLON_COLON288 = null;

        var CHILD275_tree=null;
        var COLON_COLON276_tree=null;
        var DESCENDANT277_tree=null;
        var COLON_COLON278_tree=null;
        var ATTRIBUTE279_tree=null;
        var COLON_COLON280_tree=null;
        var SELF281_tree=null;
        var COLON_COLON282_tree=null;
        var DESCENDANT_OR_SELF283_tree=null;
        var COLON_COLON284_tree=null;
        var FOLLOWING_SIBLING285_tree=null;
        var COLON_COLON286_tree=null;
        var FOLLOWING287_tree=null;
        var COLON_COLON288_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:951:9: ( CHILD COLON_COLON | DESCENDANT COLON_COLON | ATTRIBUTE COLON_COLON | SELF COLON_COLON | DESCENDANT_OR_SELF COLON_COLON | FOLLOWING_SIBLING COLON_COLON | FOLLOWING COLON_COLON )
            var alt124=7;
            switch ( this.input.LA(1) ) {
            case CHILD:
                alt124=1;
                break;
            case DESCENDANT:
                alt124=2;
                break;
            case ATTRIBUTE:
                alt124=3;
                break;
            case SELF:
                alt124=4;
                break;
            case DESCENDANT_OR_SELF:
                alt124=5;
                break;
            case FOLLOWING_SIBLING:
                alt124=6;
                break;
            case FOLLOWING:
                alt124=7;
                break;
            default:
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 124, 0, this.input);

                throw nvae;
            }

            switch (alt124) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:951:11: CHILD COLON_COLON
                    root_0 = this.adaptor.nil();

                    CHILD275=this.match(this.input,CHILD,XQueryParser.FOLLOW_CHILD_in_p_ForwardAxis7025); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    CHILD275_tree = this.adaptor.create(CHILD275);
                    this.adaptor.addChild(root_0, CHILD275_tree);
                    }
                    COLON_COLON276=this.match(this.input,COLON_COLON,XQueryParser.FOLLOW_COLON_COLON_in_p_ForwardAxis7027); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    COLON_COLON276_tree = this.adaptor.create(COLON_COLON276);
                    this.adaptor.addChild(root_0, COLON_COLON276_tree);
                    }


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:952:11: DESCENDANT COLON_COLON
                    root_0 = this.adaptor.nil();

                    DESCENDANT277=this.match(this.input,DESCENDANT,XQueryParser.FOLLOW_DESCENDANT_in_p_ForwardAxis7039); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    DESCENDANT277_tree = this.adaptor.create(DESCENDANT277);
                    this.adaptor.addChild(root_0, DESCENDANT277_tree);
                    }
                    COLON_COLON278=this.match(this.input,COLON_COLON,XQueryParser.FOLLOW_COLON_COLON_in_p_ForwardAxis7041); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    COLON_COLON278_tree = this.adaptor.create(COLON_COLON278);
                    this.adaptor.addChild(root_0, COLON_COLON278_tree);
                    }


                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:953:11: ATTRIBUTE COLON_COLON
                    root_0 = this.adaptor.nil();

                    ATTRIBUTE279=this.match(this.input,ATTRIBUTE,XQueryParser.FOLLOW_ATTRIBUTE_in_p_ForwardAxis7053); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    ATTRIBUTE279_tree = this.adaptor.create(ATTRIBUTE279);
                    this.adaptor.addChild(root_0, ATTRIBUTE279_tree);
                    }
                    COLON_COLON280=this.match(this.input,COLON_COLON,XQueryParser.FOLLOW_COLON_COLON_in_p_ForwardAxis7055); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    COLON_COLON280_tree = this.adaptor.create(COLON_COLON280);
                    this.adaptor.addChild(root_0, COLON_COLON280_tree);
                    }


                    break;
                case 4 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:954:11: SELF COLON_COLON
                    root_0 = this.adaptor.nil();

                    SELF281=this.match(this.input,SELF,XQueryParser.FOLLOW_SELF_in_p_ForwardAxis7067); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    SELF281_tree = this.adaptor.create(SELF281);
                    this.adaptor.addChild(root_0, SELF281_tree);
                    }
                    COLON_COLON282=this.match(this.input,COLON_COLON,XQueryParser.FOLLOW_COLON_COLON_in_p_ForwardAxis7069); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    COLON_COLON282_tree = this.adaptor.create(COLON_COLON282);
                    this.adaptor.addChild(root_0, COLON_COLON282_tree);
                    }


                    break;
                case 5 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:955:11: DESCENDANT_OR_SELF COLON_COLON
                    root_0 = this.adaptor.nil();

                    DESCENDANT_OR_SELF283=this.match(this.input,DESCENDANT_OR_SELF,XQueryParser.FOLLOW_DESCENDANT_OR_SELF_in_p_ForwardAxis7081); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    DESCENDANT_OR_SELF283_tree = this.adaptor.create(DESCENDANT_OR_SELF283);
                    this.adaptor.addChild(root_0, DESCENDANT_OR_SELF283_tree);
                    }
                    COLON_COLON284=this.match(this.input,COLON_COLON,XQueryParser.FOLLOW_COLON_COLON_in_p_ForwardAxis7083); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    COLON_COLON284_tree = this.adaptor.create(COLON_COLON284);
                    this.adaptor.addChild(root_0, COLON_COLON284_tree);
                    }


                    break;
                case 6 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:956:11: FOLLOWING_SIBLING COLON_COLON
                    root_0 = this.adaptor.nil();

                    FOLLOWING_SIBLING285=this.match(this.input,FOLLOWING_SIBLING,XQueryParser.FOLLOW_FOLLOWING_SIBLING_in_p_ForwardAxis7095); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    FOLLOWING_SIBLING285_tree = this.adaptor.create(FOLLOWING_SIBLING285);
                    this.adaptor.addChild(root_0, FOLLOWING_SIBLING285_tree);
                    }
                    COLON_COLON286=this.match(this.input,COLON_COLON,XQueryParser.FOLLOW_COLON_COLON_in_p_ForwardAxis7097); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    COLON_COLON286_tree = this.adaptor.create(COLON_COLON286);
                    this.adaptor.addChild(root_0, COLON_COLON286_tree);
                    }


                    break;
                case 7 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:957:11: FOLLOWING COLON_COLON
                    root_0 = this.adaptor.nil();

                    FOLLOWING287=this.match(this.input,FOLLOWING,XQueryParser.FOLLOW_FOLLOWING_in_p_ForwardAxis7109); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    FOLLOWING287_tree = this.adaptor.create(FOLLOWING287);
                    this.adaptor.addChild(root_0, FOLLOWING287_tree);
                    }
                    COLON_COLON288=this.match(this.input,COLON_COLON,XQueryParser.FOLLOW_COLON_COLON_in_p_ForwardAxis7111); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    COLON_COLON288_tree = this.adaptor.create(COLON_COLON288);
                    this.adaptor.addChild(root_0, COLON_COLON288_tree);
                    }


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_AbbrevForwardStep_return: (function() {
        XQueryParser.p_AbbrevForwardStep_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_AbbrevForwardStep_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:961:1: p_AbbrevForwardStep : ( ATTR_SIGN )? p_NodeTest ;
    // $ANTLR start "p_AbbrevForwardStep"
    p_AbbrevForwardStep: function() {
        var retval = new XQueryParser.p_AbbrevForwardStep_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var ATTR_SIGN289 = null;
         var p_NodeTest290 = null;

        var ATTR_SIGN289_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:962:9: ( ( ATTR_SIGN )? p_NodeTest )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:962:11: ( ATTR_SIGN )? p_NodeTest
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:962:11: ( ATTR_SIGN )?
            var alt125=2;
            var LA125_0 = this.input.LA(1);

            if ( (LA125_0==ATTR_SIGN) ) {
                alt125=1;
            }
            switch (alt125) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:962:11: ATTR_SIGN
                    ATTR_SIGN289=this.match(this.input,ATTR_SIGN,XQueryParser.FOLLOW_ATTR_SIGN_in_p_AbbrevForwardStep7137); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    ATTR_SIGN289_tree = this.adaptor.create(ATTR_SIGN289);
                    this.adaptor.addChild(root_0, ATTR_SIGN289_tree);
                    }


                    break;

            }

            this.pushFollow(XQueryParser.FOLLOW_p_NodeTest_in_p_AbbrevForwardStep7140);
            p_NodeTest290=this.p_NodeTest();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NodeTest290.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ReverseStep_return: (function() {
        XQueryParser.p_ReverseStep_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ReverseStep_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:966:1: p_ReverseStep : ( p_ReverseAxis p_NodeTest | p_AbbrevReverseStep );
    // $ANTLR start "p_ReverseStep"
    p_ReverseStep: function() {
        var retval = new XQueryParser.p_ReverseStep_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_ReverseAxis291 = null;
         var p_NodeTest292 = null;
         var p_AbbrevReverseStep293 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:967:9: ( p_ReverseAxis p_NodeTest | p_AbbrevReverseStep )
            var alt126=2;
            var LA126_0 = this.input.LA(1);

            if ( ((LA126_0>=ANCESTOR && LA126_0<=ANCESTOR_OR_SELF)||(LA126_0>=PARENT && LA126_0<=PRECEDING_SIBLING)) ) {
                alt126=1;
            }
            else if ( (LA126_0==DOT_DOT) ) {
                alt126=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 126, 0, this.input);

                throw nvae;
            }
            switch (alt126) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:967:11: p_ReverseAxis p_NodeTest
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_ReverseAxis_in_p_ReverseStep7166);
                    p_ReverseAxis291=this.p_ReverseAxis();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ReverseAxis291.getTree());
                    this.pushFollow(XQueryParser.FOLLOW_p_NodeTest_in_p_ReverseStep7168);
                    p_NodeTest292=this.p_NodeTest();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NodeTest292.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:968:11: p_AbbrevReverseStep
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_AbbrevReverseStep_in_p_ReverseStep7180);
                    p_AbbrevReverseStep293=this.p_AbbrevReverseStep();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AbbrevReverseStep293.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ReverseAxis_return: (function() {
        XQueryParser.p_ReverseAxis_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ReverseAxis_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:972:1: p_ReverseAxis : ( PARENT COLON_COLON | ANCESTOR COLON_COLON | PRECEDING_SIBLING COLON_COLON | PRECEDING COLON_COLON | ANCESTOR_OR_SELF COLON_COLON );
    // $ANTLR start "p_ReverseAxis"
    p_ReverseAxis: function() {
        var retval = new XQueryParser.p_ReverseAxis_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var PARENT294 = null;
        var COLON_COLON295 = null;
        var ANCESTOR296 = null;
        var COLON_COLON297 = null;
        var PRECEDING_SIBLING298 = null;
        var COLON_COLON299 = null;
        var PRECEDING300 = null;
        var COLON_COLON301 = null;
        var ANCESTOR_OR_SELF302 = null;
        var COLON_COLON303 = null;

        var PARENT294_tree=null;
        var COLON_COLON295_tree=null;
        var ANCESTOR296_tree=null;
        var COLON_COLON297_tree=null;
        var PRECEDING_SIBLING298_tree=null;
        var COLON_COLON299_tree=null;
        var PRECEDING300_tree=null;
        var COLON_COLON301_tree=null;
        var ANCESTOR_OR_SELF302_tree=null;
        var COLON_COLON303_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:973:9: ( PARENT COLON_COLON | ANCESTOR COLON_COLON | PRECEDING_SIBLING COLON_COLON | PRECEDING COLON_COLON | ANCESTOR_OR_SELF COLON_COLON )
            var alt127=5;
            switch ( this.input.LA(1) ) {
            case PARENT:
                alt127=1;
                break;
            case ANCESTOR:
                alt127=2;
                break;
            case PRECEDING_SIBLING:
                alt127=3;
                break;
            case PRECEDING:
                alt127=4;
                break;
            case ANCESTOR_OR_SELF:
                alt127=5;
                break;
            default:
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 127, 0, this.input);

                throw nvae;
            }

            switch (alt127) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:973:11: PARENT COLON_COLON
                    root_0 = this.adaptor.nil();

                    PARENT294=this.match(this.input,PARENT,XQueryParser.FOLLOW_PARENT_in_p_ReverseAxis7206); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    PARENT294_tree = this.adaptor.create(PARENT294);
                    this.adaptor.addChild(root_0, PARENT294_tree);
                    }
                    COLON_COLON295=this.match(this.input,COLON_COLON,XQueryParser.FOLLOW_COLON_COLON_in_p_ReverseAxis7208); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    COLON_COLON295_tree = this.adaptor.create(COLON_COLON295);
                    this.adaptor.addChild(root_0, COLON_COLON295_tree);
                    }


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:974:11: ANCESTOR COLON_COLON
                    root_0 = this.adaptor.nil();

                    ANCESTOR296=this.match(this.input,ANCESTOR,XQueryParser.FOLLOW_ANCESTOR_in_p_ReverseAxis7220); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    ANCESTOR296_tree = this.adaptor.create(ANCESTOR296);
                    this.adaptor.addChild(root_0, ANCESTOR296_tree);
                    }
                    COLON_COLON297=this.match(this.input,COLON_COLON,XQueryParser.FOLLOW_COLON_COLON_in_p_ReverseAxis7222); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    COLON_COLON297_tree = this.adaptor.create(COLON_COLON297);
                    this.adaptor.addChild(root_0, COLON_COLON297_tree);
                    }


                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:975:11: PRECEDING_SIBLING COLON_COLON
                    root_0 = this.adaptor.nil();

                    PRECEDING_SIBLING298=this.match(this.input,PRECEDING_SIBLING,XQueryParser.FOLLOW_PRECEDING_SIBLING_in_p_ReverseAxis7234); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    PRECEDING_SIBLING298_tree = this.adaptor.create(PRECEDING_SIBLING298);
                    this.adaptor.addChild(root_0, PRECEDING_SIBLING298_tree);
                    }
                    COLON_COLON299=this.match(this.input,COLON_COLON,XQueryParser.FOLLOW_COLON_COLON_in_p_ReverseAxis7236); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    COLON_COLON299_tree = this.adaptor.create(COLON_COLON299);
                    this.adaptor.addChild(root_0, COLON_COLON299_tree);
                    }


                    break;
                case 4 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:976:11: PRECEDING COLON_COLON
                    root_0 = this.adaptor.nil();

                    PRECEDING300=this.match(this.input,PRECEDING,XQueryParser.FOLLOW_PRECEDING_in_p_ReverseAxis7248); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    PRECEDING300_tree = this.adaptor.create(PRECEDING300);
                    this.adaptor.addChild(root_0, PRECEDING300_tree);
                    }
                    COLON_COLON301=this.match(this.input,COLON_COLON,XQueryParser.FOLLOW_COLON_COLON_in_p_ReverseAxis7250); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    COLON_COLON301_tree = this.adaptor.create(COLON_COLON301);
                    this.adaptor.addChild(root_0, COLON_COLON301_tree);
                    }


                    break;
                case 5 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:977:11: ANCESTOR_OR_SELF COLON_COLON
                    root_0 = this.adaptor.nil();

                    ANCESTOR_OR_SELF302=this.match(this.input,ANCESTOR_OR_SELF,XQueryParser.FOLLOW_ANCESTOR_OR_SELF_in_p_ReverseAxis7262); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    ANCESTOR_OR_SELF302_tree = this.adaptor.create(ANCESTOR_OR_SELF302);
                    this.adaptor.addChild(root_0, ANCESTOR_OR_SELF302_tree);
                    }
                    COLON_COLON303=this.match(this.input,COLON_COLON,XQueryParser.FOLLOW_COLON_COLON_in_p_ReverseAxis7264); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    COLON_COLON303_tree = this.adaptor.create(COLON_COLON303);
                    this.adaptor.addChild(root_0, COLON_COLON303_tree);
                    }


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_AbbrevReverseStep_return: (function() {
        XQueryParser.p_AbbrevReverseStep_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_AbbrevReverseStep_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:981:1: p_AbbrevReverseStep : DOT_DOT ;
    // $ANTLR start "p_AbbrevReverseStep"
    p_AbbrevReverseStep: function() {
        var retval = new XQueryParser.p_AbbrevReverseStep_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var DOT_DOT304 = null;

        var DOT_DOT304_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:982:9: ( DOT_DOT )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:982:11: DOT_DOT
            root_0 = this.adaptor.nil();

            DOT_DOT304=this.match(this.input,DOT_DOT,XQueryParser.FOLLOW_DOT_DOT_in_p_AbbrevReverseStep7290); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            DOT_DOT304_tree = this.adaptor.create(DOT_DOT304);
            this.adaptor.addChild(root_0, DOT_DOT304_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_NodeTest_return: (function() {
        XQueryParser.p_NodeTest_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_NodeTest_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:986:1: p_NodeTest : ( p_KindTest | p_NameTest );
    // $ANTLR start "p_NodeTest"
    p_NodeTest: function() {
        var retval = new XQueryParser.p_NodeTest_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_KindTest305 = null;
         var p_NameTest306 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:987:9: ( p_KindTest | p_NameTest )
            var alt128=2;
            alt128 = this.dfa128.predict(this.input);
            switch (alt128) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:987:11: p_KindTest
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_KindTest_in_p_NodeTest7316);
                    p_KindTest305=this.p_KindTest();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_KindTest305.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:987:24: p_NameTest
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_NameTest_in_p_NodeTest7320);
                    p_NameTest306=this.p_NameTest();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NameTest306.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_NameTest_return: (function() {
        XQueryParser.p_NameTest_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_NameTest_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:991:1: p_NameTest : ( p_EQName | p_Wildcard );
    // $ANTLR start "p_NameTest"
    p_NameTest: function() {
        var retval = new XQueryParser.p_NameTest_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_EQName307 = null;
         var p_Wildcard308 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:992:9: ( p_EQName | p_Wildcard )
            var alt129=2;
            alt129 = this.dfa129.predict(this.input);
            switch (alt129) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:992:11: p_EQName
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_p_NameTest7346);
                    p_EQName307=this.p_EQName();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_EQName307.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:992:22: p_Wildcard
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_Wildcard_in_p_NameTest7350);
                    p_Wildcard308=this.p_Wildcard();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Wildcard308.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_Wildcard_return: (function() {
        XQueryParser.p_Wildcard_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_Wildcard_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:999:1: p_Wildcard : ( STAR ( COLON p_NCName )? | p_NCName COLON STAR | p_BracedURILiteral STAR );
    // $ANTLR start "p_Wildcard"
    p_Wildcard: function() {
        var retval = new XQueryParser.p_Wildcard_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var STAR309 = null;
        var COLON310 = null;
        var COLON313 = null;
        var STAR314 = null;
        var STAR316 = null;
         var p_NCName311 = null;
         var p_NCName312 = null;
         var p_BracedURILiteral315 = null;

        var STAR309_tree=null;
        var COLON310_tree=null;
        var COLON313_tree=null;
        var STAR314_tree=null;
        var STAR316_tree=null;

        this.setWsExplicit(true);
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1000:9: ( STAR ( COLON p_NCName )? | p_NCName COLON STAR | p_BracedURILiteral STAR )
            var alt131=3;
            switch ( this.input.LA(1) ) {
            case STAR:
                alt131=1;
                break;
            case ANCESTOR:
            case ANCESTOR_OR_SELF:
            case AND:
            case AS:
            case ASCENDING:
            case AT:
            case ATTRIBUTE:
            case BASE_URI:
            case BOUNDARY_SPACE:
            case BY:
            case CASE:
            case CAST:
            case CASTABLE:
            case CHILD:
            case COLLATION:
            case COMMENT:
            case CONSTRUCTION:
            case COPY_NAMESPACES:
            case DECLARE:
            case DEFAULT:
            case DESCENDANT:
            case DESCENDANT_OR_SELF:
            case DESCENDING:
            case DIV:
            case DOCUMENT:
            case DOCUMENT_NODE:
            case ELEMENT:
            case ELSE:
            case EMPTY:
            case EMPTY_SEQUENCE:
            case ENCODING:
            case EQ:
            case EVERY:
            case EXCEPT:
            case EXTERNAL:
            case FOLLOWING:
            case FOLLOWING_SIBLING:
            case FOR:
            case FUNCTION:
            case GE:
            case GREATEST:
            case GT:
            case IDIV:
            case IF:
            case IMPORT:
            case IN:
            case INHERIT:
            case INSTANCE:
            case INTERSECT:
            case IS:
            case ITEM:
            case LAX:
            case LE:
            case LEAST:
            case LET:
            case LT:
            case MOD:
            case MODULE:
            case NAMESPACE:
            case NE:
            case NO_INHERIT:
            case NO_PRESERVE:
            case NODE:
            case JSON:
            case OF:
            case OPTION:
            case OR:
            case ORDER:
            case ORDERED:
            case ORDERING:
            case PARENT:
            case PRECEDING:
            case PRECEDING_SIBLING:
            case PRESERVE:
            case PROCESSING_INSTRUCTION:
            case STRUCTURED_ITEM:
            case JSON_ITEM:
            case OBJECT:
            case ARRAY:
            case RETURN:
            case SATISFIES:
            case SCHEMA:
            case SCHEMA_ATTRIBUTE:
            case SCHEMA_ELEMENT:
            case SELF:
            case SOME:
            case STABLE:
            case STRICT:
            case STRIP:
            case TEXT:
            case THEN:
            case TO:
            case TREAT:
            case TYPESWITCH:
            case UNION:
            case UNORDERED:
            case VALIDATE:
            case VARIABLE:
            case VERSION:
            case WHERE:
            case XQUERY:
            case ALLOWING:
            case CATCH:
            case CONTEXT:
            case COUNT:
            case DECIMAL_FORMAT:
            case DECIMAL_SEPARATOR:
            case DIGIT:
            case END:
            case GROUP:
            case GROUPING_SEPARATOR:
            case INFINITY:
            case MINUS_SIGN:
            case NAMESPACE_NODE:
            case NAN:
            case NEXT:
            case ONLY:
            case PATTERN_SEPARATOR:
            case PERCENT:
            case PER_MILLE:
            case PREVIOUS:
            case SLIDING:
            case START:
            case SWITCH:
            case TRY:
            case TUMBLING:
            case TYPE:
            case WHEN:
            case WINDOW:
            case ZERO_DIGIT:
            case AFTER:
            case BEFORE:
            case COPY:
            case DELETE:
            case FIRST:
            case INSERT:
            case INTO:
            case POSITION:
            case APPEND:
            case LAST:
            case MODIFY:
            case NODES:
            case RENAME:
            case REPLACE:
            case REVALIDATION:
            case SKIP:
            case VALUE:
            case WITH:
            case ALL:
            case ANY:
            case CONTAINS:
            case CONTENT:
            case DIACRITICS:
            case DIFFERENT:
            case DISTANCE:
            case ENTIRE:
            case EXACTLY:
            case FROM:
            case FT_OPTION:
            case FTAND:
            case FTNOT:
            case FTOR:
            case INSENSITIVE:
            case LANGUAGE:
            case LEVELS:
            case LOWERCASE:
            case MOST:
            case NO:
            case NOT:
            case OCCURS:
            case PARAGRAPH:
            case PARAGRAPHS:
            case PHRASE:
            case RELATIONSHIP:
            case SAME:
            case SCORE:
            case SENSITIVE:
            case SENTENCE:
            case SENTENCES:
            case STEMMING:
            case STOP:
            case THESAURUS:
            case TIMES:
            case UPPERCASE:
            case USING:
            case WEIGHT:
            case WILDCARDS:
            case WITHOUT:
            case WORD:
            case WORDS:
            case BREAK:
            case CONTINUE:
            case EXIT:
            case LOOP:
            case RETURNING:
            case WHILE:
            case CHECK:
            case COLLECTION:
            case CONSTRAINT:
            case FOREACH:
            case FOREIGN:
            case INDEX:
            case INTEGRITY:
            case KEY:
            case ON:
            case UNIQUE:
            case AMP_ER:
            case APOS_ER:
            case QUOT_ER:
            case L_NCName:
                alt131=2;
                break;
            case Q:
                alt131=3;
                break;
            default:
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 131, 0, this.input);

                throw nvae;
            }

            switch (alt131) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1000:11: STAR ( COLON p_NCName )?
                    root_0 = this.adaptor.nil();

                    STAR309=this.match(this.input,STAR,XQueryParser.FOLLOW_STAR_in_p_Wildcard7383); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    STAR309_tree = this.adaptor.create(STAR309);
                    this.adaptor.addChild(root_0, STAR309_tree);
                    }
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1000:16: ( COLON p_NCName )?
                    var alt130=2;
                    var LA130_0 = this.input.LA(1);

                    if ( (LA130_0==COLON) ) {
                        alt130=1;
                    }
                    switch (alt130) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1000:17: COLON p_NCName
                            COLON310=this.match(this.input,COLON,XQueryParser.FOLLOW_COLON_in_p_Wildcard7386); if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) {
                            COLON310_tree = this.adaptor.create(COLON310);
                            this.adaptor.addChild(root_0, COLON310_tree);
                            }
                            this.pushFollow(XQueryParser.FOLLOW_p_NCName_in_p_Wildcard7388);
                            p_NCName311=this.p_NCName();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NCName311.getTree());


                            break;

                    }



                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1001:11: p_NCName COLON STAR
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_NCName_in_p_Wildcard7402);
                    p_NCName312=this.p_NCName();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NCName312.getTree());
                    COLON313=this.match(this.input,COLON,XQueryParser.FOLLOW_COLON_in_p_Wildcard7404); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    COLON313_tree = this.adaptor.create(COLON313);
                    this.adaptor.addChild(root_0, COLON313_tree);
                    }
                    STAR314=this.match(this.input,STAR,XQueryParser.FOLLOW_STAR_in_p_Wildcard7406); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    STAR314_tree = this.adaptor.create(STAR314);
                    this.adaptor.addChild(root_0, STAR314_tree);
                    }


                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1002:11: p_BracedURILiteral STAR
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_BracedURILiteral_in_p_Wildcard7418);
                    p_BracedURILiteral315=this.p_BracedURILiteral();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_BracedURILiteral315.getTree());
                    STAR316=this.match(this.input,STAR,XQueryParser.FOLLOW_STAR_in_p_Wildcard7420); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    STAR316_tree = this.adaptor.create(STAR316);
                    this.adaptor.addChild(root_0, STAR316_tree);
                    }


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
            this.setWsExplicit(false);
        }
        return retval;
    },

    // inline static return class
    p_PostfixExpr_return: (function() {
        XQueryParser.p_PostfixExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_PostfixExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1007:1: p_PostfixExpr : p_PrimaryExpr ( p_Predicate | p_ArgumentList )* ;
    // $ANTLR start "p_PostfixExpr"
    p_PostfixExpr: function() {
        var retval = new XQueryParser.p_PostfixExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_PrimaryExpr317 = null;
         var p_Predicate318 = null;
         var p_ArgumentList319 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1008:9: ( p_PrimaryExpr ( p_Predicate | p_ArgumentList )* )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1008:11: p_PrimaryExpr ( p_Predicate | p_ArgumentList )*
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_PrimaryExpr_in_p_PostfixExpr7458);
            p_PrimaryExpr317=this.p_PrimaryExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PrimaryExpr317.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1008:25: ( p_Predicate | p_ArgumentList )*
            loop132:
            do {
                var alt132=3;
                var LA132_0 = this.input.LA(1);

                if ( (LA132_0==LSQUARE) ) {
                    alt132=1;
                }
                else if ( (LA132_0==LPAREN) ) {
                    alt132=2;
                }


                switch (alt132) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1008:26: p_Predicate
                    this.pushFollow(XQueryParser.FOLLOW_p_Predicate_in_p_PostfixExpr7461);
                    p_Predicate318=this.p_Predicate();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Predicate318.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1008:40: p_ArgumentList
                    this.pushFollow(XQueryParser.FOLLOW_p_ArgumentList_in_p_PostfixExpr7465);
                    p_ArgumentList319=this.p_ArgumentList();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ArgumentList319.getTree());


                    break;

                default :
                    break loop132;
                }
            } while (true);




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ArgumentList_return: (function() {
        XQueryParser.p_ArgumentList_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ArgumentList_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1012:1: p_ArgumentList : LPAREN ( p_Argument ( COMMA p_Argument )* )? RPAREN ;
    // $ANTLR start "p_ArgumentList"
    p_ArgumentList: function() {
        var retval = new XQueryParser.p_ArgumentList_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var LPAREN320 = null;
        var COMMA322 = null;
        var RPAREN324 = null;
         var p_Argument321 = null;
         var p_Argument323 = null;

        var LPAREN320_tree=null;
        var COMMA322_tree=null;
        var RPAREN324_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1013:9: ( LPAREN ( p_Argument ( COMMA p_Argument )* )? RPAREN )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1013:11: LPAREN ( p_Argument ( COMMA p_Argument )* )? RPAREN
            root_0 = this.adaptor.nil();

            LPAREN320=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_ArgumentList7493); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LPAREN320_tree = this.adaptor.create(LPAREN320);
            this.adaptor.addChild(root_0, LPAREN320_tree);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1013:18: ( p_Argument ( COMMA p_Argument )* )?
            var alt134=2;
            var LA134_0 = this.input.LA(1);

            if ( ((LA134_0>=ANCESTOR && LA134_0<=QUOT_ER)||LA134_0==LPAREN||(LA134_0>=DOLLAR && LA134_0<=L_UNION_BRACKET)||LA134_0==LBRACKET||LA134_0==LSQUARE||(LA134_0>=QUESTION && LA134_0<=SMALLER)||(LA134_0>=SLASH && LA134_0<=SLASH_SLASH)||(LA134_0>=DOT && LA134_0<=DOT_DOT)||(LA134_0>=ATTR_SIGN && LA134_0<=Q)||(LA134_0>=APOS && LA134_0<=QUOT)||LA134_0==L_NCName||(LA134_0>=L_Pragma && LA134_0<=L_DoubleLiteral)) ) {
                alt134=1;
            }
            switch (alt134) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1013:19: p_Argument ( COMMA p_Argument )*
                    this.pushFollow(XQueryParser.FOLLOW_p_Argument_in_p_ArgumentList7496);
                    p_Argument321=this.p_Argument();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Argument321.getTree());
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1013:30: ( COMMA p_Argument )*
                    loop133:
                    do {
                        var alt133=2;
                        var LA133_0 = this.input.LA(1);

                        if ( (LA133_0==COMMA) ) {
                            alt133=1;
                        }


                        switch (alt133) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1013:31: COMMA p_Argument
                            COMMA322=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_ArgumentList7499); if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) {
                            COMMA322_tree = this.adaptor.create(COMMA322);
                            this.adaptor.addChild(root_0, COMMA322_tree);
                            }
                            this.pushFollow(XQueryParser.FOLLOW_p_Argument_in_p_ArgumentList7501);
                            p_Argument323=this.p_Argument();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Argument323.getTree());


                            break;

                        default :
                            break loop133;
                        }
                    } while (true);



                    break;

            }

            RPAREN324=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_ArgumentList7507); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RPAREN324_tree = this.adaptor.create(RPAREN324);
            this.adaptor.addChild(root_0, RPAREN324_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_PredicateList_return: (function() {
        XQueryParser.p_PredicateList_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_PredicateList_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1017:1: p_PredicateList : ( p_Predicate )* ;
    // $ANTLR start "p_PredicateList"
    p_PredicateList: function() {
        var retval = new XQueryParser.p_PredicateList_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_Predicate325 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1018:9: ( ( p_Predicate )* )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1018:11: ( p_Predicate )*
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1018:11: ( p_Predicate )*
            loop135:
            do {
                var alt135=2;
                var LA135_0 = this.input.LA(1);

                if ( (LA135_0==LSQUARE) ) {
                    alt135=1;
                }


                switch (alt135) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1018:11: p_Predicate
                    this.pushFollow(XQueryParser.FOLLOW_p_Predicate_in_p_PredicateList7533);
                    p_Predicate325=this.p_Predicate();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Predicate325.getTree());


                    break;

                default :
                    break loop135;
                }
            } while (true);




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_Predicate_return: (function() {
        XQueryParser.p_Predicate_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_Predicate_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1022:1: p_Predicate : LSQUARE p_Expr[true,true] RSQUARE ;
    // $ANTLR start "p_Predicate"
    p_Predicate: function() {
        var retval = new XQueryParser.p_Predicate_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var LSQUARE326 = null;
        var RSQUARE328 = null;
         var p_Expr327 = null;

        var LSQUARE326_tree=null;
        var RSQUARE328_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1023:9: ( LSQUARE p_Expr[true,true] RSQUARE )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1023:11: LSQUARE p_Expr[true,true] RSQUARE
            root_0 = this.adaptor.nil();

            LSQUARE326=this.match(this.input,LSQUARE,XQueryParser.FOLLOW_LSQUARE_in_p_Predicate7560); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LSQUARE326_tree = this.adaptor.create(LSQUARE326);
            this.adaptor.addChild(root_0, LSQUARE326_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_Predicate7562);
            p_Expr327=this.p_Expr(true, true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr327.getTree());
            RSQUARE328=this.match(this.input,RSQUARE,XQueryParser.FOLLOW_RSQUARE_in_p_Predicate7565); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RSQUARE328_tree = this.adaptor.create(RSQUARE328);
            this.adaptor.addChild(root_0, RSQUARE328_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_PrimaryExpr_return: (function() {
        XQueryParser.p_PrimaryExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_PrimaryExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1028:1: p_PrimaryExpr : ( ( LPAREN )=> p_ParenthesizedExpr | p_Literal | p_VarRef | p_ContextItemExpr | p_FunctionCall | p_OrderedExpr | p_UnorderedExpr | p_Constructor | p_BlockExpr | p_FunctionItemExpr | p_ArrayConstructor | p_SimpleObjectUnion );
    // $ANTLR start "p_PrimaryExpr"
    p_PrimaryExpr: function() {
        var retval = new XQueryParser.p_PrimaryExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_ParenthesizedExpr329 = null;
         var p_Literal330 = null;
         var p_VarRef331 = null;
         var p_ContextItemExpr332 = null;
         var p_FunctionCall333 = null;
         var p_OrderedExpr334 = null;
         var p_UnorderedExpr335 = null;
         var p_Constructor336 = null;
         var p_BlockExpr337 = null;
         var p_FunctionItemExpr338 = null;
         var p_ArrayConstructor339 = null;
         var p_SimpleObjectUnion340 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1029:9: ( ( LPAREN )=> p_ParenthesizedExpr | p_Literal | p_VarRef | p_ContextItemExpr | p_FunctionCall | p_OrderedExpr | p_UnorderedExpr | p_Constructor | p_BlockExpr | p_FunctionItemExpr | p_ArrayConstructor | p_SimpleObjectUnion )
            var alt136=12;
            alt136 = this.dfa136.predict(this.input);
            switch (alt136) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1029:11: ( LPAREN )=> p_ParenthesizedExpr
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_ParenthesizedExpr_in_p_PrimaryExpr7598);
                    p_ParenthesizedExpr329=this.p_ParenthesizedExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ParenthesizedExpr329.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1030:11: p_Literal
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_Literal_in_p_PrimaryExpr7610);
                    p_Literal330=this.p_Literal();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Literal330.getTree());


                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1031:11: p_VarRef
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_VarRef_in_p_PrimaryExpr7622);
                    p_VarRef331=this.p_VarRef();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_VarRef331.getTree());


                    break;
                case 4 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1032:11: p_ContextItemExpr
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_ContextItemExpr_in_p_PrimaryExpr7634);
                    p_ContextItemExpr332=this.p_ContextItemExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ContextItemExpr332.getTree());


                    break;
                case 5 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1033:11: p_FunctionCall
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_FunctionCall_in_p_PrimaryExpr7646);
                    p_FunctionCall333=this.p_FunctionCall();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FunctionCall333.getTree());


                    break;
                case 6 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1034:11: p_OrderedExpr
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_OrderedExpr_in_p_PrimaryExpr7659);
                    p_OrderedExpr334=this.p_OrderedExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_OrderedExpr334.getTree());


                    break;
                case 7 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1035:11: p_UnorderedExpr
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_UnorderedExpr_in_p_PrimaryExpr7671);
                    p_UnorderedExpr335=this.p_UnorderedExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_UnorderedExpr335.getTree());


                    break;
                case 8 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1036:11: p_Constructor
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_Constructor_in_p_PrimaryExpr7683);
                    p_Constructor336=this.p_Constructor();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Constructor336.getTree());


                    break;
                case 9 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1037:11: p_BlockExpr
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_BlockExpr_in_p_PrimaryExpr7696);
                    p_BlockExpr337=this.p_BlockExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_BlockExpr337.getTree());


                    break;
                case 10 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1038:11: p_FunctionItemExpr
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_FunctionItemExpr_in_p_PrimaryExpr7708);
                    p_FunctionItemExpr338=this.p_FunctionItemExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FunctionItemExpr338.getTree());


                    break;
                case 11 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1039:11: p_ArrayConstructor
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_ArrayConstructor_in_p_PrimaryExpr7721);
                    p_ArrayConstructor339=this.p_ArrayConstructor();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ArrayConstructor339.getTree());


                    break;
                case 12 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1040:11: p_SimpleObjectUnion
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_SimpleObjectUnion_in_p_PrimaryExpr7733);
                    p_SimpleObjectUnion340=this.p_SimpleObjectUnion();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SimpleObjectUnion340.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_SimpleObjectUnion_return: (function() {
        XQueryParser.p_SimpleObjectUnion_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_SimpleObjectUnion_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1044:1: p_SimpleObjectUnion : L_UNION_BRACKET ( p_Expr[true, true] )? R_UNION_BRACKET ;
    // $ANTLR start "p_SimpleObjectUnion"
    p_SimpleObjectUnion: function() {
        var retval = new XQueryParser.p_SimpleObjectUnion_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var L_UNION_BRACKET341 = null;
        var R_UNION_BRACKET343 = null;
         var p_Expr342 = null;

        var L_UNION_BRACKET341_tree=null;
        var R_UNION_BRACKET343_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1045:11: ( L_UNION_BRACKET ( p_Expr[true, true] )? R_UNION_BRACKET )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1045:13: L_UNION_BRACKET ( p_Expr[true, true] )? R_UNION_BRACKET
            root_0 = this.adaptor.nil();

            L_UNION_BRACKET341=this.match(this.input,L_UNION_BRACKET,XQueryParser.FOLLOW_L_UNION_BRACKET_in_p_SimpleObjectUnion7769); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            L_UNION_BRACKET341_tree = this.adaptor.create(L_UNION_BRACKET341);
            this.adaptor.addChild(root_0, L_UNION_BRACKET341_tree);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1045:29: ( p_Expr[true, true] )?
            var alt137=2;
            var LA137_0 = this.input.LA(1);

            if ( ((LA137_0>=ANCESTOR && LA137_0<=QUOT_ER)||LA137_0==LPAREN||(LA137_0>=DOLLAR && LA137_0<=L_UNION_BRACKET)||LA137_0==LBRACKET||LA137_0==LSQUARE||(LA137_0>=STAR && LA137_0<=SMALLER)||(LA137_0>=SLASH && LA137_0<=SLASH_SLASH)||(LA137_0>=DOT && LA137_0<=DOT_DOT)||(LA137_0>=ATTR_SIGN && LA137_0<=Q)||(LA137_0>=APOS && LA137_0<=QUOT)||LA137_0==L_NCName||(LA137_0>=L_Pragma && LA137_0<=L_DoubleLiteral)) ) {
                alt137=1;
            }
            switch (alt137) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1045:29: p_Expr[true, true]
                    this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_SimpleObjectUnion7771);
                    p_Expr342=this.p_Expr(true, true);

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr342.getTree());


                    break;

            }

            R_UNION_BRACKET343=this.match(this.input,R_UNION_BRACKET,XQueryParser.FOLLOW_R_UNION_BRACKET_in_p_SimpleObjectUnion7775); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            R_UNION_BRACKET343_tree = this.adaptor.create(R_UNION_BRACKET343);
            this.adaptor.addChild(root_0, R_UNION_BRACKET343_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_PairConstructor_return: (function() {
        XQueryParser.p_PairConstructor_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_PairConstructor_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1060:1: p_PairConstructor : COLON p_ExprSingle[true] ( COMMA p_Hybrid[true, false] )* ;
    // $ANTLR start "p_PairConstructor"
    p_PairConstructor: function() {
        var retval = new XQueryParser.p_PairConstructor_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var COLON344 = null;
        var COMMA346 = null;
         var p_ExprSingle345 = null;
         var p_Hybrid347 = null;

        var COLON344_tree=null;
        var COMMA346_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1061:11: ( COLON p_ExprSingle[true] ( COMMA p_Hybrid[true, false] )* )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1061:13: COLON p_ExprSingle[true] ( COMMA p_Hybrid[true, false] )*
            root_0 = this.adaptor.nil();

            COLON344=this.match(this.input,COLON,XQueryParser.FOLLOW_COLON_in_p_PairConstructor7817); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            COLON344_tree = this.adaptor.create(COLON344);
            this.adaptor.addChild(root_0, COLON344_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_PairConstructor7819);
            p_ExprSingle345=this.p_ExprSingle(true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle345.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1061:38: ( COMMA p_Hybrid[true, false] )*
            loop138:
            do {
                var alt138=2;
                var LA138_0 = this.input.LA(1);

                if ( (LA138_0==COMMA) ) {
                    alt138=1;
                }


                switch (alt138) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1061:39: COMMA p_Hybrid[true, false]
                    COMMA346=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_PairConstructor7823); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    COMMA346_tree = this.adaptor.create(COMMA346);
                    this.adaptor.addChild(root_0, COMMA346_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_Hybrid_in_p_PairConstructor7825);
                    p_Hybrid347=this.p_Hybrid(true, false);

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Hybrid347.getTree());


                    break;

                default :
                    break loop138;
                }
            } while (true);




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ArrayConstructor_return: (function() {
        XQueryParser.p_ArrayConstructor_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ArrayConstructor_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1064:1: p_ArrayConstructor : LSQUARE ( p_Expr[true, true] )? RSQUARE ;
    // $ANTLR start "p_ArrayConstructor"
    p_ArrayConstructor: function() {
        var retval = new XQueryParser.p_ArrayConstructor_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var LSQUARE348 = null;
        var RSQUARE350 = null;
         var p_Expr349 = null;

        var LSQUARE348_tree=null;
        var RSQUARE350_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1065:9: ( LSQUARE ( p_Expr[true, true] )? RSQUARE )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1065:12: LSQUARE ( p_Expr[true, true] )? RSQUARE
            root_0 = this.adaptor.nil();

            LSQUARE348=this.match(this.input,LSQUARE,XQueryParser.FOLLOW_LSQUARE_in_p_ArrayConstructor7856); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LSQUARE348_tree = this.adaptor.create(LSQUARE348);
            this.adaptor.addChild(root_0, LSQUARE348_tree);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1065:20: ( p_Expr[true, true] )?
            var alt139=2;
            var LA139_0 = this.input.LA(1);

            if ( ((LA139_0>=ANCESTOR && LA139_0<=QUOT_ER)||LA139_0==LPAREN||(LA139_0>=DOLLAR && LA139_0<=L_UNION_BRACKET)||LA139_0==LBRACKET||LA139_0==LSQUARE||(LA139_0>=STAR && LA139_0<=SMALLER)||(LA139_0>=SLASH && LA139_0<=SLASH_SLASH)||(LA139_0>=DOT && LA139_0<=DOT_DOT)||(LA139_0>=ATTR_SIGN && LA139_0<=Q)||(LA139_0>=APOS && LA139_0<=QUOT)||LA139_0==L_NCName||(LA139_0>=L_Pragma && LA139_0<=L_DoubleLiteral)) ) {
                alt139=1;
            }
            switch (alt139) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1065:20: p_Expr[true, true]
                    this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_ArrayConstructor7858);
                    p_Expr349=this.p_Expr(true, true);

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr349.getTree());


                    break;

            }

            RSQUARE350=this.match(this.input,RSQUARE,XQueryParser.FOLLOW_RSQUARE_in_p_ArrayConstructor7862); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RSQUARE350_tree = this.adaptor.create(RSQUARE350);
            this.adaptor.addChild(root_0, RSQUARE350_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_Literal_return: (function() {
        XQueryParser.p_Literal_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_Literal_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1069:1: p_Literal : ( p_NumericLiteral | p_StringLiteral );
    // $ANTLR start "p_Literal"
    p_Literal: function() {
        var retval = new XQueryParser.p_Literal_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_NumericLiteral351 = null;
         var p_StringLiteral352 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1070:9: ( p_NumericLiteral | p_StringLiteral )
            var alt140=2;
            var LA140_0 = this.input.LA(1);

            if ( ((LA140_0>=L_IntegerLiteral && LA140_0<=L_DoubleLiteral)) ) {
                alt140=1;
            }
            else if ( ((LA140_0>=APOS && LA140_0<=QUOT)) ) {
                alt140=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 140, 0, this.input);

                throw nvae;
            }
            switch (alt140) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1070:11: p_NumericLiteral
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_NumericLiteral_in_p_Literal7888);
                    p_NumericLiteral351=this.p_NumericLiteral();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NumericLiteral351.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1070:30: p_StringLiteral
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_Literal7892);
                    p_StringLiteral352=this.p_StringLiteral();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral352.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_NumericLiteral_return: (function() {
        XQueryParser.p_NumericLiteral_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_NumericLiteral_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1074:1: p_NumericLiteral : (d+= L_IntegerLiteral | d+= L_DecimalLiteral | d+= L_DoubleLiteral );
    // $ANTLR start "p_NumericLiteral"
    p_NumericLiteral: function() {
        var retval = new XQueryParser.p_NumericLiteral_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var d = null;
        var list_d=null;

        var d_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1075:9: (d+= L_IntegerLiteral | d+= L_DecimalLiteral | d+= L_DoubleLiteral )
            var alt141=3;
            switch ( this.input.LA(1) ) {
            case L_IntegerLiteral:
                alt141=1;
                break;
            case L_DecimalLiteral:
                alt141=2;
                break;
            case L_DoubleLiteral:
                alt141=3;
                break;
            default:
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 141, 0, this.input);

                throw nvae;
            }

            switch (alt141) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1075:11: d+= L_IntegerLiteral
                    root_0 = this.adaptor.nil();

                    d=this.match(this.input,L_IntegerLiteral,XQueryParser.FOLLOW_L_IntegerLiteral_in_p_NumericLiteral7920); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    d_tree = this.adaptor.create(d);
                    this.adaptor.addChild(root_0, d_tree);
                    }
                    if (org.antlr.lang.isNull(list_d)) list_d = [];
                    list_d.push(d);

                    if ( this.state.backtracking===0 ) {
                      this.ad(list_d);
                    }


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1075:48: d+= L_DecimalLiteral
                    root_0 = this.adaptor.nil();

                    d=this.match(this.input,L_DecimalLiteral,XQueryParser.FOLLOW_L_DecimalLiteral_in_p_NumericLiteral7928); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    d_tree = this.adaptor.create(d);
                    this.adaptor.addChild(root_0, d_tree);
                    }
                    if (org.antlr.lang.isNull(list_d)) list_d = [];
                    list_d.push(d);

                    if ( this.state.backtracking===0 ) {
                      this.ad(list_d);
                    }


                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1075:85: d+= L_DoubleLiteral
                    root_0 = this.adaptor.nil();

                    d=this.match(this.input,L_DoubleLiteral,XQueryParser.FOLLOW_L_DoubleLiteral_in_p_NumericLiteral7936); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    d_tree = this.adaptor.create(d);
                    this.adaptor.addChild(root_0, d_tree);
                    }
                    if (org.antlr.lang.isNull(list_d)) list_d = [];
                    list_d.push(d);

                    if ( this.state.backtracking===0 ) {
                      this.ad(list_d);
                    }


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_VarRef_return: (function() {
        XQueryParser.p_VarRef_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_VarRef_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1079:1: p_VarRef : d= DOLLAR v= p_VarName ;
    // $ANTLR start "p_VarRef"
    p_VarRef: function() {
        var retval = new XQueryParser.p_VarRef_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var d = null;
         var v = null;

        var d_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1080:9: (d= DOLLAR v= p_VarName )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1080:11: d= DOLLAR v= p_VarName
            root_0 = this.adaptor.nil();

            d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_VarRef7974); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            d_tree = this.adaptor.create(d);
            this.adaptor.addChild(root_0, d_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_VarRef7978);
            v=this.p_VarName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
            if ( this.state.backtracking===0 ) {
               this.av(d, (v?v.stop:null)); 
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_VarName_return: (function() {
        XQueryParser.p_VarName_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_VarName_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1084:1: p_VarName : p_EQName ;
    // $ANTLR start "p_VarName"
    p_VarName: function() {
        var retval = new XQueryParser.p_VarName_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_EQName353 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1085:9: ( p_EQName )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1085:11: p_EQName
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_p_VarName8006);
            p_EQName353=this.p_EQName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_EQName353.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ParenthesizedExpr_return: (function() {
        XQueryParser.p_ParenthesizedExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ParenthesizedExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1089:1: p_ParenthesizedExpr : LPAREN ( p_Expr[true,true] )? RPAREN ;
    // $ANTLR start "p_ParenthesizedExpr"
    p_ParenthesizedExpr: function() {
        var retval = new XQueryParser.p_ParenthesizedExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var LPAREN354 = null;
        var RPAREN356 = null;
         var p_Expr355 = null;

        var LPAREN354_tree=null;
        var RPAREN356_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1090:9: ( LPAREN ( p_Expr[true,true] )? RPAREN )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1090:11: LPAREN ( p_Expr[true,true] )? RPAREN
            root_0 = this.adaptor.nil();

            LPAREN354=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_ParenthesizedExpr8032); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LPAREN354_tree = this.adaptor.create(LPAREN354);
            this.adaptor.addChild(root_0, LPAREN354_tree);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1090:18: ( p_Expr[true,true] )?
            var alt142=2;
            var LA142_0 = this.input.LA(1);

            if ( ((LA142_0>=ANCESTOR && LA142_0<=QUOT_ER)||LA142_0==LPAREN||(LA142_0>=DOLLAR && LA142_0<=L_UNION_BRACKET)||LA142_0==LBRACKET||LA142_0==LSQUARE||(LA142_0>=STAR && LA142_0<=SMALLER)||(LA142_0>=SLASH && LA142_0<=SLASH_SLASH)||(LA142_0>=DOT && LA142_0<=DOT_DOT)||(LA142_0>=ATTR_SIGN && LA142_0<=Q)||(LA142_0>=APOS && LA142_0<=QUOT)||LA142_0==L_NCName||(LA142_0>=L_Pragma && LA142_0<=L_DoubleLiteral)) ) {
                alt142=1;
            }
            switch (alt142) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1090:18: p_Expr[true,true]
                    this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_ParenthesizedExpr8034);
                    p_Expr355=this.p_Expr(true, true);

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr355.getTree());


                    break;

            }

            RPAREN356=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_ParenthesizedExpr8038); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RPAREN356_tree = this.adaptor.create(RPAREN356);
            this.adaptor.addChild(root_0, RPAREN356_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ContextItemExpr_return: (function() {
        XQueryParser.p_ContextItemExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ContextItemExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1094:1: p_ContextItemExpr : DOT ;
    // $ANTLR start "p_ContextItemExpr"
    p_ContextItemExpr: function() {
        var retval = new XQueryParser.p_ContextItemExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var DOT357 = null;

        var DOT357_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1095:9: ( DOT )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1095:11: DOT
            root_0 = this.adaptor.nil();

            DOT357=this.match(this.input,DOT,XQueryParser.FOLLOW_DOT_in_p_ContextItemExpr8064); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            DOT357_tree = this.adaptor.create(DOT357);
            this.adaptor.addChild(root_0, DOT357_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_OrderedExpr_return: (function() {
        XQueryParser.p_OrderedExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_OrderedExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1099:1: p_OrderedExpr : k= ORDERED LBRACKET p_Expr[true,true] RBRACKET ;
    // $ANTLR start "p_OrderedExpr"
    p_OrderedExpr: function() {
        var retval = new XQueryParser.p_OrderedExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var LBRACKET358 = null;
        var RBRACKET360 = null;
         var p_Expr359 = null;

        var k_tree=null;
        var LBRACKET358_tree=null;
        var RBRACKET360_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1100:9: (k= ORDERED LBRACKET p_Expr[true,true] RBRACKET )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1100:11: k= ORDERED LBRACKET p_Expr[true,true] RBRACKET
            root_0 = this.adaptor.nil();

            k=this.match(this.input,ORDERED,XQueryParser.FOLLOW_ORDERED_in_p_OrderedExpr8092); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            LBRACKET358=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_OrderedExpr8096); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LBRACKET358_tree = this.adaptor.create(LBRACKET358);
            this.adaptor.addChild(root_0, LBRACKET358_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_OrderedExpr8098);
            p_Expr359=this.p_Expr(true, true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr359.getTree());
            RBRACKET360=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_OrderedExpr8101); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RBRACKET360_tree = this.adaptor.create(RBRACKET360);
            this.adaptor.addChild(root_0, RBRACKET360_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_UnorderedExpr_return: (function() {
        XQueryParser.p_UnorderedExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_UnorderedExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1104:1: p_UnorderedExpr : k= UNORDERED LBRACKET p_Expr[true,true] RBRACKET ;
    // $ANTLR start "p_UnorderedExpr"
    p_UnorderedExpr: function() {
        var retval = new XQueryParser.p_UnorderedExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var LBRACKET361 = null;
        var RBRACKET363 = null;
         var p_Expr362 = null;

        var k_tree=null;
        var LBRACKET361_tree=null;
        var RBRACKET363_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1105:9: (k= UNORDERED LBRACKET p_Expr[true,true] RBRACKET )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1105:11: k= UNORDERED LBRACKET p_Expr[true,true] RBRACKET
            root_0 = this.adaptor.nil();

            k=this.match(this.input,UNORDERED,XQueryParser.FOLLOW_UNORDERED_in_p_UnorderedExpr8129); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            LBRACKET361=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_UnorderedExpr8133); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LBRACKET361_tree = this.adaptor.create(LBRACKET361);
            this.adaptor.addChild(root_0, LBRACKET361_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_UnorderedExpr8135);
            p_Expr362=this.p_Expr(true, true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr362.getTree());
            RBRACKET363=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_UnorderedExpr8138); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RBRACKET363_tree = this.adaptor.create(RBRACKET363);
            this.adaptor.addChild(root_0, RBRACKET363_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FunctionCall_return: (function() {
        XQueryParser.p_FunctionCall_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FunctionCall_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1110:1: p_FunctionCall : f= pg_FQName p_ArgumentList ;
    // $ANTLR start "p_FunctionCall"
    p_FunctionCall: function() {
        var retval = new XQueryParser.p_FunctionCall_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var f = null;
         var p_ArgumentList364 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1111:9: (f= pg_FQName p_ArgumentList )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1111:11: f= pg_FQName p_ArgumentList
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_pg_FQName_in_p_FunctionCall8167);
            f=this.pg_FQName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, f.getTree());
            if ( this.state.backtracking===0 ) {
              this.af((f?f.start:null), (f?f.stop:null));
            }
            this.pushFollow(XQueryParser.FOLLOW_p_ArgumentList_in_p_FunctionCall8172);
            p_ArgumentList364=this.p_ArgumentList();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ArgumentList364.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_Argument_return: (function() {
        XQueryParser.p_Argument_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_Argument_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1115:1: p_Argument : ( p_ExprSingle[true] | p_ArgumentPlaceholder );
    // $ANTLR start "p_Argument"
    p_Argument: function() {
        var retval = new XQueryParser.p_Argument_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_ExprSingle365 = null;
         var p_ArgumentPlaceholder366 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1116:9: ( p_ExprSingle[true] | p_ArgumentPlaceholder )
            var alt143=2;
            var LA143_0 = this.input.LA(1);

            if ( ((LA143_0>=ANCESTOR && LA143_0<=QUOT_ER)||LA143_0==LPAREN||(LA143_0>=DOLLAR && LA143_0<=L_UNION_BRACKET)||LA143_0==LBRACKET||LA143_0==LSQUARE||(LA143_0>=STAR && LA143_0<=SMALLER)||(LA143_0>=SLASH && LA143_0<=SLASH_SLASH)||(LA143_0>=DOT && LA143_0<=DOT_DOT)||(LA143_0>=ATTR_SIGN && LA143_0<=Q)||(LA143_0>=APOS && LA143_0<=QUOT)||LA143_0==L_NCName||(LA143_0>=L_Pragma && LA143_0<=L_DoubleLiteral)) ) {
                alt143=1;
            }
            else if ( (LA143_0==QUESTION) ) {
                alt143=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 143, 0, this.input);

                throw nvae;
            }
            switch (alt143) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1116:11: p_ExprSingle[true]
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_Argument8198);
                    p_ExprSingle365=this.p_ExprSingle(true);

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle365.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1116:32: p_ArgumentPlaceholder
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_ArgumentPlaceholder_in_p_Argument8203);
                    p_ArgumentPlaceholder366=this.p_ArgumentPlaceholder();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ArgumentPlaceholder366.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ArgumentPlaceholder_return: (function() {
        XQueryParser.p_ArgumentPlaceholder_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ArgumentPlaceholder_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1120:1: p_ArgumentPlaceholder : QUESTION ;
    // $ANTLR start "p_ArgumentPlaceholder"
    p_ArgumentPlaceholder: function() {
        var retval = new XQueryParser.p_ArgumentPlaceholder_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var QUESTION367 = null;

        var QUESTION367_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1121:9: ( QUESTION )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1121:11: QUESTION
            root_0 = this.adaptor.nil();

            QUESTION367=this.match(this.input,QUESTION,XQueryParser.FOLLOW_QUESTION_in_p_ArgumentPlaceholder8229); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            QUESTION367_tree = this.adaptor.create(QUESTION367);
            this.adaptor.addChild(root_0, QUESTION367_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_Constructor_return: (function() {
        XQueryParser.p_Constructor_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_Constructor_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1125:1: p_Constructor : ( p_DirectConstructor | p_ComputedConstructor );
    // $ANTLR start "p_Constructor"
    p_Constructor: function() {
        var retval = new XQueryParser.p_Constructor_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_DirectConstructor368 = null;
         var p_ComputedConstructor369 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1126:9: ( p_DirectConstructor | p_ComputedConstructor )
            var alt144=2;
            var LA144_0 = this.input.LA(1);

            if ( (LA144_0==SMALLER||(LA144_0>=L_DirCommentConstructor && LA144_0<=L_DirPIConstructor)) ) {
                alt144=1;
            }
            else if ( (LA144_0==ATTRIBUTE||LA144_0==COMMENT||LA144_0==DOCUMENT||LA144_0==ELEMENT||LA144_0==NAMESPACE||LA144_0==PROCESSING_INSTRUCTION||LA144_0==TEXT) ) {
                alt144=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 144, 0, this.input);

                throw nvae;
            }
            switch (alt144) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1126:11: p_DirectConstructor
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_DirectConstructor_in_p_Constructor8255);
                    p_DirectConstructor368=this.p_DirectConstructor();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_DirectConstructor368.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1127:11: p_ComputedConstructor
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_ComputedConstructor_in_p_Constructor8267);
                    p_ComputedConstructor369=this.p_ComputedConstructor();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ComputedConstructor369.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_DirectConstructor_return: (function() {
        XQueryParser.p_DirectConstructor_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_DirectConstructor_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1131:1: p_DirectConstructor : ( p_DirElemConstructor | p_DirCommentConstructor | p_DirPIConstructor );
    // $ANTLR start "p_DirectConstructor"
    p_DirectConstructor: function() {
        var retval = new XQueryParser.p_DirectConstructor_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_DirElemConstructor370 = null;
         var p_DirCommentConstructor371 = null;
         var p_DirPIConstructor372 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1132:9: ( p_DirElemConstructor | p_DirCommentConstructor | p_DirPIConstructor )
            var alt145=3;
            switch ( this.input.LA(1) ) {
            case SMALLER:
                alt145=1;
                break;
            case L_DirCommentConstructor:
                alt145=2;
                break;
            case L_DirPIConstructor:
                alt145=3;
                break;
            default:
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 145, 0, this.input);

                throw nvae;
            }

            switch (alt145) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1132:11: p_DirElemConstructor
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_DirElemConstructor_in_p_DirectConstructor8293);
                    p_DirElemConstructor370=this.p_DirElemConstructor();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_DirElemConstructor370.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1133:11: p_DirCommentConstructor
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_DirCommentConstructor_in_p_DirectConstructor8305);
                    p_DirCommentConstructor371=this.p_DirCommentConstructor();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_DirCommentConstructor371.getTree());


                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1134:11: p_DirPIConstructor
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_DirPIConstructor_in_p_DirectConstructor8317);
                    p_DirPIConstructor372=this.p_DirPIConstructor();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_DirPIConstructor372.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_DirElemConstructor_return: (function() {
        XQueryParser.p_DirElemConstructor_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_DirElemConstructor_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1138:1: p_DirElemConstructor : SMALLER ts= p_QName p_DirAttributeList ( EMPTY_CLOSE_TAG | ( GREATER ( pm_DirElemContent )* CLOSE_TAG te= p_QName ( S )? GREATER ) ) -> ^( DirElemConstructor ^( DirAttributeList ( p_DirAttributeList )* ) ^( DirElemContent ( pm_DirElemContent )* ) ) ;
    // $ANTLR start "p_DirElemConstructor"
    p_DirElemConstructor: function() {
        var retval = new XQueryParser.p_DirElemConstructor_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var SMALLER373 = null;
        var EMPTY_CLOSE_TAG375 = null;
        var GREATER376 = null;
        var CLOSE_TAG378 = null;
        var S379 = null;
        var GREATER380 = null;
         var ts = null;
         var te = null;
         var p_DirAttributeList374 = null;
         var pm_DirElemContent377 = null;

        var SMALLER373_tree=null;
        var EMPTY_CLOSE_TAG375_tree=null;
        var GREATER376_tree=null;
        var CLOSE_TAG378_tree=null;
        var S379_tree=null;
        var GREATER380_tree=null;
        var stream_CLOSE_TAG=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token CLOSE_TAG");
        var stream_GREATER=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token GREATER");
        var stream_S=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token S");
        var stream_EMPTY_CLOSE_TAG=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token EMPTY_CLOSE_TAG");
        var stream_SMALLER=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token SMALLER");
        var stream_p_DirAttributeList=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_DirAttributeList");
        var stream_pm_DirElemContent=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule pm_DirElemContent");
        var stream_p_QName=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_QName");
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1139:9: ( SMALLER ts= p_QName p_DirAttributeList ( EMPTY_CLOSE_TAG | ( GREATER ( pm_DirElemContent )* CLOSE_TAG te= p_QName ( S )? GREATER ) ) -> ^( DirElemConstructor ^( DirAttributeList ( p_DirAttributeList )* ) ^( DirElemContent ( pm_DirElemContent )* ) ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1139:11: SMALLER ts= p_QName p_DirAttributeList ( EMPTY_CLOSE_TAG | ( GREATER ( pm_DirElemContent )* CLOSE_TAG te= p_QName ( S )? GREATER ) )
            SMALLER373=this.match(this.input,SMALLER,XQueryParser.FOLLOW_SMALLER_in_p_DirElemConstructor8344); if (this.state.failed) return retval; 
            if ( this.state.backtracking===0 ) stream_SMALLER.add(SMALLER373);

            if ( this.state.backtracking===0 ) {
              this.pushXMLLexer();
            }
            this.pushFollow(XQueryParser.FOLLOW_p_QName_in_p_DirElemConstructor8360);
            ts=this.p_QName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) stream_p_QName.add(ts.getTree());
            if ( this.state.backtracking===0 ) {
              this.at((ts?ts.start:null), (ts?ts.stop:null));
            }
            this.pushFollow(XQueryParser.FOLLOW_p_DirAttributeList_in_p_DirElemConstructor8365);
            p_DirAttributeList374=this.p_DirAttributeList();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) stream_p_DirAttributeList.add(p_DirAttributeList374.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1141:11: ( EMPTY_CLOSE_TAG | ( GREATER ( pm_DirElemContent )* CLOSE_TAG te= p_QName ( S )? GREATER ) )
            var alt148=2;
            var LA148_0 = this.input.LA(1);

            if ( (LA148_0==EMPTY_CLOSE_TAG) ) {
                alt148=1;
            }
            else if ( (LA148_0==GREATER) ) {
                alt148=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 148, 0, this.input);

                throw nvae;
            }
            switch (alt148) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1141:12: EMPTY_CLOSE_TAG
                    EMPTY_CLOSE_TAG375=this.match(this.input,EMPTY_CLOSE_TAG,XQueryParser.FOLLOW_EMPTY_CLOSE_TAG_in_p_DirElemConstructor8379); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_EMPTY_CLOSE_TAG.add(EMPTY_CLOSE_TAG375);



                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1141:30: ( GREATER ( pm_DirElemContent )* CLOSE_TAG te= p_QName ( S )? GREATER )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1141:30: ( GREATER ( pm_DirElemContent )* CLOSE_TAG te= p_QName ( S )? GREATER )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1141:31: GREATER ( pm_DirElemContent )* CLOSE_TAG te= p_QName ( S )? GREATER
                    GREATER376=this.match(this.input,GREATER,XQueryParser.FOLLOW_GREATER_in_p_DirElemConstructor8384); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_GREATER.add(GREATER376);

                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1141:39: ( pm_DirElemContent )*
                    loop146:
                    do {
                        var alt146=2;
                        var LA146_0 = this.input.LA(1);

                        if ( ((LA146_0>=L_ElementContentChar && LA146_0<=ESCAPE_RBRACKET)||LA146_0==LBRACKET||LA146_0==SMALLER||(LA146_0>=L_DirCommentConstructor && LA146_0<=L_DirPIConstructor)) ) {
                            alt146=1;
                        }


                        switch (alt146) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1141:39: pm_DirElemContent
                            this.pushFollow(XQueryParser.FOLLOW_pm_DirElemContent_in_p_DirElemConstructor8386);
                            pm_DirElemContent377=this.pm_DirElemContent();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) stream_pm_DirElemContent.add(pm_DirElemContent377.getTree());


                            break;

                        default :
                            break loop146;
                        }
                    } while (true);

                    CLOSE_TAG378=this.match(this.input,CLOSE_TAG,XQueryParser.FOLLOW_CLOSE_TAG_in_p_DirElemConstructor8389); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_CLOSE_TAG.add(CLOSE_TAG378);

                    this.pushFollow(XQueryParser.FOLLOW_p_QName_in_p_DirElemConstructor8393);
                    te=this.p_QName();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) stream_p_QName.add(te.getTree());
                    if ( this.state.backtracking===0 ) {
                      this.at((te?te.start:null), (te?te.stop:null));
                    }
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1141:111: ( S )?
                    var alt147=2;
                    var LA147_0 = this.input.LA(1);

                    if ( (LA147_0==S) ) {
                        alt147=1;
                    }
                    switch (alt147) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1141:111: S
                            S379=this.match(this.input,S,XQueryParser.FOLLOW_S_in_p_DirElemConstructor8397); if (this.state.failed) return retval; 
                            if ( this.state.backtracking===0 ) stream_S.add(S379);



                            break;

                    }

                    GREATER380=this.match(this.input,GREATER,XQueryParser.FOLLOW_GREATER_in_p_DirElemConstructor8400); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_GREATER.add(GREATER380);






                    break;

            }



            // AST REWRITE
            // elements: pm_DirElemContent, p_DirAttributeList
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            if ( this.state.backtracking===0 ) {
            retval.tree = root_0;
            var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);

            root_0 = this.adaptor.nil();
            // 1142:17: -> ^( DirElemConstructor ^( DirAttributeList ( p_DirAttributeList )* ) ^( DirElemContent ( pm_DirElemContent )* ) )
            {
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1142:20: ^( DirElemConstructor ^( DirAttributeList ( p_DirAttributeList )* ) ^( DirElemContent ( pm_DirElemContent )* ) )
                {
                var root_1 = this.adaptor.nil();
                root_1 = this.adaptor.becomeRoot(this.adaptor.create(DirElemConstructor, "DirElemConstructor"), root_1);

                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1142:41: ^( DirAttributeList ( p_DirAttributeList )* )
                {
                var root_2 = this.adaptor.nil();
                root_2 = this.adaptor.becomeRoot(this.adaptor.create(DirAttributeList, "DirAttributeList"), root_2);

                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1142:60: ( p_DirAttributeList )*
                while ( stream_p_DirAttributeList.hasNext() ) {
                    this.adaptor.addChild(root_2, stream_p_DirAttributeList.nextTree());

                }
                stream_p_DirAttributeList.reset();

                this.adaptor.addChild(root_1, root_2);
                }
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1142:81: ^( DirElemContent ( pm_DirElemContent )* )
                {
                var root_2 = this.adaptor.nil();
                root_2 = this.adaptor.becomeRoot(this.adaptor.create(DirElemContent, "DirElemContent"), root_2);

                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1142:98: ( pm_DirElemContent )*
                while ( stream_pm_DirElemContent.hasNext() ) {
                    this.adaptor.addChild(root_2, stream_pm_DirElemContent.nextTree());

                }
                stream_pm_DirElemContent.reset();

                this.adaptor.addChild(root_1, root_2);
                }

                this.adaptor.addChild(root_0, root_1);
                }

            }

            retval.tree = root_0;}


            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
            this.popLexer(); 
        }
        return retval;
    },

    // inline static return class
    p_DirAttributeList_return: (function() {
        XQueryParser.p_DirAttributeList_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_DirAttributeList_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1147:1: p_DirAttributeList : ( S (t= p_QName ( S )? EQUAL ( S )? v= p_DirAttributeValue )? )* ;
    // $ANTLR start "p_DirAttributeList"
    p_DirAttributeList: function() {
        var retval = new XQueryParser.p_DirAttributeList_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var S381 = null;
        var S382 = null;
        var EQUAL383 = null;
        var S384 = null;
         var t = null;
         var v = null;

        var S381_tree=null;
        var S382_tree=null;
        var EQUAL383_tree=null;
        var S384_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1148:9: ( ( S (t= p_QName ( S )? EQUAL ( S )? v= p_DirAttributeValue )? )* )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1148:11: ( S (t= p_QName ( S )? EQUAL ( S )? v= p_DirAttributeValue )? )*
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1148:11: ( S (t= p_QName ( S )? EQUAL ( S )? v= p_DirAttributeValue )? )*
            loop152:
            do {
                var alt152=2;
                var LA152_0 = this.input.LA(1);

                if ( (LA152_0==S) ) {
                    alt152=1;
                }


                switch (alt152) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1148:12: S (t= p_QName ( S )? EQUAL ( S )? v= p_DirAttributeValue )?
                    S381=this.match(this.input,S,XQueryParser.FOLLOW_S_in_p_DirAttributeList8477); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    S381_tree = this.adaptor.create(S381);
                    this.adaptor.addChild(root_0, S381_tree);
                    }
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1148:14: (t= p_QName ( S )? EQUAL ( S )? v= p_DirAttributeValue )?
                    var alt151=2;
                    var LA151_0 = this.input.LA(1);

                    if ( ((LA151_0>=ANCESTOR && LA151_0<=SKIP)||(LA151_0>=VALUE && LA151_0<=QUOT_ER)||LA151_0==L_NCName) ) {
                        alt151=1;
                    }
                    switch (alt151) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1148:15: t= p_QName ( S )? EQUAL ( S )? v= p_DirAttributeValue
                            this.pushFollow(XQueryParser.FOLLOW_p_QName_in_p_DirAttributeList8482);
                            t=this.p_QName();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, t.getTree());
                            if ( this.state.backtracking===0 ) {
                              this.at((t?t.start:null), (t?t.stop:null));
                            }
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1148:55: ( S )?
                            var alt149=2;
                            var LA149_0 = this.input.LA(1);

                            if ( (LA149_0==S) ) {
                                alt149=1;
                            }
                            switch (alt149) {
                                case 1 :
                                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1148:55: S
                                    S382=this.match(this.input,S,XQueryParser.FOLLOW_S_in_p_DirAttributeList8486); if (this.state.failed) return retval;
                                    if ( this.state.backtracking===0 ) {
                                    S382_tree = this.adaptor.create(S382);
                                    this.adaptor.addChild(root_0, S382_tree);
                                    }


                                    break;

                            }

                            EQUAL383=this.match(this.input,EQUAL,XQueryParser.FOLLOW_EQUAL_in_p_DirAttributeList8489); if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) {
                            EQUAL383_tree = this.adaptor.create(EQUAL383);
                            this.adaptor.addChild(root_0, EQUAL383_tree);
                            }
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1148:64: ( S )?
                            var alt150=2;
                            var LA150_0 = this.input.LA(1);

                            if ( (LA150_0==S) ) {
                                alt150=1;
                            }
                            switch (alt150) {
                                case 1 :
                                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1148:64: S
                                    S384=this.match(this.input,S,XQueryParser.FOLLOW_S_in_p_DirAttributeList8491); if (this.state.failed) return retval;
                                    if ( this.state.backtracking===0 ) {
                                    S384_tree = this.adaptor.create(S384);
                                    this.adaptor.addChild(root_0, S384_tree);
                                    }


                                    break;

                            }

                            this.pushFollow(XQueryParser.FOLLOW_p_DirAttributeValue_in_p_DirAttributeList8496);
                            v=this.p_DirAttributeValue();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());


                            break;

                    }



                    break;

                default :
                    break loop152;
                }
            } while (true);




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_DirAttributeValue_return: (function() {
        XQueryParser.p_DirAttributeValue_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_DirAttributeValue_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1152:1: p_DirAttributeValue : ( (s+= QUOT (s+= ESCAPE_QUOT | s+= APOS | p_QuotAttrValueContent )* s+= QUOT ) -> ^( DirAttributeValue ( p_QuotAttrValueContent )* ) | (s+= APOS (s+= ESCAPE_APOS | s+= QUOT | p_AposAttrValueContent )* s+= APOS ) -> ^( DirAttributeValue ( p_AposAttrValueContent )* ) );
    // $ANTLR start "p_DirAttributeValue"
    p_DirAttributeValue: function() {
        var retval = new XQueryParser.p_DirAttributeValue_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var s = null;
        var list_s=null;
         var p_QuotAttrValueContent385 = null;
         var p_AposAttrValueContent386 = null;

        var s_tree=null;
        var stream_ESCAPE_QUOT=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token ESCAPE_QUOT");
        var stream_APOS=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token APOS");
        var stream_ESCAPE_APOS=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token ESCAPE_APOS");
        var stream_QUOT=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token QUOT");
        var stream_p_QuotAttrValueContent=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_QuotAttrValueContent");
        var stream_p_AposAttrValueContent=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_AposAttrValueContent");
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1153:9: ( (s+= QUOT (s+= ESCAPE_QUOT | s+= APOS | p_QuotAttrValueContent )* s+= QUOT ) -> ^( DirAttributeValue ( p_QuotAttrValueContent )* ) | (s+= APOS (s+= ESCAPE_APOS | s+= QUOT | p_AposAttrValueContent )* s+= APOS ) -> ^( DirAttributeValue ( p_AposAttrValueContent )* ) )
            var alt155=2;
            var LA155_0 = this.input.LA(1);

            if ( (LA155_0==QUOT) ) {
                alt155=1;
            }
            else if ( (LA155_0==APOS) ) {
                alt155=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 155, 0, this.input);

                throw nvae;
            }
            switch (alt155) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1153:11: (s+= QUOT (s+= ESCAPE_QUOT | s+= APOS | p_QuotAttrValueContent )* s+= QUOT )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1153:11: (s+= QUOT (s+= ESCAPE_QUOT | s+= APOS | p_QuotAttrValueContent )* s+= QUOT )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1153:12: s+= QUOT (s+= ESCAPE_QUOT | s+= APOS | p_QuotAttrValueContent )* s+= QUOT
                    s=this.match(this.input,QUOT,XQueryParser.FOLLOW_QUOT_in_p_DirAttributeValue8530); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_QUOT.add(s);

                    if (org.antlr.lang.isNull(list_s)) list_s = [];
                    list_s.push(s);

                    if ( this.state.backtracking===0 ) {
                      this.isInAttr = true; 
                    }
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1153:45: (s+= ESCAPE_QUOT | s+= APOS | p_QuotAttrValueContent )*
                    loop153:
                    do {
                        var alt153=4;
                        switch ( this.input.LA(1) ) {
                        case ESCAPE_QUOT:
                            alt153=1;
                            break;
                        case APOS:
                            alt153=2;
                            break;
                        case L_QuotAttrContentChar:
                        case L_PredefinedEntityRef:
                        case L_CharRef:
                        case ESCAPE_LBRACKET:
                        case ESCAPE_RBRACKET:
                        case LBRACKET:
                            alt153=3;
                            break;

                        }

                        switch (alt153) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1153:46: s+= ESCAPE_QUOT
                            s=this.match(this.input,ESCAPE_QUOT,XQueryParser.FOLLOW_ESCAPE_QUOT_in_p_DirAttributeValue8537); if (this.state.failed) return retval; 
                            if ( this.state.backtracking===0 ) stream_ESCAPE_QUOT.add(s);

                            if (org.antlr.lang.isNull(list_s)) list_s = [];
                            list_s.push(s);



                            break;
                        case 2 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1153:63: s+= APOS
                            s=this.match(this.input,APOS,XQueryParser.FOLLOW_APOS_in_p_DirAttributeValue8543); if (this.state.failed) return retval; 
                            if ( this.state.backtracking===0 ) stream_APOS.add(s);

                            if (org.antlr.lang.isNull(list_s)) list_s = [];
                            list_s.push(s);



                            break;
                        case 3 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1153:73: p_QuotAttrValueContent
                            this.pushFollow(XQueryParser.FOLLOW_p_QuotAttrValueContent_in_p_DirAttributeValue8547);
                            p_QuotAttrValueContent385=this.p_QuotAttrValueContent();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) stream_p_QuotAttrValueContent.add(p_QuotAttrValueContent385.getTree());


                            break;

                        default :
                            break loop153;
                        }
                    } while (true);

                    s=this.match(this.input,QUOT,XQueryParser.FOLLOW_QUOT_in_p_DirAttributeValue8553); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_QUOT.add(s);

                    if (org.antlr.lang.isNull(list_s)) list_s = [];
                    list_s.push(s);

                    if ( this.state.backtracking===0 ) {
                       this.isInAttr = false; 
                    }



                    if ( this.state.backtracking===0 ) {
                       this.addToken(list_s, "string"); 
                    }


                    // AST REWRITE
                    // elements: p_QuotAttrValueContent
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    if ( this.state.backtracking===0 ) {
                    retval.tree = root_0;
                    var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);

                    root_0 = this.adaptor.nil();
                    // 1154:17: -> ^( DirAttributeValue ( p_QuotAttrValueContent )* )
                    {
                        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1154:20: ^( DirAttributeValue ( p_QuotAttrValueContent )* )
                        {
                        var root_1 = this.adaptor.nil();
                        root_1 = this.adaptor.becomeRoot(this.adaptor.create(DirAttributeValue, "DirAttributeValue"), root_1);

                        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1154:40: ( p_QuotAttrValueContent )*
                        while ( stream_p_QuotAttrValueContent.hasNext() ) {
                            this.adaptor.addChild(root_1, stream_p_QuotAttrValueContent.nextTree());

                        }
                        stream_p_QuotAttrValueContent.reset();

                        this.adaptor.addChild(root_0, root_1);
                        }

                    }

                    retval.tree = root_0;}

                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1155:11: (s+= APOS (s+= ESCAPE_APOS | s+= QUOT | p_AposAttrValueContent )* s+= APOS )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1155:11: (s+= APOS (s+= ESCAPE_APOS | s+= QUOT | p_AposAttrValueContent )* s+= APOS )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1155:12: s+= APOS (s+= ESCAPE_APOS | s+= QUOT | p_AposAttrValueContent )* s+= APOS
                    s=this.match(this.input,APOS,XQueryParser.FOLLOW_APOS_in_p_DirAttributeValue8598); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_APOS.add(s);

                    if (org.antlr.lang.isNull(list_s)) list_s = [];
                    list_s.push(s);

                    if ( this.state.backtracking===0 ) {
                       this.isInAttr = true; 
                    }
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1155:46: (s+= ESCAPE_APOS | s+= QUOT | p_AposAttrValueContent )*
                    loop154:
                    do {
                        var alt154=4;
                        switch ( this.input.LA(1) ) {
                        case ESCAPE_APOS:
                            alt154=1;
                            break;
                        case QUOT:
                            alt154=2;
                            break;
                        case L_AposAttrContentChar:
                        case L_PredefinedEntityRef:
                        case L_CharRef:
                        case ESCAPE_LBRACKET:
                        case ESCAPE_RBRACKET:
                        case LBRACKET:
                            alt154=3;
                            break;

                        }

                        switch (alt154) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1155:47: s+= ESCAPE_APOS
                            s=this.match(this.input,ESCAPE_APOS,XQueryParser.FOLLOW_ESCAPE_APOS_in_p_DirAttributeValue8605); if (this.state.failed) return retval; 
                            if ( this.state.backtracking===0 ) stream_ESCAPE_APOS.add(s);

                            if (org.antlr.lang.isNull(list_s)) list_s = [];
                            list_s.push(s);



                            break;
                        case 2 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1155:64: s+= QUOT
                            s=this.match(this.input,QUOT,XQueryParser.FOLLOW_QUOT_in_p_DirAttributeValue8611); if (this.state.failed) return retval; 
                            if ( this.state.backtracking===0 ) stream_QUOT.add(s);

                            if (org.antlr.lang.isNull(list_s)) list_s = [];
                            list_s.push(s);



                            break;
                        case 3 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1155:74: p_AposAttrValueContent
                            this.pushFollow(XQueryParser.FOLLOW_p_AposAttrValueContent_in_p_DirAttributeValue8615);
                            p_AposAttrValueContent386=this.p_AposAttrValueContent();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) stream_p_AposAttrValueContent.add(p_AposAttrValueContent386.getTree());


                            break;

                        default :
                            break loop154;
                        }
                    } while (true);

                    s=this.match(this.input,APOS,XQueryParser.FOLLOW_APOS_in_p_DirAttributeValue8621); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_APOS.add(s);

                    if (org.antlr.lang.isNull(list_s)) list_s = [];
                    list_s.push(s);

                    if ( this.state.backtracking===0 ) {
                       this.isInAttr = false; 
                    }



                    if ( this.state.backtracking===0 ) {
                       this.addToken(list_s, "string"); 
                    }


                    // AST REWRITE
                    // elements: p_AposAttrValueContent
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    if ( this.state.backtracking===0 ) {
                    retval.tree = root_0;
                    var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);

                    root_0 = this.adaptor.nil();
                    // 1156:17: -> ^( DirAttributeValue ( p_AposAttrValueContent )* )
                    {
                        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1156:20: ^( DirAttributeValue ( p_AposAttrValueContent )* )
                        {
                        var root_1 = this.adaptor.nil();
                        root_1 = this.adaptor.becomeRoot(this.adaptor.create(DirAttributeValue, "DirAttributeValue"), root_1);

                        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1156:40: ( p_AposAttrValueContent )*
                        while ( stream_p_AposAttrValueContent.hasNext() ) {
                            this.adaptor.addChild(root_1, stream_p_AposAttrValueContent.nextTree());

                        }
                        stream_p_AposAttrValueContent.reset();

                        this.adaptor.addChild(root_0, root_1);
                        }

                    }

                    retval.tree = root_0;}

                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_QuotAttrValueContent_return: (function() {
        XQueryParser.p_QuotAttrValueContent_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_QuotAttrValueContent_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1160:1: p_QuotAttrValueContent : (s= p_QuotAttrContentChar | pm_CommonContent );
    // $ANTLR start "p_QuotAttrValueContent"
    p_QuotAttrValueContent: function() {
        var retval = new XQueryParser.p_QuotAttrValueContent_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var s = null;
         var pm_CommonContent387 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1161:9: (s= p_QuotAttrContentChar | pm_CommonContent )
            var alt156=2;
            var LA156_0 = this.input.LA(1);

            if ( (LA156_0==L_QuotAttrContentChar) ) {
                alt156=1;
            }
            else if ( ((LA156_0>=L_PredefinedEntityRef && LA156_0<=ESCAPE_RBRACKET)||LA156_0==LBRACKET) ) {
                alt156=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 156, 0, this.input);

                throw nvae;
            }
            switch (alt156) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1161:11: s= p_QuotAttrContentChar
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_QuotAttrContentChar_in_p_QuotAttrValueContent8679);
                    s=this.p_QuotAttrContentChar();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, s.getTree());
                    if ( this.state.backtracking===0 ) {
                       this.addString((s?s.start:null), (s?s.stop:null)); 
                    }


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1161:76: pm_CommonContent
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_pm_CommonContent_in_p_QuotAttrValueContent8685);
                    pm_CommonContent387=this.pm_CommonContent();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_CommonContent387.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_AposAttrValueContent_return: (function() {
        XQueryParser.p_AposAttrValueContent_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_AposAttrValueContent_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1165:1: p_AposAttrValueContent : (s= p_AposAttrContentChar | pm_CommonContent );
    // $ANTLR start "p_AposAttrValueContent"
    p_AposAttrValueContent: function() {
        var retval = new XQueryParser.p_AposAttrValueContent_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var s = null;
         var pm_CommonContent388 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1166:9: (s= p_AposAttrContentChar | pm_CommonContent )
            var alt157=2;
            var LA157_0 = this.input.LA(1);

            if ( (LA157_0==L_AposAttrContentChar) ) {
                alt157=1;
            }
            else if ( ((LA157_0>=L_PredefinedEntityRef && LA157_0<=ESCAPE_RBRACKET)||LA157_0==LBRACKET) ) {
                alt157=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 157, 0, this.input);

                throw nvae;
            }
            switch (alt157) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1166:11: s= p_AposAttrContentChar
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_AposAttrContentChar_in_p_AposAttrValueContent8713);
                    s=this.p_AposAttrContentChar();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, s.getTree());
                    if ( this.state.backtracking===0 ) {
                       this.addString((s?s.start:null), (s?s.stop:null)); 
                    }


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1166:76: pm_CommonContent
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_pm_CommonContent_in_p_AposAttrValueContent8719);
                    pm_CommonContent388=this.pm_CommonContent();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_CommonContent388.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pm_DirElemContent_return: (function() {
        XQueryParser.pm_DirElemContent_return = function(){};
        org.antlr.lang.extend(XQueryParser.pm_DirElemContent_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1170:1: pm_DirElemContent : ( p_DirectConstructor | p_CDataSection | pm_CommonContent | p_ElementContentChar );
    // $ANTLR start "pm_DirElemContent"
    pm_DirElemContent: function() {
        var retval = new XQueryParser.pm_DirElemContent_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_DirectConstructor389 = null;
         var p_CDataSection390 = null;
         var pm_CommonContent391 = null;
         var p_ElementContentChar392 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1171:9: ( p_DirectConstructor | p_CDataSection | pm_CommonContent | p_ElementContentChar )
            var alt158=4;
            switch ( this.input.LA(1) ) {
            case SMALLER:
            case L_DirCommentConstructor:
            case L_DirPIConstructor:
                alt158=1;
                break;
            case L_CDataSection:
                alt158=2;
                break;
            case L_PredefinedEntityRef:
            case L_CharRef:
            case ESCAPE_LBRACKET:
            case ESCAPE_RBRACKET:
            case LBRACKET:
                alt158=3;
                break;
            case L_ElementContentChar:
                alt158=4;
                break;
            default:
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 158, 0, this.input);

                throw nvae;
            }

            switch (alt158) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1171:11: p_DirectConstructor
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_DirectConstructor_in_pm_DirElemContent8745);
                    p_DirectConstructor389=this.p_DirectConstructor();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_DirectConstructor389.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1172:11: p_CDataSection
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_CDataSection_in_pm_DirElemContent8757);
                    p_CDataSection390=this.p_CDataSection();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_CDataSection390.getTree());


                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1173:11: pm_CommonContent
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_pm_CommonContent_in_pm_DirElemContent8769);
                    pm_CommonContent391=this.pm_CommonContent();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_CommonContent391.getTree());


                    break;
                case 4 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1174:11: p_ElementContentChar
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_ElementContentChar_in_pm_DirElemContent8781);
                    p_ElementContentChar392=this.p_ElementContentChar();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ElementContentChar392.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pm_CommonContent_return: (function() {
        XQueryParser.pm_CommonContent_return = function(){};
        org.antlr.lang.extend(XQueryParser.pm_CommonContent_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1180:1: pm_CommonContent : ( L_PredefinedEntityRef | L_CharRef | s= ESCAPE_LBRACKET | s= ESCAPE_RBRACKET | pg_EnclosedExprXml );
    // $ANTLR start "pm_CommonContent"
    pm_CommonContent: function() {
        var retval = new XQueryParser.pm_CommonContent_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var s = null;
        var L_PredefinedEntityRef393 = null;
        var L_CharRef394 = null;
         var pg_EnclosedExprXml395 = null;

        var s_tree=null;
        var L_PredefinedEntityRef393_tree=null;
        var L_CharRef394_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1181:9: ( L_PredefinedEntityRef | L_CharRef | s= ESCAPE_LBRACKET | s= ESCAPE_RBRACKET | pg_EnclosedExprXml )
            var alt159=5;
            switch ( this.input.LA(1) ) {
            case L_PredefinedEntityRef:
                alt159=1;
                break;
            case L_CharRef:
                alt159=2;
                break;
            case ESCAPE_LBRACKET:
                alt159=3;
                break;
            case ESCAPE_RBRACKET:
                alt159=4;
                break;
            case LBRACKET:
                alt159=5;
                break;
            default:
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 159, 0, this.input);

                throw nvae;
            }

            switch (alt159) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1181:11: L_PredefinedEntityRef
                    root_0 = this.adaptor.nil();

                    L_PredefinedEntityRef393=this.match(this.input,L_PredefinedEntityRef,XQueryParser.FOLLOW_L_PredefinedEntityRef_in_pm_CommonContent8809); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    L_PredefinedEntityRef393_tree = this.adaptor.create(L_PredefinedEntityRef393);
                    this.adaptor.addChild(root_0, L_PredefinedEntityRef393_tree);
                    }


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1182:11: L_CharRef
                    root_0 = this.adaptor.nil();

                    L_CharRef394=this.match(this.input,L_CharRef,XQueryParser.FOLLOW_L_CharRef_in_pm_CommonContent8821); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    L_CharRef394_tree = this.adaptor.create(L_CharRef394);
                    this.adaptor.addChild(root_0, L_CharRef394_tree);
                    }


                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1183:11: s= ESCAPE_LBRACKET
                    root_0 = this.adaptor.nil();

                    s=this.match(this.input,ESCAPE_LBRACKET,XQueryParser.FOLLOW_ESCAPE_LBRACKET_in_pm_CommonContent8835); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    s_tree = this.adaptor.create(s);
                    this.adaptor.addChild(root_0, s_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                       if(this.isInAttr) { this.addToken(s, "string");  } 
                    }


                    break;
                case 4 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1184:11: s= ESCAPE_RBRACKET
                    root_0 = this.adaptor.nil();

                    s=this.match(this.input,ESCAPE_RBRACKET,XQueryParser.FOLLOW_ESCAPE_RBRACKET_in_pm_CommonContent8851); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    s_tree = this.adaptor.create(s);
                    this.adaptor.addChild(root_0, s_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                       if(this.isInAttr) { this.addToken(s, "string");  } 
                    }


                    break;
                case 5 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1185:11: pg_EnclosedExprXml
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_pg_EnclosedExprXml_in_pm_CommonContent8865);
                    pg_EnclosedExprXml395=this.pg_EnclosedExprXml();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pg_EnclosedExprXml395.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pg_EnclosedExprXml_return: (function() {
        XQueryParser.pg_EnclosedExprXml_return = function(){};
        org.antlr.lang.extend(XQueryParser.pg_EnclosedExprXml_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1193:1: pg_EnclosedExprXml : LBRACKET p_StatementsAndOptionalExpr RBRACKET ;
    // $ANTLR start "pg_EnclosedExprXml"
    pg_EnclosedExprXml: function() {
        var retval = new XQueryParser.pg_EnclosedExprXml_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var LBRACKET396 = null;
        var RBRACKET398 = null;
         var p_StatementsAndOptionalExpr397 = null;

        var LBRACKET396_tree=null;
        var RBRACKET398_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1194:9: ( LBRACKET p_StatementsAndOptionalExpr RBRACKET )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1194:13: LBRACKET p_StatementsAndOptionalExpr RBRACKET
            root_0 = this.adaptor.nil();

            LBRACKET396=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_pg_EnclosedExprXml8897); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LBRACKET396_tree = this.adaptor.create(LBRACKET396);
            this.adaptor.addChild(root_0, LBRACKET396_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.pushXQueryLexer();
            }
            this.pushFollow(XQueryParser.FOLLOW_p_StatementsAndOptionalExpr_in_pg_EnclosedExprXml8913);
            p_StatementsAndOptionalExpr397=this.p_StatementsAndOptionalExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StatementsAndOptionalExpr397.getTree());
            RBRACKET398=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_pg_EnclosedExprXml8927); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RBRACKET398_tree = this.adaptor.create(RBRACKET398);
            this.adaptor.addChild(root_0, RBRACKET398_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.popLexer();
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_DirCommentConstructor_return: (function() {
        XQueryParser.p_DirCommentConstructor_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_DirCommentConstructor_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1201:1: p_DirCommentConstructor : c= L_DirCommentConstructor ;
    // $ANTLR start "p_DirCommentConstructor"
    p_DirCommentConstructor: function() {
        var retval = new XQueryParser.p_DirCommentConstructor_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var c = null;

        var c_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1202:9: (c= L_DirCommentConstructor )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1202:11: c= L_DirCommentConstructor
            root_0 = this.adaptor.nil();

            c=this.match(this.input,L_DirCommentConstructor,XQueryParser.FOLLOW_L_DirCommentConstructor_in_p_DirCommentConstructor8958); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            c_tree = this.adaptor.create(c);
            this.adaptor.addChild(root_0, c_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ac(c);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_DirPIConstructor_return: (function() {
        XQueryParser.p_DirPIConstructor_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_DirPIConstructor_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1209:1: p_DirPIConstructor : p= L_DirPIConstructor ;
    // $ANTLR start "p_DirPIConstructor"
    p_DirPIConstructor: function() {
        var retval = new XQueryParser.p_DirPIConstructor_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var p = null;

        var p_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1210:9: (p= L_DirPIConstructor )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1210:11: p= L_DirPIConstructor
            root_0 = this.adaptor.nil();

            p=this.match(this.input,L_DirPIConstructor,XQueryParser.FOLLOW_L_DirPIConstructor_in_p_DirPIConstructor8994); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            p_tree = this.adaptor.create(p);
            this.adaptor.addChild(root_0, p_tree);
            }
            if ( this.state.backtracking===0 ) {
               this.ap(p);  
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_CDataSection_return: (function() {
        XQueryParser.p_CDataSection_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_CDataSection_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1217:1: p_CDataSection : c= L_CDataSection ;
    // $ANTLR start "p_CDataSection"
    p_CDataSection: function() {
        var retval = new XQueryParser.p_CDataSection_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var c = null;

        var c_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1218:9: (c= L_CDataSection )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1218:11: c= L_CDataSection
            root_0 = this.adaptor.nil();

            c=this.match(this.input,L_CDataSection,XQueryParser.FOLLOW_L_CDataSection_in_p_CDataSection9031); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            c_tree = this.adaptor.create(c);
            this.adaptor.addChild(root_0, c_tree);
            }
            if ( this.state.backtracking===0 ) {
               this.ac(c); 
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ComputedConstructor_return: (function() {
        XQueryParser.p_ComputedConstructor_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ComputedConstructor_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1225:1: p_ComputedConstructor : ( pm_CompDocConstructor | pm_CompElemConstructor | pm_CompAttrConstructor | p_CompNamespaceConstructor | p_CompTextConstructor | pm_CompCommentConstructor | pm_CompPIConstructor );
    // $ANTLR start "p_ComputedConstructor"
    p_ComputedConstructor: function() {
        var retval = new XQueryParser.p_ComputedConstructor_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var pm_CompDocConstructor399 = null;
         var pm_CompElemConstructor400 = null;
         var pm_CompAttrConstructor401 = null;
         var p_CompNamespaceConstructor402 = null;
         var p_CompTextConstructor403 = null;
         var pm_CompCommentConstructor404 = null;
         var pm_CompPIConstructor405 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1226:9: ( pm_CompDocConstructor | pm_CompElemConstructor | pm_CompAttrConstructor | p_CompNamespaceConstructor | p_CompTextConstructor | pm_CompCommentConstructor | pm_CompPIConstructor )
            var alt160=7;
            switch ( this.input.LA(1) ) {
            case DOCUMENT:
                alt160=1;
                break;
            case ELEMENT:
                alt160=2;
                break;
            case ATTRIBUTE:
                alt160=3;
                break;
            case NAMESPACE:
                alt160=4;
                break;
            case TEXT:
                alt160=5;
                break;
            case COMMENT:
                alt160=6;
                break;
            case PROCESSING_INSTRUCTION:
                alt160=7;
                break;
            default:
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 160, 0, this.input);

                throw nvae;
            }

            switch (alt160) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1226:11: pm_CompDocConstructor
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_pm_CompDocConstructor_in_p_ComputedConstructor9065);
                    pm_CompDocConstructor399=this.pm_CompDocConstructor();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_CompDocConstructor399.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1227:11: pm_CompElemConstructor
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_pm_CompElemConstructor_in_p_ComputedConstructor9077);
                    pm_CompElemConstructor400=this.pm_CompElemConstructor();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_CompElemConstructor400.getTree());


                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1228:11: pm_CompAttrConstructor
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_pm_CompAttrConstructor_in_p_ComputedConstructor9089);
                    pm_CompAttrConstructor401=this.pm_CompAttrConstructor();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_CompAttrConstructor401.getTree());


                    break;
                case 4 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1229:11: p_CompNamespaceConstructor
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_CompNamespaceConstructor_in_p_ComputedConstructor9101);
                    p_CompNamespaceConstructor402=this.p_CompNamespaceConstructor();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_CompNamespaceConstructor402.getTree());


                    break;
                case 5 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1230:11: p_CompTextConstructor
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_CompTextConstructor_in_p_ComputedConstructor9113);
                    p_CompTextConstructor403=this.p_CompTextConstructor();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_CompTextConstructor403.getTree());


                    break;
                case 6 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1231:11: pm_CompCommentConstructor
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_pm_CompCommentConstructor_in_p_ComputedConstructor9125);
                    pm_CompCommentConstructor404=this.pm_CompCommentConstructor();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_CompCommentConstructor404.getTree());


                    break;
                case 7 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1232:11: pm_CompPIConstructor
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_pm_CompPIConstructor_in_p_ComputedConstructor9137);
                    pm_CompPIConstructor405=this.pm_CompPIConstructor();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_CompPIConstructor405.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pm_CompDocConstructor_return: (function() {
        XQueryParser.pm_CompDocConstructor_return = function(){};
        org.antlr.lang.extend(XQueryParser.pm_CompDocConstructor_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1237:1: pm_CompDocConstructor : k= DOCUMENT LBRACKET p_StatementsAndOptionalExpr RBRACKET ;
    // $ANTLR start "pm_CompDocConstructor"
    pm_CompDocConstructor: function() {
        var retval = new XQueryParser.pm_CompDocConstructor_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var LBRACKET406 = null;
        var RBRACKET408 = null;
         var p_StatementsAndOptionalExpr407 = null;

        var k_tree=null;
        var LBRACKET406_tree=null;
        var RBRACKET408_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1238:9: (k= DOCUMENT LBRACKET p_StatementsAndOptionalExpr RBRACKET )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1238:11: k= DOCUMENT LBRACKET p_StatementsAndOptionalExpr RBRACKET
            root_0 = this.adaptor.nil();

            k=this.match(this.input,DOCUMENT,XQueryParser.FOLLOW_DOCUMENT_in_pm_CompDocConstructor9166); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            LBRACKET406=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_pm_CompDocConstructor9170); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LBRACKET406_tree = this.adaptor.create(LBRACKET406);
            this.adaptor.addChild(root_0, LBRACKET406_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_StatementsAndOptionalExpr_in_pm_CompDocConstructor9172);
            p_StatementsAndOptionalExpr407=this.p_StatementsAndOptionalExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StatementsAndOptionalExpr407.getTree());
            RBRACKET408=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_pm_CompDocConstructor9174); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RBRACKET408_tree = this.adaptor.create(RBRACKET408);
            this.adaptor.addChild(root_0, RBRACKET408_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pm_CompElemConstructor_return: (function() {
        XQueryParser.pm_CompElemConstructor_return = function(){};
        org.antlr.lang.extend(XQueryParser.pm_CompElemConstructor_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1242:1: pm_CompElemConstructor : k= ELEMENT ( p_EQName | ( LBRACKET p_Expr[true,true] RBRACKET ) ) LBRACKET pm_ContentExpr RBRACKET ;
    // $ANTLR start "pm_CompElemConstructor"
    pm_CompElemConstructor: function() {
        var retval = new XQueryParser.pm_CompElemConstructor_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var LBRACKET410 = null;
        var RBRACKET412 = null;
        var LBRACKET413 = null;
        var RBRACKET415 = null;
         var p_EQName409 = null;
         var p_Expr411 = null;
         var pm_ContentExpr414 = null;

        var k_tree=null;
        var LBRACKET410_tree=null;
        var RBRACKET412_tree=null;
        var LBRACKET413_tree=null;
        var RBRACKET415_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1243:9: (k= ELEMENT ( p_EQName | ( LBRACKET p_Expr[true,true] RBRACKET ) ) LBRACKET pm_ContentExpr RBRACKET )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1243:11: k= ELEMENT ( p_EQName | ( LBRACKET p_Expr[true,true] RBRACKET ) ) LBRACKET pm_ContentExpr RBRACKET
            root_0 = this.adaptor.nil();

            k=this.match(this.input,ELEMENT,XQueryParser.FOLLOW_ELEMENT_in_pm_CompElemConstructor9210); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1243:36: ( p_EQName | ( LBRACKET p_Expr[true,true] RBRACKET ) )
            var alt161=2;
            var LA161_0 = this.input.LA(1);

            if ( ((LA161_0>=ANCESTOR && LA161_0<=SKIP)||(LA161_0>=VALUE && LA161_0<=QUOT_ER)||LA161_0==Q||LA161_0==L_NCName) ) {
                alt161=1;
            }
            else if ( (LA161_0==LBRACKET) ) {
                alt161=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 161, 0, this.input);

                throw nvae;
            }
            switch (alt161) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1243:37: p_EQName
                    this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_pm_CompElemConstructor9215);
                    p_EQName409=this.p_EQName();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_EQName409.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1243:48: ( LBRACKET p_Expr[true,true] RBRACKET )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1243:48: ( LBRACKET p_Expr[true,true] RBRACKET )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1243:49: LBRACKET p_Expr[true,true] RBRACKET
                    LBRACKET410=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_pm_CompElemConstructor9220); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    LBRACKET410_tree = this.adaptor.create(LBRACKET410);
                    this.adaptor.addChild(root_0, LBRACKET410_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_pm_CompElemConstructor9222);
                    p_Expr411=this.p_Expr(true, true);

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr411.getTree());
                    RBRACKET412=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_pm_CompElemConstructor9225); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    RBRACKET412_tree = this.adaptor.create(RBRACKET412);
                    this.adaptor.addChild(root_0, RBRACKET412_tree);
                    }





                    break;

            }

            LBRACKET413=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_pm_CompElemConstructor9229); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LBRACKET413_tree = this.adaptor.create(LBRACKET413);
            this.adaptor.addChild(root_0, LBRACKET413_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_pm_ContentExpr_in_pm_CompElemConstructor9231);
            pm_ContentExpr414=this.pm_ContentExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pm_ContentExpr414.getTree());
            RBRACKET415=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_pm_CompElemConstructor9233); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RBRACKET415_tree = this.adaptor.create(RBRACKET415);
            this.adaptor.addChild(root_0, RBRACKET415_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pm_ContentExpr_return: (function() {
        XQueryParser.pm_ContentExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.pm_ContentExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1248:1: pm_ContentExpr : p_StatementsAndOptionalExpr ;
    // $ANTLR start "pm_ContentExpr"
    pm_ContentExpr: function() {
        var retval = new XQueryParser.pm_ContentExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_StatementsAndOptionalExpr416 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1249:9: ( p_StatementsAndOptionalExpr )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1249:11: p_StatementsAndOptionalExpr
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_StatementsAndOptionalExpr_in_pm_ContentExpr9260);
            p_StatementsAndOptionalExpr416=this.p_StatementsAndOptionalExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StatementsAndOptionalExpr416.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pm_CompAttrConstructor_return: (function() {
        XQueryParser.pm_CompAttrConstructor_return = function(){};
        org.antlr.lang.extend(XQueryParser.pm_CompAttrConstructor_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1254:1: pm_CompAttrConstructor : k= ATTRIBUTE ( p_EQName | ( LBRACKET p_Expr[true,true] RBRACKET ) ) LBRACKET p_StatementsAndOptionalExpr RBRACKET ;
    // $ANTLR start "pm_CompAttrConstructor"
    pm_CompAttrConstructor: function() {
        var retval = new XQueryParser.pm_CompAttrConstructor_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var LBRACKET418 = null;
        var RBRACKET420 = null;
        var LBRACKET421 = null;
        var RBRACKET423 = null;
         var p_EQName417 = null;
         var p_Expr419 = null;
         var p_StatementsAndOptionalExpr422 = null;

        var k_tree=null;
        var LBRACKET418_tree=null;
        var RBRACKET420_tree=null;
        var LBRACKET421_tree=null;
        var RBRACKET423_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1255:9: (k= ATTRIBUTE ( p_EQName | ( LBRACKET p_Expr[true,true] RBRACKET ) ) LBRACKET p_StatementsAndOptionalExpr RBRACKET )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1255:11: k= ATTRIBUTE ( p_EQName | ( LBRACKET p_Expr[true,true] RBRACKET ) ) LBRACKET p_StatementsAndOptionalExpr RBRACKET
            root_0 = this.adaptor.nil();

            k=this.match(this.input,ATTRIBUTE,XQueryParser.FOLLOW_ATTRIBUTE_in_pm_CompAttrConstructor9289); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1255:38: ( p_EQName | ( LBRACKET p_Expr[true,true] RBRACKET ) )
            var alt162=2;
            var LA162_0 = this.input.LA(1);

            if ( ((LA162_0>=ANCESTOR && LA162_0<=SKIP)||(LA162_0>=VALUE && LA162_0<=QUOT_ER)||LA162_0==Q||LA162_0==L_NCName) ) {
                alt162=1;
            }
            else if ( (LA162_0==LBRACKET) ) {
                alt162=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 162, 0, this.input);

                throw nvae;
            }
            switch (alt162) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1255:39: p_EQName
                    this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_pm_CompAttrConstructor9294);
                    p_EQName417=this.p_EQName();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_EQName417.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1255:50: ( LBRACKET p_Expr[true,true] RBRACKET )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1255:50: ( LBRACKET p_Expr[true,true] RBRACKET )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1255:51: LBRACKET p_Expr[true,true] RBRACKET
                    LBRACKET418=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_pm_CompAttrConstructor9299); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    LBRACKET418_tree = this.adaptor.create(LBRACKET418);
                    this.adaptor.addChild(root_0, LBRACKET418_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_pm_CompAttrConstructor9301);
                    p_Expr419=this.p_Expr(true, true);

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr419.getTree());
                    RBRACKET420=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_pm_CompAttrConstructor9304); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    RBRACKET420_tree = this.adaptor.create(RBRACKET420);
                    this.adaptor.addChild(root_0, RBRACKET420_tree);
                    }





                    break;

            }

            LBRACKET421=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_pm_CompAttrConstructor9308); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LBRACKET421_tree = this.adaptor.create(LBRACKET421);
            this.adaptor.addChild(root_0, LBRACKET421_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_StatementsAndOptionalExpr_in_pm_CompAttrConstructor9310);
            p_StatementsAndOptionalExpr422=this.p_StatementsAndOptionalExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StatementsAndOptionalExpr422.getTree());
            RBRACKET423=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_pm_CompAttrConstructor9312); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RBRACKET423_tree = this.adaptor.create(RBRACKET423);
            this.adaptor.addChild(root_0, RBRACKET423_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_CompNamespaceConstructor_return: (function() {
        XQueryParser.p_CompNamespaceConstructor_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_CompNamespaceConstructor_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1259:1: p_CompNamespaceConstructor : k= NAMESPACE ( p_Prefix | ( LBRACKET p_PrefixExpr RBRACKET ) ) LBRACKET ( p_URIExpr )? RBRACKET ;
    // $ANTLR start "p_CompNamespaceConstructor"
    p_CompNamespaceConstructor: function() {
        var retval = new XQueryParser.p_CompNamespaceConstructor_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var LBRACKET425 = null;
        var RBRACKET427 = null;
        var LBRACKET428 = null;
        var RBRACKET430 = null;
         var p_Prefix424 = null;
         var p_PrefixExpr426 = null;
         var p_URIExpr429 = null;

        var k_tree=null;
        var LBRACKET425_tree=null;
        var RBRACKET427_tree=null;
        var LBRACKET428_tree=null;
        var RBRACKET430_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1260:9: (k= NAMESPACE ( p_Prefix | ( LBRACKET p_PrefixExpr RBRACKET ) ) LBRACKET ( p_URIExpr )? RBRACKET )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1260:11: k= NAMESPACE ( p_Prefix | ( LBRACKET p_PrefixExpr RBRACKET ) ) LBRACKET ( p_URIExpr )? RBRACKET
            root_0 = this.adaptor.nil();

            k=this.match(this.input,NAMESPACE,XQueryParser.FOLLOW_NAMESPACE_in_p_CompNamespaceConstructor9340); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1260:38: ( p_Prefix | ( LBRACKET p_PrefixExpr RBRACKET ) )
            var alt163=2;
            var LA163_0 = this.input.LA(1);

            if ( ((LA163_0>=ANCESTOR && LA163_0<=SKIP)||(LA163_0>=VALUE && LA163_0<=QUOT_ER)||LA163_0==L_NCName) ) {
                alt163=1;
            }
            else if ( (LA163_0==LBRACKET) ) {
                alt163=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 163, 0, this.input);

                throw nvae;
            }
            switch (alt163) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1260:39: p_Prefix
                    this.pushFollow(XQueryParser.FOLLOW_p_Prefix_in_p_CompNamespaceConstructor9345);
                    p_Prefix424=this.p_Prefix();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Prefix424.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1260:50: ( LBRACKET p_PrefixExpr RBRACKET )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1260:50: ( LBRACKET p_PrefixExpr RBRACKET )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1260:51: LBRACKET p_PrefixExpr RBRACKET
                    LBRACKET425=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_CompNamespaceConstructor9350); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    LBRACKET425_tree = this.adaptor.create(LBRACKET425);
                    this.adaptor.addChild(root_0, LBRACKET425_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_PrefixExpr_in_p_CompNamespaceConstructor9352);
                    p_PrefixExpr426=this.p_PrefixExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PrefixExpr426.getTree());
                    RBRACKET427=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_CompNamespaceConstructor9354); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    RBRACKET427_tree = this.adaptor.create(RBRACKET427);
                    this.adaptor.addChild(root_0, RBRACKET427_tree);
                    }





                    break;

            }

            LBRACKET428=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_CompNamespaceConstructor9358); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LBRACKET428_tree = this.adaptor.create(LBRACKET428);
            this.adaptor.addChild(root_0, LBRACKET428_tree);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1260:93: ( p_URIExpr )?
            var alt164=2;
            var LA164_0 = this.input.LA(1);

            if ( ((LA164_0>=ANCESTOR && LA164_0<=QUOT_ER)||LA164_0==LPAREN||(LA164_0>=DOLLAR && LA164_0<=L_UNION_BRACKET)||LA164_0==LBRACKET||LA164_0==LSQUARE||(LA164_0>=STAR && LA164_0<=SMALLER)||(LA164_0>=SLASH && LA164_0<=SLASH_SLASH)||(LA164_0>=DOT && LA164_0<=DOT_DOT)||(LA164_0>=ATTR_SIGN && LA164_0<=Q)||(LA164_0>=APOS && LA164_0<=QUOT)||LA164_0==L_NCName||(LA164_0>=L_Pragma && LA164_0<=L_DoubleLiteral)) ) {
                alt164=1;
            }
            switch (alt164) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1260:93: p_URIExpr
                    this.pushFollow(XQueryParser.FOLLOW_p_URIExpr_in_p_CompNamespaceConstructor9360);
                    p_URIExpr429=this.p_URIExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_URIExpr429.getTree());


                    break;

            }

            RBRACKET430=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_CompNamespaceConstructor9363); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RBRACKET430_tree = this.adaptor.create(RBRACKET430);
            this.adaptor.addChild(root_0, RBRACKET430_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_Prefix_return: (function() {
        XQueryParser.p_Prefix_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_Prefix_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1264:1: p_Prefix : p_NCName ;
    // $ANTLR start "p_Prefix"
    p_Prefix: function() {
        var retval = new XQueryParser.p_Prefix_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_NCName431 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1265:9: ( p_NCName )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1265:11: p_NCName
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_NCName_in_p_Prefix9389);
            p_NCName431=this.p_NCName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NCName431.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_PrefixExpr_return: (function() {
        XQueryParser.p_PrefixExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_PrefixExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1269:1: p_PrefixExpr : p_Expr[true,true] ;
    // $ANTLR start "p_PrefixExpr"
    p_PrefixExpr: function() {
        var retval = new XQueryParser.p_PrefixExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_Expr432 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1270:9: ( p_Expr[true,true] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1270:11: p_Expr[true,true]
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_PrefixExpr9415);
            p_Expr432=this.p_Expr(true, true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr432.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_URIExpr_return: (function() {
        XQueryParser.p_URIExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_URIExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1274:1: p_URIExpr : p_Expr[true,true] ;
    // $ANTLR start "p_URIExpr"
    p_URIExpr: function() {
        var retval = new XQueryParser.p_URIExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_Expr433 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1275:9: ( p_Expr[true,true] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1275:11: p_Expr[true,true]
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_URIExpr9442);
            p_Expr433=this.p_Expr(true, true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr433.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_CompTextConstructor_return: (function() {
        XQueryParser.p_CompTextConstructor_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_CompTextConstructor_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1279:1: p_CompTextConstructor : k= TEXT LBRACKET p_Expr[true,true] RBRACKET ;
    // $ANTLR start "p_CompTextConstructor"
    p_CompTextConstructor: function() {
        var retval = new XQueryParser.p_CompTextConstructor_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var LBRACKET434 = null;
        var RBRACKET436 = null;
         var p_Expr435 = null;

        var k_tree=null;
        var LBRACKET434_tree=null;
        var RBRACKET436_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1280:9: (k= TEXT LBRACKET p_Expr[true,true] RBRACKET )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1280:11: k= TEXT LBRACKET p_Expr[true,true] RBRACKET
            root_0 = this.adaptor.nil();

            k=this.match(this.input,TEXT,XQueryParser.FOLLOW_TEXT_in_p_CompTextConstructor9471); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            LBRACKET434=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_CompTextConstructor9475); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LBRACKET434_tree = this.adaptor.create(LBRACKET434);
            this.adaptor.addChild(root_0, LBRACKET434_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_CompTextConstructor9477);
            p_Expr435=this.p_Expr(true, true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr435.getTree());
            RBRACKET436=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_CompTextConstructor9480); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RBRACKET436_tree = this.adaptor.create(RBRACKET436);
            this.adaptor.addChild(root_0, RBRACKET436_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pm_CompCommentConstructor_return: (function() {
        XQueryParser.pm_CompCommentConstructor_return = function(){};
        org.antlr.lang.extend(XQueryParser.pm_CompCommentConstructor_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1285:1: pm_CompCommentConstructor : k= COMMENT LBRACKET p_StatementsAndOptionalExpr RBRACKET ;
    // $ANTLR start "pm_CompCommentConstructor"
    pm_CompCommentConstructor: function() {
        var retval = new XQueryParser.pm_CompCommentConstructor_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var LBRACKET437 = null;
        var RBRACKET439 = null;
         var p_StatementsAndOptionalExpr438 = null;

        var k_tree=null;
        var LBRACKET437_tree=null;
        var RBRACKET439_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1286:9: (k= COMMENT LBRACKET p_StatementsAndOptionalExpr RBRACKET )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1286:11: k= COMMENT LBRACKET p_StatementsAndOptionalExpr RBRACKET
            root_0 = this.adaptor.nil();

            k=this.match(this.input,COMMENT,XQueryParser.FOLLOW_COMMENT_in_pm_CompCommentConstructor9509); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            LBRACKET437=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_pm_CompCommentConstructor9513); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LBRACKET437_tree = this.adaptor.create(LBRACKET437);
            this.adaptor.addChild(root_0, LBRACKET437_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_StatementsAndOptionalExpr_in_pm_CompCommentConstructor9515);
            p_StatementsAndOptionalExpr438=this.p_StatementsAndOptionalExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StatementsAndOptionalExpr438.getTree());
            RBRACKET439=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_pm_CompCommentConstructor9517); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RBRACKET439_tree = this.adaptor.create(RBRACKET439);
            this.adaptor.addChild(root_0, RBRACKET439_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pm_CompPIConstructor_return: (function() {
        XQueryParser.pm_CompPIConstructor_return = function(){};
        org.antlr.lang.extend(XQueryParser.pm_CompPIConstructor_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1291:1: pm_CompPIConstructor : k= PROCESSING_INSTRUCTION ( p_NCName | ( LBRACKET p_Expr[true,true] RBRACKET ) ) LBRACKET p_StatementsAndOptionalExpr RBRACKET ;
    // $ANTLR start "pm_CompPIConstructor"
    pm_CompPIConstructor: function() {
        var retval = new XQueryParser.pm_CompPIConstructor_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var LBRACKET441 = null;
        var RBRACKET443 = null;
        var LBRACKET444 = null;
        var RBRACKET446 = null;
         var p_NCName440 = null;
         var p_Expr442 = null;
         var p_StatementsAndOptionalExpr445 = null;

        var k_tree=null;
        var LBRACKET441_tree=null;
        var RBRACKET443_tree=null;
        var LBRACKET444_tree=null;
        var RBRACKET446_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1292:9: (k= PROCESSING_INSTRUCTION ( p_NCName | ( LBRACKET p_Expr[true,true] RBRACKET ) ) LBRACKET p_StatementsAndOptionalExpr RBRACKET )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1292:11: k= PROCESSING_INSTRUCTION ( p_NCName | ( LBRACKET p_Expr[true,true] RBRACKET ) ) LBRACKET p_StatementsAndOptionalExpr RBRACKET
            root_0 = this.adaptor.nil();

            k=this.match(this.input,PROCESSING_INSTRUCTION,XQueryParser.FOLLOW_PROCESSING_INSTRUCTION_in_pm_CompPIConstructor9546); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1292:51: ( p_NCName | ( LBRACKET p_Expr[true,true] RBRACKET ) )
            var alt165=2;
            var LA165_0 = this.input.LA(1);

            if ( ((LA165_0>=ANCESTOR && LA165_0<=SKIP)||(LA165_0>=VALUE && LA165_0<=QUOT_ER)||LA165_0==L_NCName) ) {
                alt165=1;
            }
            else if ( (LA165_0==LBRACKET) ) {
                alt165=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 165, 0, this.input);

                throw nvae;
            }
            switch (alt165) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1292:52: p_NCName
                    this.pushFollow(XQueryParser.FOLLOW_p_NCName_in_pm_CompPIConstructor9551);
                    p_NCName440=this.p_NCName();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NCName440.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1292:63: ( LBRACKET p_Expr[true,true] RBRACKET )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1292:63: ( LBRACKET p_Expr[true,true] RBRACKET )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1292:64: LBRACKET p_Expr[true,true] RBRACKET
                    LBRACKET441=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_pm_CompPIConstructor9556); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    LBRACKET441_tree = this.adaptor.create(LBRACKET441);
                    this.adaptor.addChild(root_0, LBRACKET441_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_pm_CompPIConstructor9558);
                    p_Expr442=this.p_Expr(true, true);

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr442.getTree());
                    RBRACKET443=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_pm_CompPIConstructor9561); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    RBRACKET443_tree = this.adaptor.create(RBRACKET443);
                    this.adaptor.addChild(root_0, RBRACKET443_tree);
                    }





                    break;

            }

            LBRACKET444=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_pm_CompPIConstructor9565); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LBRACKET444_tree = this.adaptor.create(LBRACKET444);
            this.adaptor.addChild(root_0, LBRACKET444_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_StatementsAndOptionalExpr_in_pm_CompPIConstructor9567);
            p_StatementsAndOptionalExpr445=this.p_StatementsAndOptionalExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StatementsAndOptionalExpr445.getTree());
            RBRACKET446=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_pm_CompPIConstructor9569); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RBRACKET446_tree = this.adaptor.create(RBRACKET446);
            this.adaptor.addChild(root_0, RBRACKET446_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FunctionItemExpr_return: (function() {
        XQueryParser.p_FunctionItemExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FunctionItemExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1296:1: p_FunctionItemExpr : p_LiteralFunctionItem ;
    // $ANTLR start "p_FunctionItemExpr"
    p_FunctionItemExpr: function() {
        var retval = new XQueryParser.p_FunctionItemExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_LiteralFunctionItem447 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1297:9: ( p_LiteralFunctionItem )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1297:11: p_LiteralFunctionItem
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_LiteralFunctionItem_in_p_FunctionItemExpr9595);
            p_LiteralFunctionItem447=this.p_LiteralFunctionItem();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_LiteralFunctionItem447.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_LiteralFunctionItem_return: (function() {
        XQueryParser.p_LiteralFunctionItem_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_LiteralFunctionItem_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1302:1: p_LiteralFunctionItem : p_EQName HASH L_IntegerLiteral ;
    // $ANTLR start "p_LiteralFunctionItem"
    p_LiteralFunctionItem: function() {
        var retval = new XQueryParser.p_LiteralFunctionItem_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var HASH449 = null;
        var L_IntegerLiteral450 = null;
         var p_EQName448 = null;

        var HASH449_tree=null;
        var L_IntegerLiteral450_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1303:9: ( p_EQName HASH L_IntegerLiteral )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1303:11: p_EQName HASH L_IntegerLiteral
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_p_LiteralFunctionItem9622);
            p_EQName448=this.p_EQName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_EQName448.getTree());
            HASH449=this.match(this.input,HASH,XQueryParser.FOLLOW_HASH_in_p_LiteralFunctionItem9624); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            HASH449_tree = this.adaptor.create(HASH449);
            this.adaptor.addChild(root_0, HASH449_tree);
            }
            L_IntegerLiteral450=this.match(this.input,L_IntegerLiteral,XQueryParser.FOLLOW_L_IntegerLiteral_in_p_LiteralFunctionItem9626); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            L_IntegerLiteral450_tree = this.adaptor.create(L_IntegerLiteral450);
            this.adaptor.addChild(root_0, L_IntegerLiteral450_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_InlineFunction_return: (function() {
        XQueryParser.p_InlineFunction_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_InlineFunction_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1307:1: p_InlineFunction : ( p_Annotation )* k= FUNCTION LPAREN ( p_ParamList )? RPAREN (k= AS p_SequenceType )? LBRACKET p_StatementsAndOptionalExpr RBRACKET ;
    // $ANTLR start "p_InlineFunction"
    p_InlineFunction: function() {
        var retval = new XQueryParser.p_InlineFunction_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var LPAREN452 = null;
        var RPAREN454 = null;
        var LBRACKET456 = null;
        var RBRACKET458 = null;
         var p_Annotation451 = null;
         var p_ParamList453 = null;
         var p_SequenceType455 = null;
         var p_StatementsAndOptionalExpr457 = null;

        var k_tree=null;
        var LPAREN452_tree=null;
        var RPAREN454_tree=null;
        var LBRACKET456_tree=null;
        var RBRACKET458_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1309:9: ( ( p_Annotation )* k= FUNCTION LPAREN ( p_ParamList )? RPAREN (k= AS p_SequenceType )? LBRACKET p_StatementsAndOptionalExpr RBRACKET )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1309:11: ( p_Annotation )* k= FUNCTION LPAREN ( p_ParamList )? RPAREN (k= AS p_SequenceType )? LBRACKET p_StatementsAndOptionalExpr RBRACKET
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1309:11: ( p_Annotation )*
            loop166:
            do {
                var alt166=2;
                var LA166_0 = this.input.LA(1);

                if ( (LA166_0==ANN_PERCENT) ) {
                    alt166=1;
                }


                switch (alt166) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1309:11: p_Annotation
                    this.pushFollow(XQueryParser.FOLLOW_p_Annotation_in_p_InlineFunction9661);
                    p_Annotation451=this.p_Annotation();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Annotation451.getTree());


                    break;

                default :
                    break loop166;
                }
            } while (true);

            k=this.match(this.input,FUNCTION,XQueryParser.FOLLOW_FUNCTION_in_p_InlineFunction9666); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
               this.ak(k); 
            }
            LPAREN452=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_InlineFunction9670); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LPAREN452_tree = this.adaptor.create(LPAREN452);
            this.adaptor.addChild(root_0, LPAREN452_tree);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1309:60: ( p_ParamList )?
            var alt167=2;
            var LA167_0 = this.input.LA(1);

            if ( (LA167_0==DOLLAR) ) {
                alt167=1;
            }
            switch (alt167) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1309:60: p_ParamList
                    this.pushFollow(XQueryParser.FOLLOW_p_ParamList_in_p_InlineFunction9672);
                    p_ParamList453=this.p_ParamList();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ParamList453.getTree());


                    break;

            }

            RPAREN454=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_InlineFunction9675); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RPAREN454_tree = this.adaptor.create(RPAREN454);
            this.adaptor.addChild(root_0, RPAREN454_tree);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1309:80: (k= AS p_SequenceType )?
            var alt168=2;
            var LA168_0 = this.input.LA(1);

            if ( (LA168_0==AS) ) {
                alt168=1;
            }
            switch (alt168) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1309:81: k= AS p_SequenceType
                    k=this.match(this.input,AS,XQueryParser.FOLLOW_AS_in_p_InlineFunction9680); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_SequenceType_in_p_InlineFunction9684);
                    p_SequenceType455=this.p_SequenceType();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SequenceType455.getTree());


                    break;

            }

            LBRACKET456=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_InlineFunction9688); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LBRACKET456_tree = this.adaptor.create(LBRACKET456);
            this.adaptor.addChild(root_0, LBRACKET456_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_StatementsAndOptionalExpr_in_p_InlineFunction9690);
            p_StatementsAndOptionalExpr457=this.p_StatementsAndOptionalExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StatementsAndOptionalExpr457.getTree());
            RBRACKET458=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_InlineFunction9692); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RBRACKET458_tree = this.adaptor.create(RBRACKET458);
            this.adaptor.addChild(root_0, RBRACKET458_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_SingleType_return: (function() {
        XQueryParser.p_SingleType_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_SingleType_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1313:1: p_SingleType : p_AtomicOrUnionType ( QUESTION )? ;
    // $ANTLR start "p_SingleType"
    p_SingleType: function() {
        var retval = new XQueryParser.p_SingleType_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var QUESTION460 = null;
         var p_AtomicOrUnionType459 = null;

        var QUESTION460_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1314:9: ( p_AtomicOrUnionType ( QUESTION )? )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1314:11: p_AtomicOrUnionType ( QUESTION )?
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_AtomicOrUnionType_in_p_SingleType9718);
            p_AtomicOrUnionType459=this.p_AtomicOrUnionType();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AtomicOrUnionType459.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1314:31: ( QUESTION )?
            var alt169=2;
            var LA169_0 = this.input.LA(1);

            if ( (LA169_0==QUESTION) ) {
                alt169=1;
            }
            switch (alt169) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1314:31: QUESTION
                    QUESTION460=this.match(this.input,QUESTION,XQueryParser.FOLLOW_QUESTION_in_p_SingleType9720); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    QUESTION460_tree = this.adaptor.create(QUESTION460);
                    this.adaptor.addChild(root_0, QUESTION460_tree);
                    }


                    break;

            }




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_TypeDeclaration_return: (function() {
        XQueryParser.p_TypeDeclaration_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_TypeDeclaration_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1318:1: p_TypeDeclaration : k= AS st= p_SequenceType -> ^( TypeDeclaration $st) ;
    // $ANTLR start "p_TypeDeclaration"
    p_TypeDeclaration: function() {
        var retval = new XQueryParser.p_TypeDeclaration_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
         var st = null;

        var k_tree=null;
        var stream_AS=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token AS");
        var stream_p_SequenceType=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_SequenceType");
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1319:9: (k= AS st= p_SequenceType -> ^( TypeDeclaration $st) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1319:11: k= AS st= p_SequenceType
            k=this.match(this.input,AS,XQueryParser.FOLLOW_AS_in_p_TypeDeclaration9749); if (this.state.failed) return retval; 
            if ( this.state.backtracking===0 ) stream_AS.add(k);

            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_SequenceType_in_p_TypeDeclaration9755);
            st=this.p_SequenceType();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) stream_p_SequenceType.add(st.getTree());


            // AST REWRITE
            // elements: st
            // token labels: 
            // rule labels: retval, st
            // token list labels: 
            // rule list labels: 
            if ( this.state.backtracking===0 ) {
            retval.tree = root_0;
            var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
            var stream_st=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token st",st!=null?st.tree:null);

            root_0 = this.adaptor.nil();
            // 1320:17: -> ^( TypeDeclaration $st)
            {
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1320:20: ^( TypeDeclaration $st)
                {
                var root_1 = this.adaptor.nil();
                root_1 = this.adaptor.becomeRoot(this.adaptor.create(TypeDeclaration, "TypeDeclaration"), root_1);

                this.adaptor.addChild(root_1, stream_st.nextTree());

                this.adaptor.addChild(root_0, root_1);
                }

            }

            retval.tree = root_0;}


            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_SequenceType_return: (function() {
        XQueryParser.p_SequenceType_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_SequenceType_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1324:1: p_SequenceType : (k= EMPTY_SEQUENCE l= LPAREN r= RPAREN -> ^( SequenceType ^( EmptySequenceTest $k $l $r) ) | it= p_ItemType ( ( p_OccurrenceIndicator )=>oi= p_OccurrenceIndicator )? -> ^( SequenceType $it ( $oi)? ) );
    // $ANTLR start "p_SequenceType"
    p_SequenceType: function() {
        var retval = new XQueryParser.p_SequenceType_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var l = null;
        var r = null;
         var it = null;
         var oi = null;

        var k_tree=null;
        var l_tree=null;
        var r_tree=null;
        var stream_EMPTY_SEQUENCE=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token EMPTY_SEQUENCE");
        var stream_RPAREN=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token RPAREN");
        var stream_LPAREN=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token LPAREN");
        var stream_p_ItemType=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_ItemType");
        var stream_p_OccurrenceIndicator=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_OccurrenceIndicator");
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1325:9: (k= EMPTY_SEQUENCE l= LPAREN r= RPAREN -> ^( SequenceType ^( EmptySequenceTest $k $l $r) ) | it= p_ItemType ( ( p_OccurrenceIndicator )=>oi= p_OccurrenceIndicator )? -> ^( SequenceType $it ( $oi)? ) )
            var alt171=2;
            var LA171_0 = this.input.LA(1);

            if ( (LA171_0==EMPTY_SEQUENCE) ) {
                var LA171_1 = this.input.LA(2);

                if ( (LA171_1==LPAREN) ) {
                    alt171=1;
                }
                else if ( (LA171_1==EOF||(LA171_1>=AND && LA171_1<=AT)||LA171_1==CASE||LA171_1==COLLATION||LA171_1==DEFAULT||(LA171_1>=DESCENDING && LA171_1<=DIV)||LA171_1==EMPTY||LA171_1==EQ||(LA171_1>=EXCEPT && LA171_1<=EXTERNAL)||LA171_1==FOR||LA171_1==GE||(LA171_1>=GT && LA171_1<=IDIV)||LA171_1==IN||(LA171_1>=INSTANCE && LA171_1<=IS)||LA171_1==LE||(LA171_1>=LET && LA171_1<=MOD)||LA171_1==NE||(LA171_1>=OR && LA171_1<=ORDER)||(LA171_1>=RETURN && LA171_1<=SATISFIES)||LA171_1==STABLE||LA171_1==TO||LA171_1==UNION||LA171_1==WHERE||LA171_1==ALLOWING||LA171_1==COUNT||(LA171_1>=END && LA171_1<=GROUP)||LA171_1==ONLY||LA171_1==START||(LA171_1>=AFTER && LA171_1<=BEFORE)||LA171_1==INTO||LA171_1==MODIFY||LA171_1==WITH||LA171_1==CONTAINS||LA171_1==PARAGRAPHS||LA171_1==SCORE||LA171_1==SENTENCES||LA171_1==TIMES||LA171_1==WORDS||LA171_1==CONCAT||LA171_1==RPAREN||(LA171_1>=R_UNION_BRACKET && LA171_1<=RBRACKET)||(LA171_1>=RSQUARE && LA171_1<=NOTEQUAL)||(LA171_1>=COMMA && LA171_1<=GREATER_GREATER)||LA171_1==COLON||(LA171_1>=SEMICOLON && LA171_1<=VBAR)) ) {
                    alt171=2;
                }
                else {
                    if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                    var nvae =
                        new org.antlr.runtime.NoViableAltException("", 171, 1, this.input);

                    throw nvae;
                }
            }
            else if ( ((LA171_0>=ANCESTOR && LA171_0<=EMPTY)||(LA171_0>=ENCODING && LA171_0<=SKIP)||(LA171_0>=VALUE && LA171_0<=QUOT_ER)||LA171_0==LPAREN||LA171_0==ANN_PERCENT||LA171_0==Q||LA171_0==L_NCName) ) {
                alt171=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 171, 0, this.input);

                throw nvae;
            }
            switch (alt171) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1325:11: k= EMPTY_SEQUENCE l= LPAREN r= RPAREN
                    k=this.match(this.input,EMPTY_SEQUENCE,XQueryParser.FOLLOW_EMPTY_SEQUENCE_in_p_SequenceType9808); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_EMPTY_SEQUENCE.add(k);

                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    l=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_SequenceType9814); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_LPAREN.add(l);

                    r=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_SequenceType9818); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_RPAREN.add(r);



                    // AST REWRITE
                    // elements: r, k, l
                    // token labels: r, l, k
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    if ( this.state.backtracking===0 ) {
                    retval.tree = root_0;
                    var stream_r=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token r",r);
                    var stream_l=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token l",l);
                    var stream_k=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token k",k);
                    var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);

                    root_0 = this.adaptor.nil();
                    // 1326:17: -> ^( SequenceType ^( EmptySequenceTest $k $l $r) )
                    {
                        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1326:20: ^( SequenceType ^( EmptySequenceTest $k $l $r) )
                        {
                        var root_1 = this.adaptor.nil();
                        root_1 = this.adaptor.becomeRoot(this.adaptor.create(SequenceType, "SequenceType"), root_1);

                        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1326:35: ^( EmptySequenceTest $k $l $r)
                        {
                        var root_2 = this.adaptor.nil();
                        root_2 = this.adaptor.becomeRoot(this.adaptor.create(EmptySequenceTest, "EmptySequenceTest"), root_2);

                        this.adaptor.addChild(root_2, stream_k.nextNode());
                        this.adaptor.addChild(root_2, stream_l.nextNode());
                        this.adaptor.addChild(root_2, stream_r.nextNode());

                        this.adaptor.addChild(root_1, root_2);
                        }

                        this.adaptor.addChild(root_0, root_1);
                        }

                    }

                    retval.tree = root_0;}

                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1327:11: it= p_ItemType ( ( p_OccurrenceIndicator )=>oi= p_OccurrenceIndicator )?
                    this.pushFollow(XQueryParser.FOLLOW_p_ItemType_in_p_SequenceType9867);
                    it=this.p_ItemType();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) stream_p_ItemType.add(it.getTree());
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1327:25: ( ( p_OccurrenceIndicator )=>oi= p_OccurrenceIndicator )?
                    var alt170=2;
                    switch ( this.input.LA(1) ) {
                        case STAR:
                            var LA170_1 = this.input.LA(2);

                            if ( (this.synpred14_XQueryParser()) ) {
                                alt170=1;
                            }
                            break;
                        case PLUS:
                            var LA170_3 = this.input.LA(2);

                            if ( (this.synpred14_XQueryParser()) ) {
                                alt170=1;
                            }
                            break;
                        case QUESTION:
                            var LA170_4 = this.input.LA(2);

                            if ( (this.synpred14_XQueryParser()) ) {
                                alt170=1;
                            }
                            break;
                    }

                    switch (alt170) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1327:26: ( p_OccurrenceIndicator )=>oi= p_OccurrenceIndicator
                            this.pushFollow(XQueryParser.FOLLOW_p_OccurrenceIndicator_in_p_SequenceType9878);
                            oi=this.p_OccurrenceIndicator();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) stream_p_OccurrenceIndicator.add(oi.getTree());


                            break;

                    }



                    // AST REWRITE
                    // elements: it, oi
                    // token labels: 
                    // rule labels: retval, it, oi
                    // token list labels: 
                    // rule list labels: 
                    if ( this.state.backtracking===0 ) {
                    retval.tree = root_0;
                    var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
                    var stream_it=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token it",it!=null?it.tree:null);
                    var stream_oi=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token oi",oi!=null?oi.tree:null);

                    root_0 = this.adaptor.nil();
                    // 1328:17: -> ^( SequenceType $it ( $oi)? )
                    {
                        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1328:20: ^( SequenceType $it ( $oi)? )
                        {
                        var root_1 = this.adaptor.nil();
                        root_1 = this.adaptor.becomeRoot(this.adaptor.create(SequenceType, "SequenceType"), root_1);

                        this.adaptor.addChild(root_1, stream_it.nextTree());
                        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1328:39: ( $oi)?
                        if ( stream_oi.hasNext() ) {
                            this.adaptor.addChild(root_1, stream_oi.nextTree());

                        }
                        stream_oi.reset();

                        this.adaptor.addChild(root_0, root_1);
                        }

                    }

                    retval.tree = root_0;}

                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_OccurrenceIndicator_return: (function() {
        XQueryParser.p_OccurrenceIndicator_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_OccurrenceIndicator_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1332:1: p_OccurrenceIndicator : ( QUESTION | STAR | PLUS );
    // $ANTLR start "p_OccurrenceIndicator"
    p_OccurrenceIndicator: function() {
        var retval = new XQueryParser.p_OccurrenceIndicator_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var set461 = null;

        var set461_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1333:9: ( QUESTION | STAR | PLUS )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:
            root_0 = this.adaptor.nil();

            set461=this.input.LT(1);
            if ( (this.input.LA(1)>=QUESTION && this.input.LA(1)<=PLUS) ) {
                this.input.consume();
                if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, this.adaptor.create(set461));
                this.state.errorRecovery=false;this.state.failed=false;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
                throw mse;
            }




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ItemType_return: (function() {
        XQueryParser.p_ItemType_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ItemType_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1337:1: p_ItemType : ( p_KindTest -> ^( KindTest p_KindTest ) | ( ITEM LPAREN RPAREN ) -> ^( ItemTest ITEM LPAREN RPAREN ) | p_FunctionTest -> ^( FunctionTest p_FunctionTest ) | p_AtomicOrUnionType | p_ParenthesizedItemType | p_JSONTest | p_StructuredItemTest );
    // $ANTLR start "p_ItemType"
    p_ItemType: function() {
        var retval = new XQueryParser.p_ItemType_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var ITEM463 = null;
        var LPAREN464 = null;
        var RPAREN465 = null;
         var p_KindTest462 = null;
         var p_FunctionTest466 = null;
         var p_AtomicOrUnionType467 = null;
         var p_ParenthesizedItemType468 = null;
         var p_JSONTest469 = null;
         var p_StructuredItemTest470 = null;

        var ITEM463_tree=null;
        var LPAREN464_tree=null;
        var RPAREN465_tree=null;
        var stream_RPAREN=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token RPAREN");
        var stream_ITEM=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token ITEM");
        var stream_LPAREN=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token LPAREN");
        var stream_p_FunctionTest=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_FunctionTest");
        var stream_p_KindTest=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_KindTest");
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1338:9: ( p_KindTest -> ^( KindTest p_KindTest ) | ( ITEM LPAREN RPAREN ) -> ^( ItemTest ITEM LPAREN RPAREN ) | p_FunctionTest -> ^( FunctionTest p_FunctionTest ) | p_AtomicOrUnionType | p_ParenthesizedItemType | p_JSONTest | p_StructuredItemTest )
            var alt172=7;
            alt172 = this.dfa172.predict(this.input);
            switch (alt172) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1338:11: p_KindTest
                    this.pushFollow(XQueryParser.FOLLOW_p_KindTest_in_p_ItemType9980);
                    p_KindTest462=this.p_KindTest();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) stream_p_KindTest.add(p_KindTest462.getTree());


                    // AST REWRITE
                    // elements: p_KindTest
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    if ( this.state.backtracking===0 ) {
                    retval.tree = root_0;
                    var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);

                    root_0 = this.adaptor.nil();
                    // 1339:17: -> ^( KindTest p_KindTest )
                    {
                        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1339:20: ^( KindTest p_KindTest )
                        {
                        var root_1 = this.adaptor.nil();
                        root_1 = this.adaptor.becomeRoot(this.adaptor.create(KindTest, "KindTest"), root_1);

                        this.adaptor.addChild(root_1, stream_p_KindTest.nextTree());

                        this.adaptor.addChild(root_0, root_1);
                        }

                    }

                    retval.tree = root_0;}

                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1340:11: ( ITEM LPAREN RPAREN )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1340:11: ( ITEM LPAREN RPAREN )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1340:12: ITEM LPAREN RPAREN
                    ITEM463=this.match(this.input,ITEM,XQueryParser.FOLLOW_ITEM_in_p_ItemType10017); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_ITEM.add(ITEM463);

                    LPAREN464=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_ItemType10019); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_LPAREN.add(LPAREN464);

                    RPAREN465=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_ItemType10021); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_RPAREN.add(RPAREN465);






                    // AST REWRITE
                    // elements: RPAREN, LPAREN, ITEM
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    if ( this.state.backtracking===0 ) {
                    retval.tree = root_0;
                    var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);

                    root_0 = this.adaptor.nil();
                    // 1341:17: -> ^( ItemTest ITEM LPAREN RPAREN )
                    {
                        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1341:20: ^( ItemTest ITEM LPAREN RPAREN )
                        {
                        var root_1 = this.adaptor.nil();
                        root_1 = this.adaptor.becomeRoot(this.adaptor.create(ItemTest, "ItemTest"), root_1);

                        this.adaptor.addChild(root_1, stream_ITEM.nextNode());
                        this.adaptor.addChild(root_1, stream_LPAREN.nextNode());
                        this.adaptor.addChild(root_1, stream_RPAREN.nextNode());

                        this.adaptor.addChild(root_0, root_1);
                        }

                    }

                    retval.tree = root_0;}

                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1342:11: p_FunctionTest
                    this.pushFollow(XQueryParser.FOLLOW_p_FunctionTest_in_p_ItemType10062);
                    p_FunctionTest466=this.p_FunctionTest();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) stream_p_FunctionTest.add(p_FunctionTest466.getTree());


                    // AST REWRITE
                    // elements: p_FunctionTest
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    if ( this.state.backtracking===0 ) {
                    retval.tree = root_0;
                    var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);

                    root_0 = this.adaptor.nil();
                    // 1343:17: -> ^( FunctionTest p_FunctionTest )
                    {
                        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1343:20: ^( FunctionTest p_FunctionTest )
                        {
                        var root_1 = this.adaptor.nil();
                        root_1 = this.adaptor.becomeRoot(this.adaptor.create(FunctionTest, "FunctionTest"), root_1);

                        this.adaptor.addChild(root_1, stream_p_FunctionTest.nextTree());

                        this.adaptor.addChild(root_0, root_1);
                        }

                    }

                    retval.tree = root_0;}

                    break;
                case 4 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1344:11: p_AtomicOrUnionType
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_AtomicOrUnionType_in_p_ItemType10098);
                    p_AtomicOrUnionType467=this.p_AtomicOrUnionType();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AtomicOrUnionType467.getTree());


                    break;
                case 5 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1345:11: p_ParenthesizedItemType
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_ParenthesizedItemType_in_p_ItemType10110);
                    p_ParenthesizedItemType468=this.p_ParenthesizedItemType();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ParenthesizedItemType468.getTree());


                    break;
                case 6 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1346:11: p_JSONTest
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_JSONTest_in_p_ItemType10122);
                    p_JSONTest469=this.p_JSONTest();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_JSONTest469.getTree());


                    break;
                case 7 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1347:11: p_StructuredItemTest
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_StructuredItemTest_in_p_ItemType10134);
                    p_StructuredItemTest470=this.p_StructuredItemTest();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StructuredItemTest470.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_JSONTest_return: (function() {
        XQueryParser.p_JSONTest_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_JSONTest_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1350:1: p_JSONTest : ( p_JSONItemTest | p_JSONObjectTest | p_JSONArrayTest );
    // $ANTLR start "p_JSONTest"
    p_JSONTest: function() {
        var retval = new XQueryParser.p_JSONTest_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_JSONItemTest471 = null;
         var p_JSONObjectTest472 = null;
         var p_JSONArrayTest473 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1351:9: ( p_JSONItemTest | p_JSONObjectTest | p_JSONArrayTest )
            var alt173=3;
            switch ( this.input.LA(1) ) {
            case JSON_ITEM:
                alt173=1;
                break;
            case OBJECT:
                alt173=2;
                break;
            case ARRAY:
                alt173=3;
                break;
            default:
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 173, 0, this.input);

                throw nvae;
            }

            switch (alt173) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1351:11: p_JSONItemTest
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_JSONItemTest_in_p_JSONTest10159);
                    p_JSONItemTest471=this.p_JSONItemTest();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_JSONItemTest471.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1352:11: p_JSONObjectTest
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_JSONObjectTest_in_p_JSONTest10171);
                    p_JSONObjectTest472=this.p_JSONObjectTest();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_JSONObjectTest472.getTree());


                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1353:11: p_JSONArrayTest
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_JSONArrayTest_in_p_JSONTest10183);
                    p_JSONArrayTest473=this.p_JSONArrayTest();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_JSONArrayTest473.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_StructuredItemTest_return: (function() {
        XQueryParser.p_StructuredItemTest_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_StructuredItemTest_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1356:1: p_StructuredItemTest : STRUCTURED_ITEM LPAREN RPAREN ;
    // $ANTLR start "p_StructuredItemTest"
    p_StructuredItemTest: function() {
        var retval = new XQueryParser.p_StructuredItemTest_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var STRUCTURED_ITEM474 = null;
        var LPAREN475 = null;
        var RPAREN476 = null;

        var STRUCTURED_ITEM474_tree=null;
        var LPAREN475_tree=null;
        var RPAREN476_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1357:9: ( STRUCTURED_ITEM LPAREN RPAREN )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1357:11: STRUCTURED_ITEM LPAREN RPAREN
            root_0 = this.adaptor.nil();

            STRUCTURED_ITEM474=this.match(this.input,STRUCTURED_ITEM,XQueryParser.FOLLOW_STRUCTURED_ITEM_in_p_StructuredItemTest10208); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            STRUCTURED_ITEM474_tree = this.adaptor.create(STRUCTURED_ITEM474);
            this.adaptor.addChild(root_0, STRUCTURED_ITEM474_tree);
            }
            LPAREN475=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_StructuredItemTest10210); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LPAREN475_tree = this.adaptor.create(LPAREN475);
            this.adaptor.addChild(root_0, LPAREN475_tree);
            }
            RPAREN476=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_StructuredItemTest10212); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RPAREN476_tree = this.adaptor.create(RPAREN476);
            this.adaptor.addChild(root_0, RPAREN476_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_JSONItemTest_return: (function() {
        XQueryParser.p_JSONItemTest_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_JSONItemTest_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1360:1: p_JSONItemTest : JSON_ITEM LPAREN RPAREN ;
    // $ANTLR start "p_JSONItemTest"
    p_JSONItemTest: function() {
        var retval = new XQueryParser.p_JSONItemTest_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var JSON_ITEM477 = null;
        var LPAREN478 = null;
        var RPAREN479 = null;

        var JSON_ITEM477_tree=null;
        var LPAREN478_tree=null;
        var RPAREN479_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1361:9: ( JSON_ITEM LPAREN RPAREN )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1361:11: JSON_ITEM LPAREN RPAREN
            root_0 = this.adaptor.nil();

            JSON_ITEM477=this.match(this.input,JSON_ITEM,XQueryParser.FOLLOW_JSON_ITEM_in_p_JSONItemTest10237); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            JSON_ITEM477_tree = this.adaptor.create(JSON_ITEM477);
            this.adaptor.addChild(root_0, JSON_ITEM477_tree);
            }
            LPAREN478=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_JSONItemTest10239); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LPAREN478_tree = this.adaptor.create(LPAREN478);
            this.adaptor.addChild(root_0, LPAREN478_tree);
            }
            RPAREN479=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_JSONItemTest10241); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RPAREN479_tree = this.adaptor.create(RPAREN479);
            this.adaptor.addChild(root_0, RPAREN479_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_JSONObjectTest_return: (function() {
        XQueryParser.p_JSONObjectTest_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_JSONObjectTest_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1364:1: p_JSONObjectTest : OBJECT LPAREN RPAREN ;
    // $ANTLR start "p_JSONObjectTest"
    p_JSONObjectTest: function() {
        var retval = new XQueryParser.p_JSONObjectTest_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var OBJECT480 = null;
        var LPAREN481 = null;
        var RPAREN482 = null;

        var OBJECT480_tree=null;
        var LPAREN481_tree=null;
        var RPAREN482_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1365:9: ( OBJECT LPAREN RPAREN )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1365:11: OBJECT LPAREN RPAREN
            root_0 = this.adaptor.nil();

            OBJECT480=this.match(this.input,OBJECT,XQueryParser.FOLLOW_OBJECT_in_p_JSONObjectTest10266); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            OBJECT480_tree = this.adaptor.create(OBJECT480);
            this.adaptor.addChild(root_0, OBJECT480_tree);
            }
            LPAREN481=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_JSONObjectTest10268); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LPAREN481_tree = this.adaptor.create(LPAREN481);
            this.adaptor.addChild(root_0, LPAREN481_tree);
            }
            RPAREN482=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_JSONObjectTest10270); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RPAREN482_tree = this.adaptor.create(RPAREN482);
            this.adaptor.addChild(root_0, RPAREN482_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_JSONArrayTest_return: (function() {
        XQueryParser.p_JSONArrayTest_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_JSONArrayTest_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1368:1: p_JSONArrayTest : ARRAY LPAREN RPAREN ;
    // $ANTLR start "p_JSONArrayTest"
    p_JSONArrayTest: function() {
        var retval = new XQueryParser.p_JSONArrayTest_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var ARRAY483 = null;
        var LPAREN484 = null;
        var RPAREN485 = null;

        var ARRAY483_tree=null;
        var LPAREN484_tree=null;
        var RPAREN485_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1369:9: ( ARRAY LPAREN RPAREN )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1369:11: ARRAY LPAREN RPAREN
            root_0 = this.adaptor.nil();

            ARRAY483=this.match(this.input,ARRAY,XQueryParser.FOLLOW_ARRAY_in_p_JSONArrayTest10295); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            ARRAY483_tree = this.adaptor.create(ARRAY483);
            this.adaptor.addChild(root_0, ARRAY483_tree);
            }
            LPAREN484=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_JSONArrayTest10297); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LPAREN484_tree = this.adaptor.create(LPAREN484);
            this.adaptor.addChild(root_0, LPAREN484_tree);
            }
            RPAREN485=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_JSONArrayTest10299); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RPAREN485_tree = this.adaptor.create(RPAREN485);
            this.adaptor.addChild(root_0, RPAREN485_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_AtomicOrUnionType_return: (function() {
        XQueryParser.p_AtomicOrUnionType_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_AtomicOrUnionType_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1373:1: p_AtomicOrUnionType : p_EQName -> ^( AtomicOrUnionType p_EQName ) ;
    // $ANTLR start "p_AtomicOrUnionType"
    p_AtomicOrUnionType: function() {
        var retval = new XQueryParser.p_AtomicOrUnionType_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_EQName486 = null;

        var stream_p_EQName=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_EQName");
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1374:9: ( p_EQName -> ^( AtomicOrUnionType p_EQName ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1374:11: p_EQName
            this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_p_AtomicOrUnionType10325);
            p_EQName486=this.p_EQName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) stream_p_EQName.add(p_EQName486.getTree());


            // AST REWRITE
            // elements: p_EQName
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            if ( this.state.backtracking===0 ) {
            retval.tree = root_0;
            var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);

            root_0 = this.adaptor.nil();
            // 1375:17: -> ^( AtomicOrUnionType p_EQName )
            {
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1375:20: ^( AtomicOrUnionType p_EQName )
                {
                var root_1 = this.adaptor.nil();
                root_1 = this.adaptor.becomeRoot(this.adaptor.create(AtomicOrUnionType, "AtomicOrUnionType"), root_1);

                this.adaptor.addChild(root_1, stream_p_EQName.nextTree());

                this.adaptor.addChild(root_0, root_1);
                }

            }

            retval.tree = root_0;}


            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_KindTest_return: (function() {
        XQueryParser.p_KindTest_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_KindTest_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1379:1: p_KindTest : ( p_DocumentTest | p_ElementTest | p_AttributeTest | p_SchemaElementTest | p_SchemaAttributeTest | p_PITest | p_CommentTest | p_TextTest | p_NamespaceNodeTest | p_AnyKindTest );
    // $ANTLR start "p_KindTest"
    p_KindTest: function() {
        var retval = new XQueryParser.p_KindTest_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_DocumentTest487 = null;
         var p_ElementTest488 = null;
         var p_AttributeTest489 = null;
         var p_SchemaElementTest490 = null;
         var p_SchemaAttributeTest491 = null;
         var p_PITest492 = null;
         var p_CommentTest493 = null;
         var p_TextTest494 = null;
         var p_NamespaceNodeTest495 = null;
         var p_AnyKindTest496 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1380:9: ( p_DocumentTest | p_ElementTest | p_AttributeTest | p_SchemaElementTest | p_SchemaAttributeTest | p_PITest | p_CommentTest | p_TextTest | p_NamespaceNodeTest | p_AnyKindTest )
            var alt174=10;
            switch ( this.input.LA(1) ) {
            case DOCUMENT_NODE:
                alt174=1;
                break;
            case ELEMENT:
                alt174=2;
                break;
            case ATTRIBUTE:
                alt174=3;
                break;
            case SCHEMA_ELEMENT:
                alt174=4;
                break;
            case SCHEMA_ATTRIBUTE:
                alt174=5;
                break;
            case PROCESSING_INSTRUCTION:
                alt174=6;
                break;
            case COMMENT:
                alt174=7;
                break;
            case TEXT:
                alt174=8;
                break;
            case NAMESPACE_NODE:
                alt174=9;
                break;
            case NODE:
                alt174=10;
                break;
            default:
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 174, 0, this.input);

                throw nvae;
            }

            switch (alt174) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1380:11: p_DocumentTest
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_DocumentTest_in_p_KindTest10375);
                    p_DocumentTest487=this.p_DocumentTest();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_DocumentTest487.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1381:11: p_ElementTest
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_ElementTest_in_p_KindTest10387);
                    p_ElementTest488=this.p_ElementTest();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ElementTest488.getTree());


                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1382:11: p_AttributeTest
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_AttributeTest_in_p_KindTest10399);
                    p_AttributeTest489=this.p_AttributeTest();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AttributeTest489.getTree());


                    break;
                case 4 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1383:11: p_SchemaElementTest
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_SchemaElementTest_in_p_KindTest10411);
                    p_SchemaElementTest490=this.p_SchemaElementTest();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SchemaElementTest490.getTree());


                    break;
                case 5 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1384:11: p_SchemaAttributeTest
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_SchemaAttributeTest_in_p_KindTest10423);
                    p_SchemaAttributeTest491=this.p_SchemaAttributeTest();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SchemaAttributeTest491.getTree());


                    break;
                case 6 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1385:11: p_PITest
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_PITest_in_p_KindTest10435);
                    p_PITest492=this.p_PITest();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PITest492.getTree());


                    break;
                case 7 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1386:11: p_CommentTest
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_CommentTest_in_p_KindTest10447);
                    p_CommentTest493=this.p_CommentTest();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_CommentTest493.getTree());


                    break;
                case 8 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1387:11: p_TextTest
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_TextTest_in_p_KindTest10459);
                    p_TextTest494=this.p_TextTest();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TextTest494.getTree());


                    break;
                case 9 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1388:11: p_NamespaceNodeTest
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_NamespaceNodeTest_in_p_KindTest10471);
                    p_NamespaceNodeTest495=this.p_NamespaceNodeTest();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NamespaceNodeTest495.getTree());


                    break;
                case 10 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1389:11: p_AnyKindTest
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_AnyKindTest_in_p_KindTest10483);
                    p_AnyKindTest496=this.p_AnyKindTest();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AnyKindTest496.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_AnyKindTest_return: (function() {
        XQueryParser.p_AnyKindTest_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_AnyKindTest_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1393:1: p_AnyKindTest : NODE LPAREN RPAREN ;
    // $ANTLR start "p_AnyKindTest"
    p_AnyKindTest: function() {
        var retval = new XQueryParser.p_AnyKindTest_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var NODE497 = null;
        var LPAREN498 = null;
        var RPAREN499 = null;

        var NODE497_tree=null;
        var LPAREN498_tree=null;
        var RPAREN499_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1394:9: ( NODE LPAREN RPAREN )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1394:11: NODE LPAREN RPAREN
            root_0 = this.adaptor.nil();

            NODE497=this.match(this.input,NODE,XQueryParser.FOLLOW_NODE_in_p_AnyKindTest10509); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            NODE497_tree = this.adaptor.create(NODE497);
            this.adaptor.addChild(root_0, NODE497_tree);
            }
            LPAREN498=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_AnyKindTest10511); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LPAREN498_tree = this.adaptor.create(LPAREN498);
            this.adaptor.addChild(root_0, LPAREN498_tree);
            }
            RPAREN499=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_AnyKindTest10513); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RPAREN499_tree = this.adaptor.create(RPAREN499);
            this.adaptor.addChild(root_0, RPAREN499_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_DocumentTest_return: (function() {
        XQueryParser.p_DocumentTest_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_DocumentTest_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1398:1: p_DocumentTest : DOCUMENT_NODE LPAREN ( p_ElementTest | p_SchemaElementTest )? RPAREN ;
    // $ANTLR start "p_DocumentTest"
    p_DocumentTest: function() {
        var retval = new XQueryParser.p_DocumentTest_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var DOCUMENT_NODE500 = null;
        var LPAREN501 = null;
        var RPAREN504 = null;
         var p_ElementTest502 = null;
         var p_SchemaElementTest503 = null;

        var DOCUMENT_NODE500_tree=null;
        var LPAREN501_tree=null;
        var RPAREN504_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1399:9: ( DOCUMENT_NODE LPAREN ( p_ElementTest | p_SchemaElementTest )? RPAREN )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1399:11: DOCUMENT_NODE LPAREN ( p_ElementTest | p_SchemaElementTest )? RPAREN
            root_0 = this.adaptor.nil();

            DOCUMENT_NODE500=this.match(this.input,DOCUMENT_NODE,XQueryParser.FOLLOW_DOCUMENT_NODE_in_p_DocumentTest10539); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            DOCUMENT_NODE500_tree = this.adaptor.create(DOCUMENT_NODE500);
            this.adaptor.addChild(root_0, DOCUMENT_NODE500_tree);
            }
            LPAREN501=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_DocumentTest10541); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LPAREN501_tree = this.adaptor.create(LPAREN501);
            this.adaptor.addChild(root_0, LPAREN501_tree);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1399:32: ( p_ElementTest | p_SchemaElementTest )?
            var alt175=3;
            var LA175_0 = this.input.LA(1);

            if ( (LA175_0==ELEMENT) ) {
                alt175=1;
            }
            else if ( (LA175_0==SCHEMA_ELEMENT) ) {
                alt175=2;
            }
            switch (alt175) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1399:33: p_ElementTest
                    this.pushFollow(XQueryParser.FOLLOW_p_ElementTest_in_p_DocumentTest10544);
                    p_ElementTest502=this.p_ElementTest();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ElementTest502.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1399:49: p_SchemaElementTest
                    this.pushFollow(XQueryParser.FOLLOW_p_SchemaElementTest_in_p_DocumentTest10548);
                    p_SchemaElementTest503=this.p_SchemaElementTest();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SchemaElementTest503.getTree());


                    break;

            }

            RPAREN504=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_DocumentTest10552); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RPAREN504_tree = this.adaptor.create(RPAREN504);
            this.adaptor.addChild(root_0, RPAREN504_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_TextTest_return: (function() {
        XQueryParser.p_TextTest_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_TextTest_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1403:1: p_TextTest : TEXT LPAREN RPAREN ;
    // $ANTLR start "p_TextTest"
    p_TextTest: function() {
        var retval = new XQueryParser.p_TextTest_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var TEXT505 = null;
        var LPAREN506 = null;
        var RPAREN507 = null;

        var TEXT505_tree=null;
        var LPAREN506_tree=null;
        var RPAREN507_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1404:9: ( TEXT LPAREN RPAREN )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1404:11: TEXT LPAREN RPAREN
            root_0 = this.adaptor.nil();

            TEXT505=this.match(this.input,TEXT,XQueryParser.FOLLOW_TEXT_in_p_TextTest10578); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            TEXT505_tree = this.adaptor.create(TEXT505);
            this.adaptor.addChild(root_0, TEXT505_tree);
            }
            LPAREN506=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_TextTest10580); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LPAREN506_tree = this.adaptor.create(LPAREN506);
            this.adaptor.addChild(root_0, LPAREN506_tree);
            }
            RPAREN507=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_TextTest10582); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RPAREN507_tree = this.adaptor.create(RPAREN507);
            this.adaptor.addChild(root_0, RPAREN507_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_CommentTest_return: (function() {
        XQueryParser.p_CommentTest_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_CommentTest_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1408:1: p_CommentTest : COMMENT LPAREN RPAREN ;
    // $ANTLR start "p_CommentTest"
    p_CommentTest: function() {
        var retval = new XQueryParser.p_CommentTest_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var COMMENT508 = null;
        var LPAREN509 = null;
        var RPAREN510 = null;

        var COMMENT508_tree=null;
        var LPAREN509_tree=null;
        var RPAREN510_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1409:9: ( COMMENT LPAREN RPAREN )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1409:11: COMMENT LPAREN RPAREN
            root_0 = this.adaptor.nil();

            COMMENT508=this.match(this.input,COMMENT,XQueryParser.FOLLOW_COMMENT_in_p_CommentTest10608); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            COMMENT508_tree = this.adaptor.create(COMMENT508);
            this.adaptor.addChild(root_0, COMMENT508_tree);
            }
            LPAREN509=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_CommentTest10610); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LPAREN509_tree = this.adaptor.create(LPAREN509);
            this.adaptor.addChild(root_0, LPAREN509_tree);
            }
            RPAREN510=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_CommentTest10612); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RPAREN510_tree = this.adaptor.create(RPAREN510);
            this.adaptor.addChild(root_0, RPAREN510_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_NamespaceNodeTest_return: (function() {
        XQueryParser.p_NamespaceNodeTest_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_NamespaceNodeTest_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1413:1: p_NamespaceNodeTest : NAMESPACE_NODE LPAREN RPAREN ;
    // $ANTLR start "p_NamespaceNodeTest"
    p_NamespaceNodeTest: function() {
        var retval = new XQueryParser.p_NamespaceNodeTest_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var NAMESPACE_NODE511 = null;
        var LPAREN512 = null;
        var RPAREN513 = null;

        var NAMESPACE_NODE511_tree=null;
        var LPAREN512_tree=null;
        var RPAREN513_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1414:9: ( NAMESPACE_NODE LPAREN RPAREN )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1414:11: NAMESPACE_NODE LPAREN RPAREN
            root_0 = this.adaptor.nil();

            NAMESPACE_NODE511=this.match(this.input,NAMESPACE_NODE,XQueryParser.FOLLOW_NAMESPACE_NODE_in_p_NamespaceNodeTest10638); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            NAMESPACE_NODE511_tree = this.adaptor.create(NAMESPACE_NODE511);
            this.adaptor.addChild(root_0, NAMESPACE_NODE511_tree);
            }
            LPAREN512=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_NamespaceNodeTest10640); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LPAREN512_tree = this.adaptor.create(LPAREN512);
            this.adaptor.addChild(root_0, LPAREN512_tree);
            }
            RPAREN513=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_NamespaceNodeTest10642); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RPAREN513_tree = this.adaptor.create(RPAREN513);
            this.adaptor.addChild(root_0, RPAREN513_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_PITest_return: (function() {
        XQueryParser.p_PITest_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_PITest_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1418:1: p_PITest : PROCESSING_INSTRUCTION LPAREN ( p_NCName | p_StringLiteral )? RPAREN ;
    // $ANTLR start "p_PITest"
    p_PITest: function() {
        var retval = new XQueryParser.p_PITest_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var PROCESSING_INSTRUCTION514 = null;
        var LPAREN515 = null;
        var RPAREN518 = null;
         var p_NCName516 = null;
         var p_StringLiteral517 = null;

        var PROCESSING_INSTRUCTION514_tree=null;
        var LPAREN515_tree=null;
        var RPAREN518_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1419:9: ( PROCESSING_INSTRUCTION LPAREN ( p_NCName | p_StringLiteral )? RPAREN )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1419:11: PROCESSING_INSTRUCTION LPAREN ( p_NCName | p_StringLiteral )? RPAREN
            root_0 = this.adaptor.nil();

            PROCESSING_INSTRUCTION514=this.match(this.input,PROCESSING_INSTRUCTION,XQueryParser.FOLLOW_PROCESSING_INSTRUCTION_in_p_PITest10668); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            PROCESSING_INSTRUCTION514_tree = this.adaptor.create(PROCESSING_INSTRUCTION514);
            this.adaptor.addChild(root_0, PROCESSING_INSTRUCTION514_tree);
            }
            LPAREN515=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_PITest10670); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LPAREN515_tree = this.adaptor.create(LPAREN515);
            this.adaptor.addChild(root_0, LPAREN515_tree);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1419:41: ( p_NCName | p_StringLiteral )?
            var alt176=3;
            var LA176_0 = this.input.LA(1);

            if ( ((LA176_0>=ANCESTOR && LA176_0<=SKIP)||(LA176_0>=VALUE && LA176_0<=QUOT_ER)||LA176_0==L_NCName) ) {
                alt176=1;
            }
            else if ( ((LA176_0>=APOS && LA176_0<=QUOT)) ) {
                alt176=2;
            }
            switch (alt176) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1419:42: p_NCName
                    this.pushFollow(XQueryParser.FOLLOW_p_NCName_in_p_PITest10673);
                    p_NCName516=this.p_NCName();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NCName516.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1419:53: p_StringLiteral
                    this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_PITest10677);
                    p_StringLiteral517=this.p_StringLiteral();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral517.getTree());


                    break;

            }

            RPAREN518=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_PITest10681); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RPAREN518_tree = this.adaptor.create(RPAREN518);
            this.adaptor.addChild(root_0, RPAREN518_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_AttributeTest_return: (function() {
        XQueryParser.p_AttributeTest_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_AttributeTest_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1423:1: p_AttributeTest : ATTRIBUTE LPAREN ( p_AttribNameOrWildcard ( COMMA p_TypeName )? )? RPAREN ;
    // $ANTLR start "p_AttributeTest"
    p_AttributeTest: function() {
        var retval = new XQueryParser.p_AttributeTest_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var ATTRIBUTE519 = null;
        var LPAREN520 = null;
        var COMMA522 = null;
        var RPAREN524 = null;
         var p_AttribNameOrWildcard521 = null;
         var p_TypeName523 = null;

        var ATTRIBUTE519_tree=null;
        var LPAREN520_tree=null;
        var COMMA522_tree=null;
        var RPAREN524_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1424:9: ( ATTRIBUTE LPAREN ( p_AttribNameOrWildcard ( COMMA p_TypeName )? )? RPAREN )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1424:11: ATTRIBUTE LPAREN ( p_AttribNameOrWildcard ( COMMA p_TypeName )? )? RPAREN
            root_0 = this.adaptor.nil();

            ATTRIBUTE519=this.match(this.input,ATTRIBUTE,XQueryParser.FOLLOW_ATTRIBUTE_in_p_AttributeTest10707); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            ATTRIBUTE519_tree = this.adaptor.create(ATTRIBUTE519);
            this.adaptor.addChild(root_0, ATTRIBUTE519_tree);
            }
            LPAREN520=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_AttributeTest10709); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LPAREN520_tree = this.adaptor.create(LPAREN520);
            this.adaptor.addChild(root_0, LPAREN520_tree);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1424:28: ( p_AttribNameOrWildcard ( COMMA p_TypeName )? )?
            var alt178=2;
            var LA178_0 = this.input.LA(1);

            if ( ((LA178_0>=ANCESTOR && LA178_0<=SKIP)||(LA178_0>=VALUE && LA178_0<=QUOT_ER)||LA178_0==STAR||LA178_0==Q||LA178_0==L_NCName) ) {
                alt178=1;
            }
            switch (alt178) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1424:29: p_AttribNameOrWildcard ( COMMA p_TypeName )?
                    this.pushFollow(XQueryParser.FOLLOW_p_AttribNameOrWildcard_in_p_AttributeTest10712);
                    p_AttribNameOrWildcard521=this.p_AttribNameOrWildcard();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AttribNameOrWildcard521.getTree());
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1424:52: ( COMMA p_TypeName )?
                    var alt177=2;
                    var LA177_0 = this.input.LA(1);

                    if ( (LA177_0==COMMA) ) {
                        alt177=1;
                    }
                    switch (alt177) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1424:53: COMMA p_TypeName
                            COMMA522=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_AttributeTest10715); if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) {
                            COMMA522_tree = this.adaptor.create(COMMA522);
                            this.adaptor.addChild(root_0, COMMA522_tree);
                            }
                            this.pushFollow(XQueryParser.FOLLOW_p_TypeName_in_p_AttributeTest10717);
                            p_TypeName523=this.p_TypeName();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TypeName523.getTree());


                            break;

                    }



                    break;

            }

            RPAREN524=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_AttributeTest10723); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RPAREN524_tree = this.adaptor.create(RPAREN524);
            this.adaptor.addChild(root_0, RPAREN524_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_AttribNameOrWildcard_return: (function() {
        XQueryParser.p_AttribNameOrWildcard_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_AttribNameOrWildcard_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1428:1: p_AttribNameOrWildcard : ( p_AttributeName | STAR );
    // $ANTLR start "p_AttribNameOrWildcard"
    p_AttribNameOrWildcard: function() {
        var retval = new XQueryParser.p_AttribNameOrWildcard_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var STAR526 = null;
         var p_AttributeName525 = null;

        var STAR526_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1429:9: ( p_AttributeName | STAR )
            var alt179=2;
            var LA179_0 = this.input.LA(1);

            if ( ((LA179_0>=ANCESTOR && LA179_0<=SKIP)||(LA179_0>=VALUE && LA179_0<=QUOT_ER)||LA179_0==Q||LA179_0==L_NCName) ) {
                alt179=1;
            }
            else if ( (LA179_0==STAR) ) {
                alt179=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 179, 0, this.input);

                throw nvae;
            }
            switch (alt179) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1429:11: p_AttributeName
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_AttributeName_in_p_AttribNameOrWildcard10751);
                    p_AttributeName525=this.p_AttributeName();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AttributeName525.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1429:29: STAR
                    root_0 = this.adaptor.nil();

                    STAR526=this.match(this.input,STAR,XQueryParser.FOLLOW_STAR_in_p_AttribNameOrWildcard10755); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    STAR526_tree = this.adaptor.create(STAR526);
                    this.adaptor.addChild(root_0, STAR526_tree);
                    }


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_SchemaAttributeTest_return: (function() {
        XQueryParser.p_SchemaAttributeTest_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_SchemaAttributeTest_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1433:1: p_SchemaAttributeTest : SCHEMA_ATTRIBUTE LPAREN p_AttributeDeclaration RPAREN ;
    // $ANTLR start "p_SchemaAttributeTest"
    p_SchemaAttributeTest: function() {
        var retval = new XQueryParser.p_SchemaAttributeTest_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var SCHEMA_ATTRIBUTE527 = null;
        var LPAREN528 = null;
        var RPAREN530 = null;
         var p_AttributeDeclaration529 = null;

        var SCHEMA_ATTRIBUTE527_tree=null;
        var LPAREN528_tree=null;
        var RPAREN530_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1434:9: ( SCHEMA_ATTRIBUTE LPAREN p_AttributeDeclaration RPAREN )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1434:11: SCHEMA_ATTRIBUTE LPAREN p_AttributeDeclaration RPAREN
            root_0 = this.adaptor.nil();

            SCHEMA_ATTRIBUTE527=this.match(this.input,SCHEMA_ATTRIBUTE,XQueryParser.FOLLOW_SCHEMA_ATTRIBUTE_in_p_SchemaAttributeTest10781); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            SCHEMA_ATTRIBUTE527_tree = this.adaptor.create(SCHEMA_ATTRIBUTE527);
            this.adaptor.addChild(root_0, SCHEMA_ATTRIBUTE527_tree);
            }
            LPAREN528=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_SchemaAttributeTest10783); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LPAREN528_tree = this.adaptor.create(LPAREN528);
            this.adaptor.addChild(root_0, LPAREN528_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_AttributeDeclaration_in_p_SchemaAttributeTest10785);
            p_AttributeDeclaration529=this.p_AttributeDeclaration();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AttributeDeclaration529.getTree());
            RPAREN530=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_SchemaAttributeTest10787); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RPAREN530_tree = this.adaptor.create(RPAREN530);
            this.adaptor.addChild(root_0, RPAREN530_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_AttributeDeclaration_return: (function() {
        XQueryParser.p_AttributeDeclaration_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_AttributeDeclaration_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1438:1: p_AttributeDeclaration : p_AttributeName ;
    // $ANTLR start "p_AttributeDeclaration"
    p_AttributeDeclaration: function() {
        var retval = new XQueryParser.p_AttributeDeclaration_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_AttributeName531 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1439:9: ( p_AttributeName )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1439:11: p_AttributeName
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_AttributeName_in_p_AttributeDeclaration10813);
            p_AttributeName531=this.p_AttributeName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AttributeName531.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ElementTest_return: (function() {
        XQueryParser.p_ElementTest_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ElementTest_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1443:1: p_ElementTest : ELEMENT LPAREN ( p_ElementNameOrWildcard ( COMMA p_TypeName ( QUESTION )? )? )? RPAREN ;
    // $ANTLR start "p_ElementTest"
    p_ElementTest: function() {
        var retval = new XQueryParser.p_ElementTest_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var ELEMENT532 = null;
        var LPAREN533 = null;
        var COMMA535 = null;
        var QUESTION537 = null;
        var RPAREN538 = null;
         var p_ElementNameOrWildcard534 = null;
         var p_TypeName536 = null;

        var ELEMENT532_tree=null;
        var LPAREN533_tree=null;
        var COMMA535_tree=null;
        var QUESTION537_tree=null;
        var RPAREN538_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1444:9: ( ELEMENT LPAREN ( p_ElementNameOrWildcard ( COMMA p_TypeName ( QUESTION )? )? )? RPAREN )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1444:11: ELEMENT LPAREN ( p_ElementNameOrWildcard ( COMMA p_TypeName ( QUESTION )? )? )? RPAREN
            root_0 = this.adaptor.nil();

            ELEMENT532=this.match(this.input,ELEMENT,XQueryParser.FOLLOW_ELEMENT_in_p_ElementTest10839); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            ELEMENT532_tree = this.adaptor.create(ELEMENT532);
            this.adaptor.addChild(root_0, ELEMENT532_tree);
            }
            LPAREN533=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_ElementTest10841); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LPAREN533_tree = this.adaptor.create(LPAREN533);
            this.adaptor.addChild(root_0, LPAREN533_tree);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1444:26: ( p_ElementNameOrWildcard ( COMMA p_TypeName ( QUESTION )? )? )?
            var alt182=2;
            var LA182_0 = this.input.LA(1);

            if ( ((LA182_0>=ANCESTOR && LA182_0<=SKIP)||(LA182_0>=VALUE && LA182_0<=QUOT_ER)||LA182_0==STAR||LA182_0==Q||LA182_0==L_NCName) ) {
                alt182=1;
            }
            switch (alt182) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1444:27: p_ElementNameOrWildcard ( COMMA p_TypeName ( QUESTION )? )?
                    this.pushFollow(XQueryParser.FOLLOW_p_ElementNameOrWildcard_in_p_ElementTest10844);
                    p_ElementNameOrWildcard534=this.p_ElementNameOrWildcard();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ElementNameOrWildcard534.getTree());
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1444:51: ( COMMA p_TypeName ( QUESTION )? )?
                    var alt181=2;
                    var LA181_0 = this.input.LA(1);

                    if ( (LA181_0==COMMA) ) {
                        alt181=1;
                    }
                    switch (alt181) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1444:52: COMMA p_TypeName ( QUESTION )?
                            COMMA535=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_ElementTest10847); if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) {
                            COMMA535_tree = this.adaptor.create(COMMA535);
                            this.adaptor.addChild(root_0, COMMA535_tree);
                            }
                            this.pushFollow(XQueryParser.FOLLOW_p_TypeName_in_p_ElementTest10849);
                            p_TypeName536=this.p_TypeName();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TypeName536.getTree());
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1444:69: ( QUESTION )?
                            var alt180=2;
                            var LA180_0 = this.input.LA(1);

                            if ( (LA180_0==QUESTION) ) {
                                alt180=1;
                            }
                            switch (alt180) {
                                case 1 :
                                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1444:69: QUESTION
                                    QUESTION537=this.match(this.input,QUESTION,XQueryParser.FOLLOW_QUESTION_in_p_ElementTest10851); if (this.state.failed) return retval;
                                    if ( this.state.backtracking===0 ) {
                                    QUESTION537_tree = this.adaptor.create(QUESTION537);
                                    this.adaptor.addChild(root_0, QUESTION537_tree);
                                    }


                                    break;

                            }



                            break;

                    }



                    break;

            }

            RPAREN538=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_ElementTest10858); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RPAREN538_tree = this.adaptor.create(RPAREN538);
            this.adaptor.addChild(root_0, RPAREN538_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ElementNameOrWildcard_return: (function() {
        XQueryParser.p_ElementNameOrWildcard_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ElementNameOrWildcard_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1448:1: p_ElementNameOrWildcard : ( p_EQName | STAR );
    // $ANTLR start "p_ElementNameOrWildcard"
    p_ElementNameOrWildcard: function() {
        var retval = new XQueryParser.p_ElementNameOrWildcard_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var STAR540 = null;
         var p_EQName539 = null;

        var STAR540_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1449:9: ( p_EQName | STAR )
            var alt183=2;
            var LA183_0 = this.input.LA(1);

            if ( ((LA183_0>=ANCESTOR && LA183_0<=SKIP)||(LA183_0>=VALUE && LA183_0<=QUOT_ER)||LA183_0==Q||LA183_0==L_NCName) ) {
                alt183=1;
            }
            else if ( (LA183_0==STAR) ) {
                alt183=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 183, 0, this.input);

                throw nvae;
            }
            switch (alt183) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1449:11: p_EQName
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_p_ElementNameOrWildcard10884);
                    p_EQName539=this.p_EQName();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_EQName539.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1449:22: STAR
                    root_0 = this.adaptor.nil();

                    STAR540=this.match(this.input,STAR,XQueryParser.FOLLOW_STAR_in_p_ElementNameOrWildcard10888); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    STAR540_tree = this.adaptor.create(STAR540);
                    this.adaptor.addChild(root_0, STAR540_tree);
                    }


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_SchemaElementTest_return: (function() {
        XQueryParser.p_SchemaElementTest_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_SchemaElementTest_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1452:1: p_SchemaElementTest : SCHEMA_ELEMENT LPAREN p_ElementDeclaration RPAREN ;
    // $ANTLR start "p_SchemaElementTest"
    p_SchemaElementTest: function() {
        var retval = new XQueryParser.p_SchemaElementTest_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var SCHEMA_ELEMENT541 = null;
        var LPAREN542 = null;
        var RPAREN544 = null;
         var p_ElementDeclaration543 = null;

        var SCHEMA_ELEMENT541_tree=null;
        var LPAREN542_tree=null;
        var RPAREN544_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1453:9: ( SCHEMA_ELEMENT LPAREN p_ElementDeclaration RPAREN )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1453:11: SCHEMA_ELEMENT LPAREN p_ElementDeclaration RPAREN
            root_0 = this.adaptor.nil();

            SCHEMA_ELEMENT541=this.match(this.input,SCHEMA_ELEMENT,XQueryParser.FOLLOW_SCHEMA_ELEMENT_in_p_SchemaElementTest10906); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            SCHEMA_ELEMENT541_tree = this.adaptor.create(SCHEMA_ELEMENT541);
            this.adaptor.addChild(root_0, SCHEMA_ELEMENT541_tree);
            }
            LPAREN542=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_SchemaElementTest10908); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LPAREN542_tree = this.adaptor.create(LPAREN542);
            this.adaptor.addChild(root_0, LPAREN542_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_ElementDeclaration_in_p_SchemaElementTest10910);
            p_ElementDeclaration543=this.p_ElementDeclaration();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ElementDeclaration543.getTree());
            RPAREN544=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_SchemaElementTest10912); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RPAREN544_tree = this.adaptor.create(RPAREN544);
            this.adaptor.addChild(root_0, RPAREN544_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ElementDeclaration_return: (function() {
        XQueryParser.p_ElementDeclaration_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ElementDeclaration_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1457:1: p_ElementDeclaration : p_ElementName ;
    // $ANTLR start "p_ElementDeclaration"
    p_ElementDeclaration: function() {
        var retval = new XQueryParser.p_ElementDeclaration_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_ElementName545 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1458:9: ( p_ElementName )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1458:11: p_ElementName
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_ElementName_in_p_ElementDeclaration10938);
            p_ElementName545=this.p_ElementName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ElementName545.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_AttributeName_return: (function() {
        XQueryParser.p_AttributeName_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_AttributeName_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1462:1: p_AttributeName : p_EQName ;
    // $ANTLR start "p_AttributeName"
    p_AttributeName: function() {
        var retval = new XQueryParser.p_AttributeName_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_EQName546 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1463:9: ( p_EQName )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1463:11: p_EQName
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_p_AttributeName10964);
            p_EQName546=this.p_EQName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_EQName546.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ElementName_return: (function() {
        XQueryParser.p_ElementName_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ElementName_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1467:1: p_ElementName : p_EQName ;
    // $ANTLR start "p_ElementName"
    p_ElementName: function() {
        var retval = new XQueryParser.p_ElementName_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_EQName547 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1468:9: ( p_EQName )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1468:11: p_EQName
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_p_ElementName10990);
            p_EQName547=this.p_EQName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_EQName547.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_TypeName_return: (function() {
        XQueryParser.p_TypeName_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_TypeName_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1472:1: p_TypeName : p_EQName ;
    // $ANTLR start "p_TypeName"
    p_TypeName: function() {
        var retval = new XQueryParser.p_TypeName_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_EQName548 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1473:9: ( p_EQName )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1473:11: p_EQName
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_p_TypeName11016);
            p_EQName548=this.p_EQName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_EQName548.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FunctionTest_return: (function() {
        XQueryParser.p_FunctionTest_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FunctionTest_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1477:1: p_FunctionTest : ( p_Annotation )* ( p_AnyFunctionTest | p_TypedFunctionTest ) ;
    // $ANTLR start "p_FunctionTest"
    p_FunctionTest: function() {
        var retval = new XQueryParser.p_FunctionTest_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_Annotation549 = null;
         var p_AnyFunctionTest550 = null;
         var p_TypedFunctionTest551 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1478:9: ( ( p_Annotation )* ( p_AnyFunctionTest | p_TypedFunctionTest ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1478:11: ( p_Annotation )* ( p_AnyFunctionTest | p_TypedFunctionTest )
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1478:11: ( p_Annotation )*
            loop184:
            do {
                var alt184=2;
                var LA184_0 = this.input.LA(1);

                if ( (LA184_0==ANN_PERCENT) ) {
                    alt184=1;
                }


                switch (alt184) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1478:11: p_Annotation
                    this.pushFollow(XQueryParser.FOLLOW_p_Annotation_in_p_FunctionTest11042);
                    p_Annotation549=this.p_Annotation();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Annotation549.getTree());


                    break;

                default :
                    break loop184;
                }
            } while (true);

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1478:25: ( p_AnyFunctionTest | p_TypedFunctionTest )
            var alt185=2;
            var LA185_0 = this.input.LA(1);

            if ( (LA185_0==FUNCTION) ) {
                var LA185_1 = this.input.LA(2);

                if ( (LA185_1==LPAREN) ) {
                    var LA185_2 = this.input.LA(3);

                    if ( (LA185_2==STAR) ) {
                        alt185=1;
                    }
                    else if ( ((LA185_2>=ANCESTOR && LA185_2<=SKIP)||(LA185_2>=VALUE && LA185_2<=QUOT_ER)||(LA185_2>=LPAREN && LA185_2<=RPAREN)||LA185_2==ANN_PERCENT||LA185_2==Q||LA185_2==L_NCName) ) {
                        alt185=2;
                    }
                    else {
                        if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        var nvae =
                            new org.antlr.runtime.NoViableAltException("", 185, 2, this.input);

                        throw nvae;
                    }
                }
                else {
                    if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                    var nvae =
                        new org.antlr.runtime.NoViableAltException("", 185, 1, this.input);

                    throw nvae;
                }
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 185, 0, this.input);

                throw nvae;
            }
            switch (alt185) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1478:26: p_AnyFunctionTest
                    this.pushFollow(XQueryParser.FOLLOW_p_AnyFunctionTest_in_p_FunctionTest11046);
                    p_AnyFunctionTest550=this.p_AnyFunctionTest();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AnyFunctionTest550.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1478:46: p_TypedFunctionTest
                    this.pushFollow(XQueryParser.FOLLOW_p_TypedFunctionTest_in_p_FunctionTest11050);
                    p_TypedFunctionTest551=this.p_TypedFunctionTest();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TypedFunctionTest551.getTree());


                    break;

            }




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_AnyFunctionTest_return: (function() {
        XQueryParser.p_AnyFunctionTest_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_AnyFunctionTest_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1482:1: p_AnyFunctionTest : FUNCTION LPAREN STAR RPAREN ;
    // $ANTLR start "p_AnyFunctionTest"
    p_AnyFunctionTest: function() {
        var retval = new XQueryParser.p_AnyFunctionTest_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var FUNCTION552 = null;
        var LPAREN553 = null;
        var STAR554 = null;
        var RPAREN555 = null;

        var FUNCTION552_tree=null;
        var LPAREN553_tree=null;
        var STAR554_tree=null;
        var RPAREN555_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1483:9: ( FUNCTION LPAREN STAR RPAREN )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1483:11: FUNCTION LPAREN STAR RPAREN
            root_0 = this.adaptor.nil();

            FUNCTION552=this.match(this.input,FUNCTION,XQueryParser.FOLLOW_FUNCTION_in_p_AnyFunctionTest11077); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            FUNCTION552_tree = this.adaptor.create(FUNCTION552);
            this.adaptor.addChild(root_0, FUNCTION552_tree);
            }
            LPAREN553=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_AnyFunctionTest11079); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LPAREN553_tree = this.adaptor.create(LPAREN553);
            this.adaptor.addChild(root_0, LPAREN553_tree);
            }
            STAR554=this.match(this.input,STAR,XQueryParser.FOLLOW_STAR_in_p_AnyFunctionTest11081); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            STAR554_tree = this.adaptor.create(STAR554);
            this.adaptor.addChild(root_0, STAR554_tree);
            }
            RPAREN555=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_AnyFunctionTest11083); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RPAREN555_tree = this.adaptor.create(RPAREN555);
            this.adaptor.addChild(root_0, RPAREN555_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_TypedFunctionTest_return: (function() {
        XQueryParser.p_TypedFunctionTest_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_TypedFunctionTest_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1487:1: p_TypedFunctionTest : FUNCTION LPAREN ( p_SequenceType ( COMMA p_SequenceType )* )? RPAREN AS p_SequenceType ;
    // $ANTLR start "p_TypedFunctionTest"
    p_TypedFunctionTest: function() {
        var retval = new XQueryParser.p_TypedFunctionTest_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var FUNCTION556 = null;
        var LPAREN557 = null;
        var COMMA559 = null;
        var RPAREN561 = null;
        var AS562 = null;
         var p_SequenceType558 = null;
         var p_SequenceType560 = null;
         var p_SequenceType563 = null;

        var FUNCTION556_tree=null;
        var LPAREN557_tree=null;
        var COMMA559_tree=null;
        var RPAREN561_tree=null;
        var AS562_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1488:9: ( FUNCTION LPAREN ( p_SequenceType ( COMMA p_SequenceType )* )? RPAREN AS p_SequenceType )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1488:11: FUNCTION LPAREN ( p_SequenceType ( COMMA p_SequenceType )* )? RPAREN AS p_SequenceType
            root_0 = this.adaptor.nil();

            FUNCTION556=this.match(this.input,FUNCTION,XQueryParser.FOLLOW_FUNCTION_in_p_TypedFunctionTest11109); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            FUNCTION556_tree = this.adaptor.create(FUNCTION556);
            this.adaptor.addChild(root_0, FUNCTION556_tree);
            }
            LPAREN557=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_TypedFunctionTest11111); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LPAREN557_tree = this.adaptor.create(LPAREN557);
            this.adaptor.addChild(root_0, LPAREN557_tree);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1488:27: ( p_SequenceType ( COMMA p_SequenceType )* )?
            var alt187=2;
            var LA187_0 = this.input.LA(1);

            if ( ((LA187_0>=ANCESTOR && LA187_0<=SKIP)||(LA187_0>=VALUE && LA187_0<=QUOT_ER)||LA187_0==LPAREN||LA187_0==ANN_PERCENT||LA187_0==Q||LA187_0==L_NCName) ) {
                alt187=1;
            }
            switch (alt187) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1488:28: p_SequenceType ( COMMA p_SequenceType )*
                    this.pushFollow(XQueryParser.FOLLOW_p_SequenceType_in_p_TypedFunctionTest11114);
                    p_SequenceType558=this.p_SequenceType();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SequenceType558.getTree());
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1488:43: ( COMMA p_SequenceType )*
                    loop186:
                    do {
                        var alt186=2;
                        var LA186_0 = this.input.LA(1);

                        if ( (LA186_0==COMMA) ) {
                            alt186=1;
                        }


                        switch (alt186) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1488:44: COMMA p_SequenceType
                            COMMA559=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_TypedFunctionTest11117); if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) {
                            COMMA559_tree = this.adaptor.create(COMMA559);
                            this.adaptor.addChild(root_0, COMMA559_tree);
                            }
                            this.pushFollow(XQueryParser.FOLLOW_p_SequenceType_in_p_TypedFunctionTest11119);
                            p_SequenceType560=this.p_SequenceType();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SequenceType560.getTree());


                            break;

                        default :
                            break loop186;
                        }
                    } while (true);



                    break;

            }

            RPAREN561=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_TypedFunctionTest11125); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RPAREN561_tree = this.adaptor.create(RPAREN561);
            this.adaptor.addChild(root_0, RPAREN561_tree);
            }
            AS562=this.match(this.input,AS,XQueryParser.FOLLOW_AS_in_p_TypedFunctionTest11127); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            AS562_tree = this.adaptor.create(AS562);
            this.adaptor.addChild(root_0, AS562_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_SequenceType_in_p_TypedFunctionTest11129);
            p_SequenceType563=this.p_SequenceType();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SequenceType563.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ParenthesizedItemType_return: (function() {
        XQueryParser.p_ParenthesizedItemType_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ParenthesizedItemType_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1492:1: p_ParenthesizedItemType : LPAREN p_ItemType RPAREN ;
    // $ANTLR start "p_ParenthesizedItemType"
    p_ParenthesizedItemType: function() {
        var retval = new XQueryParser.p_ParenthesizedItemType_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var LPAREN564 = null;
        var RPAREN566 = null;
         var p_ItemType565 = null;

        var LPAREN564_tree=null;
        var RPAREN566_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1493:9: ( LPAREN p_ItemType RPAREN )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1493:11: LPAREN p_ItemType RPAREN
            root_0 = this.adaptor.nil();

            LPAREN564=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_ParenthesizedItemType11155); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LPAREN564_tree = this.adaptor.create(LPAREN564);
            this.adaptor.addChild(root_0, LPAREN564_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_ItemType_in_p_ParenthesizedItemType11157);
            p_ItemType565=this.p_ItemType();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ItemType565.getTree());
            RPAREN566=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_ParenthesizedItemType11159); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RPAREN566_tree = this.adaptor.create(RPAREN566);
            this.adaptor.addChild(root_0, RPAREN566_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_StringLiteral_return: (function() {
        XQueryParser.p_StringLiteral_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_StringLiteral_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1522:1: p_StringLiteral : ( QUOT pg_QuotStringLiteralContent QUOT -> ^( StringLiteral ( pg_QuotStringLiteralContent )* ) | APOS pg_AposStringLiteralContent APOS -> ^( StringLiteral ( pg_AposStringLiteralContent )* ) );
    // $ANTLR start "p_StringLiteral"
    p_StringLiteral: function() {
        var retval = new XQueryParser.p_StringLiteral_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var QUOT567 = null;
        var QUOT569 = null;
        var APOS570 = null;
        var APOS572 = null;
         var pg_QuotStringLiteralContent568 = null;
         var pg_AposStringLiteralContent571 = null;

        var QUOT567_tree=null;
        var QUOT569_tree=null;
        var APOS570_tree=null;
        var APOS572_tree=null;
        var stream_APOS=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token APOS");
        var stream_QUOT=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token QUOT");
        var stream_pg_QuotStringLiteralContent=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule pg_QuotStringLiteralContent");
        var stream_pg_AposStringLiteralContent=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule pg_AposStringLiteralContent");
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1523:9: ( QUOT pg_QuotStringLiteralContent QUOT -> ^( StringLiteral ( pg_QuotStringLiteralContent )* ) | APOS pg_AposStringLiteralContent APOS -> ^( StringLiteral ( pg_AposStringLiteralContent )* ) )
            var alt188=2;
            var LA188_0 = this.input.LA(1);

            if ( (LA188_0==QUOT) ) {
                alt188=1;
            }
            else if ( (LA188_0==APOS) ) {
                alt188=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 188, 0, this.input);

                throw nvae;
            }
            switch (alt188) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1523:11: QUOT pg_QuotStringLiteralContent QUOT
                    QUOT567=this.match(this.input,QUOT,XQueryParser.FOLLOW_QUOT_in_p_StringLiteral11210); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_QUOT.add(QUOT567);

                    if ( this.state.backtracking===0 ) {
                       this.pushStringLexer(false);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_pg_QuotStringLiteralContent_in_p_StringLiteral11214);
                    pg_QuotStringLiteralContent568=this.pg_QuotStringLiteralContent();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) stream_pg_QuotStringLiteralContent.add(pg_QuotStringLiteralContent568.getTree());
                    QUOT569=this.match(this.input,QUOT,XQueryParser.FOLLOW_QUOT_in_p_StringLiteral11216); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_QUOT.add(QUOT569);

                    if ( this.state.backtracking===0 ) {
                       this.popLexer(); 
                    }


                    // AST REWRITE
                    // elements: pg_QuotStringLiteralContent
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    if ( this.state.backtracking===0 ) {
                    retval.tree = root_0;
                    var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);

                    root_0 = this.adaptor.nil();
                    // 1524:17: -> ^( StringLiteral ( pg_QuotStringLiteralContent )* )
                    {
                        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1524:20: ^( StringLiteral ( pg_QuotStringLiteralContent )* )
                        {
                        var root_1 = this.adaptor.nil();
                        root_1 = this.adaptor.becomeRoot(this.adaptor.create(StringLiteral, "StringLiteral"), root_1);

                        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1524:36: ( pg_QuotStringLiteralContent )*
                        while ( stream_pg_QuotStringLiteralContent.hasNext() ) {
                            this.adaptor.addChild(root_1, stream_pg_QuotStringLiteralContent.nextTree());

                        }
                        stream_pg_QuotStringLiteralContent.reset();

                        this.adaptor.addChild(root_0, root_1);
                        }

                    }

                    retval.tree = root_0;}

                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1525:11: APOS pg_AposStringLiteralContent APOS
                    APOS570=this.match(this.input,APOS,XQueryParser.FOLLOW_APOS_in_p_StringLiteral11255); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_APOS.add(APOS570);

                    if ( this.state.backtracking===0 ) {
                      this.pushStringLexer(true);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_pg_AposStringLiteralContent_in_p_StringLiteral11259);
                    pg_AposStringLiteralContent571=this.pg_AposStringLiteralContent();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) stream_pg_AposStringLiteralContent.add(pg_AposStringLiteralContent571.getTree());
                    APOS572=this.match(this.input,APOS,XQueryParser.FOLLOW_APOS_in_p_StringLiteral11261); if (this.state.failed) return retval; 
                    if ( this.state.backtracking===0 ) stream_APOS.add(APOS572);

                    if ( this.state.backtracking===0 ) {
                       this.popLexer(); 
                    }


                    // AST REWRITE
                    // elements: pg_AposStringLiteralContent
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    if ( this.state.backtracking===0 ) {
                    retval.tree = root_0;
                    var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);

                    root_0 = this.adaptor.nil();
                    // 1526:17: -> ^( StringLiteral ( pg_AposStringLiteralContent )* )
                    {
                        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1526:20: ^( StringLiteral ( pg_AposStringLiteralContent )* )
                        {
                        var root_1 = this.adaptor.nil();
                        root_1 = this.adaptor.becomeRoot(this.adaptor.create(StringLiteral, "StringLiteral"), root_1);

                        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1526:36: ( pg_AposStringLiteralContent )*
                        while ( stream_pg_AposStringLiteralContent.hasNext() ) {
                            this.adaptor.addChild(root_1, stream_pg_AposStringLiteralContent.nextTree());

                        }
                        stream_pg_AposStringLiteralContent.reset();

                        this.adaptor.addChild(root_0, root_1);
                        }

                    }

                    retval.tree = root_0;}

                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
             this.addString(retval.start, retval.stop); 
        }
        return retval;
    },

    // inline static return class
    pg_QuotStringLiteralContent_return: (function() {
        XQueryParser.pg_QuotStringLiteralContent_return = function(){};
        org.antlr.lang.extend(XQueryParser.pg_QuotStringLiteralContent_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1532:1: pg_QuotStringLiteralContent : ( ESCAPE_QUOT | L_CharRef | L_PredefinedEntityRef | ~ ( QUOT | AMP ) )* ;
    // $ANTLR start "pg_QuotStringLiteralContent"
    pg_QuotStringLiteralContent: function() {
        var retval = new XQueryParser.pg_QuotStringLiteralContent_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var set573 = null;

        var set573_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1533:9: ( ( ESCAPE_QUOT | L_CharRef | L_PredefinedEntityRef | ~ ( QUOT | AMP ) )* )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1533:11: ( ESCAPE_QUOT | L_CharRef | L_PredefinedEntityRef | ~ ( QUOT | AMP ) )*
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1533:11: ( ESCAPE_QUOT | L_CharRef | L_PredefinedEntityRef | ~ ( QUOT | AMP ) )*
            loop189:
            do {
                var alt189=2;
                var LA189_0 = this.input.LA(1);

                if ( ((LA189_0>=L_QuotAttrContentChar && LA189_0<=HASH)||(LA189_0>=COMMA && LA189_0<=APOS)||(LA189_0>=NCNameStartChar && LA189_0<=BlockExpr)) ) {
                    alt189=1;
                }


                switch (alt189) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:
                    set573=this.input.LT(1);
                    if ( (this.input.LA(1)>=L_QuotAttrContentChar && this.input.LA(1)<=HASH)||(this.input.LA(1)>=COMMA && this.input.LA(1)<=APOS)||(this.input.LA(1)>=NCNameStartChar && this.input.LA(1)<=BlockExpr) ) {
                        this.input.consume();
                        if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, this.adaptor.create(set573));
                        this.state.errorRecovery=false;this.state.failed=false;
                    }
                    else {
                        if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
                        throw mse;
                    }



                    break;

                default :
                    break loop189;
                }
            } while (true);




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pg_AposStringLiteralContent_return: (function() {
        XQueryParser.pg_AposStringLiteralContent_return = function(){};
        org.antlr.lang.extend(XQueryParser.pg_AposStringLiteralContent_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1540:1: pg_AposStringLiteralContent : ( ESCAPE_APOS | L_CharRef | L_PredefinedEntityRef | ~ ( APOS | AMP ) )* ;
    // $ANTLR start "pg_AposStringLiteralContent"
    pg_AposStringLiteralContent: function() {
        var retval = new XQueryParser.pg_AposStringLiteralContent_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var set574 = null;

        var set574_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1541:9: ( ( ESCAPE_APOS | L_CharRef | L_PredefinedEntityRef | ~ ( APOS | AMP ) )* )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1541:11: ( ESCAPE_APOS | L_CharRef | L_PredefinedEntityRef | ~ ( APOS | AMP ) )*
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1541:11: ( ESCAPE_APOS | L_CharRef | L_PredefinedEntityRef | ~ ( APOS | AMP ) )*
            loop190:
            do {
                var alt190=2;
                var LA190_0 = this.input.LA(1);

                if ( ((LA190_0>=L_QuotAttrContentChar && LA190_0<=HASH)||(LA190_0>=COMMA && LA190_0<=CHARREF_HEX)||(LA190_0>=QUOT && LA190_0<=BlockExpr)) ) {
                    alt190=1;
                }


                switch (alt190) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:
                    set574=this.input.LT(1);
                    if ( (this.input.LA(1)>=L_QuotAttrContentChar && this.input.LA(1)<=HASH)||(this.input.LA(1)>=COMMA && this.input.LA(1)<=CHARREF_HEX)||(this.input.LA(1)>=QUOT && this.input.LA(1)<=BlockExpr) ) {
                        this.input.consume();
                        if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, this.adaptor.create(set574));
                        this.state.errorRecovery=false;this.state.failed=false;
                    }
                    else {
                        if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
                        throw mse;
                    }



                    break;

                default :
                    break loop190;
                }
            } while (true);




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ElementContentChar_return: (function() {
        XQueryParser.p_ElementContentChar_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ElementContentChar_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1555:1: p_ElementContentChar : L_ElementContentChar ;
    // $ANTLR start "p_ElementContentChar"
    p_ElementContentChar: function() {
        var retval = new XQueryParser.p_ElementContentChar_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var L_ElementContentChar575 = null;

        var L_ElementContentChar575_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1556:9: ( L_ElementContentChar )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1556:11: L_ElementContentChar
            root_0 = this.adaptor.nil();

            L_ElementContentChar575=this.match(this.input,L_ElementContentChar,XQueryParser.FOLLOW_L_ElementContentChar_in_p_ElementContentChar11436); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            L_ElementContentChar575_tree = this.adaptor.create(L_ElementContentChar575);
            this.adaptor.addChild(root_0, L_ElementContentChar575_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_QuotAttrContentChar_return: (function() {
        XQueryParser.p_QuotAttrContentChar_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_QuotAttrContentChar_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1560:1: p_QuotAttrContentChar : L_QuotAttrContentChar -> ^( AttributeValueChar L_QuotAttrContentChar ) ;
    // $ANTLR start "p_QuotAttrContentChar"
    p_QuotAttrContentChar: function() {
        var retval = new XQueryParser.p_QuotAttrContentChar_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var L_QuotAttrContentChar576 = null;

        var L_QuotAttrContentChar576_tree=null;
        var stream_L_QuotAttrContentChar=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token L_QuotAttrContentChar");

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1561:9: ( L_QuotAttrContentChar -> ^( AttributeValueChar L_QuotAttrContentChar ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1561:11: L_QuotAttrContentChar
            L_QuotAttrContentChar576=this.match(this.input,L_QuotAttrContentChar,XQueryParser.FOLLOW_L_QuotAttrContentChar_in_p_QuotAttrContentChar11462); if (this.state.failed) return retval; 
            if ( this.state.backtracking===0 ) stream_L_QuotAttrContentChar.add(L_QuotAttrContentChar576);



            // AST REWRITE
            // elements: L_QuotAttrContentChar
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            if ( this.state.backtracking===0 ) {
            retval.tree = root_0;
            var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);

            root_0 = this.adaptor.nil();
            // 1562:17: -> ^( AttributeValueChar L_QuotAttrContentChar )
            {
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1562:20: ^( AttributeValueChar L_QuotAttrContentChar )
                {
                var root_1 = this.adaptor.nil();
                root_1 = this.adaptor.becomeRoot(this.adaptor.create(AttributeValueChar, "AttributeValueChar"), root_1);

                this.adaptor.addChild(root_1, stream_L_QuotAttrContentChar.nextNode());

                this.adaptor.addChild(root_0, root_1);
                }

            }

            retval.tree = root_0;}


            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_AposAttrContentChar_return: (function() {
        XQueryParser.p_AposAttrContentChar_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_AposAttrContentChar_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1566:1: p_AposAttrContentChar : L_AposAttrContentChar -> ^( AttributeValueChar L_AposAttrContentChar ) ;
    // $ANTLR start "p_AposAttrContentChar"
    p_AposAttrContentChar: function() {
        var retval = new XQueryParser.p_AposAttrContentChar_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var L_AposAttrContentChar577 = null;

        var L_AposAttrContentChar577_tree=null;
        var stream_L_AposAttrContentChar=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token L_AposAttrContentChar");

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1567:9: ( L_AposAttrContentChar -> ^( AttributeValueChar L_AposAttrContentChar ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1567:11: L_AposAttrContentChar
            L_AposAttrContentChar577=this.match(this.input,L_AposAttrContentChar,XQueryParser.FOLLOW_L_AposAttrContentChar_in_p_AposAttrContentChar11512); if (this.state.failed) return retval; 
            if ( this.state.backtracking===0 ) stream_L_AposAttrContentChar.add(L_AposAttrContentChar577);



            // AST REWRITE
            // elements: L_AposAttrContentChar
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            if ( this.state.backtracking===0 ) {
            retval.tree = root_0;
            var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);

            root_0 = this.adaptor.nil();
            // 1568:17: -> ^( AttributeValueChar L_AposAttrContentChar )
            {
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1568:20: ^( AttributeValueChar L_AposAttrContentChar )
                {
                var root_1 = this.adaptor.nil();
                root_1 = this.adaptor.becomeRoot(this.adaptor.create(AttributeValueChar, "AttributeValueChar"), root_1);

                this.adaptor.addChild(root_1, stream_L_AposAttrContentChar.nextNode());

                this.adaptor.addChild(root_0, root_1);
                }

            }

            retval.tree = root_0;}


            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_EQName_return: (function() {
        XQueryParser.p_EQName_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_EQName_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1583:1: p_EQName : ( p_QName | p_URIQualifiedName );
    // $ANTLR start "p_EQName"
    p_EQName: function() {
        var retval = new XQueryParser.p_EQName_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_QName578 = null;
         var p_URIQualifiedName579 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1584:9: ( p_QName | p_URIQualifiedName )
            var alt191=2;
            var LA191_0 = this.input.LA(1);

            if ( ((LA191_0>=ANCESTOR && LA191_0<=SKIP)||(LA191_0>=VALUE && LA191_0<=QUOT_ER)||LA191_0==L_NCName) ) {
                alt191=1;
            }
            else if ( (LA191_0==Q) ) {
                alt191=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 191, 0, this.input);

                throw nvae;
            }
            switch (alt191) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1584:11: p_QName
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_QName_in_p_EQName11581);
                    p_QName578=this.p_QName();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_QName578.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1585:11: p_URIQualifiedName
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_URIQualifiedName_in_p_EQName11593);
                    p_URIQualifiedName579=this.p_URIQualifiedName();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_URIQualifiedName579.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_URIQualifiedName_return: (function() {
        XQueryParser.p_URIQualifiedName_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_URIQualifiedName_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1588:1: p_URIQualifiedName : p_BracedURILiteral p_NCName ;
    // $ANTLR start "p_URIQualifiedName"
    p_URIQualifiedName: function() {
        var retval = new XQueryParser.p_URIQualifiedName_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_BracedURILiteral580 = null;
         var p_NCName581 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1589:9: ( p_BracedURILiteral p_NCName )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1589:11: p_BracedURILiteral p_NCName
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_BracedURILiteral_in_p_URIQualifiedName11618);
            p_BracedURILiteral580=this.p_BracedURILiteral();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_BracedURILiteral580.getTree());
            this.pushFollow(XQueryParser.FOLLOW_p_NCName_in_p_URIQualifiedName11620);
            p_NCName581=this.p_NCName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NCName581.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_BracedURILiteral_return: (function() {
        XQueryParser.p_BracedURILiteral_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_BracedURILiteral_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1592:1: p_BracedURILiteral : Q LBRACKET ( L_PredefinedEntityRef | L_CharRef | ~ ( AMP | LBRACKET | RBRACKET ) )* RBRACKET ;
    // $ANTLR start "p_BracedURILiteral"
    p_BracedURILiteral: function() {
        var retval = new XQueryParser.p_BracedURILiteral_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var Q582 = null;
        var LBRACKET583 = null;
        var set584 = null;
        var RBRACKET585 = null;

        var Q582_tree=null;
        var LBRACKET583_tree=null;
        var set584_tree=null;
        var RBRACKET585_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1593:9: ( Q LBRACKET ( L_PredefinedEntityRef | L_CharRef | ~ ( AMP | LBRACKET | RBRACKET ) )* RBRACKET )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1593:11: Q LBRACKET ( L_PredefinedEntityRef | L_CharRef | ~ ( AMP | LBRACKET | RBRACKET ) )* RBRACKET
            root_0 = this.adaptor.nil();

            Q582=this.match(this.input,Q,XQueryParser.FOLLOW_Q_in_p_BracedURILiteral11645); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            Q582_tree = this.adaptor.create(Q582);
            this.adaptor.addChild(root_0, Q582_tree);
            }
            LBRACKET583=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_BracedURILiteral11647); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LBRACKET583_tree = this.adaptor.create(LBRACKET583);
            this.adaptor.addChild(root_0, LBRACKET583_tree);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1593:22: ( L_PredefinedEntityRef | L_CharRef | ~ ( AMP | LBRACKET | RBRACKET ) )*
            loop192:
            do {
                var alt192=2;
                var LA192_0 = this.input.LA(1);

                if ( ((LA192_0>=L_QuotAttrContentChar && LA192_0<=R_UNION_BRACKET)||(LA192_0>=LSQUARE && LA192_0<=HASH)||(LA192_0>=COMMA && LA192_0<=BlockExpr)) ) {
                    alt192=1;
                }


                switch (alt192) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:
                    set584=this.input.LT(1);
                    if ( (this.input.LA(1)>=L_QuotAttrContentChar && this.input.LA(1)<=R_UNION_BRACKET)||(this.input.LA(1)>=LSQUARE && this.input.LA(1)<=HASH)||(this.input.LA(1)>=COMMA && this.input.LA(1)<=BlockExpr) ) {
                        this.input.consume();
                        if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, this.adaptor.create(set584));
                        this.state.errorRecovery=false;this.state.failed=false;
                    }
                    else {
                        if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
                        throw mse;
                    }



                    break;

                default :
                    break loop192;
                }
            } while (true);

            RBRACKET585=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_BracedURILiteral11673); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RBRACKET585_tree = this.adaptor.create(RBRACKET585);
            this.adaptor.addChild(root_0, RBRACKET585_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_QName_return: (function() {
        XQueryParser.p_QName_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_QName_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1597:1: p_QName : ( pg_QName | p_NCName -> ^( QName p_NCName ) );
    // $ANTLR start "p_QName"
    p_QName: function() {
        var retval = new XQueryParser.p_QName_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var pg_QName586 = null;
         var p_NCName587 = null;

        var stream_p_NCName=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_NCName");
        this.setWsExplicit(true);
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1599:9: ( pg_QName | p_NCName -> ^( QName p_NCName ) )
            var alt193=2;
            var LA193_0 = this.input.LA(1);

            if ( ((LA193_0>=ANCESTOR && LA193_0<=SKIP)||(LA193_0>=VALUE && LA193_0<=QUOT_ER)||LA193_0==L_NCName) ) {
                var LA193_1 = this.input.LA(2);

                if ( (LA193_1==COLON) ) {
                    alt193=1;
                }
                else if ( (LA193_1==EOF||(LA193_1>=AND && LA193_1<=AT)||(LA193_1>=BY && LA193_1<=CASTABLE)||LA193_1==COLLATION||LA193_1==DEFAULT||(LA193_1>=DESCENDING && LA193_1<=DIV)||LA193_1==EMPTY||LA193_1==EQ||(LA193_1>=EXCEPT && LA193_1<=EXTERNAL)||(LA193_1>=FOR && LA193_1<=GE)||(LA193_1>=GT && LA193_1<=IDIV)||LA193_1==IN||(LA193_1>=INSTANCE && LA193_1<=IS)||LA193_1==LE||(LA193_1>=LET && LA193_1<=MOD)||LA193_1==NE||LA193_1==NODE||(LA193_1>=OR && LA193_1<=ORDER)||(LA193_1>=RETURN && LA193_1<=SATISFIES)||LA193_1==STABLE||(LA193_1>=TO && LA193_1<=TREAT)||LA193_1==UNION||LA193_1==VARIABLE||LA193_1==WHERE||LA193_1==ALLOWING||LA193_1==COUNT||(LA193_1>=DECIMAL_SEPARATOR && LA193_1<=MINUS_SIGN)||(LA193_1>=NAN && LA193_1<=PREVIOUS)||LA193_1==START||LA193_1==WHEN||(LA193_1>=ZERO_DIGIT && LA193_1<=BEFORE)||LA193_1==INTO||LA193_1==MODIFY||LA193_1==UPDATING||LA193_1==WITH||LA193_1==CONTAINS||LA193_1==PARAGRAPHS||LA193_1==SCORE||LA193_1==SENTENCES||LA193_1==TIMES||LA193_1==WORDS||(LA193_1>=CHECK && LA193_1<=COLLECTION)||(LA193_1>=FOREACH && LA193_1<=ON)||(LA193_1>=CONCAT && LA193_1<=DOLLAR)||(LA193_1>=R_UNION_BRACKET && LA193_1<=HASH)||(LA193_1>=COMMA && LA193_1<=BANG)||LA193_1==EMPTY_CLOSE_TAG||(LA193_1>=SEMICOLON && LA193_1<=VBAR)||(LA193_1>=APOS && LA193_1<=QUOT)||LA193_1==S) ) {
                    alt193=2;
                }
                else {
                    if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                    var nvae =
                        new org.antlr.runtime.NoViableAltException("", 193, 1, this.input);

                    throw nvae;
                }
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 193, 0, this.input);

                throw nvae;
            }
            switch (alt193) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1599:11: pg_QName
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_pg_QName_in_p_QName11715);
                    pg_QName586=this.pg_QName();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pg_QName586.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1600:11: p_NCName
                    this.pushFollow(XQueryParser.FOLLOW_p_NCName_in_p_QName11727);
                    p_NCName587=this.p_NCName();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) stream_p_NCName.add(p_NCName587.getTree());


                    // AST REWRITE
                    // elements: p_NCName
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    if ( this.state.backtracking===0 ) {
                    retval.tree = root_0;
                    var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);

                    root_0 = this.adaptor.nil();
                    // 1601:17: -> ^( QName p_NCName )
                    {
                        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1601:20: ^( QName p_NCName )
                        {
                        var root_1 = this.adaptor.nil();
                        root_1 = this.adaptor.becomeRoot(this.adaptor.create(QName, "QName"), root_1);

                        this.adaptor.addChild(root_1, stream_p_NCName.nextTree());

                        this.adaptor.addChild(root_0, root_1);
                        }

                    }

                    retval.tree = root_0;}

                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
            this.setWsExplicit(false);
        }
        return retval;
    },

    // inline static return class
    pg_FQName_return: (function() {
        XQueryParser.pg_FQName_return = function(){};
        org.antlr.lang.extend(XQueryParser.pg_FQName_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1605:1: pg_FQName : ( pg_QName | p_FNCName -> ^( QName p_FNCName ) );
    // $ANTLR start "pg_FQName"
    pg_FQName: function() {
        var retval = new XQueryParser.pg_FQName_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var pg_QName588 = null;
         var p_FNCName589 = null;

        var stream_p_FNCName=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_FNCName");
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1606:9: ( pg_QName | p_FNCName -> ^( QName p_FNCName ) )
            var alt194=2;
            switch ( this.input.LA(1) ) {
            case ANCESTOR:
            case ANCESTOR_OR_SELF:
            case AND:
            case AS:
            case ASCENDING:
            case AT:
            case BASE_URI:
            case BOUNDARY_SPACE:
            case BY:
            case CASE:
            case CAST:
            case CASTABLE:
            case CHILD:
            case COLLATION:
            case CONSTRUCTION:
            case COPY_NAMESPACES:
            case DECLARE:
            case DEFAULT:
            case DESCENDANT:
            case DESCENDANT_OR_SELF:
            case DESCENDING:
            case DIV:
            case DOCUMENT:
            case ELSE:
            case EMPTY:
            case ENCODING:
            case EQ:
            case EVERY:
            case EXCEPT:
            case EXTERNAL:
            case FOLLOWING:
            case FOLLOWING_SIBLING:
            case FOR:
            case FUNCTION:
            case GE:
            case GREATEST:
            case GT:
            case IDIV:
            case IMPORT:
            case IN:
            case INHERIT:
            case INSTANCE:
            case INTERSECT:
            case IS:
            case LAX:
            case LE:
            case LEAST:
            case LET:
            case LT:
            case MOD:
            case MODULE:
            case NAMESPACE:
            case NE:
            case NO_INHERIT:
            case NO_PRESERVE:
            case JSON:
            case OF:
            case OPTION:
            case OR:
            case ORDER:
            case ORDERED:
            case ORDERING:
            case PARENT:
            case PRECEDING:
            case PRECEDING_SIBLING:
            case PRESERVE:
            case RETURN:
            case SATISFIES:
            case SCHEMA:
            case SELF:
            case SOME:
            case STABLE:
            case STRICT:
            case STRIP:
            case THEN:
            case TO:
            case TREAT:
            case UNION:
            case UNORDERED:
            case VALIDATE:
            case VARIABLE:
            case VERSION:
            case WHERE:
            case XQUERY:
            case ALLOWING:
            case CATCH:
            case CONTEXT:
            case COUNT:
            case DECIMAL_FORMAT:
            case DECIMAL_SEPARATOR:
            case DIGIT:
            case END:
            case GROUP:
            case GROUPING_SEPARATOR:
            case INFINITY:
            case MINUS_SIGN:
            case NAN:
            case NEXT:
            case ONLY:
            case PATTERN_SEPARATOR:
            case PERCENT:
            case PER_MILLE:
            case PREVIOUS:
            case SLIDING:
            case START:
            case TRY:
            case TUMBLING:
            case TYPE:
            case WHEN:
            case WINDOW:
            case ZERO_DIGIT:
            case AFTER:
            case BEFORE:
            case COPY:
            case DELETE:
            case FIRST:
            case INSERT:
            case INTO:
            case POSITION:
            case APPEND:
            case LAST:
            case MODIFY:
            case NODES:
            case RENAME:
            case REPLACE:
            case REVALIDATION:
            case SKIP:
            case VALUE:
            case WITH:
            case ALL:
            case ANY:
            case CONTAINS:
            case CONTENT:
            case DIACRITICS:
            case DIFFERENT:
            case DISTANCE:
            case ENTIRE:
            case EXACTLY:
            case FROM:
            case FT_OPTION:
            case FTAND:
            case FTNOT:
            case FTOR:
            case INSENSITIVE:
            case LANGUAGE:
            case LEVELS:
            case LOWERCASE:
            case MOST:
            case NO:
            case NOT:
            case OCCURS:
            case PARAGRAPH:
            case PARAGRAPHS:
            case PHRASE:
            case RELATIONSHIP:
            case SAME:
            case SCORE:
            case SENSITIVE:
            case SENTENCE:
            case SENTENCES:
            case STEMMING:
            case STOP:
            case THESAURUS:
            case TIMES:
            case UPPERCASE:
            case USING:
            case WEIGHT:
            case WILDCARDS:
            case WITHOUT:
            case WORD:
            case WORDS:
            case BREAK:
            case CONTINUE:
            case EXIT:
            case LOOP:
            case RETURNING:
            case CHECK:
            case COLLECTION:
            case CONSTRAINT:
            case FOREACH:
            case FOREIGN:
            case INDEX:
            case INTEGRITY:
            case KEY:
            case ON:
            case UNIQUE:
            case AMP_ER:
            case APOS_ER:
            case QUOT_ER:
            case L_NCName:
                var LA194_1 = this.input.LA(2);

                if ( (LA194_1==COLON) ) {
                    alt194=1;
                }
                else if ( (LA194_1==LPAREN) ) {
                    alt194=2;
                }
                else {
                    if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                    var nvae =
                        new org.antlr.runtime.NoViableAltException("", 194, 1, this.input);

                    throw nvae;
                }
                break;
            case ATTRIBUTE:
            case COMMENT:
            case DOCUMENT_NODE:
            case ELEMENT:
            case EMPTY_SEQUENCE:
            case IF:
            case ITEM:
            case NODE:
            case PROCESSING_INSTRUCTION:
            case STRUCTURED_ITEM:
            case JSON_ITEM:
            case OBJECT:
            case ARRAY:
            case SCHEMA_ATTRIBUTE:
            case SCHEMA_ELEMENT:
            case TEXT:
            case TYPESWITCH:
            case NAMESPACE_NODE:
            case SWITCH:
            case WHILE:
                alt194=1;
                break;
            case UPDATING:
                alt194=2;
                break;
            default:
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 194, 0, this.input);

                throw nvae;
            }

            switch (alt194) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1606:11: pg_QName
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_pg_QName_in_pg_FQName11788);
                    pg_QName588=this.pg_QName();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pg_QName588.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1607:11: p_FNCName
                    this.pushFollow(XQueryParser.FOLLOW_p_FNCName_in_pg_FQName11800);
                    p_FNCName589=this.p_FNCName();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) stream_p_FNCName.add(p_FNCName589.getTree());


                    // AST REWRITE
                    // elements: p_FNCName
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    if ( this.state.backtracking===0 ) {
                    retval.tree = root_0;
                    var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);

                    root_0 = this.adaptor.nil();
                    // 1608:17: -> ^( QName p_FNCName )
                    {
                        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1608:20: ^( QName p_FNCName )
                        {
                        var root_1 = this.adaptor.nil();
                        root_1 = this.adaptor.becomeRoot(this.adaptor.create(QName, "QName"), root_1);

                        this.adaptor.addChild(root_1, stream_p_FNCName.nextTree());

                        this.adaptor.addChild(root_0, root_1);
                        }

                    }

                    retval.tree = root_0;}

                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pg_QName_return: (function() {
        XQueryParser.pg_QName_return = function(){};
        org.antlr.lang.extend(XQueryParser.pg_QName_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1610:1: pg_QName : nn= p_NCName COLON nl= p_NCName -> ^( QName $nn $nl) ;
    // $ANTLR start "pg_QName"
    pg_QName: function() {
        var retval = new XQueryParser.pg_QName_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var COLON590 = null;
         var nn = null;
         var nl = null;

        var COLON590_tree=null;
        var stream_COLON=new org.antlr.runtime.tree.RewriteRuleTokenStream(this.adaptor,"token COLON");
        var stream_p_NCName=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"rule p_NCName");
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1611:9: (nn= p_NCName COLON nl= p_NCName -> ^( QName $nn $nl) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1611:11: nn= p_NCName COLON nl= p_NCName
            this.pushFollow(XQueryParser.FOLLOW_p_NCName_in_pg_QName11844);
            nn=this.p_NCName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) stream_p_NCName.add(nn.getTree());
            COLON590=this.match(this.input,COLON,XQueryParser.FOLLOW_COLON_in_pg_QName11846); if (this.state.failed) return retval; 
            if ( this.state.backtracking===0 ) stream_COLON.add(COLON590);

            this.pushFollow(XQueryParser.FOLLOW_p_NCName_in_pg_QName11850);
            nl=this.p_NCName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) stream_p_NCName.add(nl.getTree());


            // AST REWRITE
            // elements: nl, nn
            // token labels: 
            // rule labels: retval, nn, nl
            // token list labels: 
            // rule list labels: 
            if ( this.state.backtracking===0 ) {
            retval.tree = root_0;
            var stream_retval=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token retval",retval!=null?retval.tree:null);
            var stream_nn=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token nn",nn!=null?nn.tree:null);
            var stream_nl=new org.antlr.runtime.tree.RewriteRuleSubtreeStream(this.adaptor,"token nl",nl!=null?nl.tree:null);

            root_0 = this.adaptor.nil();
            // 1612:17: -> ^( QName $nn $nl)
            {
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1612:20: ^( QName $nn $nl)
                {
                var root_1 = this.adaptor.nil();
                root_1 = this.adaptor.becomeRoot(this.adaptor.create(QName, "QName"), root_1);

                this.adaptor.addChild(root_1, stream_nn.nextTree());
                this.adaptor.addChild(root_1, stream_nl.nextTree());

                this.adaptor.addChild(root_0, root_1);
                }

            }

            retval.tree = root_0;}


            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_NCName_return: (function() {
        XQueryParser.p_NCName_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_NCName_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1642:1: p_NCName : ( L_NCName | ANCESTOR | ANCESTOR_OR_SELF | AND | AS | ASCENDING | AT | ATTRIBUTE | BASE_URI | BOUNDARY_SPACE | BY | CASE | CAST | CASTABLE | CHILD | COLLATION | COMMENT | CONSTRUCTION | COPY_NAMESPACES | DECLARE | DEFAULT | DESCENDANT | DESCENDANT_OR_SELF | DESCENDING | DIV | DOCUMENT | DOCUMENT_NODE | ELEMENT | ELSE | EMPTY | EMPTY_SEQUENCE | ENCODING | EQ | EVERY | EXCEPT | EXTERNAL | FOLLOWING | FOLLOWING_SIBLING | FOR | FUNCTION | GE | GREATEST | GT | IDIV | IF | IMPORT | IN | INHERIT | INSTANCE | INTERSECT | IS | ITEM | LAX | LE | LEAST | LET | LT | MOD | MODULE | NAMESPACE | NE | NO_INHERIT | NO_PRESERVE | NODE | OF | OPTION | OR | ORDER | ORDERED | ORDERING | PARENT | PRECEDING | PRECEDING_SIBLING | PRESERVE | PROCESSING_INSTRUCTION | RETURN | SATISFIES | SCHEMA | SCHEMA_ATTRIBUTE | SCHEMA_ELEMENT | SELF | SOME | STABLE | STRICT | STRIP | SWITCH | TEXT | THEN | TO | TREAT | TYPESWITCH | UNION | UNORDERED | VALIDATE | VARIABLE | VERSION | WHERE | XQUERY | ALLOWING | CATCH | CONTEXT | COUNT | DECIMAL_FORMAT | DECIMAL_SEPARATOR | DIGIT | END | GROUP | GROUPING_SEPARATOR | INFINITY | MINUS_SIGN | NAMESPACE_NODE | NAN | NEXT | ONLY | PATTERN_SEPARATOR | PERCENT | PER_MILLE | PREVIOUS | SLIDING | START | TRY | TUMBLING | TYPE | WHEN | WINDOW | ZERO_DIGIT | AFTER | BEFORE | COPY | DELETE | FIRST | INSERT | INTO | LAST | MODIFY | NODES | RENAME | REPLACE | REVALIDATION | SKIP | VALUE | WITH | APPEND | JSON | POSITION | STRUCTURED_ITEM | JSON_ITEM | OBJECT | ARRAY | ALL | ANY | CONTAINS | CONTENT | DIACRITICS | DIFFERENT | DISTANCE | ENTIRE | EXACTLY | FROM | FT_OPTION | FTAND | FTNOT | FTOR | INSENSITIVE | LANGUAGE | LEVELS | LOWERCASE | MOST | NO | NOT | OCCURS | PARAGRAPH | PARAGRAPHS | PHRASE | RELATIONSHIP | SAME | SCORE | SENSITIVE | SENTENCE | SENTENCES | STEMMING | STOP | THESAURUS | TIMES | UPPERCASE | USING | WEIGHT | WILDCARDS | WITHOUT | WORD | WORDS | BREAK | CONTINUE | EXIT | LOOP | RETURNING | WHILE | CHECK | COLLECTION | CONSTRAINT | FOREACH | FOREIGN | INDEX | INTEGRITY | KEY | ON | UNIQUE | AMP_ER | APOS_ER | QUOT_ER );
    // $ANTLR start "p_NCName"
    p_NCName: function() {
        var retval = new XQueryParser.p_NCName_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var set591 = null;

        var set591_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1643:9: ( L_NCName | ANCESTOR | ANCESTOR_OR_SELF | AND | AS | ASCENDING | AT | ATTRIBUTE | BASE_URI | BOUNDARY_SPACE | BY | CASE | CAST | CASTABLE | CHILD | COLLATION | COMMENT | CONSTRUCTION | COPY_NAMESPACES | DECLARE | DEFAULT | DESCENDANT | DESCENDANT_OR_SELF | DESCENDING | DIV | DOCUMENT | DOCUMENT_NODE | ELEMENT | ELSE | EMPTY | EMPTY_SEQUENCE | ENCODING | EQ | EVERY | EXCEPT | EXTERNAL | FOLLOWING | FOLLOWING_SIBLING | FOR | FUNCTION | GE | GREATEST | GT | IDIV | IF | IMPORT | IN | INHERIT | INSTANCE | INTERSECT | IS | ITEM | LAX | LE | LEAST | LET | LT | MOD | MODULE | NAMESPACE | NE | NO_INHERIT | NO_PRESERVE | NODE | OF | OPTION | OR | ORDER | ORDERED | ORDERING | PARENT | PRECEDING | PRECEDING_SIBLING | PRESERVE | PROCESSING_INSTRUCTION | RETURN | SATISFIES | SCHEMA | SCHEMA_ATTRIBUTE | SCHEMA_ELEMENT | SELF | SOME | STABLE | STRICT | STRIP | SWITCH | TEXT | THEN | TO | TREAT | TYPESWITCH | UNION | UNORDERED | VALIDATE | VARIABLE | VERSION | WHERE | XQUERY | ALLOWING | CATCH | CONTEXT | COUNT | DECIMAL_FORMAT | DECIMAL_SEPARATOR | DIGIT | END | GROUP | GROUPING_SEPARATOR | INFINITY | MINUS_SIGN | NAMESPACE_NODE | NAN | NEXT | ONLY | PATTERN_SEPARATOR | PERCENT | PER_MILLE | PREVIOUS | SLIDING | START | TRY | TUMBLING | TYPE | WHEN | WINDOW | ZERO_DIGIT | AFTER | BEFORE | COPY | DELETE | FIRST | INSERT | INTO | LAST | MODIFY | NODES | RENAME | REPLACE | REVALIDATION | SKIP | VALUE | WITH | APPEND | JSON | POSITION | STRUCTURED_ITEM | JSON_ITEM | OBJECT | ARRAY | ALL | ANY | CONTAINS | CONTENT | DIACRITICS | DIFFERENT | DISTANCE | ENTIRE | EXACTLY | FROM | FT_OPTION | FTAND | FTNOT | FTOR | INSENSITIVE | LANGUAGE | LEVELS | LOWERCASE | MOST | NO | NOT | OCCURS | PARAGRAPH | PARAGRAPHS | PHRASE | RELATIONSHIP | SAME | SCORE | SENSITIVE | SENTENCE | SENTENCES | STEMMING | STOP | THESAURUS | TIMES | UPPERCASE | USING | WEIGHT | WILDCARDS | WITHOUT | WORD | WORDS | BREAK | CONTINUE | EXIT | LOOP | RETURNING | WHILE | CHECK | COLLECTION | CONSTRAINT | FOREACH | FOREIGN | INDEX | INTEGRITY | KEY | ON | UNIQUE | AMP_ER | APOS_ER | QUOT_ER )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:
            root_0 = this.adaptor.nil();

            set591=this.input.LT(1);
            if ( (this.input.LA(1)>=ANCESTOR && this.input.LA(1)<=SKIP)||(this.input.LA(1)>=VALUE && this.input.LA(1)<=QUOT_ER)||this.input.LA(1)==L_NCName ) {
                this.input.consume();
                if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, this.adaptor.create(set591));
                this.state.errorRecovery=false;this.state.failed=false;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
                throw mse;
            }




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FNCName_return: (function() {
        XQueryParser.p_FNCName_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FNCName_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1660:1: p_FNCName : ( L_NCName | ANCESTOR | ANCESTOR_OR_SELF | AND | AS | ASCENDING | AT | BASE_URI | BOUNDARY_SPACE | BY | CASE | CAST | CASTABLE | CHILD | COLLATION | CONSTRUCTION | COPY_NAMESPACES | DECLARE | DEFAULT | DESCENDANT | DESCENDANT_OR_SELF | DESCENDING | DIV | DOCUMENT | ELSE | EMPTY | ENCODING | EQ | EVERY | EXCEPT | EXTERNAL | FOLLOWING | FOLLOWING_SIBLING | FOR | FUNCTION | GE | GREATEST | GT | IDIV | IMPORT | IN | INHERIT | INSTANCE | INTERSECT | IS | LAX | LE | LEAST | LET | LT | MOD | MODULE | NAMESPACE | NE | NO_INHERIT | NO_PRESERVE | OF | OPTION | OR | ORDER | ORDERED | ORDERING | PARENT | PRECEDING | PRECEDING_SIBLING | PRESERVE | RETURN | SATISFIES | SCHEMA | SELF | SOME | STABLE | STRICT | STRIP | THEN | TO | TREAT | UNION | UNORDERED | VALIDATE | VARIABLE | VERSION | WHERE | XQUERY | ALLOWING | CATCH | CONTEXT | COUNT | DECIMAL_FORMAT | DECIMAL_SEPARATOR | DIGIT | END | GROUP | GROUPING_SEPARATOR | INFINITY | MINUS_SIGN | NAN | NEXT | ONLY | PATTERN_SEPARATOR | PERCENT | PER_MILLE | PREVIOUS | SLIDING | START | TRY | TUMBLING | TYPE | WHEN | WINDOW | ZERO_DIGIT | AFTER | BEFORE | COPY | DELETE | FIRST | INSERT | INTO | LAST | MODIFY | NODES | RENAME | REPLACE | REVALIDATION | SKIP | UPDATING | VALUE | WITH | APPEND | JSON | POSITION | ALL | ANY | CONTAINS | CONTENT | DIACRITICS | DIFFERENT | DISTANCE | ENTIRE | EXACTLY | FROM | FT_OPTION | FTAND | FTNOT | FTOR | INSENSITIVE | LANGUAGE | LEVELS | LOWERCASE | MOST | NO | NOT | OCCURS | PARAGRAPH | PARAGRAPHS | PHRASE | RELATIONSHIP | SAME | SCORE | SENSITIVE | SENTENCE | SENTENCES | STEMMING | STOP | THESAURUS | TIMES | UPPERCASE | USING | WEIGHT | WILDCARDS | WITHOUT | WORD | WORDS | BREAK | CONTINUE | EXIT | LOOP | RETURNING | CHECK | COLLECTION | CONSTRAINT | FOREACH | FOREIGN | INDEX | INTEGRITY | KEY | ON | UNIQUE | AMP_ER | APOS_ER | QUOT_ER );
    // $ANTLR start "p_FNCName"
    p_FNCName: function() {
        var retval = new XQueryParser.p_FNCName_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var set592 = null;

        var set592_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1661:9: ( L_NCName | ANCESTOR | ANCESTOR_OR_SELF | AND | AS | ASCENDING | AT | BASE_URI | BOUNDARY_SPACE | BY | CASE | CAST | CASTABLE | CHILD | COLLATION | CONSTRUCTION | COPY_NAMESPACES | DECLARE | DEFAULT | DESCENDANT | DESCENDANT_OR_SELF | DESCENDING | DIV | DOCUMENT | ELSE | EMPTY | ENCODING | EQ | EVERY | EXCEPT | EXTERNAL | FOLLOWING | FOLLOWING_SIBLING | FOR | FUNCTION | GE | GREATEST | GT | IDIV | IMPORT | IN | INHERIT | INSTANCE | INTERSECT | IS | LAX | LE | LEAST | LET | LT | MOD | MODULE | NAMESPACE | NE | NO_INHERIT | NO_PRESERVE | OF | OPTION | OR | ORDER | ORDERED | ORDERING | PARENT | PRECEDING | PRECEDING_SIBLING | PRESERVE | RETURN | SATISFIES | SCHEMA | SELF | SOME | STABLE | STRICT | STRIP | THEN | TO | TREAT | UNION | UNORDERED | VALIDATE | VARIABLE | VERSION | WHERE | XQUERY | ALLOWING | CATCH | CONTEXT | COUNT | DECIMAL_FORMAT | DECIMAL_SEPARATOR | DIGIT | END | GROUP | GROUPING_SEPARATOR | INFINITY | MINUS_SIGN | NAN | NEXT | ONLY | PATTERN_SEPARATOR | PERCENT | PER_MILLE | PREVIOUS | SLIDING | START | TRY | TUMBLING | TYPE | WHEN | WINDOW | ZERO_DIGIT | AFTER | BEFORE | COPY | DELETE | FIRST | INSERT | INTO | LAST | MODIFY | NODES | RENAME | REPLACE | REVALIDATION | SKIP | UPDATING | VALUE | WITH | APPEND | JSON | POSITION | ALL | ANY | CONTAINS | CONTENT | DIACRITICS | DIFFERENT | DISTANCE | ENTIRE | EXACTLY | FROM | FT_OPTION | FTAND | FTNOT | FTOR | INSENSITIVE | LANGUAGE | LEVELS | LOWERCASE | MOST | NO | NOT | OCCURS | PARAGRAPH | PARAGRAPHS | PHRASE | RELATIONSHIP | SAME | SCORE | SENSITIVE | SENTENCE | SENTENCES | STEMMING | STOP | THESAURUS | TIMES | UPPERCASE | USING | WEIGHT | WILDCARDS | WITHOUT | WORD | WORDS | BREAK | CONTINUE | EXIT | LOOP | RETURNING | CHECK | COLLECTION | CONSTRAINT | FOREACH | FOREIGN | INDEX | INTEGRITY | KEY | ON | UNIQUE | AMP_ER | APOS_ER | QUOT_ER )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:
            root_0 = this.adaptor.nil();

            set592=this.input.LT(1);
            if ( (this.input.LA(1)>=ANCESTOR && this.input.LA(1)<=AT)||(this.input.LA(1)>=BASE_URI && this.input.LA(1)<=COLLATION)||(this.input.LA(1)>=CONSTRUCTION && this.input.LA(1)<=DOCUMENT)||(this.input.LA(1)>=ELSE && this.input.LA(1)<=EMPTY)||(this.input.LA(1)>=ENCODING && this.input.LA(1)<=IDIV)||(this.input.LA(1)>=IMPORT && this.input.LA(1)<=IS)||(this.input.LA(1)>=LAX && this.input.LA(1)<=NO_PRESERVE)||(this.input.LA(1)>=JSON && this.input.LA(1)<=PRESERVE)||(this.input.LA(1)>=RETURN && this.input.LA(1)<=SCHEMA)||(this.input.LA(1)>=SELF && this.input.LA(1)<=STRIP)||(this.input.LA(1)>=THEN && this.input.LA(1)<=TREAT)||(this.input.LA(1)>=UNION && this.input.LA(1)<=MINUS_SIGN)||(this.input.LA(1)>=NAN && this.input.LA(1)<=START)||(this.input.LA(1)>=TRY && this.input.LA(1)<=RETURNING)||(this.input.LA(1)>=CHECK && this.input.LA(1)<=QUOT_ER)||this.input.LA(1)==L_NCName ) {
                this.input.consume();
                if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, this.adaptor.create(set592));
                this.state.errorRecovery=false;this.state.failed=false;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
                throw mse;
            }




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pg_UpdateExpr_return: (function() {
        XQueryParser.pg_UpdateExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.pg_UpdateExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1697:1: pg_UpdateExpr : ( p_InsertExpr | p_DeleteExpr | p_RenameExpr | p_ReplaceExpr | p_TransformExpr | p_JSONDeleteExpr | p_JSONInsertExpr | p_JSONRenameExpr | p_JSONReplaceExpr | p_JSONAppendExpr );
    // $ANTLR start "pg_UpdateExpr"
    pg_UpdateExpr: function() {
        var retval = new XQueryParser.pg_UpdateExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_InsertExpr593 = null;
         var p_DeleteExpr594 = null;
         var p_RenameExpr595 = null;
         var p_ReplaceExpr596 = null;
         var p_TransformExpr597 = null;
         var p_JSONDeleteExpr598 = null;
         var p_JSONInsertExpr599 = null;
         var p_JSONRenameExpr600 = null;
         var p_JSONReplaceExpr601 = null;
         var p_JSONAppendExpr602 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1698:9: ( p_InsertExpr | p_DeleteExpr | p_RenameExpr | p_ReplaceExpr | p_TransformExpr | p_JSONDeleteExpr | p_JSONInsertExpr | p_JSONRenameExpr | p_JSONReplaceExpr | p_JSONAppendExpr )
            var alt195=10;
            alt195 = this.dfa195.predict(this.input);
            switch (alt195) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1698:11: p_InsertExpr
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_InsertExpr_in_pg_UpdateExpr13847);
                    p_InsertExpr593=this.p_InsertExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_InsertExpr593.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1699:11: p_DeleteExpr
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_DeleteExpr_in_pg_UpdateExpr13859);
                    p_DeleteExpr594=this.p_DeleteExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_DeleteExpr594.getTree());


                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1700:11: p_RenameExpr
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_RenameExpr_in_pg_UpdateExpr13871);
                    p_RenameExpr595=this.p_RenameExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_RenameExpr595.getTree());


                    break;
                case 4 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1701:11: p_ReplaceExpr
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_ReplaceExpr_in_pg_UpdateExpr13883);
                    p_ReplaceExpr596=this.p_ReplaceExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ReplaceExpr596.getTree());


                    break;
                case 5 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1702:11: p_TransformExpr
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_TransformExpr_in_pg_UpdateExpr13895);
                    p_TransformExpr597=this.p_TransformExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TransformExpr597.getTree());


                    break;
                case 6 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1703:11: p_JSONDeleteExpr
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_JSONDeleteExpr_in_pg_UpdateExpr13907);
                    p_JSONDeleteExpr598=this.p_JSONDeleteExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_JSONDeleteExpr598.getTree());


                    break;
                case 7 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1704:11: p_JSONInsertExpr
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_JSONInsertExpr_in_pg_UpdateExpr13919);
                    p_JSONInsertExpr599=this.p_JSONInsertExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_JSONInsertExpr599.getTree());


                    break;
                case 8 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1705:11: p_JSONRenameExpr
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_JSONRenameExpr_in_pg_UpdateExpr13931);
                    p_JSONRenameExpr600=this.p_JSONRenameExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_JSONRenameExpr600.getTree());


                    break;
                case 9 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1706:11: p_JSONReplaceExpr
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_JSONReplaceExpr_in_pg_UpdateExpr13943);
                    p_JSONReplaceExpr601=this.p_JSONReplaceExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_JSONReplaceExpr601.getTree());


                    break;
                case 10 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1707:11: p_JSONAppendExpr
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_JSONAppendExpr_in_pg_UpdateExpr13955);
                    p_JSONAppendExpr602=this.p_JSONAppendExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_JSONAppendExpr602.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_JSONDeleteExpr_return: (function() {
        XQueryParser.p_JSONDeleteExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_JSONDeleteExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1710:1: p_JSONDeleteExpr : k+= DELETE k+= JSON p_TargetExpr ;
    // $ANTLR start "p_JSONDeleteExpr"
    p_JSONDeleteExpr: function() {
        var retval = new XQueryParser.p_JSONDeleteExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var list_k=null;
         var p_TargetExpr603 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1711:9: (k+= DELETE k+= JSON p_TargetExpr )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1711:11: k+= DELETE k+= JSON p_TargetExpr
            root_0 = this.adaptor.nil();

            k=this.match(this.input,DELETE,XQueryParser.FOLLOW_DELETE_in_p_JSONDeleteExpr13982); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            k=this.match(this.input,JSON,XQueryParser.FOLLOW_JSON_in_p_JSONDeleteExpr13986); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_TargetExpr_in_p_JSONDeleteExpr13990);
            p_TargetExpr603=this.p_TargetExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TargetExpr603.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_JSONInsertExpr_return: (function() {
        XQueryParser.p_JSONInsertExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_JSONInsertExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1714:1: p_JSONInsertExpr : k+= INSERT k+= JSON p_SourceExpr k+= INTO p_TargetExpr (k+= AT k+= POSITION p_ExprSingle[true] )? ;
    // $ANTLR start "p_JSONInsertExpr"
    p_JSONInsertExpr: function() {
        var retval = new XQueryParser.p_JSONInsertExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var list_k=null;
         var p_SourceExpr604 = null;
         var p_TargetExpr605 = null;
         var p_ExprSingle606 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1715:9: (k+= INSERT k+= JSON p_SourceExpr k+= INTO p_TargetExpr (k+= AT k+= POSITION p_ExprSingle[true] )? )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1715:11: k+= INSERT k+= JSON p_SourceExpr k+= INTO p_TargetExpr (k+= AT k+= POSITION p_ExprSingle[true] )?
            root_0 = this.adaptor.nil();

            k=this.match(this.input,INSERT,XQueryParser.FOLLOW_INSERT_in_p_JSONInsertExpr14017); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            k=this.match(this.input,JSON,XQueryParser.FOLLOW_JSON_in_p_JSONInsertExpr14021); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            this.pushFollow(XQueryParser.FOLLOW_p_SourceExpr_in_p_JSONInsertExpr14023);
            p_SourceExpr604=this.p_SourceExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SourceExpr604.getTree());
            k=this.match(this.input,INTO,XQueryParser.FOLLOW_INTO_in_p_JSONInsertExpr14027); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            this.pushFollow(XQueryParser.FOLLOW_p_TargetExpr_in_p_JSONInsertExpr14029);
            p_TargetExpr605=this.p_TargetExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TargetExpr605.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1715:63: (k+= AT k+= POSITION p_ExprSingle[true] )?
            var alt196=2;
            var LA196_0 = this.input.LA(1);

            if ( (LA196_0==AT) ) {
                alt196=1;
            }
            switch (alt196) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1715:64: k+= AT k+= POSITION p_ExprSingle[true]
                    k=this.match(this.input,AT,XQueryParser.FOLLOW_AT_in_p_JSONInsertExpr14034); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    k=this.match(this.input,POSITION,XQueryParser.FOLLOW_POSITION_in_p_JSONInsertExpr14038); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_JSONInsertExpr14040);
                    p_ExprSingle606=this.p_ExprSingle(true);

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle606.getTree());


                    break;

            }

            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_JSONRenameExpr_return: (function() {
        XQueryParser.p_JSONRenameExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_JSONRenameExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1722:1: p_JSONRenameExpr : k+= RENAME k+= JSON p_TargetExpr k+= AS p_ExprSingle[true] ;
    // $ANTLR start "p_JSONRenameExpr"
    p_JSONRenameExpr: function() {
        var retval = new XQueryParser.p_JSONRenameExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var list_k=null;
         var p_TargetExpr607 = null;
         var p_ExprSingle608 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1723:9: (k+= RENAME k+= JSON p_TargetExpr k+= AS p_ExprSingle[true] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1723:11: k+= RENAME k+= JSON p_TargetExpr k+= AS p_ExprSingle[true]
            root_0 = this.adaptor.nil();

            k=this.match(this.input,RENAME,XQueryParser.FOLLOW_RENAME_in_p_JSONRenameExpr14076); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            k=this.match(this.input,JSON,XQueryParser.FOLLOW_JSON_in_p_JSONRenameExpr14080); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            this.pushFollow(XQueryParser.FOLLOW_p_TargetExpr_in_p_JSONRenameExpr14082);
            p_TargetExpr607=this.p_TargetExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TargetExpr607.getTree());
            k=this.match(this.input,AS,XQueryParser.FOLLOW_AS_in_p_JSONRenameExpr14086); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_JSONRenameExpr14090);
            p_ExprSingle608=this.p_ExprSingle(true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle608.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_JSONReplaceExpr_return: (function() {
        XQueryParser.p_JSONReplaceExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_JSONReplaceExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1726:1: p_JSONReplaceExpr : k+= REPLACE k+= JSON k+= VALUE k+= OF p_TargetExpr k+= WITH p_ExprSingle[true] ;
    // $ANTLR start "p_JSONReplaceExpr"
    p_JSONReplaceExpr: function() {
        var retval = new XQueryParser.p_JSONReplaceExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var list_k=null;
         var p_TargetExpr609 = null;
         var p_ExprSingle610 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1727:9: (k+= REPLACE k+= JSON k+= VALUE k+= OF p_TargetExpr k+= WITH p_ExprSingle[true] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1727:12: k+= REPLACE k+= JSON k+= VALUE k+= OF p_TargetExpr k+= WITH p_ExprSingle[true]
            root_0 = this.adaptor.nil();

            k=this.match(this.input,REPLACE,XQueryParser.FOLLOW_REPLACE_in_p_JSONReplaceExpr14120); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            k=this.match(this.input,JSON,XQueryParser.FOLLOW_JSON_in_p_JSONReplaceExpr14124); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            k=this.match(this.input,VALUE,XQueryParser.FOLLOW_VALUE_in_p_JSONReplaceExpr14128); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            k=this.match(this.input,OF,XQueryParser.FOLLOW_OF_in_p_JSONReplaceExpr14132); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            this.pushFollow(XQueryParser.FOLLOW_p_TargetExpr_in_p_JSONReplaceExpr14134);
            p_TargetExpr609=this.p_TargetExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TargetExpr609.getTree());
            k=this.match(this.input,WITH,XQueryParser.FOLLOW_WITH_in_p_JSONReplaceExpr14138); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_JSONReplaceExpr14140);
            p_ExprSingle610=this.p_ExprSingle(true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle610.getTree());
            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_JSONAppendExpr_return: (function() {
        XQueryParser.p_JSONAppendExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_JSONAppendExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1730:1: p_JSONAppendExpr : k+= APPEND k+= JSON LSQUARE p_Expr[true, true] RSQUARE k+= TO p_ExprSingle[true] ;
    // $ANTLR start "p_JSONAppendExpr"
    p_JSONAppendExpr: function() {
        var retval = new XQueryParser.p_JSONAppendExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var LSQUARE611 = null;
        var RSQUARE613 = null;
        var k = null;
        var list_k=null;
         var p_Expr612 = null;
         var p_ExprSingle614 = null;

        var LSQUARE611_tree=null;
        var RSQUARE613_tree=null;
        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1731:9: (k+= APPEND k+= JSON LSQUARE p_Expr[true, true] RSQUARE k+= TO p_ExprSingle[true] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1731:12: k+= APPEND k+= JSON LSQUARE p_Expr[true, true] RSQUARE k+= TO p_ExprSingle[true]
            root_0 = this.adaptor.nil();

            k=this.match(this.input,APPEND,XQueryParser.FOLLOW_APPEND_in_p_JSONAppendExpr14171); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            k=this.match(this.input,JSON,XQueryParser.FOLLOW_JSON_in_p_JSONAppendExpr14175); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            LSQUARE611=this.match(this.input,LSQUARE,XQueryParser.FOLLOW_LSQUARE_in_p_JSONAppendExpr14177); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LSQUARE611_tree = this.adaptor.create(LSQUARE611);
            this.adaptor.addChild(root_0, LSQUARE611_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_JSONAppendExpr14179);
            p_Expr612=this.p_Expr(true, true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr612.getTree());
            RSQUARE613=this.match(this.input,RSQUARE,XQueryParser.FOLLOW_RSQUARE_in_p_JSONAppendExpr14182); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RSQUARE613_tree = this.adaptor.create(RSQUARE613);
            this.adaptor.addChild(root_0, RSQUARE613_tree);
            }
            k=this.match(this.input,TO,XQueryParser.FOLLOW_TO_in_p_JSONAppendExpr14186); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_JSONAppendExpr14188);
            p_ExprSingle614=this.p_ExprSingle(true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle614.getTree());
            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pm_RevalidationDecl_return: (function() {
        XQueryParser.pm_RevalidationDecl_return = function(){};
        org.antlr.lang.extend(XQueryParser.pm_RevalidationDecl_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1735:1: pm_RevalidationDecl : k+= DECLARE k+= REVALIDATION (k+= STRICT | k+= LAX | k+= SKIP ) SEMICOLON ;
    // $ANTLR start "pm_RevalidationDecl"
    pm_RevalidationDecl: function() {
        var retval = new XQueryParser.pm_RevalidationDecl_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var SEMICOLON615 = null;
        var k = null;
        var list_k=null;

        var SEMICOLON615_tree=null;
        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1736:9: (k+= DECLARE k+= REVALIDATION (k+= STRICT | k+= LAX | k+= SKIP ) SEMICOLON )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1736:11: k+= DECLARE k+= REVALIDATION (k+= STRICT | k+= LAX | k+= SKIP ) SEMICOLON
            root_0 = this.adaptor.nil();

            k=this.match(this.input,DECLARE,XQueryParser.FOLLOW_DECLARE_in_pm_RevalidationDecl14219); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            k=this.match(this.input,REVALIDATION,XQueryParser.FOLLOW_REVALIDATION_in_pm_RevalidationDecl14223); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1736:38: (k+= STRICT | k+= LAX | k+= SKIP )
            var alt197=3;
            switch ( this.input.LA(1) ) {
            case STRICT:
                alt197=1;
                break;
            case LAX:
                alt197=2;
                break;
            case SKIP:
                alt197=3;
                break;
            default:
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 197, 0, this.input);

                throw nvae;
            }

            switch (alt197) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1736:39: k+= STRICT
                    k=this.match(this.input,STRICT,XQueryParser.FOLLOW_STRICT_in_pm_RevalidationDecl14228); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);



                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1736:51: k+= LAX
                    k=this.match(this.input,LAX,XQueryParser.FOLLOW_LAX_in_pm_RevalidationDecl14234); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);



                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1736:60: k+= SKIP
                    k=this.match(this.input,SKIP,XQueryParser.FOLLOW_SKIP_in_pm_RevalidationDecl14240); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);



                    break;

            }

            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }
            SEMICOLON615=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_RevalidationDecl14245); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            SEMICOLON615_tree = this.adaptor.create(SEMICOLON615);
            this.adaptor.addChild(root_0, SEMICOLON615_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_InsertExprTargetChoice_return: (function() {
        XQueryParser.p_InsertExprTargetChoice_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_InsertExprTargetChoice_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1740:1: p_InsertExprTargetChoice : ( ( (k+= AS (k+= FIRST | k+= LAST ) )? k+= INTO ) | ka= AFTER | kb= BEFORE );
    // $ANTLR start "p_InsertExprTargetChoice"
    p_InsertExprTargetChoice: function() {
        var retval = new XQueryParser.p_InsertExprTargetChoice_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var ka = null;
        var kb = null;
        var k = null;
        var list_k=null;

        var ka_tree=null;
        var kb_tree=null;
        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1741:9: ( ( (k+= AS (k+= FIRST | k+= LAST ) )? k+= INTO ) | ka= AFTER | kb= BEFORE )
            var alt200=3;
            switch ( this.input.LA(1) ) {
            case AS:
            case INTO:
                alt200=1;
                break;
            case AFTER:
                alt200=2;
                break;
            case BEFORE:
                alt200=3;
                break;
            default:
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 200, 0, this.input);

                throw nvae;
            }

            switch (alt200) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1741:11: ( (k+= AS (k+= FIRST | k+= LAST ) )? k+= INTO )
                    root_0 = this.adaptor.nil();

                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1741:11: ( (k+= AS (k+= FIRST | k+= LAST ) )? k+= INTO )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1741:12: (k+= AS (k+= FIRST | k+= LAST ) )? k+= INTO
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1741:12: (k+= AS (k+= FIRST | k+= LAST ) )?
                    var alt199=2;
                    var LA199_0 = this.input.LA(1);

                    if ( (LA199_0==AS) ) {
                        alt199=1;
                    }
                    switch (alt199) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1741:13: k+= AS (k+= FIRST | k+= LAST )
                            k=this.match(this.input,AS,XQueryParser.FOLLOW_AS_in_p_InsertExprTargetChoice14275); if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) {
                            k_tree = this.adaptor.create(k);
                            this.adaptor.addChild(root_0, k_tree);
                            }
                            if (org.antlr.lang.isNull(list_k)) list_k = [];
                            list_k.push(k);

                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1741:19: (k+= FIRST | k+= LAST )
                            var alt198=2;
                            var LA198_0 = this.input.LA(1);

                            if ( (LA198_0==FIRST) ) {
                                alt198=1;
                            }
                            else if ( (LA198_0==LAST) ) {
                                alt198=2;
                            }
                            else {
                                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                                var nvae =
                                    new org.antlr.runtime.NoViableAltException("", 198, 0, this.input);

                                throw nvae;
                            }
                            switch (alt198) {
                                case 1 :
                                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1741:20: k+= FIRST
                                    k=this.match(this.input,FIRST,XQueryParser.FOLLOW_FIRST_in_p_InsertExprTargetChoice14280); if (this.state.failed) return retval;
                                    if ( this.state.backtracking===0 ) {
                                    k_tree = this.adaptor.create(k);
                                    this.adaptor.addChild(root_0, k_tree);
                                    }
                                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                                    list_k.push(k);



                                    break;
                                case 2 :
                                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1741:31: k+= LAST
                                    k=this.match(this.input,LAST,XQueryParser.FOLLOW_LAST_in_p_InsertExprTargetChoice14286); if (this.state.failed) return retval;
                                    if ( this.state.backtracking===0 ) {
                                    k_tree = this.adaptor.create(k);
                                    this.adaptor.addChild(root_0, k_tree);
                                    }
                                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                                    list_k.push(k);



                                    break;

                            }



                            break;

                    }

                    k=this.match(this.input,INTO,XQueryParser.FOLLOW_INTO_in_p_InsertExprTargetChoice14293); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);




                    if ( this.state.backtracking===0 ) {
                      this.ak(list_k);
                    }


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1742:11: ka= AFTER
                    root_0 = this.adaptor.nil();

                    ka=this.match(this.input,AFTER,XQueryParser.FOLLOW_AFTER_in_p_InsertExprTargetChoice14310); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    ka_tree = this.adaptor.create(ka);
                    this.adaptor.addChild(root_0, ka_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(ka);
                    }


                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1743:11: kb= BEFORE
                    root_0 = this.adaptor.nil();

                    kb=this.match(this.input,BEFORE,XQueryParser.FOLLOW_BEFORE_in_p_InsertExprTargetChoice14326); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    kb_tree = this.adaptor.create(kb);
                    this.adaptor.addChild(root_0, kb_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(kb);
                    }


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_InsertExpr_return: (function() {
        XQueryParser.p_InsertExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_InsertExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1747:1: p_InsertExpr : k+= INSERT (k+= NODE | k+= NODES ) p_SourceExpr p_InsertExprTargetChoice p_TargetExpr ;
    // $ANTLR start "p_InsertExpr"
    p_InsertExpr: function() {
        var retval = new XQueryParser.p_InsertExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var list_k=null;
         var p_SourceExpr616 = null;
         var p_InsertExprTargetChoice617 = null;
         var p_TargetExpr618 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1748:9: (k+= INSERT (k+= NODE | k+= NODES ) p_SourceExpr p_InsertExprTargetChoice p_TargetExpr )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1748:11: k+= INSERT (k+= NODE | k+= NODES ) p_SourceExpr p_InsertExprTargetChoice p_TargetExpr
            root_0 = this.adaptor.nil();

            k=this.match(this.input,INSERT,XQueryParser.FOLLOW_INSERT_in_p_InsertExpr14356); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1748:21: (k+= NODE | k+= NODES )
            var alt201=2;
            var LA201_0 = this.input.LA(1);

            if ( (LA201_0==NODE) ) {
                alt201=1;
            }
            else if ( (LA201_0==NODES) ) {
                alt201=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 201, 0, this.input);

                throw nvae;
            }
            switch (alt201) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1748:22: k+= NODE
                    k=this.match(this.input,NODE,XQueryParser.FOLLOW_NODE_in_p_InsertExpr14361); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);



                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1748:32: k+= NODES
                    k=this.match(this.input,NODES,XQueryParser.FOLLOW_NODES_in_p_InsertExpr14367); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);



                    break;

            }

            this.pushFollow(XQueryParser.FOLLOW_p_SourceExpr_in_p_InsertExpr14370);
            p_SourceExpr616=this.p_SourceExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SourceExpr616.getTree());
            this.pushFollow(XQueryParser.FOLLOW_p_InsertExprTargetChoice_in_p_InsertExpr14372);
            p_InsertExprTargetChoice617=this.p_InsertExprTargetChoice();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_InsertExprTargetChoice617.getTree());
            this.pushFollow(XQueryParser.FOLLOW_p_TargetExpr_in_p_InsertExpr14374);
            p_TargetExpr618=this.p_TargetExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TargetExpr618.getTree());
            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_DeleteExpr_return: (function() {
        XQueryParser.p_DeleteExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_DeleteExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1752:1: p_DeleteExpr : k+= DELETE (k+= NODE | k+= NODES ) p_TargetExpr ;
    // $ANTLR start "p_DeleteExpr"
    p_DeleteExpr: function() {
        var retval = new XQueryParser.p_DeleteExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var list_k=null;
         var p_TargetExpr619 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1753:9: (k+= DELETE (k+= NODE | k+= NODES ) p_TargetExpr )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1753:11: k+= DELETE (k+= NODE | k+= NODES ) p_TargetExpr
            root_0 = this.adaptor.nil();

            k=this.match(this.input,DELETE,XQueryParser.FOLLOW_DELETE_in_p_DeleteExpr14404); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1753:21: (k+= NODE | k+= NODES )
            var alt202=2;
            var LA202_0 = this.input.LA(1);

            if ( (LA202_0==NODE) ) {
                alt202=1;
            }
            else if ( (LA202_0==NODES) ) {
                alt202=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 202, 0, this.input);

                throw nvae;
            }
            switch (alt202) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1753:22: k+= NODE
                    k=this.match(this.input,NODE,XQueryParser.FOLLOW_NODE_in_p_DeleteExpr14409); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);



                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1753:32: k+= NODES
                    k=this.match(this.input,NODES,XQueryParser.FOLLOW_NODES_in_p_DeleteExpr14415); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);



                    break;

            }

            this.pushFollow(XQueryParser.FOLLOW_p_TargetExpr_in_p_DeleteExpr14418);
            p_TargetExpr619=this.p_TargetExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TargetExpr619.getTree());
            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ReplaceExpr_return: (function() {
        XQueryParser.p_ReplaceExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ReplaceExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1757:1: p_ReplaceExpr : k+= REPLACE (k+= VALUE k+= OF )? k+= NODE p_ExprSingle[true] k+= WITH p_ExprSingle[true] ;
    // $ANTLR start "p_ReplaceExpr"
    p_ReplaceExpr: function() {
        var retval = new XQueryParser.p_ReplaceExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var list_k=null;
         var p_ExprSingle620 = null;
         var p_ExprSingle621 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1758:9: (k+= REPLACE (k+= VALUE k+= OF )? k+= NODE p_ExprSingle[true] k+= WITH p_ExprSingle[true] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1758:11: k+= REPLACE (k+= VALUE k+= OF )? k+= NODE p_ExprSingle[true] k+= WITH p_ExprSingle[true]
            root_0 = this.adaptor.nil();

            k=this.match(this.input,REPLACE,XQueryParser.FOLLOW_REPLACE_in_p_ReplaceExpr14448); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1758:22: (k+= VALUE k+= OF )?
            var alt203=2;
            var LA203_0 = this.input.LA(1);

            if ( (LA203_0==VALUE) ) {
                alt203=1;
            }
            switch (alt203) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1758:23: k+= VALUE k+= OF
                    k=this.match(this.input,VALUE,XQueryParser.FOLLOW_VALUE_in_p_ReplaceExpr14453); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    k=this.match(this.input,OF,XQueryParser.FOLLOW_OF_in_p_ReplaceExpr14457); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);



                    break;

            }

            k=this.match(this.input,NODE,XQueryParser.FOLLOW_NODE_in_p_ReplaceExpr14463); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_ReplaceExpr14465);
            p_ExprSingle620=this.p_ExprSingle(true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle620.getTree());
            k=this.match(this.input,WITH,XQueryParser.FOLLOW_WITH_in_p_ReplaceExpr14470); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_ReplaceExpr14472);
            p_ExprSingle621=this.p_ExprSingle(true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle621.getTree());
            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_RenameExpr_return: (function() {
        XQueryParser.p_RenameExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_RenameExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1762:1: p_RenameExpr : k+= RENAME k+= NODE p_TargetExpr k+= AS p_NewNameExpr ;
    // $ANTLR start "p_RenameExpr"
    p_RenameExpr: function() {
        var retval = new XQueryParser.p_RenameExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var list_k=null;
         var p_TargetExpr622 = null;
         var p_NewNameExpr623 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1763:9: (k+= RENAME k+= NODE p_TargetExpr k+= AS p_NewNameExpr )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1763:11: k+= RENAME k+= NODE p_TargetExpr k+= AS p_NewNameExpr
            root_0 = this.adaptor.nil();

            k=this.match(this.input,RENAME,XQueryParser.FOLLOW_RENAME_in_p_RenameExpr14503); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            k=this.match(this.input,NODE,XQueryParser.FOLLOW_NODE_in_p_RenameExpr14507); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            this.pushFollow(XQueryParser.FOLLOW_p_TargetExpr_in_p_RenameExpr14509);
            p_TargetExpr622=this.p_TargetExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TargetExpr622.getTree());
            k=this.match(this.input,AS,XQueryParser.FOLLOW_AS_in_p_RenameExpr14513); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            this.pushFollow(XQueryParser.FOLLOW_p_NewNameExpr_in_p_RenameExpr14515);
            p_NewNameExpr623=this.p_NewNameExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_NewNameExpr623.getTree());
            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_SourceExpr_return: (function() {
        XQueryParser.p_SourceExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_SourceExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1767:1: p_SourceExpr : p_ExprSingle[true] ;
    // $ANTLR start "p_SourceExpr"
    p_SourceExpr: function() {
        var retval = new XQueryParser.p_SourceExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_ExprSingle624 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1768:9: ( p_ExprSingle[true] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1768:11: p_ExprSingle[true]
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_SourceExpr14543);
            p_ExprSingle624=this.p_ExprSingle(true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle624.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_TargetExpr_return: (function() {
        XQueryParser.p_TargetExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_TargetExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1772:1: p_TargetExpr : p_ExprSingle[true] ;
    // $ANTLR start "p_TargetExpr"
    p_TargetExpr: function() {
        var retval = new XQueryParser.p_TargetExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_ExprSingle625 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1773:9: ( p_ExprSingle[true] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1773:11: p_ExprSingle[true]
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_TargetExpr14570);
            p_ExprSingle625=this.p_ExprSingle(true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle625.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_NewNameExpr_return: (function() {
        XQueryParser.p_NewNameExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_NewNameExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1777:1: p_NewNameExpr : p_ExprSingle[true] ;
    // $ANTLR start "p_NewNameExpr"
    p_NewNameExpr: function() {
        var retval = new XQueryParser.p_NewNameExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_ExprSingle626 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1778:9: ( p_ExprSingle[true] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1778:11: p_ExprSingle[true]
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_NewNameExpr14597);
            p_ExprSingle626=this.p_ExprSingle(true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle626.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_TransformExpr_return: (function() {
        XQueryParser.p_TransformExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_TransformExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1782:1: p_TransformExpr : k+= COPY d= DOLLAR v= p_VarName BIND p_ExprSingle[true] ( COMMA e= DOLLAR w= p_VarName BIND p_ExprSingle[true] )* k+= MODIFY p_ExprSingle[true] k+= RETURN p_ExprSingle[true] ;
    // $ANTLR start "p_TransformExpr"
    p_TransformExpr: function() {
        var retval = new XQueryParser.p_TransformExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var d = null;
        var e = null;
        var BIND627 = null;
        var COMMA629 = null;
        var BIND630 = null;
        var k = null;
        var list_k=null;
         var v = null;
         var w = null;
         var p_ExprSingle628 = null;
         var p_ExprSingle631 = null;
         var p_ExprSingle632 = null;
         var p_ExprSingle633 = null;

        var d_tree=null;
        var e_tree=null;
        var BIND627_tree=null;
        var COMMA629_tree=null;
        var BIND630_tree=null;
        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1783:9: (k+= COPY d= DOLLAR v= p_VarName BIND p_ExprSingle[true] ( COMMA e= DOLLAR w= p_VarName BIND p_ExprSingle[true] )* k+= MODIFY p_ExprSingle[true] k+= RETURN p_ExprSingle[true] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1783:11: k+= COPY d= DOLLAR v= p_VarName BIND p_ExprSingle[true] ( COMMA e= DOLLAR w= p_VarName BIND p_ExprSingle[true] )* k+= MODIFY p_ExprSingle[true] k+= RETURN p_ExprSingle[true]
            root_0 = this.adaptor.nil();

            k=this.match(this.input,COPY,XQueryParser.FOLLOW_COPY_in_p_TransformExpr14626); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_TransformExpr14630); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            d_tree = this.adaptor.create(d);
            this.adaptor.addChild(root_0, d_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_TransformExpr14634);
            v=this.p_VarName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
            if ( this.state.backtracking===0 ) {
               this.av(d, (v?v.stop:null)); 
            }
            BIND627=this.match(this.input,BIND,XQueryParser.FOLLOW_BIND_in_p_TransformExpr14638); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            BIND627_tree = this.adaptor.create(BIND627);
            this.adaptor.addChild(root_0, BIND627_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_TransformExpr14640);
            p_ExprSingle628=this.p_ExprSingle(true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle628.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1783:90: ( COMMA e= DOLLAR w= p_VarName BIND p_ExprSingle[true] )*
            loop204:
            do {
                var alt204=2;
                var LA204_0 = this.input.LA(1);

                if ( (LA204_0==COMMA) ) {
                    alt204=1;
                }


                switch (alt204) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1783:91: COMMA e= DOLLAR w= p_VarName BIND p_ExprSingle[true]
                    COMMA629=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_TransformExpr14644); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    COMMA629_tree = this.adaptor.create(COMMA629);
                    this.adaptor.addChild(root_0, COMMA629_tree);
                    }
                    e=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_TransformExpr14648); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    e_tree = this.adaptor.create(e);
                    this.adaptor.addChild(root_0, e_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_TransformExpr14652);
                    w=this.p_VarName();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, w.getTree());
                    if ( this.state.backtracking===0 ) {
                       this.av(e, (w?w.stop:null)); 
                    }
                    BIND630=this.match(this.input,BIND,XQueryParser.FOLLOW_BIND_in_p_TransformExpr14656); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    BIND630_tree = this.adaptor.create(BIND630);
                    this.adaptor.addChild(root_0, BIND630_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_TransformExpr14658);
                    p_ExprSingle631=this.p_ExprSingle(true);

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle631.getTree());


                    break;

                default :
                    break loop204;
                }
            } while (true);

            k=this.match(this.input,MODIFY,XQueryParser.FOLLOW_MODIFY_in_p_TransformExpr14665); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_TransformExpr14667);
            p_ExprSingle632=this.p_ExprSingle(true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle632.getTree());
            k=this.match(this.input,RETURN,XQueryParser.FOLLOW_RETURN_in_p_TransformExpr14672); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_TransformExpr14674);
            p_ExprSingle633=this.p_ExprSingle(true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle633.getTree());
            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    pm_FTOptionDecl_return: (function() {
        XQueryParser.pm_FTOptionDecl_return = function(){};
        org.antlr.lang.extend(XQueryParser.pm_FTOptionDecl_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1793:1: pm_FTOptionDecl : k+= DECLARE k+= FT_OPTION p_FTMatchOptions SEMICOLON ;
    // $ANTLR start "pm_FTOptionDecl"
    pm_FTOptionDecl: function() {
        var retval = new XQueryParser.pm_FTOptionDecl_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var SEMICOLON635 = null;
        var k = null;
        var list_k=null;
         var p_FTMatchOptions634 = null;

        var SEMICOLON635_tree=null;
        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1794:9: (k+= DECLARE k+= FT_OPTION p_FTMatchOptions SEMICOLON )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1794:11: k+= DECLARE k+= FT_OPTION p_FTMatchOptions SEMICOLON
            root_0 = this.adaptor.nil();

            k=this.match(this.input,DECLARE,XQueryParser.FOLLOW_DECLARE_in_pm_FTOptionDecl14712); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            k=this.match(this.input,FT_OPTION,XQueryParser.FOLLOW_FT_OPTION_in_pm_FTOptionDecl14716); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            this.pushFollow(XQueryParser.FOLLOW_p_FTMatchOptions_in_pm_FTOptionDecl14718);
            p_FTMatchOptions634=this.p_FTMatchOptions();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTMatchOptions634.getTree());
            SEMICOLON635=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_pm_FTOptionDecl14720); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            SEMICOLON635_tree = this.adaptor.create(SEMICOLON635);
            this.adaptor.addChild(root_0, SEMICOLON635_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTScoreVar_return: (function() {
        XQueryParser.p_FTScoreVar_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTScoreVar_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1798:1: p_FTScoreVar : ks= SCORE d= DOLLAR v= p_VarName ;
    // $ANTLR start "p_FTScoreVar"
    p_FTScoreVar: function() {
        var retval = new XQueryParser.p_FTScoreVar_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var ks = null;
        var d = null;
         var v = null;

        var ks_tree=null;
        var d_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1799:9: (ks= SCORE d= DOLLAR v= p_VarName )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1799:11: ks= SCORE d= DOLLAR v= p_VarName
            root_0 = this.adaptor.nil();

            ks=this.match(this.input,SCORE,XQueryParser.FOLLOW_SCORE_in_p_FTScoreVar14750); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            ks_tree = this.adaptor.create(ks);
            this.adaptor.addChild(root_0, ks_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(ks);
            }
            d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_FTScoreVar14756); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            d_tree = this.adaptor.create(d);
            this.adaptor.addChild(root_0, d_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_FTScoreVar14760);
            v=this.p_VarName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
            if ( this.state.backtracking===0 ) {
               this.av(d, (v?v.stop:null)); 
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTContainsExpr_return: (function() {
        XQueryParser.p_FTContainsExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTContainsExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1803:1: p_FTContainsExpr : p_StringConcatExpr (k+= CONTAINS k+= TEXT p_FTSelection ( p_FTIgnoreOption )? )? ;
    // $ANTLR start "p_FTContainsExpr"
    p_FTContainsExpr: function() {
        var retval = new XQueryParser.p_FTContainsExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var list_k=null;
         var p_StringConcatExpr636 = null;
         var p_FTSelection637 = null;
         var p_FTIgnoreOption638 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1804:9: ( p_StringConcatExpr (k+= CONTAINS k+= TEXT p_FTSelection ( p_FTIgnoreOption )? )? )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1804:11: p_StringConcatExpr (k+= CONTAINS k+= TEXT p_FTSelection ( p_FTIgnoreOption )? )?
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_StringConcatExpr_in_p_FTContainsExpr14788);
            p_StringConcatExpr636=this.p_StringConcatExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringConcatExpr636.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1804:30: (k+= CONTAINS k+= TEXT p_FTSelection ( p_FTIgnoreOption )? )?
            var alt206=2;
            var LA206_0 = this.input.LA(1);

            if ( (LA206_0==CONTAINS) ) {
                alt206=1;
            }
            switch (alt206) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1804:32: k+= CONTAINS k+= TEXT p_FTSelection ( p_FTIgnoreOption )?
                    k=this.match(this.input,CONTAINS,XQueryParser.FOLLOW_CONTAINS_in_p_FTContainsExpr14794); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    k=this.match(this.input,TEXT,XQueryParser.FOLLOW_TEXT_in_p_FTContainsExpr14798); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    if ( this.state.backtracking===0 ) {
                      this.ak(list_k);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_FTSelection_in_p_FTContainsExpr14802);
                    p_FTSelection637=this.p_FTSelection();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTSelection637.getTree());
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1804:81: ( p_FTIgnoreOption )?
                    var alt205=2;
                    var LA205_0 = this.input.LA(1);

                    if ( (LA205_0==WITHOUT) ) {
                        alt205=1;
                    }
                    switch (alt205) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1804:81: p_FTIgnoreOption
                            this.pushFollow(XQueryParser.FOLLOW_p_FTIgnoreOption_in_p_FTContainsExpr14804);
                            p_FTIgnoreOption638=this.p_FTIgnoreOption();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTIgnoreOption638.getTree());


                            break;

                    }



                    break;

            }




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTSelection_return: (function() {
        XQueryParser.p_FTSelection_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTSelection_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1808:1: p_FTSelection : p_FTOr ( p_FTPosFilter )* ;
    // $ANTLR start "p_FTSelection"
    p_FTSelection: function() {
        var retval = new XQueryParser.p_FTSelection_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_FTOr639 = null;
         var p_FTPosFilter640 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1809:9: ( p_FTOr ( p_FTPosFilter )* )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1809:11: p_FTOr ( p_FTPosFilter )*
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_FTOr_in_p_FTSelection14834);
            p_FTOr639=this.p_FTOr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTOr639.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1809:18: ( p_FTPosFilter )*
            loop207:
            do {
                var alt207=2;
                var LA207_0 = this.input.LA(1);

                if ( (LA207_0==AT) ) {
                    var LA207_2 = this.input.LA(2);

                    if ( (LA207_2==END||LA207_2==START) ) {
                        alt207=1;
                    }


                }
                else if ( (LA207_0==ORDERED||LA207_0==WINDOW||(LA207_0>=DIFFERENT && LA207_0<=ENTIRE)||LA207_0==SAME) ) {
                    alt207=1;
                }


                switch (alt207) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1809:18: p_FTPosFilter
                    this.pushFollow(XQueryParser.FOLLOW_p_FTPosFilter_in_p_FTSelection14836);
                    p_FTPosFilter640=this.p_FTPosFilter();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTPosFilter640.getTree());


                    break;

                default :
                    break loop207;
                }
            } while (true);




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTWeight_return: (function() {
        XQueryParser.p_FTWeight_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTWeight_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1813:1: p_FTWeight : kw= WEIGHT LBRACKET p_Expr[true,true] RBRACKET ;
    // $ANTLR start "p_FTWeight"
    p_FTWeight: function() {
        var retval = new XQueryParser.p_FTWeight_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var kw = null;
        var LBRACKET641 = null;
        var RBRACKET643 = null;
         var p_Expr642 = null;

        var kw_tree=null;
        var LBRACKET641_tree=null;
        var RBRACKET643_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1814:9: (kw= WEIGHT LBRACKET p_Expr[true,true] RBRACKET )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1814:11: kw= WEIGHT LBRACKET p_Expr[true,true] RBRACKET
            root_0 = this.adaptor.nil();

            kw=this.match(this.input,WEIGHT,XQueryParser.FOLLOW_WEIGHT_in_p_FTWeight14865); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            kw_tree = this.adaptor.create(kw);
            this.adaptor.addChild(root_0, kw_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(kw);
            }
            LBRACKET641=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_FTWeight14869); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LBRACKET641_tree = this.adaptor.create(LBRACKET641);
            this.adaptor.addChild(root_0, LBRACKET641_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_FTWeight14871);
            p_Expr642=this.p_Expr(true, true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr642.getTree());
            RBRACKET643=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_FTWeight14874); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RBRACKET643_tree = this.adaptor.create(RBRACKET643);
            this.adaptor.addChild(root_0, RBRACKET643_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTOr_return: (function() {
        XQueryParser.p_FTOr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTOr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1818:1: p_FTOr : p_FTAnd (ko= FTOR p_FTAnd )* ;
    // $ANTLR start "p_FTOr"
    p_FTOr: function() {
        var retval = new XQueryParser.p_FTOr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var ko = null;
         var p_FTAnd644 = null;
         var p_FTAnd645 = null;

        var ko_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1819:9: ( p_FTAnd (ko= FTOR p_FTAnd )* )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1819:11: p_FTAnd (ko= FTOR p_FTAnd )*
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_FTAnd_in_p_FTOr14900);
            p_FTAnd644=this.p_FTAnd();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTAnd644.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1819:19: (ko= FTOR p_FTAnd )*
            loop208:
            do {
                var alt208=2;
                var LA208_0 = this.input.LA(1);

                if ( (LA208_0==FTOR) ) {
                    alt208=1;
                }


                switch (alt208) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1819:21: ko= FTOR p_FTAnd
                    ko=this.match(this.input,FTOR,XQueryParser.FOLLOW_FTOR_in_p_FTOr14906); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    ko_tree = this.adaptor.create(ko);
                    this.adaptor.addChild(root_0, ko_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(ko);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_FTAnd_in_p_FTOr14910);
                    p_FTAnd645=this.p_FTAnd();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTAnd645.getTree());


                    break;

                default :
                    break loop208;
                }
            } while (true);




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTAnd_return: (function() {
        XQueryParser.p_FTAnd_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTAnd_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1823:1: p_FTAnd : p_FTMildNot (ka= FTAND p_FTMildNot )* ;
    // $ANTLR start "p_FTAnd"
    p_FTAnd: function() {
        var retval = new XQueryParser.p_FTAnd_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var ka = null;
         var p_FTMildNot646 = null;
         var p_FTMildNot647 = null;

        var ka_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1824:9: ( p_FTMildNot (ka= FTAND p_FTMildNot )* )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1824:11: p_FTMildNot (ka= FTAND p_FTMildNot )*
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_FTMildNot_in_p_FTAnd14939);
            p_FTMildNot646=this.p_FTMildNot();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTMildNot646.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1824:23: (ka= FTAND p_FTMildNot )*
            loop209:
            do {
                var alt209=2;
                var LA209_0 = this.input.LA(1);

                if ( (LA209_0==FTAND) ) {
                    alt209=1;
                }


                switch (alt209) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1824:25: ka= FTAND p_FTMildNot
                    ka=this.match(this.input,FTAND,XQueryParser.FOLLOW_FTAND_in_p_FTAnd14945); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    ka_tree = this.adaptor.create(ka);
                    this.adaptor.addChild(root_0, ka_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(ka);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_FTMildNot_in_p_FTAnd14949);
                    p_FTMildNot647=this.p_FTMildNot();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTMildNot647.getTree());


                    break;

                default :
                    break loop209;
                }
            } while (true);




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTMildNot_return: (function() {
        XQueryParser.p_FTMildNot_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTMildNot_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1828:1: p_FTMildNot : p_FTUnaryNot (k+= NOT k+= IN p_FTUnaryNot )* ;
    // $ANTLR start "p_FTMildNot"
    p_FTMildNot: function() {
        var retval = new XQueryParser.p_FTMildNot_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var list_k=null;
         var p_FTUnaryNot648 = null;
         var p_FTUnaryNot649 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1829:9: ( p_FTUnaryNot (k+= NOT k+= IN p_FTUnaryNot )* )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1829:11: p_FTUnaryNot (k+= NOT k+= IN p_FTUnaryNot )*
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_FTUnaryNot_in_p_FTMildNot14978);
            p_FTUnaryNot648=this.p_FTUnaryNot();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTUnaryNot648.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1829:24: (k+= NOT k+= IN p_FTUnaryNot )*
            loop210:
            do {
                var alt210=2;
                var LA210_0 = this.input.LA(1);

                if ( (LA210_0==NOT) ) {
                    alt210=1;
                }


                switch (alt210) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1829:26: k+= NOT k+= IN p_FTUnaryNot
                    k=this.match(this.input,NOT,XQueryParser.FOLLOW_NOT_in_p_FTMildNot14984); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    k=this.match(this.input,IN,XQueryParser.FOLLOW_IN_in_p_FTMildNot14988); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    if ( this.state.backtracking===0 ) {
                      this.ak(list_k);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_FTUnaryNot_in_p_FTMildNot14992);
                    p_FTUnaryNot649=this.p_FTUnaryNot();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTUnaryNot649.getTree());


                    break;

                default :
                    break loop210;
                }
            } while (true);




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTUnaryNot_return: (function() {
        XQueryParser.p_FTUnaryNot_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTUnaryNot_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1833:1: p_FTUnaryNot : (kn= FTNOT )? p_FTPrimaryWithOptions ;
    // $ANTLR start "p_FTUnaryNot"
    p_FTUnaryNot: function() {
        var retval = new XQueryParser.p_FTUnaryNot_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var kn = null;
         var p_FTPrimaryWithOptions650 = null;

        var kn_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1834:9: ( (kn= FTNOT )? p_FTPrimaryWithOptions )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1834:11: (kn= FTNOT )? p_FTPrimaryWithOptions
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1834:11: (kn= FTNOT )?
            var alt211=2;
            var LA211_0 = this.input.LA(1);

            if ( (LA211_0==FTNOT) ) {
                alt211=1;
            }
            switch (alt211) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1834:13: kn= FTNOT
                    kn=this.match(this.input,FTNOT,XQueryParser.FOLLOW_FTNOT_in_p_FTUnaryNot15025); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    kn_tree = this.adaptor.create(kn);
                    this.adaptor.addChild(root_0, kn_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(kn);
                    }


                    break;

            }

            this.pushFollow(XQueryParser.FOLLOW_p_FTPrimaryWithOptions_in_p_FTUnaryNot15032);
            p_FTPrimaryWithOptions650=this.p_FTPrimaryWithOptions();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTPrimaryWithOptions650.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTPrimaryWithOptions_return: (function() {
        XQueryParser.p_FTPrimaryWithOptions_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTPrimaryWithOptions_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1838:1: p_FTPrimaryWithOptions : p_FTPrimary ( p_FTMatchOptions )? ( p_FTWeight )? ;
    // $ANTLR start "p_FTPrimaryWithOptions"
    p_FTPrimaryWithOptions: function() {
        var retval = new XQueryParser.p_FTPrimaryWithOptions_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_FTPrimary651 = null;
         var p_FTMatchOptions652 = null;
         var p_FTWeight653 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1839:9: ( p_FTPrimary ( p_FTMatchOptions )? ( p_FTWeight )? )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1839:11: p_FTPrimary ( p_FTMatchOptions )? ( p_FTWeight )?
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_FTPrimary_in_p_FTPrimaryWithOptions15058);
            p_FTPrimary651=this.p_FTPrimary();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTPrimary651.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1839:23: ( p_FTMatchOptions )?
            var alt212=2;
            var LA212_0 = this.input.LA(1);

            if ( (LA212_0==USING) ) {
                alt212=1;
            }
            switch (alt212) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1839:23: p_FTMatchOptions
                    this.pushFollow(XQueryParser.FOLLOW_p_FTMatchOptions_in_p_FTPrimaryWithOptions15060);
                    p_FTMatchOptions652=this.p_FTMatchOptions();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTMatchOptions652.getTree());


                    break;

            }

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1839:41: ( p_FTWeight )?
            var alt213=2;
            var LA213_0 = this.input.LA(1);

            if ( (LA213_0==WEIGHT) ) {
                alt213=1;
            }
            switch (alt213) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1839:41: p_FTWeight
                    this.pushFollow(XQueryParser.FOLLOW_p_FTWeight_in_p_FTPrimaryWithOptions15063);
                    p_FTWeight653=this.p_FTWeight();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTWeight653.getTree());


                    break;

            }




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTPrimary_return: (function() {
        XQueryParser.p_FTPrimary_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTPrimary_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1846:1: p_FTPrimary : ( ( p_FTWords ( p_FTTimes )? ) | ( LPAREN p_FTSelection RPAREN ) | p_FTExtensionSelection );
    // $ANTLR start "p_FTPrimary"
    p_FTPrimary: function() {
        var retval = new XQueryParser.p_FTPrimary_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var LPAREN656 = null;
        var RPAREN658 = null;
         var p_FTWords654 = null;
         var p_FTTimes655 = null;
         var p_FTSelection657 = null;
         var p_FTExtensionSelection659 = null;

        var LPAREN656_tree=null;
        var RPAREN658_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1847:9: ( ( p_FTWords ( p_FTTimes )? ) | ( LPAREN p_FTSelection RPAREN ) | p_FTExtensionSelection )
            var alt215=3;
            switch ( this.input.LA(1) ) {
            case LBRACKET:
            case APOS:
            case QUOT:
                alt215=1;
                break;
            case LPAREN:
                alt215=2;
                break;
            case L_Pragma:
                alt215=3;
                break;
            default:
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 215, 0, this.input);

                throw nvae;
            }

            switch (alt215) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1847:11: ( p_FTWords ( p_FTTimes )? )
                    root_0 = this.adaptor.nil();

                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1847:11: ( p_FTWords ( p_FTTimes )? )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1847:12: p_FTWords ( p_FTTimes )?
                    this.pushFollow(XQueryParser.FOLLOW_p_FTWords_in_p_FTPrimary15094);
                    p_FTWords654=this.p_FTWords();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTWords654.getTree());
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1847:22: ( p_FTTimes )?
                    var alt214=2;
                    var LA214_0 = this.input.LA(1);

                    if ( (LA214_0==OCCURS) ) {
                        alt214=1;
                    }
                    switch (alt214) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1847:22: p_FTTimes
                            this.pushFollow(XQueryParser.FOLLOW_p_FTTimes_in_p_FTPrimary15096);
                            p_FTTimes655=this.p_FTTimes();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTTimes655.getTree());


                            break;

                    }






                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1848:11: ( LPAREN p_FTSelection RPAREN )
                    root_0 = this.adaptor.nil();

                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1848:11: ( LPAREN p_FTSelection RPAREN )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1848:12: LPAREN p_FTSelection RPAREN
                    LPAREN656=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_FTPrimary15111); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    LPAREN656_tree = this.adaptor.create(LPAREN656);
                    this.adaptor.addChild(root_0, LPAREN656_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_FTSelection_in_p_FTPrimary15113);
                    p_FTSelection657=this.p_FTSelection();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTSelection657.getTree());
                    RPAREN658=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_FTPrimary15115); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    RPAREN658_tree = this.adaptor.create(RPAREN658);
                    this.adaptor.addChild(root_0, RPAREN658_tree);
                    }





                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1849:11: p_FTExtensionSelection
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_FTExtensionSelection_in_p_FTPrimary15128);
                    p_FTExtensionSelection659=this.p_FTExtensionSelection();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTExtensionSelection659.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTWords_return: (function() {
        XQueryParser.p_FTWords_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTWords_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1853:1: p_FTWords : p_FTWordsValue ( p_FTAnyallOption )? ;
    // $ANTLR start "p_FTWords"
    p_FTWords: function() {
        var retval = new XQueryParser.p_FTWords_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_FTWordsValue660 = null;
         var p_FTAnyallOption661 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1854:9: ( p_FTWordsValue ( p_FTAnyallOption )? )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1854:11: p_FTWordsValue ( p_FTAnyallOption )?
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_FTWordsValue_in_p_FTWords15154);
            p_FTWordsValue660=this.p_FTWordsValue();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTWordsValue660.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1854:26: ( p_FTAnyallOption )?
            var alt216=2;
            var LA216_0 = this.input.LA(1);

            if ( ((LA216_0>=ALL && LA216_0<=ANY)||LA216_0==PHRASE) ) {
                alt216=1;
            }
            switch (alt216) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1854:26: p_FTAnyallOption
                    this.pushFollow(XQueryParser.FOLLOW_p_FTAnyallOption_in_p_FTWords15156);
                    p_FTAnyallOption661=this.p_FTAnyallOption();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTAnyallOption661.getTree());


                    break;

            }




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTWordsValue_return: (function() {
        XQueryParser.p_FTWordsValue_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTWordsValue_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1858:1: p_FTWordsValue : ( p_StringLiteral | ( LBRACKET p_Expr[true,true] RBRACKET ) );
    // $ANTLR start "p_FTWordsValue"
    p_FTWordsValue: function() {
        var retval = new XQueryParser.p_FTWordsValue_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var LBRACKET663 = null;
        var RBRACKET665 = null;
         var p_StringLiteral662 = null;
         var p_Expr664 = null;

        var LBRACKET663_tree=null;
        var RBRACKET665_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1859:9: ( p_StringLiteral | ( LBRACKET p_Expr[true,true] RBRACKET ) )
            var alt217=2;
            var LA217_0 = this.input.LA(1);

            if ( ((LA217_0>=APOS && LA217_0<=QUOT)) ) {
                alt217=1;
            }
            else if ( (LA217_0==LBRACKET) ) {
                alt217=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 217, 0, this.input);

                throw nvae;
            }
            switch (alt217) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1859:11: p_StringLiteral
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_FTWordsValue15183);
                    p_StringLiteral662=this.p_StringLiteral();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral662.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1860:11: ( LBRACKET p_Expr[true,true] RBRACKET )
                    root_0 = this.adaptor.nil();

                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1860:11: ( LBRACKET p_Expr[true,true] RBRACKET )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1860:12: LBRACKET p_Expr[true,true] RBRACKET
                    LBRACKET663=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_FTWordsValue15196); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    LBRACKET663_tree = this.adaptor.create(LBRACKET663);
                    this.adaptor.addChild(root_0, LBRACKET663_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_FTWordsValue15198);
                    p_Expr664=this.p_Expr(true, true);

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr664.getTree());
                    RBRACKET665=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_FTWordsValue15201); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    RBRACKET665_tree = this.adaptor.create(RBRACKET665);
                    this.adaptor.addChild(root_0, RBRACKET665_tree);
                    }





                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTExtensionSelection_return: (function() {
        XQueryParser.p_FTExtensionSelection_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTExtensionSelection_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1864:1: p_FTExtensionSelection : ( L_Pragma )+ LBRACKET ( p_FTSelection )? RBRACKET ;
    // $ANTLR start "p_FTExtensionSelection"
    p_FTExtensionSelection: function() {
        var retval = new XQueryParser.p_FTExtensionSelection_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var L_Pragma666 = null;
        var LBRACKET667 = null;
        var RBRACKET669 = null;
         var p_FTSelection668 = null;

        var L_Pragma666_tree=null;
        var LBRACKET667_tree=null;
        var RBRACKET669_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1865:9: ( ( L_Pragma )+ LBRACKET ( p_FTSelection )? RBRACKET )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1865:11: ( L_Pragma )+ LBRACKET ( p_FTSelection )? RBRACKET
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1865:11: ( L_Pragma )+
            var cnt218=0;
            loop218:
            do {
                var alt218=2;
                var LA218_0 = this.input.LA(1);

                if ( (LA218_0==L_Pragma) ) {
                    alt218=1;
                }


                switch (alt218) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1865:11: L_Pragma
                    L_Pragma666=this.match(this.input,L_Pragma,XQueryParser.FOLLOW_L_Pragma_in_p_FTExtensionSelection15228); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    L_Pragma666_tree = this.adaptor.create(L_Pragma666);
                    this.adaptor.addChild(root_0, L_Pragma666_tree);
                    }


                    break;

                default :
                    if ( cnt218 >= 1 ) {
                        break loop218;
                    }
                    if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        var eee = new org.antlr.runtime.EarlyExitException(218, this.input);
                        throw eee;
                }
                cnt218++;
            } while (true);

            LBRACKET667=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_FTExtensionSelection15231); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LBRACKET667_tree = this.adaptor.create(LBRACKET667);
            this.adaptor.addChild(root_0, LBRACKET667_tree);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1865:30: ( p_FTSelection )?
            var alt219=2;
            var LA219_0 = this.input.LA(1);

            if ( (LA219_0==FTNOT||LA219_0==LPAREN||LA219_0==LBRACKET||(LA219_0>=APOS && LA219_0<=QUOT)||LA219_0==L_Pragma) ) {
                alt219=1;
            }
            switch (alt219) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1865:30: p_FTSelection
                    this.pushFollow(XQueryParser.FOLLOW_p_FTSelection_in_p_FTExtensionSelection15233);
                    p_FTSelection668=this.p_FTSelection();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTSelection668.getTree());


                    break;

            }

            RBRACKET669=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_FTExtensionSelection15236); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RBRACKET669_tree = this.adaptor.create(RBRACKET669);
            this.adaptor.addChild(root_0, RBRACKET669_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTAnyallOption_return: (function() {
        XQueryParser.p_FTAnyallOption_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTAnyallOption_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1869:1: p_FTAnyallOption : ( (k+= ANY (k+= WORD )? ) | (k+= ALL ( WORDS )? ) | k+= PHRASE ) ;
    // $ANTLR start "p_FTAnyallOption"
    p_FTAnyallOption: function() {
        var retval = new XQueryParser.p_FTAnyallOption_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var WORDS670 = null;
        var k = null;
        var list_k=null;

        var WORDS670_tree=null;
        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1870:9: ( ( (k+= ANY (k+= WORD )? ) | (k+= ALL ( WORDS )? ) | k+= PHRASE ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1870:11: ( (k+= ANY (k+= WORD )? ) | (k+= ALL ( WORDS )? ) | k+= PHRASE )
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1870:11: ( (k+= ANY (k+= WORD )? ) | (k+= ALL ( WORDS )? ) | k+= PHRASE )
            var alt222=3;
            switch ( this.input.LA(1) ) {
            case ANY:
                alt222=1;
                break;
            case ALL:
                alt222=2;
                break;
            case PHRASE:
                alt222=3;
                break;
            default:
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 222, 0, this.input);

                throw nvae;
            }

            switch (alt222) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1870:13: (k+= ANY (k+= WORD )? )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1870:13: (k+= ANY (k+= WORD )? )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1870:14: k+= ANY (k+= WORD )?
                    k=this.match(this.input,ANY,XQueryParser.FOLLOW_ANY_in_p_FTAnyallOption15267); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1870:22: (k+= WORD )?
                    var alt220=2;
                    var LA220_0 = this.input.LA(1);

                    if ( (LA220_0==WORD) ) {
                        alt220=1;
                    }
                    switch (alt220) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1870:22: k+= WORD
                            k=this.match(this.input,WORD,XQueryParser.FOLLOW_WORD_in_p_FTAnyallOption15271); if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) {
                            k_tree = this.adaptor.create(k);
                            this.adaptor.addChild(root_0, k_tree);
                            }
                            if (org.antlr.lang.isNull(list_k)) list_k = [];
                            list_k.push(k);



                            break;

                    }






                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1870:33: (k+= ALL ( WORDS )? )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1870:33: (k+= ALL ( WORDS )? )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1870:34: k+= ALL ( WORDS )?
                    k=this.match(this.input,ALL,XQueryParser.FOLLOW_ALL_in_p_FTAnyallOption15280); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1870:41: ( WORDS )?
                    var alt221=2;
                    var LA221_0 = this.input.LA(1);

                    if ( (LA221_0==WORDS) ) {
                        alt221=1;
                    }
                    switch (alt221) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1870:41: WORDS
                            WORDS670=this.match(this.input,WORDS,XQueryParser.FOLLOW_WORDS_in_p_FTAnyallOption15282); if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) {
                            WORDS670_tree = this.adaptor.create(WORDS670);
                            this.adaptor.addChild(root_0, WORDS670_tree);
                            }


                            break;

                    }






                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1870:51: k+= PHRASE
                    k=this.match(this.input,PHRASE,XQueryParser.FOLLOW_PHRASE_in_p_FTAnyallOption15290); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);



                    break;

            }

            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTTimes_return: (function() {
        XQueryParser.p_FTTimes_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTTimes_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1874:1: p_FTTimes : k+= OCCURS p_FTRange k+= TIMES ;
    // $ANTLR start "p_FTTimes"
    p_FTTimes: function() {
        var retval = new XQueryParser.p_FTTimes_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var list_k=null;
         var p_FTRange671 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1875:9: (k+= OCCURS p_FTRange k+= TIMES )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1875:11: k+= OCCURS p_FTRange k+= TIMES
            root_0 = this.adaptor.nil();

            k=this.match(this.input,OCCURS,XQueryParser.FOLLOW_OCCURS_in_p_FTTimes15322); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            this.pushFollow(XQueryParser.FOLLOW_p_FTRange_in_p_FTTimes15324);
            p_FTRange671=this.p_FTRange();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTRange671.getTree());
            k=this.match(this.input,TIMES,XQueryParser.FOLLOW_TIMES_in_p_FTTimes15328); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTRange_return: (function() {
        XQueryParser.p_FTRange_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTRange_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1879:1: p_FTRange : ( (k+= EXACTLY p_AdditiveExpr ) | (k+= AT k+= LEAST p_AdditiveExpr ) | (k+= AT k+= MOST p_AdditiveExpr ) | (k+= FROM p_AdditiveExpr k+= TO p_AdditiveExpr ) ) ;
    // $ANTLR start "p_FTRange"
    p_FTRange: function() {
        var retval = new XQueryParser.p_FTRange_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var list_k=null;
         var p_AdditiveExpr672 = null;
         var p_AdditiveExpr673 = null;
         var p_AdditiveExpr674 = null;
         var p_AdditiveExpr675 = null;
         var p_AdditiveExpr676 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1880:9: ( ( (k+= EXACTLY p_AdditiveExpr ) | (k+= AT k+= LEAST p_AdditiveExpr ) | (k+= AT k+= MOST p_AdditiveExpr ) | (k+= FROM p_AdditiveExpr k+= TO p_AdditiveExpr ) ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1880:11: ( (k+= EXACTLY p_AdditiveExpr ) | (k+= AT k+= LEAST p_AdditiveExpr ) | (k+= AT k+= MOST p_AdditiveExpr ) | (k+= FROM p_AdditiveExpr k+= TO p_AdditiveExpr ) )
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1880:11: ( (k+= EXACTLY p_AdditiveExpr ) | (k+= AT k+= LEAST p_AdditiveExpr ) | (k+= AT k+= MOST p_AdditiveExpr ) | (k+= FROM p_AdditiveExpr k+= TO p_AdditiveExpr ) )
            var alt223=4;
            switch ( this.input.LA(1) ) {
            case EXACTLY:
                alt223=1;
                break;
            case AT:
                var LA223_2 = this.input.LA(2);

                if ( (LA223_2==LEAST) ) {
                    alt223=2;
                }
                else if ( (LA223_2==MOST) ) {
                    alt223=3;
                }
                else {
                    if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                    var nvae =
                        new org.antlr.runtime.NoViableAltException("", 223, 2, this.input);

                    throw nvae;
                }
                break;
            case FROM:
                alt223=4;
                break;
            default:
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 223, 0, this.input);

                throw nvae;
            }

            switch (alt223) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1880:13: (k+= EXACTLY p_AdditiveExpr )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1880:13: (k+= EXACTLY p_AdditiveExpr )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1880:14: k+= EXACTLY p_AdditiveExpr
                    k=this.match(this.input,EXACTLY,XQueryParser.FOLLOW_EXACTLY_in_p_FTRange15361); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    this.pushFollow(XQueryParser.FOLLOW_p_AdditiveExpr_in_p_FTRange15363);
                    p_AdditiveExpr672=this.p_AdditiveExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AdditiveExpr672.getTree());





                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1881:13: (k+= AT k+= LEAST p_AdditiveExpr )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1881:13: (k+= AT k+= LEAST p_AdditiveExpr )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1881:14: k+= AT k+= LEAST p_AdditiveExpr
                    k=this.match(this.input,AT,XQueryParser.FOLLOW_AT_in_p_FTRange15381); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    k=this.match(this.input,LEAST,XQueryParser.FOLLOW_LEAST_in_p_FTRange15385); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    this.pushFollow(XQueryParser.FOLLOW_p_AdditiveExpr_in_p_FTRange15387);
                    p_AdditiveExpr673=this.p_AdditiveExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AdditiveExpr673.getTree());





                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1882:13: (k+= AT k+= MOST p_AdditiveExpr )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1882:13: (k+= AT k+= MOST p_AdditiveExpr )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1882:14: k+= AT k+= MOST p_AdditiveExpr
                    k=this.match(this.input,AT,XQueryParser.FOLLOW_AT_in_p_FTRange15405); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    k=this.match(this.input,MOST,XQueryParser.FOLLOW_MOST_in_p_FTRange15409); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    this.pushFollow(XQueryParser.FOLLOW_p_AdditiveExpr_in_p_FTRange15411);
                    p_AdditiveExpr674=this.p_AdditiveExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AdditiveExpr674.getTree());





                    break;
                case 4 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1883:13: (k+= FROM p_AdditiveExpr k+= TO p_AdditiveExpr )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1883:13: (k+= FROM p_AdditiveExpr k+= TO p_AdditiveExpr )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1883:14: k+= FROM p_AdditiveExpr k+= TO p_AdditiveExpr
                    k=this.match(this.input,FROM,XQueryParser.FOLLOW_FROM_in_p_FTRange15429); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    this.pushFollow(XQueryParser.FOLLOW_p_AdditiveExpr_in_p_FTRange15431);
                    p_AdditiveExpr675=this.p_AdditiveExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AdditiveExpr675.getTree());
                    k=this.match(this.input,TO,XQueryParser.FOLLOW_TO_in_p_FTRange15435); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    this.pushFollow(XQueryParser.FOLLOW_p_AdditiveExpr_in_p_FTRange15437);
                    p_AdditiveExpr676=this.p_AdditiveExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AdditiveExpr676.getTree());





                    break;

            }

            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTPosFilter_return: (function() {
        XQueryParser.p_FTPosFilter_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTPosFilter_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1887:1: p_FTPosFilter : ( p_FTOrder | p_FTWindow | p_FTDistance | p_FTScope | p_FTContent );
    // $ANTLR start "p_FTPosFilter"
    p_FTPosFilter: function() {
        var retval = new XQueryParser.p_FTPosFilter_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_FTOrder677 = null;
         var p_FTWindow678 = null;
         var p_FTDistance679 = null;
         var p_FTScope680 = null;
         var p_FTContent681 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1888:9: ( p_FTOrder | p_FTWindow | p_FTDistance | p_FTScope | p_FTContent )
            var alt224=5;
            switch ( this.input.LA(1) ) {
            case ORDERED:
                alt224=1;
                break;
            case WINDOW:
                alt224=2;
                break;
            case DISTANCE:
                alt224=3;
                break;
            case DIFFERENT:
            case SAME:
                alt224=4;
                break;
            case AT:
            case ENTIRE:
                alt224=5;
                break;
            default:
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 224, 0, this.input);

                throw nvae;
            }

            switch (alt224) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1888:11: p_FTOrder
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_FTOrder_in_p_FTPosFilter15468);
                    p_FTOrder677=this.p_FTOrder();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTOrder677.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1888:23: p_FTWindow
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_FTWindow_in_p_FTPosFilter15472);
                    p_FTWindow678=this.p_FTWindow();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTWindow678.getTree());


                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1888:36: p_FTDistance
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_FTDistance_in_p_FTPosFilter15476);
                    p_FTDistance679=this.p_FTDistance();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTDistance679.getTree());


                    break;
                case 4 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1888:51: p_FTScope
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_FTScope_in_p_FTPosFilter15480);
                    p_FTScope680=this.p_FTScope();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTScope680.getTree());


                    break;
                case 5 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1888:63: p_FTContent
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_FTContent_in_p_FTPosFilter15484);
                    p_FTContent681=this.p_FTContent();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTContent681.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTOrder_return: (function() {
        XQueryParser.p_FTOrder_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTOrder_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1892:1: p_FTOrder : ko= ORDERED ;
    // $ANTLR start "p_FTOrder"
    p_FTOrder: function() {
        var retval = new XQueryParser.p_FTOrder_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var ko = null;

        var ko_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1893:9: (ko= ORDERED )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1893:11: ko= ORDERED
            root_0 = this.adaptor.nil();

            ko=this.match(this.input,ORDERED,XQueryParser.FOLLOW_ORDERED_in_p_FTOrder15512); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            ko_tree = this.adaptor.create(ko);
            this.adaptor.addChild(root_0, ko_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(ko);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTWindow_return: (function() {
        XQueryParser.p_FTWindow_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTWindow_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1897:1: p_FTWindow : kw= WINDOW p_AdditiveExpr p_FTUnit ;
    // $ANTLR start "p_FTWindow"
    p_FTWindow: function() {
        var retval = new XQueryParser.p_FTWindow_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var kw = null;
         var p_AdditiveExpr682 = null;
         var p_FTUnit683 = null;

        var kw_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1898:9: (kw= WINDOW p_AdditiveExpr p_FTUnit )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1898:11: kw= WINDOW p_AdditiveExpr p_FTUnit
            root_0 = this.adaptor.nil();

            kw=this.match(this.input,WINDOW,XQueryParser.FOLLOW_WINDOW_in_p_FTWindow15542); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            kw_tree = this.adaptor.create(kw);
            this.adaptor.addChild(root_0, kw_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(kw);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_AdditiveExpr_in_p_FTWindow15546);
            p_AdditiveExpr682=this.p_AdditiveExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AdditiveExpr682.getTree());
            this.pushFollow(XQueryParser.FOLLOW_p_FTUnit_in_p_FTWindow15548);
            p_FTUnit683=this.p_FTUnit();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTUnit683.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTDistance_return: (function() {
        XQueryParser.p_FTDistance_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTDistance_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1902:1: p_FTDistance : kd= DISTANCE p_FTRange p_FTUnit ;
    // $ANTLR start "p_FTDistance"
    p_FTDistance: function() {
        var retval = new XQueryParser.p_FTDistance_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var kd = null;
         var p_FTRange684 = null;
         var p_FTUnit685 = null;

        var kd_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1903:9: (kd= DISTANCE p_FTRange p_FTUnit )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1903:11: kd= DISTANCE p_FTRange p_FTUnit
            root_0 = this.adaptor.nil();

            kd=this.match(this.input,DISTANCE,XQueryParser.FOLLOW_DISTANCE_in_p_FTDistance15576); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            kd_tree = this.adaptor.create(kd);
            this.adaptor.addChild(root_0, kd_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(kd);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_FTRange_in_p_FTDistance15580);
            p_FTRange684=this.p_FTRange();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTRange684.getTree());
            this.pushFollow(XQueryParser.FOLLOW_p_FTUnit_in_p_FTDistance15582);
            p_FTUnit685=this.p_FTUnit();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTUnit685.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTUnit_return: (function() {
        XQueryParser.p_FTUnit_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTUnit_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1907:1: p_FTUnit : (k+= WORDS | k+= SENTENCES | k+= PARAGRAPHS ) ;
    // $ANTLR start "p_FTUnit"
    p_FTUnit: function() {
        var retval = new XQueryParser.p_FTUnit_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var list_k=null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1908:9: ( (k+= WORDS | k+= SENTENCES | k+= PARAGRAPHS ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1908:11: (k+= WORDS | k+= SENTENCES | k+= PARAGRAPHS )
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1908:11: (k+= WORDS | k+= SENTENCES | k+= PARAGRAPHS )
            var alt225=3;
            switch ( this.input.LA(1) ) {
            case WORDS:
                alt225=1;
                break;
            case SENTENCES:
                alt225=2;
                break;
            case PARAGRAPHS:
                alt225=3;
                break;
            default:
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 225, 0, this.input);

                throw nvae;
            }

            switch (alt225) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1908:13: k+= WORDS
                    k=this.match(this.input,WORDS,XQueryParser.FOLLOW_WORDS_in_p_FTUnit15612); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);



                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1908:24: k+= SENTENCES
                    k=this.match(this.input,SENTENCES,XQueryParser.FOLLOW_SENTENCES_in_p_FTUnit15618); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);



                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1908:39: k+= PARAGRAPHS
                    k=this.match(this.input,PARAGRAPHS,XQueryParser.FOLLOW_PARAGRAPHS_in_p_FTUnit15624); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);



                    break;

            }

            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTScope_return: (function() {
        XQueryParser.p_FTScope_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTScope_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1912:1: p_FTScope : (k+= SAME | k+= DIFFERENT ) p_FTBigUnit ;
    // $ANTLR start "p_FTScope"
    p_FTScope: function() {
        var retval = new XQueryParser.p_FTScope_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var list_k=null;
         var p_FTBigUnit686 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1913:9: ( (k+= SAME | k+= DIFFERENT ) p_FTBigUnit )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1913:11: (k+= SAME | k+= DIFFERENT ) p_FTBigUnit
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1913:11: (k+= SAME | k+= DIFFERENT )
            var alt226=2;
            var LA226_0 = this.input.LA(1);

            if ( (LA226_0==SAME) ) {
                alt226=1;
            }
            else if ( (LA226_0==DIFFERENT) ) {
                alt226=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 226, 0, this.input);

                throw nvae;
            }
            switch (alt226) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1913:12: k+= SAME
                    k=this.match(this.input,SAME,XQueryParser.FOLLOW_SAME_in_p_FTScope15657); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);



                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1913:22: k+= DIFFERENT
                    k=this.match(this.input,DIFFERENT,XQueryParser.FOLLOW_DIFFERENT_in_p_FTScope15663); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);



                    break;

            }

            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_FTBigUnit_in_p_FTScope15668);
            p_FTBigUnit686=this.p_FTBigUnit();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTBigUnit686.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTBigUnit_return: (function() {
        XQueryParser.p_FTBigUnit_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTBigUnit_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1917:1: p_FTBigUnit : (k+= SENTENCE | k+= PARAGRAPH ) ;
    // $ANTLR start "p_FTBigUnit"
    p_FTBigUnit: function() {
        var retval = new XQueryParser.p_FTBigUnit_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var list_k=null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1918:9: ( (k+= SENTENCE | k+= PARAGRAPH ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1918:11: (k+= SENTENCE | k+= PARAGRAPH )
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1918:11: (k+= SENTENCE | k+= PARAGRAPH )
            var alt227=2;
            var LA227_0 = this.input.LA(1);

            if ( (LA227_0==SENTENCE) ) {
                alt227=1;
            }
            else if ( (LA227_0==PARAGRAPH) ) {
                alt227=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 227, 0, this.input);

                throw nvae;
            }
            switch (alt227) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1918:13: k+= SENTENCE
                    k=this.match(this.input,SENTENCE,XQueryParser.FOLLOW_SENTENCE_in_p_FTBigUnit15698); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);



                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1918:27: k+= PARAGRAPH
                    k=this.match(this.input,PARAGRAPH,XQueryParser.FOLLOW_PARAGRAPH_in_p_FTBigUnit15704); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);



                    break;

            }

            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTContent_return: (function() {
        XQueryParser.p_FTContent_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTContent_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1922:1: p_FTContent : ( (k+= AT k+= START ) | (k+= AT k+= END ) | (k+= ENTIRE k+= CONTENT ) ) ;
    // $ANTLR start "p_FTContent"
    p_FTContent: function() {
        var retval = new XQueryParser.p_FTContent_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var list_k=null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1923:9: ( ( (k+= AT k+= START ) | (k+= AT k+= END ) | (k+= ENTIRE k+= CONTENT ) ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1923:11: ( (k+= AT k+= START ) | (k+= AT k+= END ) | (k+= ENTIRE k+= CONTENT ) )
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1923:11: ( (k+= AT k+= START ) | (k+= AT k+= END ) | (k+= ENTIRE k+= CONTENT ) )
            var alt228=3;
            var LA228_0 = this.input.LA(1);

            if ( (LA228_0==AT) ) {
                var LA228_1 = this.input.LA(2);

                if ( (LA228_1==START) ) {
                    alt228=1;
                }
                else if ( (LA228_1==END) ) {
                    alt228=2;
                }
                else {
                    if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                    var nvae =
                        new org.antlr.runtime.NoViableAltException("", 228, 1, this.input);

                    throw nvae;
                }
            }
            else if ( (LA228_0==ENTIRE) ) {
                alt228=3;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 228, 0, this.input);

                throw nvae;
            }
            switch (alt228) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1923:13: (k+= AT k+= START )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1923:13: (k+= AT k+= START )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1923:14: k+= AT k+= START
                    k=this.match(this.input,AT,XQueryParser.FOLLOW_AT_in_p_FTContent15739); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    k=this.match(this.input,START,XQueryParser.FOLLOW_START_in_p_FTContent15743); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);






                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1923:32: (k+= AT k+= END )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1923:32: (k+= AT k+= END )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1923:33: k+= AT k+= END
                    k=this.match(this.input,AT,XQueryParser.FOLLOW_AT_in_p_FTContent15751); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    k=this.match(this.input,END,XQueryParser.FOLLOW_END_in_p_FTContent15755); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);






                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1923:49: (k+= ENTIRE k+= CONTENT )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1923:49: (k+= ENTIRE k+= CONTENT )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1923:50: k+= ENTIRE k+= CONTENT
                    k=this.match(this.input,ENTIRE,XQueryParser.FOLLOW_ENTIRE_in_p_FTContent15763); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    k=this.match(this.input,CONTENT,XQueryParser.FOLLOW_CONTENT_in_p_FTContent15767); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);






                    break;

            }

            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTMatchOptions_return: (function() {
        XQueryParser.p_FTMatchOptions_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTMatchOptions_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1927:1: p_FTMatchOptions : (ku= USING p_FTMatchOption )+ ;
    // $ANTLR start "p_FTMatchOptions"
    p_FTMatchOptions: function() {
        var retval = new XQueryParser.p_FTMatchOptions_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var ku = null;
         var p_FTMatchOption687 = null;

        var ku_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1928:9: ( (ku= USING p_FTMatchOption )+ )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1928:11: (ku= USING p_FTMatchOption )+
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1928:11: (ku= USING p_FTMatchOption )+
            var cnt229=0;
            loop229:
            do {
                var alt229=2;
                var LA229_0 = this.input.LA(1);

                if ( (LA229_0==USING) ) {
                    alt229=1;
                }


                switch (alt229) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1928:12: ku= USING p_FTMatchOption
                    ku=this.match(this.input,USING,XQueryParser.FOLLOW_USING_in_p_FTMatchOptions15801); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    ku_tree = this.adaptor.create(ku);
                    this.adaptor.addChild(root_0, ku_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(ku);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_FTMatchOption_in_p_FTMatchOptions15805);
                    p_FTMatchOption687=this.p_FTMatchOption();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTMatchOption687.getTree());


                    break;

                default :
                    if ( cnt229 >= 1 ) {
                        break loop229;
                    }
                    if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        var eee = new org.antlr.runtime.EarlyExitException(229, this.input);
                        throw eee;
                }
                cnt229++;
            } while (true);




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTMatchOption_return: (function() {
        XQueryParser.p_FTMatchOption_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTMatchOption_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1932:1: p_FTMatchOption : ( p_FTLanguageOption | p_FTWildCardOption | p_FTThesaurusOption | p_FTStemOption | p_FTCaseOption | p_FTDiacriticsOption | p_FTStopWordOption | p_FTExtensionOption );
    // $ANTLR start "p_FTMatchOption"
    p_FTMatchOption: function() {
        var retval = new XQueryParser.p_FTMatchOption_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_FTLanguageOption688 = null;
         var p_FTWildCardOption689 = null;
         var p_FTThesaurusOption690 = null;
         var p_FTStemOption691 = null;
         var p_FTCaseOption692 = null;
         var p_FTDiacriticsOption693 = null;
         var p_FTStopWordOption694 = null;
         var p_FTExtensionOption695 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1933:9: ( p_FTLanguageOption | p_FTWildCardOption | p_FTThesaurusOption | p_FTStemOption | p_FTCaseOption | p_FTDiacriticsOption | p_FTStopWordOption | p_FTExtensionOption )
            var alt230=8;
            alt230 = this.dfa230.predict(this.input);
            switch (alt230) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1933:11: p_FTLanguageOption
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_FTLanguageOption_in_p_FTMatchOption15833);
                    p_FTLanguageOption688=this.p_FTLanguageOption();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTLanguageOption688.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1934:11: p_FTWildCardOption
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_FTWildCardOption_in_p_FTMatchOption15845);
                    p_FTWildCardOption689=this.p_FTWildCardOption();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTWildCardOption689.getTree());


                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1935:11: p_FTThesaurusOption
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_FTThesaurusOption_in_p_FTMatchOption15857);
                    p_FTThesaurusOption690=this.p_FTThesaurusOption();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTThesaurusOption690.getTree());


                    break;
                case 4 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1936:11: p_FTStemOption
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_FTStemOption_in_p_FTMatchOption15869);
                    p_FTStemOption691=this.p_FTStemOption();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTStemOption691.getTree());


                    break;
                case 5 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1937:11: p_FTCaseOption
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_FTCaseOption_in_p_FTMatchOption15881);
                    p_FTCaseOption692=this.p_FTCaseOption();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTCaseOption692.getTree());


                    break;
                case 6 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1938:11: p_FTDiacriticsOption
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_FTDiacriticsOption_in_p_FTMatchOption15893);
                    p_FTDiacriticsOption693=this.p_FTDiacriticsOption();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTDiacriticsOption693.getTree());


                    break;
                case 7 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1939:11: p_FTStopWordOption
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_FTStopWordOption_in_p_FTMatchOption15905);
                    p_FTStopWordOption694=this.p_FTStopWordOption();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTStopWordOption694.getTree());


                    break;
                case 8 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1940:11: p_FTExtensionOption
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_FTExtensionOption_in_p_FTMatchOption15917);
                    p_FTExtensionOption695=this.p_FTExtensionOption();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTExtensionOption695.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTCaseOption_return: (function() {
        XQueryParser.p_FTCaseOption_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTCaseOption_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1944:1: p_FTCaseOption : ( (k+= CASE k+= INSENSITIVE ) | (k+= CASE k+= SENSITIVE ) | k+= LOWERCASE | k+= UPPERCASE ) ;
    // $ANTLR start "p_FTCaseOption"
    p_FTCaseOption: function() {
        var retval = new XQueryParser.p_FTCaseOption_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var list_k=null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1945:9: ( ( (k+= CASE k+= INSENSITIVE ) | (k+= CASE k+= SENSITIVE ) | k+= LOWERCASE | k+= UPPERCASE ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1945:11: ( (k+= CASE k+= INSENSITIVE ) | (k+= CASE k+= SENSITIVE ) | k+= LOWERCASE | k+= UPPERCASE )
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1945:11: ( (k+= CASE k+= INSENSITIVE ) | (k+= CASE k+= SENSITIVE ) | k+= LOWERCASE | k+= UPPERCASE )
            var alt231=4;
            switch ( this.input.LA(1) ) {
            case CASE:
                var LA231_1 = this.input.LA(2);

                if ( (LA231_1==INSENSITIVE) ) {
                    alt231=1;
                }
                else if ( (LA231_1==SENSITIVE) ) {
                    alt231=2;
                }
                else {
                    if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                    var nvae =
                        new org.antlr.runtime.NoViableAltException("", 231, 1, this.input);

                    throw nvae;
                }
                break;
            case LOWERCASE:
                alt231=3;
                break;
            case UPPERCASE:
                alt231=4;
                break;
            default:
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 231, 0, this.input);

                throw nvae;
            }

            switch (alt231) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1945:13: (k+= CASE k+= INSENSITIVE )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1945:13: (k+= CASE k+= INSENSITIVE )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1945:14: k+= CASE k+= INSENSITIVE
                    k=this.match(this.input,CASE,XQueryParser.FOLLOW_CASE_in_p_FTCaseOption15948); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    k=this.match(this.input,INSENSITIVE,XQueryParser.FOLLOW_INSENSITIVE_in_p_FTCaseOption15952); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);






                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1946:13: (k+= CASE k+= SENSITIVE )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1946:13: (k+= CASE k+= SENSITIVE )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1946:14: k+= CASE k+= SENSITIVE
                    k=this.match(this.input,CASE,XQueryParser.FOLLOW_CASE_in_p_FTCaseOption15970); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    k=this.match(this.input,SENSITIVE,XQueryParser.FOLLOW_SENSITIVE_in_p_FTCaseOption15974); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);






                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1947:13: k+= LOWERCASE
                    k=this.match(this.input,LOWERCASE,XQueryParser.FOLLOW_LOWERCASE_in_p_FTCaseOption15991); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);



                    break;
                case 4 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1948:13: k+= UPPERCASE
                    k=this.match(this.input,UPPERCASE,XQueryParser.FOLLOW_UPPERCASE_in_p_FTCaseOption16007); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);



                    break;

            }

            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTDiacriticsOption_return: (function() {
        XQueryParser.p_FTDiacriticsOption_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTDiacriticsOption_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1952:1: p_FTDiacriticsOption : ( (k+= DIACRITICS k+= INSENSITIVE ) | (k+= DIACRITICS k+= SENSITIVE ) ) ;
    // $ANTLR start "p_FTDiacriticsOption"
    p_FTDiacriticsOption: function() {
        var retval = new XQueryParser.p_FTDiacriticsOption_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var list_k=null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1953:9: ( ( (k+= DIACRITICS k+= INSENSITIVE ) | (k+= DIACRITICS k+= SENSITIVE ) ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1953:11: ( (k+= DIACRITICS k+= INSENSITIVE ) | (k+= DIACRITICS k+= SENSITIVE ) )
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1953:11: ( (k+= DIACRITICS k+= INSENSITIVE ) | (k+= DIACRITICS k+= SENSITIVE ) )
            var alt232=2;
            var LA232_0 = this.input.LA(1);

            if ( (LA232_0==DIACRITICS) ) {
                var LA232_1 = this.input.LA(2);

                if ( (LA232_1==INSENSITIVE) ) {
                    alt232=1;
                }
                else if ( (LA232_1==SENSITIVE) ) {
                    alt232=2;
                }
                else {
                    if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                    var nvae =
                        new org.antlr.runtime.NoViableAltException("", 232, 1, this.input);

                    throw nvae;
                }
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 232, 0, this.input);

                throw nvae;
            }
            switch (alt232) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1953:13: (k+= DIACRITICS k+= INSENSITIVE )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1953:13: (k+= DIACRITICS k+= INSENSITIVE )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1953:14: k+= DIACRITICS k+= INSENSITIVE
                    k=this.match(this.input,DIACRITICS,XQueryParser.FOLLOW_DIACRITICS_in_p_FTDiacriticsOption16042); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    k=this.match(this.input,INSENSITIVE,XQueryParser.FOLLOW_INSENSITIVE_in_p_FTDiacriticsOption16046); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);






                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1954:13: (k+= DIACRITICS k+= SENSITIVE )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1954:13: (k+= DIACRITICS k+= SENSITIVE )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1954:14: k+= DIACRITICS k+= SENSITIVE
                    k=this.match(this.input,DIACRITICS,XQueryParser.FOLLOW_DIACRITICS_in_p_FTDiacriticsOption16064); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    k=this.match(this.input,SENSITIVE,XQueryParser.FOLLOW_SENSITIVE_in_p_FTDiacriticsOption16068); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);






                    break;

            }

            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTStemOption_return: (function() {
        XQueryParser.p_FTStemOption_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTStemOption_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1958:1: p_FTStemOption : (k+= STEMMING | (k+= NO k+= STEMMING ) ) ;
    // $ANTLR start "p_FTStemOption"
    p_FTStemOption: function() {
        var retval = new XQueryParser.p_FTStemOption_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var list_k=null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1959:9: ( (k+= STEMMING | (k+= NO k+= STEMMING ) ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1959:11: (k+= STEMMING | (k+= NO k+= STEMMING ) )
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1959:11: (k+= STEMMING | (k+= NO k+= STEMMING ) )
            var alt233=2;
            var LA233_0 = this.input.LA(1);

            if ( (LA233_0==STEMMING) ) {
                alt233=1;
            }
            else if ( (LA233_0==NO) ) {
                alt233=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 233, 0, this.input);

                throw nvae;
            }
            switch (alt233) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1959:13: k+= STEMMING
                    k=this.match(this.input,STEMMING,XQueryParser.FOLLOW_STEMMING_in_p_FTStemOption16103); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);



                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1959:27: (k+= NO k+= STEMMING )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1959:27: (k+= NO k+= STEMMING )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1959:28: k+= NO k+= STEMMING
                    k=this.match(this.input,NO,XQueryParser.FOLLOW_NO_in_p_FTStemOption16110); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    k=this.match(this.input,STEMMING,XQueryParser.FOLLOW_STEMMING_in_p_FTStemOption16114); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);






                    break;

            }

            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTThesaurusOption_return: (function() {
        XQueryParser.p_FTThesaurusOption_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTThesaurusOption_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1963:1: p_FTThesaurusOption : ( (k+= THESAURUS ( p_FTThesaurusID | k+= DEFAULT ) ) | (k+= THESAURUS LPAREN ( p_FTThesaurusID | k+= DEFAULT ) ( COMMA p_FTThesaurusID )* RPAREN ) | (k+= NO k+= THESAURUS ) ) ;
    // $ANTLR start "p_FTThesaurusOption"
    p_FTThesaurusOption: function() {
        var retval = new XQueryParser.p_FTThesaurusOption_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var LPAREN697 = null;
        var COMMA699 = null;
        var RPAREN701 = null;
        var k = null;
        var list_k=null;
         var p_FTThesaurusID696 = null;
         var p_FTThesaurusID698 = null;
         var p_FTThesaurusID700 = null;

        var LPAREN697_tree=null;
        var COMMA699_tree=null;
        var RPAREN701_tree=null;
        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1964:9: ( ( (k+= THESAURUS ( p_FTThesaurusID | k+= DEFAULT ) ) | (k+= THESAURUS LPAREN ( p_FTThesaurusID | k+= DEFAULT ) ( COMMA p_FTThesaurusID )* RPAREN ) | (k+= NO k+= THESAURUS ) ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1964:11: ( (k+= THESAURUS ( p_FTThesaurusID | k+= DEFAULT ) ) | (k+= THESAURUS LPAREN ( p_FTThesaurusID | k+= DEFAULT ) ( COMMA p_FTThesaurusID )* RPAREN ) | (k+= NO k+= THESAURUS ) )
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1964:11: ( (k+= THESAURUS ( p_FTThesaurusID | k+= DEFAULT ) ) | (k+= THESAURUS LPAREN ( p_FTThesaurusID | k+= DEFAULT ) ( COMMA p_FTThesaurusID )* RPAREN ) | (k+= NO k+= THESAURUS ) )
            var alt237=3;
            var LA237_0 = this.input.LA(1);

            if ( (LA237_0==THESAURUS) ) {
                var LA237_1 = this.input.LA(2);

                if ( (LA237_1==LPAREN) ) {
                    alt237=2;
                }
                else if ( (LA237_1==AT||LA237_1==DEFAULT) ) {
                    alt237=1;
                }
                else {
                    if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                    var nvae =
                        new org.antlr.runtime.NoViableAltException("", 237, 1, this.input);

                    throw nvae;
                }
            }
            else if ( (LA237_0==NO) ) {
                alt237=3;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 237, 0, this.input);

                throw nvae;
            }
            switch (alt237) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1964:13: (k+= THESAURUS ( p_FTThesaurusID | k+= DEFAULT ) )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1964:13: (k+= THESAURUS ( p_FTThesaurusID | k+= DEFAULT ) )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1964:14: k+= THESAURUS ( p_FTThesaurusID | k+= DEFAULT )
                    k=this.match(this.input,THESAURUS,XQueryParser.FOLLOW_THESAURUS_in_p_FTThesaurusOption16150); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1964:27: ( p_FTThesaurusID | k+= DEFAULT )
                    var alt234=2;
                    var LA234_0 = this.input.LA(1);

                    if ( (LA234_0==AT) ) {
                        alt234=1;
                    }
                    else if ( (LA234_0==DEFAULT) ) {
                        alt234=2;
                    }
                    else {
                        if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        var nvae =
                            new org.antlr.runtime.NoViableAltException("", 234, 0, this.input);

                        throw nvae;
                    }
                    switch (alt234) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1964:28: p_FTThesaurusID
                            this.pushFollow(XQueryParser.FOLLOW_p_FTThesaurusID_in_p_FTThesaurusOption16153);
                            p_FTThesaurusID696=this.p_FTThesaurusID();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTThesaurusID696.getTree());


                            break;
                        case 2 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1964:46: k+= DEFAULT
                            k=this.match(this.input,DEFAULT,XQueryParser.FOLLOW_DEFAULT_in_p_FTThesaurusOption16159); if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) {
                            k_tree = this.adaptor.create(k);
                            this.adaptor.addChild(root_0, k_tree);
                            }
                            if (org.antlr.lang.isNull(list_k)) list_k = [];
                            list_k.push(k);



                            break;

                    }






                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1965:13: (k+= THESAURUS LPAREN ( p_FTThesaurusID | k+= DEFAULT ) ( COMMA p_FTThesaurusID )* RPAREN )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1965:13: (k+= THESAURUS LPAREN ( p_FTThesaurusID | k+= DEFAULT ) ( COMMA p_FTThesaurusID )* RPAREN )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1965:14: k+= THESAURUS LPAREN ( p_FTThesaurusID | k+= DEFAULT ) ( COMMA p_FTThesaurusID )* RPAREN
                    k=this.match(this.input,THESAURUS,XQueryParser.FOLLOW_THESAURUS_in_p_FTThesaurusOption16178); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    LPAREN697=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_FTThesaurusOption16180); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    LPAREN697_tree = this.adaptor.create(LPAREN697);
                    this.adaptor.addChild(root_0, LPAREN697_tree);
                    }
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1965:34: ( p_FTThesaurusID | k+= DEFAULT )
                    var alt235=2;
                    var LA235_0 = this.input.LA(1);

                    if ( (LA235_0==AT) ) {
                        alt235=1;
                    }
                    else if ( (LA235_0==DEFAULT) ) {
                        alt235=2;
                    }
                    else {
                        if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        var nvae =
                            new org.antlr.runtime.NoViableAltException("", 235, 0, this.input);

                        throw nvae;
                    }
                    switch (alt235) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1965:35: p_FTThesaurusID
                            this.pushFollow(XQueryParser.FOLLOW_p_FTThesaurusID_in_p_FTThesaurusOption16183);
                            p_FTThesaurusID698=this.p_FTThesaurusID();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTThesaurusID698.getTree());


                            break;
                        case 2 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1965:53: k+= DEFAULT
                            k=this.match(this.input,DEFAULT,XQueryParser.FOLLOW_DEFAULT_in_p_FTThesaurusOption16189); if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) {
                            k_tree = this.adaptor.create(k);
                            this.adaptor.addChild(root_0, k_tree);
                            }
                            if (org.antlr.lang.isNull(list_k)) list_k = [];
                            list_k.push(k);



                            break;

                    }

                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1965:65: ( COMMA p_FTThesaurusID )*
                    loop236:
                    do {
                        var alt236=2;
                        var LA236_0 = this.input.LA(1);

                        if ( (LA236_0==COMMA) ) {
                            alt236=1;
                        }


                        switch (alt236) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1965:66: COMMA p_FTThesaurusID
                            COMMA699=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_FTThesaurusOption16193); if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) {
                            COMMA699_tree = this.adaptor.create(COMMA699);
                            this.adaptor.addChild(root_0, COMMA699_tree);
                            }
                            this.pushFollow(XQueryParser.FOLLOW_p_FTThesaurusID_in_p_FTThesaurusOption16195);
                            p_FTThesaurusID700=this.p_FTThesaurusID();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTThesaurusID700.getTree());


                            break;

                        default :
                            break loop236;
                        }
                    } while (true);

                    RPAREN701=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_FTThesaurusOption16199); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    RPAREN701_tree = this.adaptor.create(RPAREN701);
                    this.adaptor.addChild(root_0, RPAREN701_tree);
                    }





                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1966:13: (k+= NO k+= THESAURUS )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1966:13: (k+= NO k+= THESAURUS )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1966:14: k+= NO k+= THESAURUS
                    k=this.match(this.input,NO,XQueryParser.FOLLOW_NO_in_p_FTThesaurusOption16217); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    k=this.match(this.input,THESAURUS,XQueryParser.FOLLOW_THESAURUS_in_p_FTThesaurusOption16221); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);






                    break;

            }

            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTThesaurusID_return: (function() {
        XQueryParser.p_FTThesaurusID_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTThesaurusID_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1970:1: p_FTThesaurusID : k+= AT p_StringLiteral (k+= RELATIONSHIP p_StringLiteral )? ( p_FTLiteralRange k+= LEVELS )? ;
    // $ANTLR start "p_FTThesaurusID"
    p_FTThesaurusID: function() {
        var retval = new XQueryParser.p_FTThesaurusID_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var list_k=null;
         var p_StringLiteral702 = null;
         var p_StringLiteral703 = null;
         var p_FTLiteralRange704 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1971:9: (k+= AT p_StringLiteral (k+= RELATIONSHIP p_StringLiteral )? ( p_FTLiteralRange k+= LEVELS )? )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1971:11: k+= AT p_StringLiteral (k+= RELATIONSHIP p_StringLiteral )? ( p_FTLiteralRange k+= LEVELS )?
            root_0 = this.adaptor.nil();

            k=this.match(this.input,AT,XQueryParser.FOLLOW_AT_in_p_FTThesaurusID16254); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_FTThesaurusID16256);
            p_StringLiteral702=this.p_StringLiteral();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral702.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1971:33: (k+= RELATIONSHIP p_StringLiteral )?
            var alt238=2;
            var LA238_0 = this.input.LA(1);

            if ( (LA238_0==RELATIONSHIP) ) {
                alt238=1;
            }
            switch (alt238) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1971:34: k+= RELATIONSHIP p_StringLiteral
                    k=this.match(this.input,RELATIONSHIP,XQueryParser.FOLLOW_RELATIONSHIP_in_p_FTThesaurusID16261); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_FTThesaurusID16263);
                    p_StringLiteral703=this.p_StringLiteral();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral703.getTree());


                    break;

            }

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1971:68: ( p_FTLiteralRange k+= LEVELS )?
            var alt239=2;
            var LA239_0 = this.input.LA(1);

            if ( ((LA239_0>=EXACTLY && LA239_0<=FROM)) ) {
                alt239=1;
            }
            else if ( (LA239_0==AT) ) {
                var LA239_2 = this.input.LA(2);

                if ( (LA239_2==LEAST||LA239_2==MOST) ) {
                    alt239=1;
                }
            }
            switch (alt239) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1971:69: p_FTLiteralRange k+= LEVELS
                    this.pushFollow(XQueryParser.FOLLOW_p_FTLiteralRange_in_p_FTThesaurusID16268);
                    p_FTLiteralRange704=this.p_FTLiteralRange();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTLiteralRange704.getTree());
                    k=this.match(this.input,LEVELS,XQueryParser.FOLLOW_LEVELS_in_p_FTThesaurusID16272); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);



                    break;

            }

            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTLiteralRange_return: (function() {
        XQueryParser.p_FTLiteralRange_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTLiteralRange_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1975:1: p_FTLiteralRange : ( (k+= EXACTLY L_IntegerLiteral ) | (k+= AT k+= LEAST L_IntegerLiteral ) | (k+= AT k+= MOST L_IntegerLiteral ) | (k+= FROM L_IntegerLiteral TO L_IntegerLiteral ) ) ;
    // $ANTLR start "p_FTLiteralRange"
    p_FTLiteralRange: function() {
        var retval = new XQueryParser.p_FTLiteralRange_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var L_IntegerLiteral705 = null;
        var L_IntegerLiteral706 = null;
        var L_IntegerLiteral707 = null;
        var L_IntegerLiteral708 = null;
        var TO709 = null;
        var L_IntegerLiteral710 = null;
        var k = null;
        var list_k=null;

        var L_IntegerLiteral705_tree=null;
        var L_IntegerLiteral706_tree=null;
        var L_IntegerLiteral707_tree=null;
        var L_IntegerLiteral708_tree=null;
        var TO709_tree=null;
        var L_IntegerLiteral710_tree=null;
        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1976:9: ( ( (k+= EXACTLY L_IntegerLiteral ) | (k+= AT k+= LEAST L_IntegerLiteral ) | (k+= AT k+= MOST L_IntegerLiteral ) | (k+= FROM L_IntegerLiteral TO L_IntegerLiteral ) ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1976:11: ( (k+= EXACTLY L_IntegerLiteral ) | (k+= AT k+= LEAST L_IntegerLiteral ) | (k+= AT k+= MOST L_IntegerLiteral ) | (k+= FROM L_IntegerLiteral TO L_IntegerLiteral ) )
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1976:11: ( (k+= EXACTLY L_IntegerLiteral ) | (k+= AT k+= LEAST L_IntegerLiteral ) | (k+= AT k+= MOST L_IntegerLiteral ) | (k+= FROM L_IntegerLiteral TO L_IntegerLiteral ) )
            var alt240=4;
            switch ( this.input.LA(1) ) {
            case EXACTLY:
                alt240=1;
                break;
            case AT:
                var LA240_2 = this.input.LA(2);

                if ( (LA240_2==LEAST) ) {
                    alt240=2;
                }
                else if ( (LA240_2==MOST) ) {
                    alt240=3;
                }
                else {
                    if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                    var nvae =
                        new org.antlr.runtime.NoViableAltException("", 240, 2, this.input);

                    throw nvae;
                }
                break;
            case FROM:
                alt240=4;
                break;
            default:
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 240, 0, this.input);

                throw nvae;
            }

            switch (alt240) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1976:13: (k+= EXACTLY L_IntegerLiteral )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1976:13: (k+= EXACTLY L_IntegerLiteral )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1976:14: k+= EXACTLY L_IntegerLiteral
                    k=this.match(this.input,EXACTLY,XQueryParser.FOLLOW_EXACTLY_in_p_FTLiteralRange16307); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    L_IntegerLiteral705=this.match(this.input,L_IntegerLiteral,XQueryParser.FOLLOW_L_IntegerLiteral_in_p_FTLiteralRange16309); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    L_IntegerLiteral705_tree = this.adaptor.create(L_IntegerLiteral705);
                    this.adaptor.addChild(root_0, L_IntegerLiteral705_tree);
                    }





                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1977:13: (k+= AT k+= LEAST L_IntegerLiteral )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1977:13: (k+= AT k+= LEAST L_IntegerLiteral )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1977:14: k+= AT k+= LEAST L_IntegerLiteral
                    k=this.match(this.input,AT,XQueryParser.FOLLOW_AT_in_p_FTLiteralRange16327); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    k=this.match(this.input,LEAST,XQueryParser.FOLLOW_LEAST_in_p_FTLiteralRange16331); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    L_IntegerLiteral706=this.match(this.input,L_IntegerLiteral,XQueryParser.FOLLOW_L_IntegerLiteral_in_p_FTLiteralRange16333); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    L_IntegerLiteral706_tree = this.adaptor.create(L_IntegerLiteral706);
                    this.adaptor.addChild(root_0, L_IntegerLiteral706_tree);
                    }





                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1978:13: (k+= AT k+= MOST L_IntegerLiteral )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1978:13: (k+= AT k+= MOST L_IntegerLiteral )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1978:14: k+= AT k+= MOST L_IntegerLiteral
                    k=this.match(this.input,AT,XQueryParser.FOLLOW_AT_in_p_FTLiteralRange16351); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    k=this.match(this.input,MOST,XQueryParser.FOLLOW_MOST_in_p_FTLiteralRange16355); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    L_IntegerLiteral707=this.match(this.input,L_IntegerLiteral,XQueryParser.FOLLOW_L_IntegerLiteral_in_p_FTLiteralRange16357); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    L_IntegerLiteral707_tree = this.adaptor.create(L_IntegerLiteral707);
                    this.adaptor.addChild(root_0, L_IntegerLiteral707_tree);
                    }





                    break;
                case 4 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1979:13: (k+= FROM L_IntegerLiteral TO L_IntegerLiteral )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1979:13: (k+= FROM L_IntegerLiteral TO L_IntegerLiteral )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1979:14: k+= FROM L_IntegerLiteral TO L_IntegerLiteral
                    k=this.match(this.input,FROM,XQueryParser.FOLLOW_FROM_in_p_FTLiteralRange16375); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    L_IntegerLiteral708=this.match(this.input,L_IntegerLiteral,XQueryParser.FOLLOW_L_IntegerLiteral_in_p_FTLiteralRange16377); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    L_IntegerLiteral708_tree = this.adaptor.create(L_IntegerLiteral708);
                    this.adaptor.addChild(root_0, L_IntegerLiteral708_tree);
                    }
                    TO709=this.match(this.input,TO,XQueryParser.FOLLOW_TO_in_p_FTLiteralRange16379); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    TO709_tree = this.adaptor.create(TO709);
                    this.adaptor.addChild(root_0, TO709_tree);
                    }
                    L_IntegerLiteral710=this.match(this.input,L_IntegerLiteral,XQueryParser.FOLLOW_L_IntegerLiteral_in_p_FTLiteralRange16381); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    L_IntegerLiteral710_tree = this.adaptor.create(L_IntegerLiteral710);
                    this.adaptor.addChild(root_0, L_IntegerLiteral710_tree);
                    }





                    break;

            }

            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTStopWordOption_return: (function() {
        XQueryParser.p_FTStopWordOption_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTStopWordOption_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1983:1: p_FTStopWordOption : ( (k+= STOP k+= WORDS p_FTStopWords ( p_FTStopWordsInclExcl )* ) | (k+= STOP k+= WORDS k+= DEFAULT ( p_FTStopWordsInclExcl )* ) | (k+= NO k+= STOP k+= WORDS ) ) ;
    // $ANTLR start "p_FTStopWordOption"
    p_FTStopWordOption: function() {
        var retval = new XQueryParser.p_FTStopWordOption_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var list_k=null;
         var p_FTStopWords711 = null;
         var p_FTStopWordsInclExcl712 = null;
         var p_FTStopWordsInclExcl713 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1984:9: ( ( (k+= STOP k+= WORDS p_FTStopWords ( p_FTStopWordsInclExcl )* ) | (k+= STOP k+= WORDS k+= DEFAULT ( p_FTStopWordsInclExcl )* ) | (k+= NO k+= STOP k+= WORDS ) ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1984:11: ( (k+= STOP k+= WORDS p_FTStopWords ( p_FTStopWordsInclExcl )* ) | (k+= STOP k+= WORDS k+= DEFAULT ( p_FTStopWordsInclExcl )* ) | (k+= NO k+= STOP k+= WORDS ) )
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1984:11: ( (k+= STOP k+= WORDS p_FTStopWords ( p_FTStopWordsInclExcl )* ) | (k+= STOP k+= WORDS k+= DEFAULT ( p_FTStopWordsInclExcl )* ) | (k+= NO k+= STOP k+= WORDS ) )
            var alt243=3;
            var LA243_0 = this.input.LA(1);

            if ( (LA243_0==STOP) ) {
                var LA243_1 = this.input.LA(2);

                if ( (LA243_1==WORDS) ) {
                    var LA243_3 = this.input.LA(3);

                    if ( (LA243_3==DEFAULT) ) {
                        alt243=2;
                    }
                    else if ( (LA243_3==AT||LA243_3==LPAREN) ) {
                        alt243=1;
                    }
                    else {
                        if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        var nvae =
                            new org.antlr.runtime.NoViableAltException("", 243, 3, this.input);

                        throw nvae;
                    }
                }
                else {
                    if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                    var nvae =
                        new org.antlr.runtime.NoViableAltException("", 243, 1, this.input);

                    throw nvae;
                }
            }
            else if ( (LA243_0==NO) ) {
                alt243=3;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 243, 0, this.input);

                throw nvae;
            }
            switch (alt243) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1984:13: (k+= STOP k+= WORDS p_FTStopWords ( p_FTStopWordsInclExcl )* )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1984:13: (k+= STOP k+= WORDS p_FTStopWords ( p_FTStopWordsInclExcl )* )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1984:14: k+= STOP k+= WORDS p_FTStopWords ( p_FTStopWordsInclExcl )*
                    k=this.match(this.input,STOP,XQueryParser.FOLLOW_STOP_in_p_FTStopWordOption16417); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    k=this.match(this.input,WORDS,XQueryParser.FOLLOW_WORDS_in_p_FTStopWordOption16421); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    this.pushFollow(XQueryParser.FOLLOW_p_FTStopWords_in_p_FTStopWordOption16423);
                    p_FTStopWords711=this.p_FTStopWords();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTStopWords711.getTree());
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1984:45: ( p_FTStopWordsInclExcl )*
                    loop241:
                    do {
                        var alt241=2;
                        var LA241_0 = this.input.LA(1);

                        if ( (LA241_0==EXCEPT||LA241_0==UNION) ) {
                            alt241=1;
                        }


                        switch (alt241) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1984:45: p_FTStopWordsInclExcl
                            this.pushFollow(XQueryParser.FOLLOW_p_FTStopWordsInclExcl_in_p_FTStopWordOption16425);
                            p_FTStopWordsInclExcl712=this.p_FTStopWordsInclExcl();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTStopWordsInclExcl712.getTree());


                            break;

                        default :
                            break loop241;
                        }
                    } while (true);






                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1985:13: (k+= STOP k+= WORDS k+= DEFAULT ( p_FTStopWordsInclExcl )* )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1985:13: (k+= STOP k+= WORDS k+= DEFAULT ( p_FTStopWordsInclExcl )* )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1985:14: k+= STOP k+= WORDS k+= DEFAULT ( p_FTStopWordsInclExcl )*
                    k=this.match(this.input,STOP,XQueryParser.FOLLOW_STOP_in_p_FTStopWordOption16444); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    k=this.match(this.input,WORDS,XQueryParser.FOLLOW_WORDS_in_p_FTStopWordOption16448); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    k=this.match(this.input,DEFAULT,XQueryParser.FOLLOW_DEFAULT_in_p_FTStopWordOption16452); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1985:42: ( p_FTStopWordsInclExcl )*
                    loop242:
                    do {
                        var alt242=2;
                        var LA242_0 = this.input.LA(1);

                        if ( (LA242_0==EXCEPT||LA242_0==UNION) ) {
                            alt242=1;
                        }


                        switch (alt242) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1985:42: p_FTStopWordsInclExcl
                            this.pushFollow(XQueryParser.FOLLOW_p_FTStopWordsInclExcl_in_p_FTStopWordOption16454);
                            p_FTStopWordsInclExcl713=this.p_FTStopWordsInclExcl();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTStopWordsInclExcl713.getTree());


                            break;

                        default :
                            break loop242;
                        }
                    } while (true);






                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1986:13: (k+= NO k+= STOP k+= WORDS )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1986:13: (k+= NO k+= STOP k+= WORDS )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1986:14: k+= NO k+= STOP k+= WORDS
                    k=this.match(this.input,NO,XQueryParser.FOLLOW_NO_in_p_FTStopWordOption16473); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    k=this.match(this.input,STOP,XQueryParser.FOLLOW_STOP_in_p_FTStopWordOption16477); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    k=this.match(this.input,WORDS,XQueryParser.FOLLOW_WORDS_in_p_FTStopWordOption16481); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);






                    break;

            }

            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTStopWords_return: (function() {
        XQueryParser.p_FTStopWords_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTStopWords_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1990:1: p_FTStopWords : ( (ka= AT p_StringLiteral ) | ( LPAREN p_StringLiteral ( COMMA p_StringLiteral )* RPAREN ) );
    // $ANTLR start "p_FTStopWords"
    p_FTStopWords: function() {
        var retval = new XQueryParser.p_FTStopWords_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var ka = null;
        var LPAREN715 = null;
        var COMMA717 = null;
        var RPAREN719 = null;
         var p_StringLiteral714 = null;
         var p_StringLiteral716 = null;
         var p_StringLiteral718 = null;

        var ka_tree=null;
        var LPAREN715_tree=null;
        var COMMA717_tree=null;
        var RPAREN719_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1991:9: ( (ka= AT p_StringLiteral ) | ( LPAREN p_StringLiteral ( COMMA p_StringLiteral )* RPAREN ) )
            var alt245=2;
            var LA245_0 = this.input.LA(1);

            if ( (LA245_0==AT) ) {
                alt245=1;
            }
            else if ( (LA245_0==LPAREN) ) {
                alt245=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 245, 0, this.input);

                throw nvae;
            }
            switch (alt245) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1991:11: (ka= AT p_StringLiteral )
                    root_0 = this.adaptor.nil();

                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1991:11: (ka= AT p_StringLiteral )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1991:12: ka= AT p_StringLiteral
                    ka=this.match(this.input,AT,XQueryParser.FOLLOW_AT_in_p_FTStopWords16515); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    ka_tree = this.adaptor.create(ka);
                    this.adaptor.addChild(root_0, ka_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(ka);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_FTStopWords16519);
                    p_StringLiteral714=this.p_StringLiteral();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral714.getTree());





                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1992:11: ( LPAREN p_StringLiteral ( COMMA p_StringLiteral )* RPAREN )
                    root_0 = this.adaptor.nil();

                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1992:11: ( LPAREN p_StringLiteral ( COMMA p_StringLiteral )* RPAREN )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1992:12: LPAREN p_StringLiteral ( COMMA p_StringLiteral )* RPAREN
                    LPAREN715=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_FTStopWords16533); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    LPAREN715_tree = this.adaptor.create(LPAREN715);
                    this.adaptor.addChild(root_0, LPAREN715_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_FTStopWords16535);
                    p_StringLiteral716=this.p_StringLiteral();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral716.getTree());
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1992:35: ( COMMA p_StringLiteral )*
                    loop244:
                    do {
                        var alt244=2;
                        var LA244_0 = this.input.LA(1);

                        if ( (LA244_0==COMMA) ) {
                            alt244=1;
                        }


                        switch (alt244) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1992:36: COMMA p_StringLiteral
                            COMMA717=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_FTStopWords16538); if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) {
                            COMMA717_tree = this.adaptor.create(COMMA717);
                            this.adaptor.addChild(root_0, COMMA717_tree);
                            }
                            this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_FTStopWords16540);
                            p_StringLiteral718=this.p_StringLiteral();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral718.getTree());


                            break;

                        default :
                            break loop244;
                        }
                    } while (true);

                    RPAREN719=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_FTStopWords16544); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    RPAREN719_tree = this.adaptor.create(RPAREN719);
                    this.adaptor.addChild(root_0, RPAREN719_tree);
                    }





                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTStopWordsInclExcl_return: (function() {
        XQueryParser.p_FTStopWordsInclExcl_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTStopWordsInclExcl_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1996:1: p_FTStopWordsInclExcl : ( (k+= UNION | k+= EXCEPT ) p_FTStopWords ) ;
    // $ANTLR start "p_FTStopWordsInclExcl"
    p_FTStopWordsInclExcl: function() {
        var retval = new XQueryParser.p_FTStopWordsInclExcl_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var list_k=null;
         var p_FTStopWords720 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1997:9: ( ( (k+= UNION | k+= EXCEPT ) p_FTStopWords ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1997:11: ( (k+= UNION | k+= EXCEPT ) p_FTStopWords )
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1997:11: ( (k+= UNION | k+= EXCEPT ) p_FTStopWords )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1997:13: (k+= UNION | k+= EXCEPT ) p_FTStopWords
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1997:13: (k+= UNION | k+= EXCEPT )
            var alt246=2;
            var LA246_0 = this.input.LA(1);

            if ( (LA246_0==UNION) ) {
                alt246=1;
            }
            else if ( (LA246_0==EXCEPT) ) {
                alt246=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 246, 0, this.input);

                throw nvae;
            }
            switch (alt246) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1997:14: k+= UNION
                    k=this.match(this.input,UNION,XQueryParser.FOLLOW_UNION_in_p_FTStopWordsInclExcl16576); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);



                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1997:25: k+= EXCEPT
                    k=this.match(this.input,EXCEPT,XQueryParser.FOLLOW_EXCEPT_in_p_FTStopWordsInclExcl16582); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);



                    break;

            }

            this.pushFollow(XQueryParser.FOLLOW_p_FTStopWords_in_p_FTStopWordsInclExcl16585);
            p_FTStopWords720=this.p_FTStopWords();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_FTStopWords720.getTree());



            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTLanguageOption_return: (function() {
        XQueryParser.p_FTLanguageOption_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTLanguageOption_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2001:1: p_FTLanguageOption : kl= LANGUAGE p_StringLiteral ;
    // $ANTLR start "p_FTLanguageOption"
    p_FTLanguageOption: function() {
        var retval = new XQueryParser.p_FTLanguageOption_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var kl = null;
         var p_StringLiteral721 = null;

        var kl_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2002:9: (kl= LANGUAGE p_StringLiteral )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2002:11: kl= LANGUAGE p_StringLiteral
            root_0 = this.adaptor.nil();

            kl=this.match(this.input,LANGUAGE,XQueryParser.FOLLOW_LANGUAGE_in_p_FTLanguageOption16617); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            kl_tree = this.adaptor.create(kl);
            this.adaptor.addChild(root_0, kl_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(kl);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_FTLanguageOption16621);
            p_StringLiteral721=this.p_StringLiteral();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral721.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTWildCardOption_return: (function() {
        XQueryParser.p_FTWildCardOption_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTWildCardOption_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2006:1: p_FTWildCardOption : (k+= WILDCARDS | (k+= NO k+= WILDCARDS ) ) ;
    // $ANTLR start "p_FTWildCardOption"
    p_FTWildCardOption: function() {
        var retval = new XQueryParser.p_FTWildCardOption_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var list_k=null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2007:9: ( (k+= WILDCARDS | (k+= NO k+= WILDCARDS ) ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2007:11: (k+= WILDCARDS | (k+= NO k+= WILDCARDS ) )
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2007:11: (k+= WILDCARDS | (k+= NO k+= WILDCARDS ) )
            var alt247=2;
            var LA247_0 = this.input.LA(1);

            if ( (LA247_0==WILDCARDS) ) {
                alt247=1;
            }
            else if ( (LA247_0==NO) ) {
                alt247=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 247, 0, this.input);

                throw nvae;
            }
            switch (alt247) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2007:13: k+= WILDCARDS
                    k=this.match(this.input,WILDCARDS,XQueryParser.FOLLOW_WILDCARDS_in_p_FTWildCardOption16651); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);



                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2007:28: (k+= NO k+= WILDCARDS )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2007:28: (k+= NO k+= WILDCARDS )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2007:29: k+= NO k+= WILDCARDS
                    k=this.match(this.input,NO,XQueryParser.FOLLOW_NO_in_p_FTWildCardOption16658); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);

                    k=this.match(this.input,WILDCARDS,XQueryParser.FOLLOW_WILDCARDS_in_p_FTWildCardOption16662); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if (org.antlr.lang.isNull(list_k)) list_k = [];
                    list_k.push(k);






                    break;

            }

            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTExtensionOption_return: (function() {
        XQueryParser.p_FTExtensionOption_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTExtensionOption_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2011:1: p_FTExtensionOption : ko= OPTION p_QName p_StringLiteral ;
    // $ANTLR start "p_FTExtensionOption"
    p_FTExtensionOption: function() {
        var retval = new XQueryParser.p_FTExtensionOption_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var ko = null;
         var p_QName722 = null;
         var p_StringLiteral723 = null;

        var ko_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2012:9: (ko= OPTION p_QName p_StringLiteral )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2012:11: ko= OPTION p_QName p_StringLiteral
            root_0 = this.adaptor.nil();

            ko=this.match(this.input,OPTION,XQueryParser.FOLLOW_OPTION_in_p_FTExtensionOption16695); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            ko_tree = this.adaptor.create(ko);
            this.adaptor.addChild(root_0, ko_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(ko);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_QName_in_p_FTExtensionOption16699);
            p_QName722=this.p_QName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_QName722.getTree());
            this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_FTExtensionOption16701);
            p_StringLiteral723=this.p_StringLiteral();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral723.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FTIgnoreOption_return: (function() {
        XQueryParser.p_FTIgnoreOption_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FTIgnoreOption_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2016:1: p_FTIgnoreOption : k+= WITHOUT k+= CONTENT p_UnionExpr ;
    // $ANTLR start "p_FTIgnoreOption"
    p_FTIgnoreOption: function() {
        var retval = new XQueryParser.p_FTIgnoreOption_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var list_k=null;
         var p_UnionExpr724 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2017:9: (k+= WITHOUT k+= CONTENT p_UnionExpr )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2017:11: k+= WITHOUT k+= CONTENT p_UnionExpr
            root_0 = this.adaptor.nil();

            k=this.match(this.input,WITHOUT,XQueryParser.FOLLOW_WITHOUT_in_p_FTIgnoreOption16729); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            k=this.match(this.input,CONTENT,XQueryParser.FOLLOW_CONTENT_in_p_FTIgnoreOption16733); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if (org.antlr.lang.isNull(list_k)) list_k = [];
            list_k.push(k);

            if ( this.state.backtracking===0 ) {
              this.ak(list_k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_UnionExpr_in_p_FTIgnoreOption16737);
            p_UnionExpr724=this.p_UnionExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_UnionExpr724.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_Program_return: (function() {
        XQueryParser.p_Program_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_Program_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2027:1: p_Program : p_StatementsAndOptionalExpr ;
    // $ANTLR start "p_Program"
    p_Program: function() {
        var retval = new XQueryParser.p_Program_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_StatementsAndOptionalExpr725 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2028:9: ( p_StatementsAndOptionalExpr )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2028:11: p_StatementsAndOptionalExpr
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_StatementsAndOptionalExpr_in_p_Program16769);
            p_StatementsAndOptionalExpr725=this.p_StatementsAndOptionalExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StatementsAndOptionalExpr725.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_Statements_return: (function() {
        XQueryParser.p_Statements_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_Statements_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2032:1: p_Statements[strict] : ( p_Hybrid[$strict,true] )* ;
    // $ANTLR start "p_Statements"
    p_Statements: function(strict) {
        var retval = new XQueryParser.p_Statements_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_Hybrid726 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2033:9: ( ( p_Hybrid[$strict,true] )* )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2033:11: ( p_Hybrid[$strict,true] )*
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2033:11: ( p_Hybrid[$strict,true] )*
            loop248:
            do {
                var alt248=2;
                var LA248_0 = this.input.LA(1);

                if ( ((LA248_0>=ANCESTOR && LA248_0<=QUOT_ER)||LA248_0==LPAREN||(LA248_0>=DOLLAR && LA248_0<=L_UNION_BRACKET)||LA248_0==LBRACKET||LA248_0==LSQUARE||LA248_0==ANN_PERCENT||(LA248_0>=STAR && LA248_0<=SMALLER)||(LA248_0>=SLASH && LA248_0<=SLASH_SLASH)||(LA248_0>=DOT && LA248_0<=DOT_DOT)||(LA248_0>=ATTR_SIGN && LA248_0<=Q)||(LA248_0>=APOS && LA248_0<=QUOT)||LA248_0==L_NCName||(LA248_0>=L_Pragma && LA248_0<=L_DoubleLiteral)) ) {
                    alt248=1;
                }


                switch (alt248) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2033:11: p_Hybrid[$strict,true]
                    this.pushFollow(XQueryParser.FOLLOW_p_Hybrid_in_p_Statements16796);
                    p_Hybrid726=this.p_Hybrid(strict, true);

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Hybrid726.getTree());


                    break;

                default :
                    break loop248;
                }
            } while (true);




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_StatementsAndExpr_return: (function() {
        XQueryParser.p_StatementsAndExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_StatementsAndExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2037:1: p_StatementsAndExpr : p_Statements[false] ;
    // $ANTLR start "p_StatementsAndExpr"
    p_StatementsAndExpr: function() {
        var retval = new XQueryParser.p_StatementsAndExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_Statements727 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2038:9: ( p_Statements[false] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2038:11: p_Statements[false]
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_Statements_in_p_StatementsAndExpr16824);
            p_Statements727=this.p_Statements(false);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Statements727.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_StatementsAndOptionalExpr_return: (function() {
        XQueryParser.p_StatementsAndOptionalExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_StatementsAndOptionalExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2042:1: p_StatementsAndOptionalExpr : p_Statements[false] ;
    // $ANTLR start "p_StatementsAndOptionalExpr"
    p_StatementsAndOptionalExpr: function() {
        var retval = new XQueryParser.p_StatementsAndOptionalExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_Statements728 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2043:9: ( p_Statements[false] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2043:11: p_Statements[false]
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_Statements_in_p_StatementsAndOptionalExpr16851);
            p_Statements728=this.p_Statements(false);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Statements728.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_Hybrid_return: (function() {
        XQueryParser.p_Hybrid_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_Hybrid_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2046:1: p_Hybrid[strict, allowConcat] : ( p_HybridExprSingle[$strict,$allowConcat] | p_Statement );
    // $ANTLR start "p_Hybrid"
    p_Hybrid: function(strict, allowConcat) {
        var retval = new XQueryParser.p_Hybrid_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_HybridExprSingle729 = null;
         var p_Statement730 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2047:9: ( p_HybridExprSingle[$strict,$allowConcat] | p_Statement )
            var alt249=2;
            alt249 = this.dfa249.predict(this.input);
            switch (alt249) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2047:11: p_HybridExprSingle[$strict,$allowConcat]
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_HybridExprSingle_in_p_Hybrid16878);
                    p_HybridExprSingle729=this.p_HybridExprSingle(strict, allowConcat);

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_HybridExprSingle729.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2048:11: p_Statement
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_Statement_in_p_Hybrid16891);
                    p_Statement730=this.p_Statement();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Statement730.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {

              if(re instanceof org.antlr.runtime.RecognitionException) {
                //console.log("catch3");
                var v = this.p_StepExpr();
                root_0 = this.adaptor.nil();
                this.adaptor.addChild(root_0, v.getTree());
                retval.stop = this.input.LT(-1);
                retval.tree = this.adaptor.rulePostProcessing(root_0);
                this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
              } else {
                throw re;
              }

        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_Statement_return: (function() {
        XQueryParser.p_Statement_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_Statement_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2064:1: p_Statement : ( p_AssignStatement | p_BreakStatement | p_ContinueStatement | p_ExitStatement | p_VarDeclStatement | p_WhileStatement );
    // $ANTLR start "p_Statement"
    p_Statement: function() {
        var retval = new XQueryParser.p_Statement_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_AssignStatement731 = null;
         var p_BreakStatement732 = null;
         var p_ContinueStatement733 = null;
         var p_ExitStatement734 = null;
         var p_VarDeclStatement735 = null;
         var p_WhileStatement736 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2065:9: ( p_AssignStatement | p_BreakStatement | p_ContinueStatement | p_ExitStatement | p_VarDeclStatement | p_WhileStatement )
            var alt250=6;
            switch ( this.input.LA(1) ) {
            case DOLLAR:
                alt250=1;
                break;
            case BREAK:
                alt250=2;
                break;
            case CONTINUE:
                alt250=3;
                break;
            case EXIT:
                alt250=4;
                break;
            case VARIABLE:
            case ANN_PERCENT:
                alt250=5;
                break;
            case WHILE:
                alt250=6;
                break;
            default:
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 250, 0, this.input);

                throw nvae;
            }

            switch (alt250) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2065:11: p_AssignStatement
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_AssignStatement_in_p_Statement16922);
                    p_AssignStatement731=this.p_AssignStatement();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AssignStatement731.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2066:11: p_BreakStatement
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_BreakStatement_in_p_Statement16934);
                    p_BreakStatement732=this.p_BreakStatement();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_BreakStatement732.getTree());


                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2067:11: p_ContinueStatement
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_ContinueStatement_in_p_Statement16946);
                    p_ContinueStatement733=this.p_ContinueStatement();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ContinueStatement733.getTree());


                    break;
                case 4 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2068:11: p_ExitStatement
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_ExitStatement_in_p_Statement16958);
                    p_ExitStatement734=this.p_ExitStatement();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExitStatement734.getTree());


                    break;
                case 5 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2069:11: p_VarDeclStatement
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_VarDeclStatement_in_p_Statement16970);
                    p_VarDeclStatement735=this.p_VarDeclStatement();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_VarDeclStatement735.getTree());


                    break;
                case 6 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2070:11: p_WhileStatement
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_WhileStatement_in_p_Statement16982);
                    p_WhileStatement736=this.p_WhileStatement();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_WhileStatement736.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_HybridExprSingle_return: (function() {
        XQueryParser.p_HybridExprSingle_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_HybridExprSingle_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2072:1: p_HybridExprSingle[strict, allowConcat] : e= p_Expr[$strict,$allowConcat] SEMICOLON ;
    // $ANTLR start "p_HybridExprSingle"
    p_HybridExprSingle: function(strict, allowConcat) {
        var retval = new XQueryParser.p_HybridExprSingle_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var SEMICOLON737 = null;
         var e = null;

        var SEMICOLON737_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2073:9: (e= p_Expr[$strict,$allowConcat] SEMICOLON )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2073:11: e= p_Expr[$strict,$allowConcat] SEMICOLON
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_HybridExprSingle17009);
            e=this.p_Expr(strict, allowConcat);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, e.getTree());
            if ( this.state.backtracking===0 ) {
               if (strict || this.input.LT(1).getType() != SEMICOLON) throw new org.antlr.runtime.RecognitionException(this.input); 
            }
            SEMICOLON737=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_p_HybridExprSingle17024); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            SEMICOLON737_tree = this.adaptor.create(SEMICOLON737);
            this.adaptor.addChild(root_0, SEMICOLON737_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {

                if(re instanceof org.antlr.runtime.RecognitionException) {
                  //console.log("catch4");
                  if(this.input.LT(1).getType() == COLON) {
                    var v = this.p_PairConstructor();
                    root_0 = this.adaptor.nil();
                    this.adaptor.addChild(root_0, v.getTree());
                    retval.stop = this.input.LT(-1);
                    retval.tree = this.adaptor.rulePostProcessing(root_0);
                    this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
                  } else {
                    root_0 = this.adaptor.nil();
                    this.adaptor.addChild(root_0, e.getTree());
                    retval.stop = this.input.LT(-1);
                    retval.tree = this.adaptor.rulePostProcessing(root_0);
                    this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
                  }
                } else {
                  throw re;
                }

        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ApplyStatement_return: (function() {
        XQueryParser.p_ApplyStatement_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ApplyStatement_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2117:1: p_ApplyStatement : p_ExprSimple SEMICOLON ;
    // $ANTLR start "p_ApplyStatement"
    p_ApplyStatement: function() {
        var retval = new XQueryParser.p_ApplyStatement_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var SEMICOLON739 = null;
         var p_ExprSimple738 = null;

        var SEMICOLON739_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2118:9: ( p_ExprSimple SEMICOLON )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2118:11: p_ExprSimple SEMICOLON
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_ExprSimple_in_p_ApplyStatement17074);
            p_ExprSimple738=this.p_ExprSimple();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSimple738.getTree());
            SEMICOLON739=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_p_ApplyStatement17076); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            SEMICOLON739_tree = this.adaptor.create(SEMICOLON739);
            this.adaptor.addChild(root_0, SEMICOLON739_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_AssignStatement_return: (function() {
        XQueryParser.p_AssignStatement_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_AssignStatement_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2122:1: p_AssignStatement : d= DOLLAR v= p_VarName BIND p_ExprSingle[true] SEMICOLON ;
    // $ANTLR start "p_AssignStatement"
    p_AssignStatement: function() {
        var retval = new XQueryParser.p_AssignStatement_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var d = null;
        var BIND740 = null;
        var SEMICOLON742 = null;
         var v = null;
         var p_ExprSingle741 = null;

        var d_tree=null;
        var BIND740_tree=null;
        var SEMICOLON742_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2123:9: (d= DOLLAR v= p_VarName BIND p_ExprSingle[true] SEMICOLON )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2123:11: d= DOLLAR v= p_VarName BIND p_ExprSingle[true] SEMICOLON
            root_0 = this.adaptor.nil();

            d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_AssignStatement17104); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            d_tree = this.adaptor.create(d);
            this.adaptor.addChild(root_0, d_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_AssignStatement17108);
            v=this.p_VarName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
            if ( this.state.backtracking===0 ) {
               this.av(d, (v?v.stop:null)); 
            }
            BIND740=this.match(this.input,BIND,XQueryParser.FOLLOW_BIND_in_p_AssignStatement17112); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            BIND740_tree = this.adaptor.create(BIND740);
            this.adaptor.addChild(root_0, BIND740_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_AssignStatement17114);
            p_ExprSingle741=this.p_ExprSingle(true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle741.getTree());
            SEMICOLON742=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_p_AssignStatement17117); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            SEMICOLON742_tree = this.adaptor.create(SEMICOLON742);
            this.adaptor.addChild(root_0, SEMICOLON742_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_BlockStatement_return: (function() {
        XQueryParser.p_BlockStatement_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_BlockStatement_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2127:1: p_BlockStatement : LBRACKET p_Statements[false] RBRACKET ;
    // $ANTLR start "p_BlockStatement"
    p_BlockStatement: function() {
        var retval = new XQueryParser.p_BlockStatement_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var LBRACKET743 = null;
        var RBRACKET745 = null;
         var p_Statements744 = null;

        var LBRACKET743_tree=null;
        var RBRACKET745_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2128:9: ( LBRACKET p_Statements[false] RBRACKET )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2128:11: LBRACKET p_Statements[false] RBRACKET
            root_0 = this.adaptor.nil();

            LBRACKET743=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_BlockStatement17143); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LBRACKET743_tree = this.adaptor.create(LBRACKET743);
            this.adaptor.addChild(root_0, LBRACKET743_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_Statements_in_p_BlockStatement17145);
            p_Statements744=this.p_Statements(false);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Statements744.getTree());
            RBRACKET745=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_BlockStatement17148); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RBRACKET745_tree = this.adaptor.create(RBRACKET745);
            this.adaptor.addChild(root_0, RBRACKET745_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_BlockHybrid_return: (function() {
        XQueryParser.p_BlockHybrid_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_BlockHybrid_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2131:1: p_BlockHybrid[strict] : LBRACKET p_Statements[$strict] RBRACKET ;
    // $ANTLR start "p_BlockHybrid"
    p_BlockHybrid: function(strict) {
        var retval = new XQueryParser.p_BlockHybrid_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var LBRACKET746 = null;
        var RBRACKET748 = null;
         var p_Statements747 = null;

        var LBRACKET746_tree=null;
        var RBRACKET748_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2132:9: ( LBRACKET p_Statements[$strict] RBRACKET )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2132:11: LBRACKET p_Statements[$strict] RBRACKET
            root_0 = this.adaptor.nil();

            LBRACKET746=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_BlockHybrid17174); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LBRACKET746_tree = this.adaptor.create(LBRACKET746);
            this.adaptor.addChild(root_0, LBRACKET746_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_Statements_in_p_BlockHybrid17176);
            p_Statements747=this.p_Statements(strict);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Statements747.getTree());
            RBRACKET748=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_BlockHybrid17179); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RBRACKET748_tree = this.adaptor.create(RBRACKET748);
            this.adaptor.addChild(root_0, RBRACKET748_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_BreakStatement_return: (function() {
        XQueryParser.p_BreakStatement_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_BreakStatement_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2136:1: p_BreakStatement : k= BREAK k= LOOP SEMICOLON ;
    // $ANTLR start "p_BreakStatement"
    p_BreakStatement: function() {
        var retval = new XQueryParser.p_BreakStatement_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var SEMICOLON749 = null;

        var k_tree=null;
        var SEMICOLON749_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2137:9: (k= BREAK k= LOOP SEMICOLON )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2137:11: k= BREAK k= LOOP SEMICOLON
            root_0 = this.adaptor.nil();

            k=this.match(this.input,BREAK,XQueryParser.FOLLOW_BREAK_in_p_BreakStatement17207); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,LOOP,XQueryParser.FOLLOW_LOOP_in_p_BreakStatement17213); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            SEMICOLON749=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_p_BreakStatement17217); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            SEMICOLON749_tree = this.adaptor.create(SEMICOLON749);
            this.adaptor.addChild(root_0, SEMICOLON749_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ContinueStatement_return: (function() {
        XQueryParser.p_ContinueStatement_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ContinueStatement_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2141:1: p_ContinueStatement : k= CONTINUE k= LOOP SEMICOLON ;
    // $ANTLR start "p_ContinueStatement"
    p_ContinueStatement: function() {
        var retval = new XQueryParser.p_ContinueStatement_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var SEMICOLON750 = null;

        var k_tree=null;
        var SEMICOLON750_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2142:9: (k= CONTINUE k= LOOP SEMICOLON )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2142:11: k= CONTINUE k= LOOP SEMICOLON
            root_0 = this.adaptor.nil();

            k=this.match(this.input,CONTINUE,XQueryParser.FOLLOW_CONTINUE_in_p_ContinueStatement17245); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,LOOP,XQueryParser.FOLLOW_LOOP_in_p_ContinueStatement17251); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            SEMICOLON750=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_p_ContinueStatement17255); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            SEMICOLON750_tree = this.adaptor.create(SEMICOLON750);
            this.adaptor.addChild(root_0, SEMICOLON750_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ExitStatement_return: (function() {
        XQueryParser.p_ExitStatement_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ExitStatement_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2146:1: p_ExitStatement : k= EXIT k= RETURNING p_ExprSingle[true] SEMICOLON ;
    // $ANTLR start "p_ExitStatement"
    p_ExitStatement: function() {
        var retval = new XQueryParser.p_ExitStatement_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var SEMICOLON752 = null;
         var p_ExprSingle751 = null;

        var k_tree=null;
        var SEMICOLON752_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2147:9: (k= EXIT k= RETURNING p_ExprSingle[true] SEMICOLON )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2147:11: k= EXIT k= RETURNING p_ExprSingle[true] SEMICOLON
            root_0 = this.adaptor.nil();

            k=this.match(this.input,EXIT,XQueryParser.FOLLOW_EXIT_in_p_ExitStatement17283); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,RETURNING,XQueryParser.FOLLOW_RETURNING_in_p_ExitStatement17289); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_ExitStatement17293);
            p_ExprSingle751=this.p_ExprSingle(true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle751.getTree());
            SEMICOLON752=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_p_ExitStatement17296); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            SEMICOLON752_tree = this.adaptor.create(SEMICOLON752);
            this.adaptor.addChild(root_0, SEMICOLON752_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_FLWORStatement_return: (function() {
        XQueryParser.p_FLWORStatement_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_FLWORStatement_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2151:1: p_FLWORStatement : p_InitialClause ( p_IntermediateClause )* p_ReturnStatement ;
    // $ANTLR start "p_FLWORStatement"
    p_FLWORStatement: function() {
        var retval = new XQueryParser.p_FLWORStatement_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_InitialClause753 = null;
         var p_IntermediateClause754 = null;
         var p_ReturnStatement755 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2152:9: ( p_InitialClause ( p_IntermediateClause )* p_ReturnStatement )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2152:11: p_InitialClause ( p_IntermediateClause )* p_ReturnStatement
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_InitialClause_in_p_FLWORStatement17322);
            p_InitialClause753=this.p_InitialClause();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_InitialClause753.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2152:27: ( p_IntermediateClause )*
            loop251:
            do {
                var alt251=2;
                var LA251_0 = this.input.LA(1);

                if ( (LA251_0==FOR||LA251_0==LET||LA251_0==ORDER||LA251_0==STABLE||LA251_0==WHERE||LA251_0==COUNT||LA251_0==GROUP) ) {
                    alt251=1;
                }


                switch (alt251) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2152:27: p_IntermediateClause
                    this.pushFollow(XQueryParser.FOLLOW_p_IntermediateClause_in_p_FLWORStatement17324);
                    p_IntermediateClause754=this.p_IntermediateClause();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_IntermediateClause754.getTree());


                    break;

                default :
                    break loop251;
                }
            } while (true);

            this.pushFollow(XQueryParser.FOLLOW_p_ReturnStatement_in_p_FLWORStatement17327);
            p_ReturnStatement755=this.p_ReturnStatement();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ReturnStatement755.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ReturnStatement_return: (function() {
        XQueryParser.p_ReturnStatement_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ReturnStatement_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2156:1: p_ReturnStatement : k= RETURN p_Hybrid[false,false] ;
    // $ANTLR start "p_ReturnStatement"
    p_ReturnStatement: function() {
        var retval = new XQueryParser.p_ReturnStatement_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
         var p_Hybrid756 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2157:9: (k= RETURN p_Hybrid[false,false] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2157:11: k= RETURN p_Hybrid[false,false]
            root_0 = this.adaptor.nil();

            k=this.match(this.input,RETURN,XQueryParser.FOLLOW_RETURN_in_p_ReturnStatement17359); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_Hybrid_in_p_ReturnStatement17363);
            p_Hybrid756=this.p_Hybrid(false, false);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Hybrid756.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_IfStatement_return: (function() {
        XQueryParser.p_IfStatement_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_IfStatement_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2161:1: p_IfStatement : k= IF LPAREN p_Expr[true,true] RPAREN k= THEN p_Hybrid[false,false] k= ELSE p_Hybrid[false,false] ;
    // $ANTLR start "p_IfStatement"
    p_IfStatement: function() {
        var retval = new XQueryParser.p_IfStatement_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var LPAREN757 = null;
        var RPAREN759 = null;
         var p_Expr758 = null;
         var p_Hybrid760 = null;
         var p_Hybrid761 = null;

        var k_tree=null;
        var LPAREN757_tree=null;
        var RPAREN759_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2162:9: (k= IF LPAREN p_Expr[true,true] RPAREN k= THEN p_Hybrid[false,false] k= ELSE p_Hybrid[false,false] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2162:11: k= IF LPAREN p_Expr[true,true] RPAREN k= THEN p_Hybrid[false,false] k= ELSE p_Hybrid[false,false]
            root_0 = this.adaptor.nil();

            k=this.match(this.input,IF,XQueryParser.FOLLOW_IF_in_p_IfStatement17392); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            LPAREN757=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_IfStatement17396); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LPAREN757_tree = this.adaptor.create(LPAREN757);
            this.adaptor.addChild(root_0, LPAREN757_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_IfStatement17398);
            p_Expr758=this.p_Expr(true, true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr758.getTree());
            RPAREN759=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_IfStatement17401); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RPAREN759_tree = this.adaptor.create(RPAREN759);
            this.adaptor.addChild(root_0, RPAREN759_tree);
            }
            k=this.match(this.input,THEN,XQueryParser.FOLLOW_THEN_in_p_IfStatement17405); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_Hybrid_in_p_IfStatement17409);
            p_Hybrid760=this.p_Hybrid(false, false);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Hybrid760.getTree());
            k=this.match(this.input,ELSE,XQueryParser.FOLLOW_ELSE_in_p_IfStatement17414); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_Hybrid_in_p_IfStatement17418);
            p_Hybrid761=this.p_Hybrid(false, false);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Hybrid761.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_SwitchStatement_return: (function() {
        XQueryParser.p_SwitchStatement_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_SwitchStatement_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2166:1: p_SwitchStatement : k= SWITCH LPAREN p_Expr[true,true] RPAREN ( p_SwitchCaseStatement )+ k= DEFAULT k= RETURN p_Hybrid[false,false] ;
    // $ANTLR start "p_SwitchStatement"
    p_SwitchStatement: function() {
        var retval = new XQueryParser.p_SwitchStatement_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var LPAREN762 = null;
        var RPAREN764 = null;
         var p_Expr763 = null;
         var p_SwitchCaseStatement765 = null;
         var p_Hybrid766 = null;

        var k_tree=null;
        var LPAREN762_tree=null;
        var RPAREN764_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2167:9: (k= SWITCH LPAREN p_Expr[true,true] RPAREN ( p_SwitchCaseStatement )+ k= DEFAULT k= RETURN p_Hybrid[false,false] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2167:11: k= SWITCH LPAREN p_Expr[true,true] RPAREN ( p_SwitchCaseStatement )+ k= DEFAULT k= RETURN p_Hybrid[false,false]
            root_0 = this.adaptor.nil();

            k=this.match(this.input,SWITCH,XQueryParser.FOLLOW_SWITCH_in_p_SwitchStatement17447); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            LPAREN762=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_SwitchStatement17451); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LPAREN762_tree = this.adaptor.create(LPAREN762);
            this.adaptor.addChild(root_0, LPAREN762_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_SwitchStatement17453);
            p_Expr763=this.p_Expr(true, true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr763.getTree());
            RPAREN764=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_SwitchStatement17456); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RPAREN764_tree = this.adaptor.create(RPAREN764);
            this.adaptor.addChild(root_0, RPAREN764_tree);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2167:67: ( p_SwitchCaseStatement )+
            var cnt252=0;
            loop252:
            do {
                var alt252=2;
                var LA252_0 = this.input.LA(1);

                if ( (LA252_0==CASE) ) {
                    alt252=1;
                }


                switch (alt252) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2167:67: p_SwitchCaseStatement
                    this.pushFollow(XQueryParser.FOLLOW_p_SwitchCaseStatement_in_p_SwitchStatement17458);
                    p_SwitchCaseStatement765=this.p_SwitchCaseStatement();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SwitchCaseStatement765.getTree());


                    break;

                default :
                    if ( cnt252 >= 1 ) {
                        break loop252;
                    }
                    if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        var eee = new org.antlr.runtime.EarlyExitException(252, this.input);
                        throw eee;
                }
                cnt252++;
            } while (true);

            k=this.match(this.input,DEFAULT,XQueryParser.FOLLOW_DEFAULT_in_p_SwitchStatement17463); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,RETURN,XQueryParser.FOLLOW_RETURN_in_p_SwitchStatement17469); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_Hybrid_in_p_SwitchStatement17473);
            p_Hybrid766=this.p_Hybrid(false, false);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Hybrid766.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_SwitchCaseStatement_return: (function() {
        XQueryParser.p_SwitchCaseStatement_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_SwitchCaseStatement_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2171:1: p_SwitchCaseStatement : (k= CASE p_SwitchCaseOperand )+ k= RETURN p_Hybrid[false,false] ;
    // $ANTLR start "p_SwitchCaseStatement"
    p_SwitchCaseStatement: function() {
        var retval = new XQueryParser.p_SwitchCaseStatement_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
         var p_SwitchCaseOperand767 = null;
         var p_Hybrid768 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2172:9: ( (k= CASE p_SwitchCaseOperand )+ k= RETURN p_Hybrid[false,false] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2172:11: (k= CASE p_SwitchCaseOperand )+ k= RETURN p_Hybrid[false,false]
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2172:11: (k= CASE p_SwitchCaseOperand )+
            var cnt253=0;
            loop253:
            do {
                var alt253=2;
                var LA253_0 = this.input.LA(1);

                if ( (LA253_0==CASE) ) {
                    alt253=1;
                }


                switch (alt253) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2172:12: k= CASE p_SwitchCaseOperand
                    k=this.match(this.input,CASE,XQueryParser.FOLLOW_CASE_in_p_SwitchCaseStatement17503); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_SwitchCaseOperand_in_p_SwitchCaseStatement17507);
                    p_SwitchCaseOperand767=this.p_SwitchCaseOperand();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SwitchCaseOperand767.getTree());


                    break;

                default :
                    if ( cnt253 >= 1 ) {
                        break loop253;
                    }
                    if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        var eee = new org.antlr.runtime.EarlyExitException(253, this.input);
                        throw eee;
                }
                cnt253++;
            } while (true);

            k=this.match(this.input,RETURN,XQueryParser.FOLLOW_RETURN_in_p_SwitchCaseStatement17513); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_Hybrid_in_p_SwitchCaseStatement17517);
            p_Hybrid768=this.p_Hybrid(false, false);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Hybrid768.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_TryCatchStatement_return: (function() {
        XQueryParser.p_TryCatchStatement_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_TryCatchStatement_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2176:1: p_TryCatchStatement : k= TRY p_BlockStatement (k= CATCH p_CatchErrorList p_BlockStatement )+ ;
    // $ANTLR start "p_TryCatchStatement"
    p_TryCatchStatement: function() {
        var retval = new XQueryParser.p_TryCatchStatement_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
         var p_BlockStatement769 = null;
         var p_CatchErrorList770 = null;
         var p_BlockStatement771 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2177:9: (k= TRY p_BlockStatement (k= CATCH p_CatchErrorList p_BlockStatement )+ )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2177:11: k= TRY p_BlockStatement (k= CATCH p_CatchErrorList p_BlockStatement )+
            root_0 = this.adaptor.nil();

            k=this.match(this.input,TRY,XQueryParser.FOLLOW_TRY_in_p_TryCatchStatement17546); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_BlockStatement_in_p_TryCatchStatement17550);
            p_BlockStatement769=this.p_BlockStatement();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_BlockStatement769.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2177:49: (k= CATCH p_CatchErrorList p_BlockStatement )+
            var cnt254=0;
            loop254:
            do {
                var alt254=2;
                var LA254_0 = this.input.LA(1);

                if ( (LA254_0==CATCH) ) {
                    alt254=1;
                }


                switch (alt254) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2177:50: k= CATCH p_CatchErrorList p_BlockStatement
                    k=this.match(this.input,CATCH,XQueryParser.FOLLOW_CATCH_in_p_TryCatchStatement17555); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_CatchErrorList_in_p_TryCatchStatement17559);
                    p_CatchErrorList770=this.p_CatchErrorList();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_CatchErrorList770.getTree());
                    this.pushFollow(XQueryParser.FOLLOW_p_BlockStatement_in_p_TryCatchStatement17561);
                    p_BlockStatement771=this.p_BlockStatement();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_BlockStatement771.getTree());


                    break;

                default :
                    if ( cnt254 >= 1 ) {
                        break loop254;
                    }
                    if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        var eee = new org.antlr.runtime.EarlyExitException(254, this.input);
                        throw eee;
                }
                cnt254++;
            } while (true);

            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_TryCatchHybrid_return: (function() {
        XQueryParser.p_TryCatchHybrid_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_TryCatchHybrid_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2180:1: p_TryCatchHybrid[strict] : k= TRY p_BlockHybrid[$strict] (k= CATCH p_CatchErrorList p_BlockHybrid[$strict] )+ ;
    // $ANTLR start "p_TryCatchHybrid"
    p_TryCatchHybrid: function(strict) {
        var retval = new XQueryParser.p_TryCatchHybrid_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
         var p_BlockHybrid772 = null;
         var p_CatchErrorList773 = null;
         var p_BlockHybrid774 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2181:9: (k= TRY p_BlockHybrid[$strict] (k= CATCH p_CatchErrorList p_BlockHybrid[$strict] )+ )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2181:11: k= TRY p_BlockHybrid[$strict] (k= CATCH p_CatchErrorList p_BlockHybrid[$strict] )+
            root_0 = this.adaptor.nil();

            k=this.match(this.input,TRY,XQueryParser.FOLLOW_TRY_in_p_TryCatchHybrid17593); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_BlockHybrid_in_p_TryCatchHybrid17597);
            p_BlockHybrid772=this.p_BlockHybrid(strict);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_BlockHybrid772.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2181:55: (k= CATCH p_CatchErrorList p_BlockHybrid[$strict] )+
            var cnt255=0;
            loop255:
            do {
                var alt255=2;
                var LA255_0 = this.input.LA(1);

                if ( (LA255_0==CATCH) ) {
                    alt255=1;
                }


                switch (alt255) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2181:56: k= CATCH p_CatchErrorList p_BlockHybrid[$strict]
                    k=this.match(this.input,CATCH,XQueryParser.FOLLOW_CATCH_in_p_TryCatchHybrid17603); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    k_tree = this.adaptor.create(k);
                    this.adaptor.addChild(root_0, k_tree);
                    }
                    if ( this.state.backtracking===0 ) {
                      this.ak(k);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_CatchErrorList_in_p_TryCatchHybrid17607);
                    p_CatchErrorList773=this.p_CatchErrorList();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_CatchErrorList773.getTree());
                    this.pushFollow(XQueryParser.FOLLOW_p_BlockHybrid_in_p_TryCatchHybrid17609);
                    p_BlockHybrid774=this.p_BlockHybrid(strict);

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_BlockHybrid774.getTree());


                    break;

                default :
                    if ( cnt255 >= 1 ) {
                        break loop255;
                    }
                    if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        var eee = new org.antlr.runtime.EarlyExitException(255, this.input);
                        throw eee;
                }
                cnt255++;
            } while (true);

            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_TypeswitchStatement_return: (function() {
        XQueryParser.p_TypeswitchStatement_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_TypeswitchStatement_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2185:1: p_TypeswitchStatement : k= TYPESWITCH LPAREN p_Expr[true,true] RPAREN ( p_CaseStatement )+ k= DEFAULT (d= DOLLAR v= p_VarName )? k= RETURN p_Hybrid[false,false] ;
    // $ANTLR start "p_TypeswitchStatement"
    p_TypeswitchStatement: function() {
        var retval = new XQueryParser.p_TypeswitchStatement_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var d = null;
        var LPAREN775 = null;
        var RPAREN777 = null;
         var v = null;
         var p_Expr776 = null;
         var p_CaseStatement778 = null;
         var p_Hybrid779 = null;

        var k_tree=null;
        var d_tree=null;
        var LPAREN775_tree=null;
        var RPAREN777_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2186:9: (k= TYPESWITCH LPAREN p_Expr[true,true] RPAREN ( p_CaseStatement )+ k= DEFAULT (d= DOLLAR v= p_VarName )? k= RETURN p_Hybrid[false,false] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2186:11: k= TYPESWITCH LPAREN p_Expr[true,true] RPAREN ( p_CaseStatement )+ k= DEFAULT (d= DOLLAR v= p_VarName )? k= RETURN p_Hybrid[false,false]
            root_0 = this.adaptor.nil();

            k=this.match(this.input,TYPESWITCH,XQueryParser.FOLLOW_TYPESWITCH_in_p_TypeswitchStatement17642); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            LPAREN775=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_TypeswitchStatement17646); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LPAREN775_tree = this.adaptor.create(LPAREN775);
            this.adaptor.addChild(root_0, LPAREN775_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_TypeswitchStatement17648);
            p_Expr776=this.p_Expr(true, true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr776.getTree());
            RPAREN777=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_TypeswitchStatement17651); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RPAREN777_tree = this.adaptor.create(RPAREN777);
            this.adaptor.addChild(root_0, RPAREN777_tree);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2186:71: ( p_CaseStatement )+
            var cnt256=0;
            loop256:
            do {
                var alt256=2;
                var LA256_0 = this.input.LA(1);

                if ( (LA256_0==CASE) ) {
                    alt256=1;
                }


                switch (alt256) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2186:71: p_CaseStatement
                    this.pushFollow(XQueryParser.FOLLOW_p_CaseStatement_in_p_TypeswitchStatement17653);
                    p_CaseStatement778=this.p_CaseStatement();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_CaseStatement778.getTree());


                    break;

                default :
                    if ( cnt256 >= 1 ) {
                        break loop256;
                    }
                    if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        var eee = new org.antlr.runtime.EarlyExitException(256, this.input);
                        throw eee;
                }
                cnt256++;
            } while (true);

            k=this.match(this.input,DEFAULT,XQueryParser.FOLLOW_DEFAULT_in_p_TypeswitchStatement17658); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2186:113: (d= DOLLAR v= p_VarName )?
            var alt257=2;
            var LA257_0 = this.input.LA(1);

            if ( (LA257_0==DOLLAR) ) {
                alt257=1;
            }
            switch (alt257) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2186:114: d= DOLLAR v= p_VarName
                    d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_TypeswitchStatement17665); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    d_tree = this.adaptor.create(d);
                    this.adaptor.addChild(root_0, d_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_TypeswitchStatement17669);
                    v=this.p_VarName();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
                    if ( this.state.backtracking===0 ) {
                       this.av(d, (v?v.stop:null)); 
                    }


                    break;

            }

            k=this.match(this.input,RETURN,XQueryParser.FOLLOW_RETURN_in_p_TypeswitchStatement17677); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_Hybrid_in_p_TypeswitchStatement17681);
            p_Hybrid779=this.p_Hybrid(false, false);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Hybrid779.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_CaseStatement_return: (function() {
        XQueryParser.p_CaseStatement_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_CaseStatement_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2190:1: p_CaseStatement : k= CASE (d= DOLLAR v= p_VarName AS )? p_SequenceType k= RETURN p_Hybrid[false,false] ;
    // $ANTLR start "p_CaseStatement"
    p_CaseStatement: function() {
        var retval = new XQueryParser.p_CaseStatement_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var d = null;
        var AS780 = null;
         var v = null;
         var p_SequenceType781 = null;
         var p_Hybrid782 = null;

        var k_tree=null;
        var d_tree=null;
        var AS780_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2191:9: (k= CASE (d= DOLLAR v= p_VarName AS )? p_SequenceType k= RETURN p_Hybrid[false,false] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2191:11: k= CASE (d= DOLLAR v= p_VarName AS )? p_SequenceType k= RETURN p_Hybrid[false,false]
            root_0 = this.adaptor.nil();

            k=this.match(this.input,CASE,XQueryParser.FOLLOW_CASE_in_p_CaseStatement17710); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2191:33: (d= DOLLAR v= p_VarName AS )?
            var alt258=2;
            var LA258_0 = this.input.LA(1);

            if ( (LA258_0==DOLLAR) ) {
                alt258=1;
            }
            switch (alt258) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2191:34: d= DOLLAR v= p_VarName AS
                    d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_CaseStatement17717); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    d_tree = this.adaptor.create(d);
                    this.adaptor.addChild(root_0, d_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_CaseStatement17721);
                    v=this.p_VarName();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
                    if ( this.state.backtracking===0 ) {
                       this.av(d, (v?v.stop:null)); 
                    }
                    AS780=this.match(this.input,AS,XQueryParser.FOLLOW_AS_in_p_CaseStatement17725); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    AS780_tree = this.adaptor.create(AS780);
                    this.adaptor.addChild(root_0, AS780_tree);
                    }


                    break;

            }

            this.pushFollow(XQueryParser.FOLLOW_p_SequenceType_in_p_CaseStatement17729);
            p_SequenceType781=this.p_SequenceType();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_SequenceType781.getTree());
            k=this.match(this.input,RETURN,XQueryParser.FOLLOW_RETURN_in_p_CaseStatement17733); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_Hybrid_in_p_CaseStatement17737);
            p_Hybrid782=this.p_Hybrid(false, false);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Hybrid782.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_VarDeclStatement_return: (function() {
        XQueryParser.p_VarDeclStatement_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_VarDeclStatement_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2195:1: p_VarDeclStatement : ( p_Annotation )* k= VARIABLE d= DOLLAR v= p_VarName ( p_TypeDeclaration )? ( BIND p_ExprSingle[true] )? ( COMMA e= DOLLAR w= p_VarName ( p_TypeDeclaration )? ( BIND p_ExprSingle[true] )? )* SEMICOLON ;
    // $ANTLR start "p_VarDeclStatement"
    p_VarDeclStatement: function() {
        var retval = new XQueryParser.p_VarDeclStatement_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var d = null;
        var e = null;
        var BIND785 = null;
        var COMMA787 = null;
        var BIND789 = null;
        var SEMICOLON791 = null;
         var v = null;
         var w = null;
         var p_Annotation783 = null;
         var p_TypeDeclaration784 = null;
         var p_ExprSingle786 = null;
         var p_TypeDeclaration788 = null;
         var p_ExprSingle790 = null;

        var k_tree=null;
        var d_tree=null;
        var e_tree=null;
        var BIND785_tree=null;
        var COMMA787_tree=null;
        var BIND789_tree=null;
        var SEMICOLON791_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2196:9: ( ( p_Annotation )* k= VARIABLE d= DOLLAR v= p_VarName ( p_TypeDeclaration )? ( BIND p_ExprSingle[true] )? ( COMMA e= DOLLAR w= p_VarName ( p_TypeDeclaration )? ( BIND p_ExprSingle[true] )? )* SEMICOLON )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2196:11: ( p_Annotation )* k= VARIABLE d= DOLLAR v= p_VarName ( p_TypeDeclaration )? ( BIND p_ExprSingle[true] )? ( COMMA e= DOLLAR w= p_VarName ( p_TypeDeclaration )? ( BIND p_ExprSingle[true] )? )* SEMICOLON
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2196:11: ( p_Annotation )*
            loop259:
            do {
                var alt259=2;
                var LA259_0 = this.input.LA(1);

                if ( (LA259_0==ANN_PERCENT) ) {
                    alt259=1;
                }


                switch (alt259) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2196:11: p_Annotation
                    this.pushFollow(XQueryParser.FOLLOW_p_Annotation_in_p_VarDeclStatement17764);
                    p_Annotation783=this.p_Annotation();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Annotation783.getTree());


                    break;

                default :
                    break loop259;
                }
            } while (true);

            k=this.match(this.input,VARIABLE,XQueryParser.FOLLOW_VARIABLE_in_p_VarDeclStatement17769); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_VarDeclStatement17775); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            d_tree = this.adaptor.create(d);
            this.adaptor.addChild(root_0, d_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_VarDeclStatement17779);
            v=this.p_VarName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
            if ( this.state.backtracking===0 ) {
               this.av(d, (v?v.stop:null)); 
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2196:98: ( p_TypeDeclaration )?
            var alt260=2;
            var LA260_0 = this.input.LA(1);

            if ( (LA260_0==AS) ) {
                alt260=1;
            }
            switch (alt260) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2196:98: p_TypeDeclaration
                    this.pushFollow(XQueryParser.FOLLOW_p_TypeDeclaration_in_p_VarDeclStatement17783);
                    p_TypeDeclaration784=this.p_TypeDeclaration();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TypeDeclaration784.getTree());


                    break;

            }

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2196:117: ( BIND p_ExprSingle[true] )?
            var alt261=2;
            var LA261_0 = this.input.LA(1);

            if ( (LA261_0==BIND) ) {
                alt261=1;
            }
            switch (alt261) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2196:118: BIND p_ExprSingle[true]
                    BIND785=this.match(this.input,BIND,XQueryParser.FOLLOW_BIND_in_p_VarDeclStatement17787); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    BIND785_tree = this.adaptor.create(BIND785);
                    this.adaptor.addChild(root_0, BIND785_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_VarDeclStatement17789);
                    p_ExprSingle786=this.p_ExprSingle(true);

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle786.getTree());


                    break;

            }

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2197:11: ( COMMA e= DOLLAR w= p_VarName ( p_TypeDeclaration )? ( BIND p_ExprSingle[true] )? )*
            loop264:
            do {
                var alt264=2;
                var LA264_0 = this.input.LA(1);

                if ( (LA264_0==COMMA) ) {
                    alt264=1;
                }


                switch (alt264) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2197:12: COMMA e= DOLLAR w= p_VarName ( p_TypeDeclaration )? ( BIND p_ExprSingle[true] )?
                    COMMA787=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_VarDeclStatement17805); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    COMMA787_tree = this.adaptor.create(COMMA787);
                    this.adaptor.addChild(root_0, COMMA787_tree);
                    }
                    e=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_VarDeclStatement17809); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    e_tree = this.adaptor.create(e);
                    this.adaptor.addChild(root_0, e_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_VarName_in_p_VarDeclStatement17813);
                    w=this.p_VarName();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, w.getTree());
                    if ( this.state.backtracking===0 ) {
                       this.av(e, (w?w.stop:null)); 
                    }
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2197:65: ( p_TypeDeclaration )?
                    var alt262=2;
                    var LA262_0 = this.input.LA(1);

                    if ( (LA262_0==AS) ) {
                        alt262=1;
                    }
                    switch (alt262) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2197:65: p_TypeDeclaration
                            this.pushFollow(XQueryParser.FOLLOW_p_TypeDeclaration_in_p_VarDeclStatement17817);
                            p_TypeDeclaration788=this.p_TypeDeclaration();

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_TypeDeclaration788.getTree());


                            break;

                    }

                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2197:84: ( BIND p_ExprSingle[true] )?
                    var alt263=2;
                    var LA263_0 = this.input.LA(1);

                    if ( (LA263_0==BIND) ) {
                        alt263=1;
                    }
                    switch (alt263) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2197:85: BIND p_ExprSingle[true]
                            BIND789=this.match(this.input,BIND,XQueryParser.FOLLOW_BIND_in_p_VarDeclStatement17821); if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) {
                            BIND789_tree = this.adaptor.create(BIND789);
                            this.adaptor.addChild(root_0, BIND789_tree);
                            }
                            this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_VarDeclStatement17823);
                            p_ExprSingle790=this.p_ExprSingle(true);

                            this.state._fsp--;
                            if (this.state.failed) return retval;
                            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle790.getTree());


                            break;

                    }



                    break;

                default :
                    break loop264;
                }
            } while (true);

            SEMICOLON791=this.match(this.input,SEMICOLON,XQueryParser.FOLLOW_SEMICOLON_in_p_VarDeclStatement17840); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            SEMICOLON791_tree = this.adaptor.create(SEMICOLON791);
            this.adaptor.addChild(root_0, SEMICOLON791_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_WhileStatement_return: (function() {
        XQueryParser.p_WhileStatement_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_WhileStatement_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2202:1: p_WhileStatement : k= WHILE LPAREN p_Expr[true,true] RPAREN p_Hybrid[false,false] ;
    // $ANTLR start "p_WhileStatement"
    p_WhileStatement: function() {
        var retval = new XQueryParser.p_WhileStatement_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var LPAREN792 = null;
        var RPAREN794 = null;
         var p_Expr793 = null;
         var p_Hybrid795 = null;

        var k_tree=null;
        var LPAREN792_tree=null;
        var RPAREN794_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2203:9: (k= WHILE LPAREN p_Expr[true,true] RPAREN p_Hybrid[false,false] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2203:11: k= WHILE LPAREN p_Expr[true,true] RPAREN p_Hybrid[false,false]
            root_0 = this.adaptor.nil();

            k=this.match(this.input,WHILE,XQueryParser.FOLLOW_WHILE_in_p_WhileStatement17868); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            LPAREN792=this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_p_WhileStatement17872); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LPAREN792_tree = this.adaptor.create(LPAREN792);
            this.adaptor.addChild(root_0, LPAREN792_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_Expr_in_p_WhileStatement17874);
            p_Expr793=this.p_Expr(true, true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Expr793.getTree());
            RPAREN794=this.match(this.input,RPAREN,XQueryParser.FOLLOW_RPAREN_in_p_WhileStatement17877); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RPAREN794_tree = this.adaptor.create(RPAREN794);
            this.adaptor.addChild(root_0, RPAREN794_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_Hybrid_in_p_WhileStatement17879);
            p_Hybrid795=this.p_Hybrid(false, false);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_Hybrid795.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ExprSimple_return: (function() {
        XQueryParser.p_ExprSimple_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ExprSimple_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2207:1: p_ExprSimple : ( p_QuantifiedExpr | p_OrExpr | {...}? => pg_UpdateExpr );
    // $ANTLR start "p_ExprSimple"
    p_ExprSimple: function() {
        var retval = new XQueryParser.p_ExprSimple_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_QuantifiedExpr796 = null;
         var p_OrExpr797 = null;
         var pg_UpdateExpr798 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2208:9: ( p_QuantifiedExpr | p_OrExpr | {...}? => pg_UpdateExpr )
            var alt265=3;
            alt265 = this.dfa265.predict(this.input);
            switch (alt265) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2208:11: p_QuantifiedExpr
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_QuantifiedExpr_in_p_ExprSimple17906);
                    p_QuantifiedExpr796=this.p_QuantifiedExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_QuantifiedExpr796.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2209:11: p_OrExpr
                    root_0 = this.adaptor.nil();

                    this.pushFollow(XQueryParser.FOLLOW_p_OrExpr_in_p_ExprSimple17918);
                    p_OrExpr797=this.p_OrExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_OrExpr797.getTree());


                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2210:11: {...}? => pg_UpdateExpr
                    root_0 = this.adaptor.nil();

                    if ( !((this.lc(XQU))) ) {
                        if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                        throw new org.antlr.runtime.FailedPredicateException(this.input, "p_ExprSimple", "this.lc(XQU)");
                    }
                    this.pushFollow(XQueryParser.FOLLOW_pg_UpdateExpr_in_p_ExprSimple17933);
                    pg_UpdateExpr798=this.pg_UpdateExpr();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, pg_UpdateExpr798.getTree());


                    break;

            }
            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_BlockExpr_return: (function() {
        XQueryParser.p_BlockExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_BlockExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2214:1: p_BlockExpr : LBRACKET p_StatementsAndExpr RBRACKET ;
    // $ANTLR start "p_BlockExpr"
    p_BlockExpr: function() {
        var retval = new XQueryParser.p_BlockExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var LBRACKET799 = null;
        var RBRACKET801 = null;
         var p_StatementsAndExpr800 = null;

        var LBRACKET799_tree=null;
        var RBRACKET801_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2215:9: ( LBRACKET p_StatementsAndExpr RBRACKET )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2215:11: LBRACKET p_StatementsAndExpr RBRACKET
            root_0 = this.adaptor.nil();

            LBRACKET799=this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_p_BlockExpr17959); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            LBRACKET799_tree = this.adaptor.create(LBRACKET799);
            this.adaptor.addChild(root_0, LBRACKET799_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_StatementsAndExpr_in_p_BlockExpr17961);
            p_StatementsAndExpr800=this.p_StatementsAndExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StatementsAndExpr800.getTree());
            RBRACKET801=this.match(this.input,RBRACKET,XQueryParser.FOLLOW_RBRACKET_in_p_BlockExpr17963); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            RBRACKET801_tree = this.adaptor.create(RBRACKET801);
            this.adaptor.addChild(root_0, RBRACKET801_tree);
            }



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_CollectionDecl_return: (function() {
        XQueryParser.p_CollectionDecl_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_CollectionDecl_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2222:1: p_CollectionDecl : k= COLLECTION p_QName ( p_CollectionTypeDecl )? ;
    // $ANTLR start "p_CollectionDecl"
    p_CollectionDecl: function() {
        var retval = new XQueryParser.p_CollectionDecl_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
         var p_QName802 = null;
         var p_CollectionTypeDecl803 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2223:9: (k= COLLECTION p_QName ( p_CollectionTypeDecl )? )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2223:11: k= COLLECTION p_QName ( p_CollectionTypeDecl )?
            root_0 = this.adaptor.nil();

            k=this.match(this.input,COLLECTION,XQueryParser.FOLLOW_COLLECTION_in_p_CollectionDecl17994); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_QName_in_p_CollectionDecl17998);
            p_QName802=this.p_QName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_QName802.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2223:47: ( p_CollectionTypeDecl )?
            var alt266=2;
            var LA266_0 = this.input.LA(1);

            if ( (LA266_0==AS) ) {
                alt266=1;
            }
            switch (alt266) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2223:47: p_CollectionTypeDecl
                    this.pushFollow(XQueryParser.FOLLOW_p_CollectionTypeDecl_in_p_CollectionDecl18000);
                    p_CollectionTypeDecl803=this.p_CollectionTypeDecl();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_CollectionTypeDecl803.getTree());


                    break;

            }




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_CollectionTypeDecl_return: (function() {
        XQueryParser.p_CollectionTypeDecl_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_CollectionTypeDecl_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2226:1: p_CollectionTypeDecl : (k= AS p_KindTest ( ( p_OccurrenceIndicator )=> p_OccurrenceIndicator )? ) ;
    // $ANTLR start "p_CollectionTypeDecl"
    p_CollectionTypeDecl: function() {
        var retval = new XQueryParser.p_CollectionTypeDecl_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
         var p_KindTest804 = null;
         var p_OccurrenceIndicator805 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2227:9: ( (k= AS p_KindTest ( ( p_OccurrenceIndicator )=> p_OccurrenceIndicator )? ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2227:11: (k= AS p_KindTest ( ( p_OccurrenceIndicator )=> p_OccurrenceIndicator )? )
            root_0 = this.adaptor.nil();

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2227:11: (k= AS p_KindTest ( ( p_OccurrenceIndicator )=> p_OccurrenceIndicator )? )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2227:12: k= AS p_KindTest ( ( p_OccurrenceIndicator )=> p_OccurrenceIndicator )?
            k=this.match(this.input,AS,XQueryParser.FOLLOW_AS_in_p_CollectionTypeDecl18029); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_KindTest_in_p_CollectionTypeDecl18033);
            p_KindTest804=this.p_KindTest();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_KindTest804.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2227:43: ( ( p_OccurrenceIndicator )=> p_OccurrenceIndicator )?
            var alt267=2;
            var LA267_0 = this.input.LA(1);

            if ( ((LA267_0>=QUESTION && LA267_0<=PLUS)) && (this.synpred15_XQueryParser())) {
                alt267=1;
            }
            switch (alt267) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2227:44: ( p_OccurrenceIndicator )=> p_OccurrenceIndicator
                    this.pushFollow(XQueryParser.FOLLOW_p_OccurrenceIndicator_in_p_CollectionTypeDecl18042);
                    p_OccurrenceIndicator805=this.p_OccurrenceIndicator();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_OccurrenceIndicator805.getTree());


                    break;

            }







            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_IndexDecl_return: (function() {
        XQueryParser.p_IndexDecl_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_IndexDecl_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2230:1: p_IndexDecl : k= INDEX p_IndexName k= ON k= NODES p_IndexDomainExpr k= BY p_IndexKeySpec ( COMMA p_IndexKeySpec )* ;
    // $ANTLR start "p_IndexDecl"
    p_IndexDecl: function() {
        var retval = new XQueryParser.p_IndexDecl_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var COMMA809 = null;
         var p_IndexName806 = null;
         var p_IndexDomainExpr807 = null;
         var p_IndexKeySpec808 = null;
         var p_IndexKeySpec810 = null;

        var k_tree=null;
        var COMMA809_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2231:9: (k= INDEX p_IndexName k= ON k= NODES p_IndexDomainExpr k= BY p_IndexKeySpec ( COMMA p_IndexKeySpec )* )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2231:11: k= INDEX p_IndexName k= ON k= NODES p_IndexDomainExpr k= BY p_IndexKeySpec ( COMMA p_IndexKeySpec )*
            root_0 = this.adaptor.nil();

            k=this.match(this.input,INDEX,XQueryParser.FOLLOW_INDEX_in_p_IndexDecl18072); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_IndexName_in_p_IndexDecl18076);
            p_IndexName806=this.p_IndexName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_IndexName806.getTree());
            k=this.match(this.input,ON,XQueryParser.FOLLOW_ON_in_p_IndexDecl18080); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,NODES,XQueryParser.FOLLOW_NODES_in_p_IndexDecl18086); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_IndexDomainExpr_in_p_IndexDecl18090);
            p_IndexDomainExpr807=this.p_IndexDomainExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_IndexDomainExpr807.getTree());
            k=this.match(this.input,BY,XQueryParser.FOLLOW_BY_in_p_IndexDecl18094); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_IndexKeySpec_in_p_IndexDecl18098);
            p_IndexKeySpec808=this.p_IndexKeySpec();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_IndexKeySpec808.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2231:142: ( COMMA p_IndexKeySpec )*
            loop268:
            do {
                var alt268=2;
                var LA268_0 = this.input.LA(1);

                if ( (LA268_0==COMMA) ) {
                    alt268=1;
                }


                switch (alt268) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2231:143: COMMA p_IndexKeySpec
                    COMMA809=this.match(this.input,COMMA,XQueryParser.FOLLOW_COMMA_in_p_IndexDecl18101); if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) {
                    COMMA809_tree = this.adaptor.create(COMMA809);
                    this.adaptor.addChild(root_0, COMMA809_tree);
                    }
                    this.pushFollow(XQueryParser.FOLLOW_p_IndexKeySpec_in_p_IndexDecl18103);
                    p_IndexKeySpec810=this.p_IndexKeySpec();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_IndexKeySpec810.getTree());


                    break;

                default :
                    break loop268;
                }
            } while (true);




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_IndexName_return: (function() {
        XQueryParser.p_IndexName_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_IndexName_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2234:1: p_IndexName : p_QName ;
    // $ANTLR start "p_IndexName"
    p_IndexName: function() {
        var retval = new XQueryParser.p_IndexName_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_QName811 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2235:9: ( p_QName )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2235:11: p_QName
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_QName_in_p_IndexName18130);
            p_QName811=this.p_QName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_QName811.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_IndexDomainExpr_return: (function() {
        XQueryParser.p_IndexDomainExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_IndexDomainExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2238:1: p_IndexDomainExpr : p_PathExpr ;
    // $ANTLR start "p_IndexDomainExpr"
    p_IndexDomainExpr: function() {
        var retval = new XQueryParser.p_IndexDomainExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_PathExpr812 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2239:9: ( p_PathExpr )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2239:11: p_PathExpr
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_PathExpr_in_p_IndexDomainExpr18155);
            p_PathExpr812=this.p_PathExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PathExpr812.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_IndexKeySpec_return: (function() {
        XQueryParser.p_IndexKeySpec_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_IndexKeySpec_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2242:1: p_IndexKeySpec : p_IndexKeyExpr ( p_IndexKeyTypeDecl )? ( p_IndexKeyCollation )? ;
    // $ANTLR start "p_IndexKeySpec"
    p_IndexKeySpec: function() {
        var retval = new XQueryParser.p_IndexKeySpec_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_IndexKeyExpr813 = null;
         var p_IndexKeyTypeDecl814 = null;
         var p_IndexKeyCollation815 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2243:9: ( p_IndexKeyExpr ( p_IndexKeyTypeDecl )? ( p_IndexKeyCollation )? )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2243:11: p_IndexKeyExpr ( p_IndexKeyTypeDecl )? ( p_IndexKeyCollation )?
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_IndexKeyExpr_in_p_IndexKeySpec18180);
            p_IndexKeyExpr813=this.p_IndexKeyExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_IndexKeyExpr813.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2243:26: ( p_IndexKeyTypeDecl )?
            var alt269=2;
            var LA269_0 = this.input.LA(1);

            if ( (LA269_0==AS) ) {
                alt269=1;
            }
            switch (alt269) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2243:26: p_IndexKeyTypeDecl
                    this.pushFollow(XQueryParser.FOLLOW_p_IndexKeyTypeDecl_in_p_IndexKeySpec18182);
                    p_IndexKeyTypeDecl814=this.p_IndexKeyTypeDecl();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_IndexKeyTypeDecl814.getTree());


                    break;

            }

            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2243:46: ( p_IndexKeyCollation )?
            var alt270=2;
            var LA270_0 = this.input.LA(1);

            if ( (LA270_0==COLLATION) ) {
                alt270=1;
            }
            switch (alt270) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2243:46: p_IndexKeyCollation
                    this.pushFollow(XQueryParser.FOLLOW_p_IndexKeyCollation_in_p_IndexKeySpec18185);
                    p_IndexKeyCollation815=this.p_IndexKeyCollation();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_IndexKeyCollation815.getTree());


                    break;

            }




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_IndexKeyExpr_return: (function() {
        XQueryParser.p_IndexKeyExpr_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_IndexKeyExpr_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2246:1: p_IndexKeyExpr : p_PathExpr ;
    // $ANTLR start "p_IndexKeyExpr"
    p_IndexKeyExpr: function() {
        var retval = new XQueryParser.p_IndexKeyExpr_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_PathExpr816 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2247:9: ( p_PathExpr )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2247:11: p_PathExpr
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_PathExpr_in_p_IndexKeyExpr18211);
            p_PathExpr816=this.p_PathExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PathExpr816.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_IndexKeyTypeDecl_return: (function() {
        XQueryParser.p_IndexKeyTypeDecl_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_IndexKeyTypeDecl_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2250:1: p_IndexKeyTypeDecl : k= AS p_AtomicType ( p_OccurrenceIndicator )? ;
    // $ANTLR start "p_IndexKeyTypeDecl"
    p_IndexKeyTypeDecl: function() {
        var retval = new XQueryParser.p_IndexKeyTypeDecl_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
         var p_AtomicType817 = null;
         var p_OccurrenceIndicator818 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2251:9: (k= AS p_AtomicType ( p_OccurrenceIndicator )? )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2251:11: k= AS p_AtomicType ( p_OccurrenceIndicator )?
            root_0 = this.adaptor.nil();

            k=this.match(this.input,AS,XQueryParser.FOLLOW_AS_in_p_IndexKeyTypeDecl18238); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_AtomicType_in_p_IndexKeyTypeDecl18242);
            p_AtomicType817=this.p_AtomicType();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_AtomicType817.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2251:44: ( p_OccurrenceIndicator )?
            var alt271=2;
            var LA271_0 = this.input.LA(1);

            if ( ((LA271_0>=QUESTION && LA271_0<=PLUS)) ) {
                alt271=1;
            }
            switch (alt271) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2251:44: p_OccurrenceIndicator
                    this.pushFollow(XQueryParser.FOLLOW_p_OccurrenceIndicator_in_p_IndexKeyTypeDecl18244);
                    p_OccurrenceIndicator818=this.p_OccurrenceIndicator();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_OccurrenceIndicator818.getTree());


                    break;

            }




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_AtomicType_return: (function() {
        XQueryParser.p_AtomicType_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_AtomicType_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2254:1: p_AtomicType : p_QName ;
    // $ANTLR start "p_AtomicType"
    p_AtomicType: function() {
        var retval = new XQueryParser.p_AtomicType_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

         var p_QName819 = null;


        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2255:9: ( p_QName )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2255:11: p_QName
            root_0 = this.adaptor.nil();

            this.pushFollow(XQueryParser.FOLLOW_p_QName_in_p_AtomicType18270);
            p_QName819=this.p_QName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_QName819.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_IndexKeyCollation_return: (function() {
        XQueryParser.p_IndexKeyCollation_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_IndexKeyCollation_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2258:1: p_IndexKeyCollation : k= COLLATION p_StringLiteral ;
    // $ANTLR start "p_IndexKeyCollation"
    p_IndexKeyCollation: function() {
        var retval = new XQueryParser.p_IndexKeyCollation_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
         var p_StringLiteral820 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2259:9: (k= COLLATION p_StringLiteral )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2259:11: k= COLLATION p_StringLiteral
            root_0 = this.adaptor.nil();

            k=this.match(this.input,COLLATION,XQueryParser.FOLLOW_COLLATION_in_p_IndexKeyCollation18297); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_StringLiteral_in_p_IndexKeyCollation18301);
            p_StringLiteral820=this.p_StringLiteral();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_StringLiteral820.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ICDecl_return: (function() {
        XQueryParser.p_ICDecl_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ICDecl_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2262:1: p_ICDecl : k= INTEGRITY k= CONSTRAINT p_QName ( p_ICCollection | p_ICForeignKey ) ;
    // $ANTLR start "p_ICDecl"
    p_ICDecl: function() {
        var retval = new XQueryParser.p_ICDecl_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
         var p_QName821 = null;
         var p_ICCollection822 = null;
         var p_ICForeignKey823 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2263:9: (k= INTEGRITY k= CONSTRAINT p_QName ( p_ICCollection | p_ICForeignKey ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2263:11: k= INTEGRITY k= CONSTRAINT p_QName ( p_ICCollection | p_ICForeignKey )
            root_0 = this.adaptor.nil();

            k=this.match(this.input,INTEGRITY,XQueryParser.FOLLOW_INTEGRITY_in_p_ICDecl18328); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,CONSTRAINT,XQueryParser.FOLLOW_CONSTRAINT_in_p_ICDecl18334); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_QName_in_p_ICDecl18338);
            p_QName821=this.p_QName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_QName821.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2263:74: ( p_ICCollection | p_ICForeignKey )
            var alt272=2;
            var LA272_0 = this.input.LA(1);

            if ( (LA272_0==ON) ) {
                alt272=1;
            }
            else if ( (LA272_0==FOREIGN) ) {
                alt272=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 272, 0, this.input);

                throw nvae;
            }
            switch (alt272) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2263:75: p_ICCollection
                    this.pushFollow(XQueryParser.FOLLOW_p_ICCollection_in_p_ICDecl18341);
                    p_ICCollection822=this.p_ICCollection();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ICCollection822.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2263:92: p_ICForeignKey
                    this.pushFollow(XQueryParser.FOLLOW_p_ICForeignKey_in_p_ICDecl18345);
                    p_ICForeignKey823=this.p_ICForeignKey();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ICForeignKey823.getTree());


                    break;

            }




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ICCollection_return: (function() {
        XQueryParser.p_ICCollection_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ICCollection_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2266:1: p_ICCollection : k= ON k= COLLECTION p_QName ( p_ICCollSequence | p_ICCollSequenceUnique | p_ICCollNode ) ;
    // $ANTLR start "p_ICCollection"
    p_ICCollection: function() {
        var retval = new XQueryParser.p_ICCollection_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
         var p_QName824 = null;
         var p_ICCollSequence825 = null;
         var p_ICCollSequenceUnique826 = null;
         var p_ICCollNode827 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2267:9: (k= ON k= COLLECTION p_QName ( p_ICCollSequence | p_ICCollSequenceUnique | p_ICCollNode ) )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2267:11: k= ON k= COLLECTION p_QName ( p_ICCollSequence | p_ICCollSequenceUnique | p_ICCollNode )
            root_0 = this.adaptor.nil();

            k=this.match(this.input,ON,XQueryParser.FOLLOW_ON_in_p_ICCollection18373); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,COLLECTION,XQueryParser.FOLLOW_COLLECTION_in_p_ICCollection18379); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_QName_in_p_ICCollection18383);
            p_QName824=this.p_QName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_QName824.getTree());
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2267:67: ( p_ICCollSequence | p_ICCollSequenceUnique | p_ICCollNode )
            var alt273=3;
            switch ( this.input.LA(1) ) {
            case DOLLAR:
                alt273=1;
                break;
            case NODE:
                alt273=2;
                break;
            case FOREACH:
                alt273=3;
                break;
            default:
                if (this.state.backtracking>0) {this.state.failed=true; return retval;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 273, 0, this.input);

                throw nvae;
            }

            switch (alt273) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2267:68: p_ICCollSequence
                    this.pushFollow(XQueryParser.FOLLOW_p_ICCollSequence_in_p_ICCollection18386);
                    p_ICCollSequence825=this.p_ICCollSequence();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ICCollSequence825.getTree());


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2267:87: p_ICCollSequenceUnique
                    this.pushFollow(XQueryParser.FOLLOW_p_ICCollSequenceUnique_in_p_ICCollection18390);
                    p_ICCollSequenceUnique826=this.p_ICCollSequenceUnique();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ICCollSequenceUnique826.getTree());


                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2267:112: p_ICCollNode
                    this.pushFollow(XQueryParser.FOLLOW_p_ICCollNode_in_p_ICCollection18394);
                    p_ICCollNode827=this.p_ICCollNode();

                    this.state._fsp--;
                    if (this.state.failed) return retval;
                    if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ICCollNode827.getTree());


                    break;

            }




            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ICCollSequence_return: (function() {
        XQueryParser.p_ICCollSequence_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ICCollSequence_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2270:1: p_ICCollSequence : d= DOLLAR v= p_QName k= CHECK p_ExprSingle[true] ;
    // $ANTLR start "p_ICCollSequence"
    p_ICCollSequence: function() {
        var retval = new XQueryParser.p_ICCollSequence_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var d = null;
        var k = null;
         var v = null;
         var p_ExprSingle828 = null;

        var d_tree=null;
        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2271:9: (d= DOLLAR v= p_QName k= CHECK p_ExprSingle[true] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2271:11: d= DOLLAR v= p_QName k= CHECK p_ExprSingle[true]
            root_0 = this.adaptor.nil();

            d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_ICCollSequence18422); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            d_tree = this.adaptor.create(d);
            this.adaptor.addChild(root_0, d_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_QName_in_p_ICCollSequence18426);
            v=this.p_QName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
            if ( this.state.backtracking===0 ) {
               this.av(d, (v?v.stop:null)); 
            }
            k=this.match(this.input,CHECK,XQueryParser.FOLLOW_CHECK_in_p_ICCollSequence18432); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_ICCollSequence18436);
            p_ExprSingle828=this.p_ExprSingle(true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle828.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ICCollSequenceUnique_return: (function() {
        XQueryParser.p_ICCollSequenceUnique_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ICCollSequenceUnique_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2274:1: p_ICCollSequenceUnique : k= NODE d= DOLLAR v= p_QName k= CHECK k= UNIQUE k= KEY p_PathExpr ;
    // $ANTLR start "p_ICCollSequenceUnique"
    p_ICCollSequenceUnique: function() {
        var retval = new XQueryParser.p_ICCollSequenceUnique_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var d = null;
         var v = null;
         var p_PathExpr829 = null;

        var k_tree=null;
        var d_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2275:9: (k= NODE d= DOLLAR v= p_QName k= CHECK k= UNIQUE k= KEY p_PathExpr )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2275:11: k= NODE d= DOLLAR v= p_QName k= CHECK k= UNIQUE k= KEY p_PathExpr
            root_0 = this.adaptor.nil();

            k=this.match(this.input,NODE,XQueryParser.FOLLOW_NODE_in_p_ICCollSequenceUnique18464); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_ICCollSequenceUnique18470); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            d_tree = this.adaptor.create(d);
            this.adaptor.addChild(root_0, d_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_QName_in_p_ICCollSequenceUnique18474);
            v=this.p_QName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
            if ( this.state.backtracking===0 ) {
               this.av(d, (v?v.stop:null)); 
            }
            k=this.match(this.input,CHECK,XQueryParser.FOLLOW_CHECK_in_p_ICCollSequenceUnique18480); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,UNIQUE,XQueryParser.FOLLOW_UNIQUE_in_p_ICCollSequenceUnique18486); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,KEY,XQueryParser.FOLLOW_KEY_in_p_ICCollSequenceUnique18492); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_PathExpr_in_p_ICCollSequenceUnique18496);
            p_PathExpr829=this.p_PathExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PathExpr829.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ICCollNode_return: (function() {
        XQueryParser.p_ICCollNode_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ICCollNode_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2278:1: p_ICCollNode : k= FOREACH k= NODE d= DOLLAR v= p_QName k= CHECK p_ExprSingle[true] ;
    // $ANTLR start "p_ICCollNode"
    p_ICCollNode: function() {
        var retval = new XQueryParser.p_ICCollNode_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var d = null;
         var v = null;
         var p_ExprSingle830 = null;

        var k_tree=null;
        var d_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2279:9: (k= FOREACH k= NODE d= DOLLAR v= p_QName k= CHECK p_ExprSingle[true] )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2279:11: k= FOREACH k= NODE d= DOLLAR v= p_QName k= CHECK p_ExprSingle[true]
            root_0 = this.adaptor.nil();

            k=this.match(this.input,FOREACH,XQueryParser.FOLLOW_FOREACH_in_p_ICCollNode18523); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,NODE,XQueryParser.FOLLOW_NODE_in_p_ICCollNode18529); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_ICCollNode18535); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            d_tree = this.adaptor.create(d);
            this.adaptor.addChild(root_0, d_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_QName_in_p_ICCollNode18539);
            v=this.p_QName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
            if ( this.state.backtracking===0 ) {
               this.av(d, (v?v.stop:null)); 
            }
            k=this.match(this.input,CHECK,XQueryParser.FOLLOW_CHECK_in_p_ICCollNode18545); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_ExprSingle_in_p_ICCollNode18549);
            p_ExprSingle830=this.p_ExprSingle(true);

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ExprSingle830.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ICForeignKey_return: (function() {
        XQueryParser.p_ICForeignKey_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ICForeignKey_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2282:1: p_ICForeignKey : k= FOREIGN k= KEY p_ICForeignKeySource p_ICForeignKeyTarget ;
    // $ANTLR start "p_ICForeignKey"
    p_ICForeignKey: function() {
        var retval = new XQueryParser.p_ICForeignKey_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
         var p_ICForeignKeySource831 = null;
         var p_ICForeignKeyTarget832 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2283:9: (k= FOREIGN k= KEY p_ICForeignKeySource p_ICForeignKeyTarget )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2283:11: k= FOREIGN k= KEY p_ICForeignKeySource p_ICForeignKeyTarget
            root_0 = this.adaptor.nil();

            k=this.match(this.input,FOREIGN,XQueryParser.FOLLOW_FOREIGN_in_p_ICForeignKey18577); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            k=this.match(this.input,KEY,XQueryParser.FOLLOW_KEY_in_p_ICForeignKey18583); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_ICForeignKeySource_in_p_ICForeignKey18587);
            p_ICForeignKeySource831=this.p_ICForeignKeySource();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ICForeignKeySource831.getTree());
            this.pushFollow(XQueryParser.FOLLOW_p_ICForeignKeyTarget_in_p_ICForeignKey18589);
            p_ICForeignKeyTarget832=this.p_ICForeignKeyTarget();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ICForeignKeyTarget832.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ICForeignKeySource_return: (function() {
        XQueryParser.p_ICForeignKeySource_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ICForeignKeySource_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2286:1: p_ICForeignKeySource : k= FROM p_ICForeignKeyValues ;
    // $ANTLR start "p_ICForeignKeySource"
    p_ICForeignKeySource: function() {
        var retval = new XQueryParser.p_ICForeignKeySource_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
         var p_ICForeignKeyValues833 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2287:9: (k= FROM p_ICForeignKeyValues )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2287:11: k= FROM p_ICForeignKeyValues
            root_0 = this.adaptor.nil();

            k=this.match(this.input,FROM,XQueryParser.FOLLOW_FROM_in_p_ICForeignKeySource18616); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_ICForeignKeyValues_in_p_ICForeignKeySource18620);
            p_ICForeignKeyValues833=this.p_ICForeignKeyValues();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ICForeignKeyValues833.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ICForeignKeyTarget_return: (function() {
        XQueryParser.p_ICForeignKeyTarget_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ICForeignKeyTarget_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2290:1: p_ICForeignKeyTarget : k= TO p_ICForeignKeyValues ;
    // $ANTLR start "p_ICForeignKeyTarget"
    p_ICForeignKeyTarget: function() {
        var retval = new XQueryParser.p_ICForeignKeyTarget_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
         var p_ICForeignKeyValues834 = null;

        var k_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2291:9: (k= TO p_ICForeignKeyValues )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2291:11: k= TO p_ICForeignKeyValues
            root_0 = this.adaptor.nil();

            k=this.match(this.input,TO,XQueryParser.FOLLOW_TO_in_p_ICForeignKeyTarget18647); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_ICForeignKeyValues_in_p_ICForeignKeyTarget18651);
            p_ICForeignKeyValues834=this.p_ICForeignKeyValues();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_ICForeignKeyValues834.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // inline static return class
    p_ICForeignKeyValues_return: (function() {
        XQueryParser.p_ICForeignKeyValues_return = function(){};
        org.antlr.lang.extend(XQueryParser.p_ICForeignKeyValues_return,
                          org.antlr.runtime.ParserRuleReturnScope,
        {
            getTree: function() { return this.tree; }
        });
        return;
    })(),

    // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2294:1: p_ICForeignKeyValues : k= COLLECTION p_QName k= NODE d= DOLLAR v= p_QName k= KEY p_PathExpr ;
    // $ANTLR start "p_ICForeignKeyValues"
    p_ICForeignKeyValues: function() {
        var retval = new XQueryParser.p_ICForeignKeyValues_return();
        retval.start = this.input.LT(1);

        var root_0 = null;

        var k = null;
        var d = null;
         var v = null;
         var p_QName835 = null;
         var p_PathExpr836 = null;

        var k_tree=null;
        var d_tree=null;

        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2295:9: (k= COLLECTION p_QName k= NODE d= DOLLAR v= p_QName k= KEY p_PathExpr )
            // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2295:11: k= COLLECTION p_QName k= NODE d= DOLLAR v= p_QName k= KEY p_PathExpr
            root_0 = this.adaptor.nil();

            k=this.match(this.input,COLLECTION,XQueryParser.FOLLOW_COLLECTION_in_p_ICForeignKeyValues18678); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_QName_in_p_ICForeignKeyValues18682);
            p_QName835=this.p_QName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_QName835.getTree());
            k=this.match(this.input,NODE,XQueryParser.FOLLOW_NODE_in_p_ICForeignKeyValues18686); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            d=this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_p_ICForeignKeyValues18692); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            d_tree = this.adaptor.create(d);
            this.adaptor.addChild(root_0, d_tree);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_QName_in_p_ICForeignKeyValues18696);
            v=this.p_QName();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, v.getTree());
            if ( this.state.backtracking===0 ) {
               this.av(d, (v?v.stop:null)); 
            }
            k=this.match(this.input,KEY,XQueryParser.FOLLOW_KEY_in_p_ICForeignKeyValues18702); if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) {
            k_tree = this.adaptor.create(k);
            this.adaptor.addChild(root_0, k_tree);
            }
            if ( this.state.backtracking===0 ) {
              this.ak(k);
            }
            this.pushFollow(XQueryParser.FOLLOW_p_PathExpr_in_p_ICForeignKeyValues18706);
            p_PathExpr836=this.p_PathExpr();

            this.state._fsp--;
            if (this.state.failed) return retval;
            if ( this.state.backtracking===0 ) this.adaptor.addChild(root_0, p_PathExpr836.getTree());



            retval.stop = this.input.LT(-1);

            if ( this.state.backtracking===0 ) {

            retval.tree = this.adaptor.rulePostProcessing(root_0);
            this.adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
            }
        }
        catch (re) {
            if (re instanceof org.antlr.runtime.RecognitionException) {
                this.reportError(re);
                this.recover(this.input,re);
                retval.tree = this.adaptor.errorNode(this.input, retval.start, this.input.LT(-1), re);
            } else {
                throw re;
            }
        }
        finally {
        }
        return retval;
    },

    // $ANTLR start "synpred1_XQueryParser"
    synpred1_XQueryParser_fragment: function() {
        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:571:11: ( ( ( FOR | LET ) DOLLAR ) | ( FOR ( TUMBLING | SLIDING ) ) )
        var alt274=2;
        var LA274_0 = this.input.LA(1);

        if ( (LA274_0==FOR) ) {
            var LA274_1 = this.input.LA(2);

            if ( (LA274_1==DOLLAR) ) {
                alt274=1;
            }
            else if ( (LA274_1==SLIDING||LA274_1==TUMBLING) ) {
                alt274=2;
            }
            else {
                if (this.state.backtracking>0) {this.state.failed=true; return ;}
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 274, 1, this.input);

                throw nvae;
            }
        }
        else if ( (LA274_0==LET) ) {
            alt274=1;
        }
        else {
            if (this.state.backtracking>0) {this.state.failed=true; return ;}
            var nvae =
                new org.antlr.runtime.NoViableAltException("", 274, 0, this.input);

            throw nvae;
        }
        switch (alt274) {
            case 1 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:571:12: ( ( FOR | LET ) DOLLAR )
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:571:12: ( ( FOR | LET ) DOLLAR )
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:571:13: ( FOR | LET ) DOLLAR
                if ( this.input.LA(1)==FOR||this.input.LA(1)==LET ) {
                    this.input.consume();
                    this.state.errorRecovery=false;this.state.failed=false;
                }
                else {
                    if (this.state.backtracking>0) {this.state.failed=true; return ;}
                    var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
                    throw mse;
                }

                this.match(this.input,DOLLAR,XQueryParser.FOLLOW_DOLLAR_in_synpred1_XQueryParser3539); if (this.state.failed) return ;





                break;
            case 2 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:571:35: ( FOR ( TUMBLING | SLIDING ) )
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:571:35: ( FOR ( TUMBLING | SLIDING ) )
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:571:36: FOR ( TUMBLING | SLIDING )
                this.match(this.input,FOR,XQueryParser.FOLLOW_FOR_in_synpred1_XQueryParser3545); if (this.state.failed) return ;
                if ( this.input.LA(1)==SLIDING||this.input.LA(1)==TUMBLING ) {
                    this.input.consume();
                    this.state.errorRecovery=false;this.state.failed=false;
                }
                else {
                    if (this.state.backtracking>0) {this.state.failed=true; return ;}
                    var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
                    throw mse;
                }






                break;

        }},
    // $ANTLR end "synpred1_XQueryParser",

    // $ANTLR start "synpred2_XQueryParser"
    synpred2_XQueryParser_fragment: function() {
        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:572:11: ( IF LPAREN )
        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:572:12: IF LPAREN
        this.match(this.input,IF,XQueryParser.FOLLOW_IF_in_synpred2_XQueryParser3573); if (this.state.failed) return ;
        this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_synpred2_XQueryParser3575); if (this.state.failed) return ;


    },
    // $ANTLR end "synpred2_XQueryParser",

    // $ANTLR start "synpred3_XQueryParser"
    synpred3_XQueryParser_fragment: function() {
        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:573:11: ( SWITCH LPAREN )
        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:573:12: SWITCH LPAREN
        this.match(this.input,SWITCH,XQueryParser.FOLLOW_SWITCH_in_synpred3_XQueryParser3603); if (this.state.failed) return ;
        this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_synpred3_XQueryParser3605); if (this.state.failed) return ;


    },
    // $ANTLR end "synpred3_XQueryParser",

    // $ANTLR start "synpred4_XQueryParser"
    synpred4_XQueryParser_fragment: function() {
        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:574:11: ( TYPESWITCH LPAREN )
        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:574:12: TYPESWITCH LPAREN
        this.match(this.input,TYPESWITCH,XQueryParser.FOLLOW_TYPESWITCH_in_synpred4_XQueryParser3629); if (this.state.failed) return ;
        this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_synpred4_XQueryParser3631); if (this.state.failed) return ;


    },
    // $ANTLR end "synpred4_XQueryParser",

    // $ANTLR start "synpred5_XQueryParser"
    synpred5_XQueryParser_fragment: function() {
        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:575:11: ( TRY LBRACKET )
        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:575:12: TRY LBRACKET
        this.match(this.input,TRY,XQueryParser.FOLLOW_TRY_in_synpred5_XQueryParser3651); if (this.state.failed) return ;
        this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_synpred5_XQueryParser3653); if (this.state.failed) return ;


    },
    // $ANTLR end "synpred5_XQueryParser",

    // $ANTLR start "synpred6_XQueryParser"
    synpred6_XQueryParser_fragment: function() {
        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:864:11: ( VALIDATE ( p_ValidationMode | TYPE )? )
        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:864:12: VALIDATE ( p_ValidationMode | TYPE )?
        this.match(this.input,VALIDATE,XQueryParser.FOLLOW_VALIDATE_in_synpred6_XQueryParser6204); if (this.state.failed) return ;
        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:864:21: ( p_ValidationMode | TYPE )?
        var alt275=3;
        var LA275_0 = this.input.LA(1);

        if ( (LA275_0==LAX||LA275_0==STRICT) ) {
            alt275=1;
        }
        else if ( (LA275_0==TYPE) ) {
            alt275=2;
        }
        switch (alt275) {
            case 1 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:864:23: p_ValidationMode
                this.pushFollow(XQueryParser.FOLLOW_p_ValidationMode_in_synpred6_XQueryParser6208);
                this.p_ValidationMode();

                this.state._fsp--;
                if (this.state.failed) return ;


                break;
            case 2 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:864:42: TYPE
                this.match(this.input,TYPE,XQueryParser.FOLLOW_TYPE_in_synpred6_XQueryParser6212); if (this.state.failed) return ;


                break;

        }



    },
    // $ANTLR end "synpred6_XQueryParser",

    // $ANTLR start "synpred7_XQueryParser"
    synpred7_XQueryParser_fragment: function() {
        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:913:11: ( SLASH p_RelativePathExpr )
        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:913:12: SLASH p_RelativePathExpr
        this.match(this.input,SLASH,XQueryParser.FOLLOW_SLASH_in_synpred7_XQueryParser6600); if (this.state.failed) return ;
        this.pushFollow(XQueryParser.FOLLOW_p_RelativePathExpr_in_synpred7_XQueryParser6602);
        this.p_RelativePathExpr();

        this.state._fsp--;
        if (this.state.failed) return ;


    },
    // $ANTLR end "synpred7_XQueryParser",

    // $ANTLR start "synpred8_XQueryParser"
    synpred8_XQueryParser_fragment: function() {
        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:926:11: ( LBRACKET | LPAREN | SMALLER | QUOT | APOS | DOLLAR )
        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:
        if ( this.input.LA(1)==LPAREN||this.input.LA(1)==DOLLAR||this.input.LA(1)==LBRACKET||this.input.LA(1)==SMALLER||(this.input.LA(1)>=APOS && this.input.LA(1)<=QUOT) ) {
            this.input.consume();
            this.state.errorRecovery=false;this.state.failed=false;
        }
        else {
            if (this.state.backtracking>0) {this.state.failed=true; return ;}
            var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
            throw mse;
        }



    },
    // $ANTLR end "synpred8_XQueryParser",

    // $ANTLR start "synpred9_XQueryParser"
    synpred9_XQueryParser_fragment: function() {
        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:927:11: ( ( ( ELEMENT | ATTRIBUTE ) ( p_EQName )? LBRACKET ) | ( ( NAMESPACE | PROCESSING_INSTRUCTION ) ( p_NCName )? LBRACKET ) | ( ( DOCUMENT | TEXT | COMMENT ) LBRACKET ) )
        var alt278=3;
        switch ( this.input.LA(1) ) {
        case ATTRIBUTE:
        case ELEMENT:
            alt278=1;
            break;
        case NAMESPACE:
        case PROCESSING_INSTRUCTION:
            alt278=2;
            break;
        case COMMENT:
        case DOCUMENT:
        case TEXT:
            alt278=3;
            break;
        default:
            if (this.state.backtracking>0) {this.state.failed=true; return ;}
            var nvae =
                new org.antlr.runtime.NoViableAltException("", 278, 0, this.input);

            throw nvae;
        }

        switch (alt278) {
            case 1 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:928:13: ( ( ELEMENT | ATTRIBUTE ) ( p_EQName )? LBRACKET )
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:928:13: ( ( ELEMENT | ATTRIBUTE ) ( p_EQName )? LBRACKET )
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:928:14: ( ELEMENT | ATTRIBUTE ) ( p_EQName )? LBRACKET
                if ( this.input.LA(1)==ATTRIBUTE||this.input.LA(1)==ELEMENT ) {
                    this.input.consume();
                    this.state.errorRecovery=false;this.state.failed=false;
                }
                else {
                    if (this.state.backtracking>0) {this.state.failed=true; return ;}
                    var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
                    throw mse;
                }

                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:928:36: ( p_EQName )?
                var alt276=2;
                var LA276_0 = this.input.LA(1);

                if ( ((LA276_0>=ANCESTOR && LA276_0<=SKIP)||(LA276_0>=VALUE && LA276_0<=QUOT_ER)||LA276_0==Q||LA276_0==L_NCName) ) {
                    alt276=1;
                }
                switch (alt276) {
                    case 1 :
                        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:928:36: p_EQName
                        this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_synpred9_XQueryParser6777);
                        this.p_EQName();

                        this.state._fsp--;
                        if (this.state.failed) return ;


                        break;

                }

                this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_synpred9_XQueryParser6780); if (this.state.failed) return ;





                break;
            case 2 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:929:13: ( ( NAMESPACE | PROCESSING_INSTRUCTION ) ( p_NCName )? LBRACKET )
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:929:13: ( ( NAMESPACE | PROCESSING_INSTRUCTION ) ( p_NCName )? LBRACKET )
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:929:14: ( NAMESPACE | PROCESSING_INSTRUCTION ) ( p_NCName )? LBRACKET
                if ( this.input.LA(1)==NAMESPACE||this.input.LA(1)==PROCESSING_INSTRUCTION ) {
                    this.input.consume();
                    this.state.errorRecovery=false;this.state.failed=false;
                }
                else {
                    if (this.state.backtracking>0) {this.state.failed=true; return ;}
                    var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
                    throw mse;
                }

                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:929:51: ( p_NCName )?
                var alt277=2;
                var LA277_0 = this.input.LA(1);

                if ( ((LA277_0>=ANCESTOR && LA277_0<=SKIP)||(LA277_0>=VALUE && LA277_0<=QUOT_ER)||LA277_0==L_NCName) ) {
                    alt277=1;
                }
                switch (alt277) {
                    case 1 :
                        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:929:51: p_NCName
                        this.pushFollow(XQueryParser.FOLLOW_p_NCName_in_synpred9_XQueryParser6806);
                        this.p_NCName();

                        this.state._fsp--;
                        if (this.state.failed) return ;


                        break;

                }

                this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_synpred9_XQueryParser6809); if (this.state.failed) return ;





                break;
            case 3 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:930:13: ( ( DOCUMENT | TEXT | COMMENT ) LBRACKET )
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:930:13: ( ( DOCUMENT | TEXT | COMMENT ) LBRACKET )
                // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:930:14: ( DOCUMENT | TEXT | COMMENT ) LBRACKET
                if ( this.input.LA(1)==COMMENT||this.input.LA(1)==DOCUMENT||this.input.LA(1)==TEXT ) {
                    this.input.consume();
                    this.state.errorRecovery=false;this.state.failed=false;
                }
                else {
                    if (this.state.backtracking>0) {this.state.failed=true; return ;}
                    var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
                    throw mse;
                }

                this.match(this.input,LBRACKET,XQueryParser.FOLLOW_LBRACKET_in_synpred9_XQueryParser6839); if (this.state.failed) return ;





                break;

        }},
    // $ANTLR end "synpred9_XQueryParser",

    // $ANTLR start "synpred10_XQueryParser"
    synpred10_XQueryParser_fragment: function() {
        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:932:11: ( p_KindTest )
        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:932:12: p_KindTest
        this.pushFollow(XQueryParser.FOLLOW_p_KindTest_in_synpred10_XQueryParser6869);
        this.p_KindTest();

        this.state._fsp--;
        if (this.state.failed) return ;


    },
    // $ANTLR end "synpred10_XQueryParser",

    // $ANTLR start "synpred11_XQueryParser"
    synpred11_XQueryParser_fragment: function() {
        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:933:11: ( p_EQName LPAREN )
        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:933:12: p_EQName LPAREN
        this.pushFollow(XQueryParser.FOLLOW_p_EQName_in_synpred11_XQueryParser6888);
        this.p_EQName();

        this.state._fsp--;
        if (this.state.failed) return ;
        this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_synpred11_XQueryParser6890); if (this.state.failed) return ;


    },
    // $ANTLR end "synpred11_XQueryParser",

    // $ANTLR start "synpred12_XQueryParser"
    synpred12_XQueryParser_fragment: function() {
        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:934:11: ( p_PrimaryExpr )
        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:934:12: p_PrimaryExpr
        this.pushFollow(XQueryParser.FOLLOW_p_PrimaryExpr_in_synpred12_XQueryParser6908);
        this.p_PrimaryExpr();

        this.state._fsp--;
        if (this.state.failed) return ;


    },
    // $ANTLR end "synpred12_XQueryParser",

    // $ANTLR start "synpred13_XQueryParser"
    synpred13_XQueryParser_fragment: function() {
        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1029:11: ( LPAREN )
        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1029:12: LPAREN
        this.match(this.input,LPAREN,XQueryParser.FOLLOW_LPAREN_in_synpred13_XQueryParser7593); if (this.state.failed) return ;


    },
    // $ANTLR end "synpred13_XQueryParser",

    // $ANTLR start "synpred14_XQueryParser"
    synpred14_XQueryParser_fragment: function() {
        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1327:26: ( p_OccurrenceIndicator )
        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:1327:27: p_OccurrenceIndicator
        this.pushFollow(XQueryParser.FOLLOW_p_OccurrenceIndicator_in_synpred14_XQueryParser9871);
        this.p_OccurrenceIndicator();

        this.state._fsp--;
        if (this.state.failed) return ;


    },
    // $ANTLR end "synpred14_XQueryParser",

    // $ANTLR start "synpred15_XQueryParser"
    synpred15_XQueryParser_fragment: function() {
        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2227:44: ( p_OccurrenceIndicator )
        // /Users/wcandillon/28msec/xquery.js/xquery/XQueryParser.g:2227:45: p_OccurrenceIndicator
        this.pushFollow(XQueryParser.FOLLOW_p_OccurrenceIndicator_in_synpred15_XQueryParser18037);
        this.p_OccurrenceIndicator();

        this.state._fsp--;
        if (this.state.failed) return ;


    },
    // $ANTLR end "synpred15_XQueryParser"

    // Delegated rules



    synpred3_XQueryParser: function() {
        this.state.backtracking++;
        var start = this.input.mark();
        try {
            this.synpred3_XQueryParser_fragment(); // can never throw exception
        } catch (re) {
            alert("impossible: "+re.toString());
        }
        var success = !this.state.failed;
        this.input.rewind(start);
        this.state.backtracking--;
        this.state.failed=false;
        return success;
    },
    synpred15_XQueryParser: function() {
        this.state.backtracking++;
        var start = this.input.mark();
        try {
            this.synpred15_XQueryParser_fragment(); // can never throw exception
        } catch (re) {
            alert("impossible: "+re.toString());
        }
        var success = !this.state.failed;
        this.input.rewind(start);
        this.state.backtracking--;
        this.state.failed=false;
        return success;
    },
    synpred7_XQueryParser: function() {
        this.state.backtracking++;
        var start = this.input.mark();
        try {
            this.synpred7_XQueryParser_fragment(); // can never throw exception
        } catch (re) {
            alert("impossible: "+re.toString());
        }
        var success = !this.state.failed;
        this.input.rewind(start);
        this.state.backtracking--;
        this.state.failed=false;
        return success;
    },
    synpred9_XQueryParser: function() {
        this.state.backtracking++;
        var start = this.input.mark();
        try {
            this.synpred9_XQueryParser_fragment(); // can never throw exception
        } catch (re) {
            alert("impossible: "+re.toString());
        }
        var success = !this.state.failed;
        this.input.rewind(start);
        this.state.backtracking--;
        this.state.failed=false;
        return success;
    },
    synpred10_XQueryParser: function() {
        this.state.backtracking++;
        var start = this.input.mark();
        try {
            this.synpred10_XQueryParser_fragment(); // can never throw exception
        } catch (re) {
            alert("impossible: "+re.toString());
        }
        var success = !this.state.failed;
        this.input.rewind(start);
        this.state.backtracking--;
        this.state.failed=false;
        return success;
    },
    synpred5_XQueryParser: function() {
        this.state.backtracking++;
        var start = this.input.mark();
        try {
            this.synpred5_XQueryParser_fragment(); // can never throw exception
        } catch (re) {
            alert("impossible: "+re.toString());
        }
        var success = !this.state.failed;
        this.input.rewind(start);
        this.state.backtracking--;
        this.state.failed=false;
        return success;
    },
    synpred12_XQueryParser: function() {
        this.state.backtracking++;
        var start = this.input.mark();
        try {
            this.synpred12_XQueryParser_fragment(); // can never throw exception
        } catch (re) {
            alert("impossible: "+re.toString());
        }
        var success = !this.state.failed;
        this.input.rewind(start);
        this.state.backtracking--;
        this.state.failed=false;
        return success;
    },
    synpred14_XQueryParser: function() {
        this.state.backtracking++;
        var start = this.input.mark();
        try {
            this.synpred14_XQueryParser_fragment(); // can never throw exception
        } catch (re) {
            alert("impossible: "+re.toString());
        }
        var success = !this.state.failed;
        this.input.rewind(start);
        this.state.backtracking--;
        this.state.failed=false;
        return success;
    },
    synpred6_XQueryParser: function() {
        this.state.backtracking++;
        var start = this.input.mark();
        try {
            this.synpred6_XQueryParser_fragment(); // can never throw exception
        } catch (re) {
            alert("impossible: "+re.toString());
        }
        var success = !this.state.failed;
        this.input.rewind(start);
        this.state.backtracking--;
        this.state.failed=false;
        return success;
    },
    synpred8_XQueryParser: function() {
        this.state.backtracking++;
        var start = this.input.mark();
        try {
            this.synpred8_XQueryParser_fragment(); // can never throw exception
        } catch (re) {
            alert("impossible: "+re.toString());
        }
        var success = !this.state.failed;
        this.input.rewind(start);
        this.state.backtracking--;
        this.state.failed=false;
        return success;
    },
    synpred4_XQueryParser: function() {
        this.state.backtracking++;
        var start = this.input.mark();
        try {
            this.synpred4_XQueryParser_fragment(); // can never throw exception
        } catch (re) {
            alert("impossible: "+re.toString());
        }
        var success = !this.state.failed;
        this.input.rewind(start);
        this.state.backtracking--;
        this.state.failed=false;
        return success;
    },
    synpred11_XQueryParser: function() {
        this.state.backtracking++;
        var start = this.input.mark();
        try {
            this.synpred11_XQueryParser_fragment(); // can never throw exception
        } catch (re) {
            alert("impossible: "+re.toString());
        }
        var success = !this.state.failed;
        this.input.rewind(start);
        this.state.backtracking--;
        this.state.failed=false;
        return success;
    },
    synpred13_XQueryParser: function() {
        this.state.backtracking++;
        var start = this.input.mark();
        try {
            this.synpred13_XQueryParser_fragment(); // can never throw exception
        } catch (re) {
            alert("impossible: "+re.toString());
        }
        var success = !this.state.failed;
        this.input.rewind(start);
        this.state.backtracking--;
        this.state.failed=false;
        return success;
    },
    synpred1_XQueryParser: function() {
        this.state.backtracking++;
        var start = this.input.mark();
        try {
            this.synpred1_XQueryParser_fragment(); // can never throw exception
        } catch (re) {
            alert("impossible: "+re.toString());
        }
        var success = !this.state.failed;
        this.input.rewind(start);
        this.state.backtracking--;
        this.state.failed=false;
        return success;
    },
    synpred2_XQueryParser: function() {
        this.state.backtracking++;
        var start = this.input.mark();
        try {
            this.synpred2_XQueryParser_fragment(); // can never throw exception
        } catch (re) {
            alert("impossible: "+re.toString());
        }
        var success = !this.state.failed;
        this.input.rewind(start);
        this.state.backtracking--;
        this.state.failed=false;
        return success;
    }

}, true); // important to pass true to overwrite default implementations

org.antlr.lang.augmentObject(XQueryParser, {
    DFA1_eotS:
        "\u000a\uffff",
    DFA1_eofS:
        "\u0001\u0005\u0001\u0009\u0008\uffff",
    DFA1_minS:
        "\u0001\u0010\u0001\u0012\u0008\uffff",
    DFA1_maxS:
        "\u0001\u0122\u0001\u0107\u0008\uffff",
    DFA1_acceptS:
        "\u0002\uffff\u0004\u0002\u0001\u0001\u0003\u0002",
    DFA1_specialS:
        "\u0001\u0000\u0001\u0001\u0008\uffff}>",
    DFA1_transitionS: [
            "\u0002\u0002\u0004\u0004\u0001\u0002\u0006\u0004\u0001\u0002"+
            "\u0001\u0004\u0001\u0002\u0002\u0004\u0001\u0002\u0001\u0004"+
            "\u0002\u0002\u0002\u0004\u0003\u0002\u0005\u0004\u0001\u0002"+
            "\u0002\u0004\u0003\u0002\u0005\u0004\u0002\u0002\u0009\u0004"+
            "\u0001\u0002\u0002\u0004\u0002\u0002\u0003\u0004\u0001\u0002"+
            "\u0005\u0004\u0001\u0002\u0001\u0004\u0003\u0002\u0001\u0004"+
            "\u0001\u0002\u0007\u0004\u0004\u0002\u0003\u0004\u0001\u0002"+
            "\u0003\u0004\u0001\u0002\u0001\u0004\u0003\u0002\u0002\u0004"+
            "\u0001\u0001\u000c\u0004\u0001\u0002\u0009\u0004\u0002\u0002"+
            "\u0007\u0004\u0002\u0002\u0001\u0004\u0001\u0002\u0002\u0004"+
            "\u0001\u0002\u0003\u0004\u0002\u0002\u0002\u0004\u0001\u0002"+
            "\u002c\u0004\u0003\u0002\u0002\u0004\u0001\u0002\u000d\u0004"+
            "\u0001\uffff\u0001\u0002\u0001\uffff\u0002\u0002\u0001\uffff"+
            "\u0001\u0002\u0001\uffff\u0001\u0002\u0004\uffff\u0001\u0003"+
            "\u0004\uffff\u0004\u0002\u0005\uffff\u0002\u0002\u0001\uffff"+
            "\u0002\u0002\u000c\uffff\u0002\u0002\u0002\uffff\u0002\u0002"+
            "\u0002\uffff\u0001\u0004\u0006\uffff\u0006\u0002",
            "\u0001\u0007\u0008\uffff\u0002\u0007\u000a\uffff\u0001\u0007"+
            "\u0006\uffff\u0001\u0006\u0001\u0007\u0001\uffff\u0001\u0007"+
            "\u0005\uffff\u0001\u0007\u0001\uffff\u0002\u0007\u0004\uffff"+
            "\u0003\u0007\u0002\uffff\u0001\u0007\u0002\uffff\u0002\u0007"+
            "\u0002\uffff\u0001\u0007\u0006\uffff\u0001\u0007\u0018\uffff"+
            "\u0002\u0007\u0001\uffff\u0001\u0007\u0003\uffff\u0001\u0006"+
            "\u0034\uffff\u0001\u0007\u003a\uffff\u0002\u0007\u0006\uffff"+
            "\u0001\u0007\u0001\uffff\u0001\u0007\u0001\uffff\u0001\u0007"+
            "\u0001\uffff\u0001\u0007\u0001\uffff\u0001\u0007\u0001\uffff"+
            "\u000c\u0007\u0002\uffff\u0001\u0007\u0003\uffff\u0001\u0008"+
            "\u0001\u0007",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    ]
});

org.antlr.lang.augmentObject(XQueryParser, {
    DFA1_eot:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA1_eotS),
    DFA1_eof:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA1_eofS),
    DFA1_min:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA1_minS),
    DFA1_max:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA1_maxS),
    DFA1_accept:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA1_acceptS),
    DFA1_special:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA1_specialS),
    DFA1_transition: (function() {
        var a = [],
            i,
            numStates = XQueryParser.DFA1_transitionS.length;
        for (i=0; i<numStates; i++) {
            a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA1_transitionS[i]));
        }
        return a;
    })()
});

XQueryParser.DFA1 = function(recognizer) {
    this.recognizer = recognizer;
    this.decisionNumber = 1;
    this.eot = XQueryParser.DFA1_eot;
    this.eof = XQueryParser.DFA1_eof;
    this.min = XQueryParser.DFA1_min;
    this.max = XQueryParser.DFA1_max;
    this.accept = XQueryParser.DFA1_accept;
    this.special = XQueryParser.DFA1_special;
    this.transition = XQueryParser.DFA1_transition;
};

org.antlr.lang.extend(XQueryParser.DFA1, org.antlr.runtime.DFA, {
    getDescription: function() {
        return "293:13: (vd= p_VersionDecl )?";
    },
    specialStateTransition: function(s, input) {
        var _s = s;
        var retval = (function(s, input) {
            switch ( s ) {
                        case 0 : 
                            var LA1_0 = input.LA(1);

                             
                            var index1_0 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA1_0==XQUERY) ) {s = 1;}

                            else if ( ((LA1_0>=ANCESTOR && LA1_0<=ANCESTOR_OR_SELF)||LA1_0==ATTRIBUTE||LA1_0==CHILD||LA1_0==COMMENT||LA1_0==DECLARE||(LA1_0>=DESCENDANT && LA1_0<=DESCENDANT_OR_SELF)||(LA1_0>=DOCUMENT && LA1_0<=ELEMENT)||LA1_0==EVERY||(LA1_0>=FOLLOWING && LA1_0<=FOR)||(LA1_0>=IF && LA1_0<=IMPORT)||LA1_0==LET||(LA1_0>=MODULE && LA1_0<=NAMESPACE)||LA1_0==NODE||LA1_0==ORDERED||(LA1_0>=PARENT && LA1_0<=PRECEDING_SIBLING)||LA1_0==PROCESSING_INSTRUCTION||(LA1_0>=SCHEMA_ATTRIBUTE && LA1_0<=SOME)||LA1_0==TEXT||LA1_0==TYPESWITCH||(LA1_0>=UNORDERED && LA1_0<=VARIABLE)||LA1_0==NAMESPACE_NODE||(LA1_0>=SWITCH && LA1_0<=TRY)||(LA1_0>=COPY && LA1_0<=DELETE)||LA1_0==INSERT||LA1_0==APPEND||(LA1_0>=RENAME && LA1_0<=REPLACE)||LA1_0==UPDATING||(LA1_0>=BREAK && LA1_0<=EXIT)||LA1_0==WHILE||LA1_0==LPAREN||(LA1_0>=DOLLAR && LA1_0<=L_UNION_BRACKET)||LA1_0==LBRACKET||LA1_0==LSQUARE||(LA1_0>=STAR && LA1_0<=SMALLER)||(LA1_0>=SLASH && LA1_0<=SLASH_SLASH)||(LA1_0>=DOT && LA1_0<=DOT_DOT)||(LA1_0>=ATTR_SIGN && LA1_0<=Q)||(LA1_0>=APOS && LA1_0<=QUOT)||(LA1_0>=L_Pragma && LA1_0<=L_DoubleLiteral)) ) {s = 2;}

                            else if ( (LA1_0==ANN_PERCENT) && ((this.lc(XQS)))) {s = 3;}

                            else if ( ((LA1_0>=AND && LA1_0<=AT)||(LA1_0>=BASE_URI && LA1_0<=CASTABLE)||LA1_0==COLLATION||(LA1_0>=CONSTRUCTION && LA1_0<=COPY_NAMESPACES)||LA1_0==DEFAULT||(LA1_0>=DESCENDING && LA1_0<=DIV)||(LA1_0>=ELSE && LA1_0<=EQ)||(LA1_0>=EXCEPT && LA1_0<=EXTERNAL)||(LA1_0>=FUNCTION && LA1_0<=IDIV)||(LA1_0>=IN && LA1_0<=LEAST)||(LA1_0>=LT && LA1_0<=MOD)||(LA1_0>=NE && LA1_0<=NO_PRESERVE)||(LA1_0>=JSON && LA1_0<=ORDER)||LA1_0==ORDERING||LA1_0==PRESERVE||(LA1_0>=STRUCTURED_ITEM && LA1_0<=SCHEMA)||(LA1_0>=STABLE && LA1_0<=STRIP)||(LA1_0>=THEN && LA1_0<=TREAT)||LA1_0==UNION||(LA1_0>=VERSION && LA1_0<=WHERE)||(LA1_0>=ALLOWING && LA1_0<=MINUS_SIGN)||(LA1_0>=NAN && LA1_0<=START)||(LA1_0>=TUMBLING && LA1_0<=BEFORE)||LA1_0==FIRST||(LA1_0>=INTO && LA1_0<=POSITION)||(LA1_0>=LAST && LA1_0<=NODES)||(LA1_0>=REVALIDATION && LA1_0<=SKIP)||(LA1_0>=VALUE && LA1_0<=WORDS)||(LA1_0>=LOOP && LA1_0<=RETURNING)||(LA1_0>=CHECK && LA1_0<=QUOT_ER)||LA1_0==L_NCName) ) {s = 4;}

                            else if ( (LA1_0==EOF) && ((this.lc(XQS)))) {s = 5;}

                             
                            input.seek(index1_0);
                            if ( s>=0 ) return s;
                            break;
                        case 1 : 
                            var LA1_1 = input.LA(1);

                             
                            var index1_1 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA1_1==ENCODING||LA1_1==VERSION) ) {s = 6;}

                            else if ( (LA1_1==AND||(LA1_1>=CAST && LA1_1<=CASTABLE)||LA1_1==DIV||LA1_1==EQ||LA1_1==EXCEPT||LA1_1==GE||(LA1_1>=GT && LA1_1<=IDIV)||(LA1_1>=INSTANCE && LA1_1<=IS)||LA1_1==LE||(LA1_1>=LT && LA1_1<=MOD)||LA1_1==NE||LA1_1==OR||(LA1_1>=TO && LA1_1<=TREAT)||LA1_1==UNION||LA1_1==CONTAINS||(LA1_1>=CONCAT && LA1_1<=LPAREN)||LA1_1==LSQUARE||LA1_1==EQUAL||LA1_1==NOTEQUAL||LA1_1==HASH||LA1_1==COMMA||(LA1_1>=STAR && LA1_1<=BANG)||LA1_1==COLON||LA1_1==VBAR) ) {s = 7;}

                            else if ( (LA1_1==SEMICOLON) && ((this.lc(XQS)))) {s = 8;}

                            else if ( (LA1_1==EOF) ) {s = 9;}

                             
                            input.seek(index1_1);
                            if ( s>=0 ) return s;
                            break;
            }
        }).call(this.recognizer, s, input);
        if (!org.antlr.lang.isUndefined(retval)) {
            return retval;
        }
        if (this.recognizer.state.backtracking>0) {this.recognizer.state.failed=true; return -1;}
        var nvae =
            new org.antlr.runtime.NoViableAltException(this.getDescription(), 1, _s, input);
        this.error(nvae);
        throw nvae;
    },
    dummy: null
});
org.antlr.lang.augmentObject(XQueryParser, {
    DFA2_eotS:
        "\u000a\uffff",
    DFA2_eofS:
        "\u0001\u0005\u0001\u0009\u0008\uffff",
    DFA2_minS:
        "\u0001\u0010\u0001\u0012\u0008\uffff",
    DFA2_maxS:
        "\u0001\u0122\u0001\u0107\u0008\uffff",
    DFA2_acceptS:
        "\u0002\uffff\u0004\u0002\u0001\u0001\u0003\u0002",
    DFA2_specialS:
        "\u0001\u0001\u0001\u0000\u0008\uffff}>",
    DFA2_transitionS: [
            "\u0002\u0002\u0004\u0004\u0001\u0002\u0006\u0004\u0001\u0002"+
            "\u0001\u0004\u0001\u0002\u0002\u0004\u0001\u0002\u0001\u0004"+
            "\u0002\u0002\u0002\u0004\u0003\u0002\u0005\u0004\u0001\u0002"+
            "\u0002\u0004\u0003\u0002\u0005\u0004\u0002\u0002\u0009\u0004"+
            "\u0001\u0002\u0002\u0004\u0001\u0001\u0001\u0002\u0003\u0004"+
            "\u0001\u0002\u0005\u0004\u0001\u0002\u0001\u0004\u0003\u0002"+
            "\u0001\u0004\u0001\u0002\u0007\u0004\u0004\u0002\u0003\u0004"+
            "\u0001\u0002\u0003\u0004\u0001\u0002\u0001\u0004\u0003\u0002"+
            "\u000f\u0004\u0001\u0002\u0009\u0004\u0002\u0002\u0007\u0004"+
            "\u0002\u0002\u0001\u0004\u0001\u0002\u0002\u0004\u0001\u0002"+
            "\u0003\u0004\u0002\u0002\u0002\u0004\u0001\u0002\u002c\u0004"+
            "\u0003\u0002\u0002\u0004\u0001\u0002\u000d\u0004\u0001\uffff"+
            "\u0001\u0002\u0001\uffff\u0002\u0002\u0001\uffff\u0001\u0002"+
            "\u0001\uffff\u0001\u0002\u0004\uffff\u0001\u0003\u0004\uffff"+
            "\u0004\u0002\u0005\uffff\u0002\u0002\u0001\uffff\u0002\u0002"+
            "\u000c\uffff\u0002\u0002\u0002\uffff\u0002\u0002\u0002\uffff"+
            "\u0001\u0004\u0006\uffff\u0006\u0002",
            "\u0001\u0007\u0008\uffff\u0002\u0007\u000a\uffff\u0001\u0007"+
            "\u0007\uffff\u0001\u0007\u0001\uffff\u0001\u0007\u0005\uffff"+
            "\u0001\u0007\u0001\uffff\u0002\u0007\u0004\uffff\u0003\u0007"+
            "\u0002\uffff\u0001\u0007\u0002\uffff\u0002\u0007\u0001\uffff"+
            "\u0001\u0006\u0001\u0007\u0006\uffff\u0001\u0007\u0018\uffff"+
            "\u0002\u0007\u0001\uffff\u0001\u0007\u0038\uffff\u0001\u0007"+
            "\u003a\uffff\u0002\u0007\u0006\uffff\u0001\u0007\u0001\uffff"+
            "\u0001\u0007\u0001\uffff\u0001\u0007\u0001\uffff\u0001\u0007"+
            "\u0001\uffff\u0001\u0007\u0001\uffff\u000c\u0007\u0002\uffff"+
            "\u0001\u0007\u0003\uffff\u0001\u0008\u0001\u0007",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    ]
});

org.antlr.lang.augmentObject(XQueryParser, {
    DFA2_eot:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA2_eotS),
    DFA2_eof:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA2_eofS),
    DFA2_min:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA2_minS),
    DFA2_max:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA2_maxS),
    DFA2_accept:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA2_acceptS),
    DFA2_special:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA2_specialS),
    DFA2_transition: (function() {
        var a = [],
            i,
            numStates = XQueryParser.DFA2_transitionS.length;
        for (i=0; i<numStates; i++) {
            a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA2_transitionS[i]));
        }
        return a;
    })()
});

XQueryParser.DFA2 = function(recognizer) {
    this.recognizer = recognizer;
    this.decisionNumber = 2;
    this.eot = XQueryParser.DFA2_eot;
    this.eof = XQueryParser.DFA2_eof;
    this.min = XQueryParser.DFA2_min;
    this.max = XQueryParser.DFA2_max;
    this.accept = XQueryParser.DFA2_accept;
    this.special = XQueryParser.DFA2_special;
    this.transition = XQueryParser.DFA2_transition;
};

org.antlr.lang.extend(XQueryParser.DFA2, org.antlr.runtime.DFA, {
    getDescription: function() {
        return "294:13: (lm= p_LibraryModule[$vd.tree] -> | mm= p_MainModule[$vd.tree] ->)";
    },
    specialStateTransition: function(s, input) {
        var _s = s;
        var retval = (function(s, input) {
            switch ( s ) {
                        case 0 : 
                            var LA2_1 = input.LA(1);

                             
                            var index2_1 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA2_1==NAMESPACE) ) {s = 6;}

                            else if ( (LA2_1==AND||(LA2_1>=CAST && LA2_1<=CASTABLE)||LA2_1==DIV||LA2_1==EQ||LA2_1==EXCEPT||LA2_1==GE||(LA2_1>=GT && LA2_1<=IDIV)||(LA2_1>=INSTANCE && LA2_1<=IS)||LA2_1==LE||(LA2_1>=LT && LA2_1<=MOD)||LA2_1==NE||LA2_1==OR||(LA2_1>=TO && LA2_1<=TREAT)||LA2_1==UNION||LA2_1==CONTAINS||(LA2_1>=CONCAT && LA2_1<=LPAREN)||LA2_1==LSQUARE||LA2_1==EQUAL||LA2_1==NOTEQUAL||LA2_1==HASH||LA2_1==COMMA||(LA2_1>=STAR && LA2_1<=BANG)||LA2_1==COLON||LA2_1==VBAR) ) {s = 7;}

                            else if ( (LA2_1==SEMICOLON) && ((this.lc(XQS)))) {s = 8;}

                            else if ( (LA2_1==EOF) ) {s = 9;}

                             
                            input.seek(index2_1);
                            if ( s>=0 ) return s;
                            break;
                        case 1 : 
                            var LA2_0 = input.LA(1);

                             
                            var index2_0 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA2_0==MODULE) ) {s = 1;}

                            else if ( ((LA2_0>=ANCESTOR && LA2_0<=ANCESTOR_OR_SELF)||LA2_0==ATTRIBUTE||LA2_0==CHILD||LA2_0==COMMENT||LA2_0==DECLARE||(LA2_0>=DESCENDANT && LA2_0<=DESCENDANT_OR_SELF)||(LA2_0>=DOCUMENT && LA2_0<=ELEMENT)||LA2_0==EVERY||(LA2_0>=FOLLOWING && LA2_0<=FOR)||(LA2_0>=IF && LA2_0<=IMPORT)||LA2_0==LET||LA2_0==NAMESPACE||LA2_0==NODE||LA2_0==ORDERED||(LA2_0>=PARENT && LA2_0<=PRECEDING_SIBLING)||LA2_0==PROCESSING_INSTRUCTION||(LA2_0>=SCHEMA_ATTRIBUTE && LA2_0<=SOME)||LA2_0==TEXT||LA2_0==TYPESWITCH||(LA2_0>=UNORDERED && LA2_0<=VARIABLE)||LA2_0==NAMESPACE_NODE||(LA2_0>=SWITCH && LA2_0<=TRY)||(LA2_0>=COPY && LA2_0<=DELETE)||LA2_0==INSERT||LA2_0==APPEND||(LA2_0>=RENAME && LA2_0<=REPLACE)||LA2_0==UPDATING||(LA2_0>=BREAK && LA2_0<=EXIT)||LA2_0==WHILE||LA2_0==LPAREN||(LA2_0>=DOLLAR && LA2_0<=L_UNION_BRACKET)||LA2_0==LBRACKET||LA2_0==LSQUARE||(LA2_0>=STAR && LA2_0<=SMALLER)||(LA2_0>=SLASH && LA2_0<=SLASH_SLASH)||(LA2_0>=DOT && LA2_0<=DOT_DOT)||(LA2_0>=ATTR_SIGN && LA2_0<=Q)||(LA2_0>=APOS && LA2_0<=QUOT)||(LA2_0>=L_Pragma && LA2_0<=L_DoubleLiteral)) ) {s = 2;}

                            else if ( (LA2_0==ANN_PERCENT) && ((this.lc(XQS)))) {s = 3;}

                            else if ( ((LA2_0>=AND && LA2_0<=AT)||(LA2_0>=BASE_URI && LA2_0<=CASTABLE)||LA2_0==COLLATION||(LA2_0>=CONSTRUCTION && LA2_0<=COPY_NAMESPACES)||LA2_0==DEFAULT||(LA2_0>=DESCENDING && LA2_0<=DIV)||(LA2_0>=ELSE && LA2_0<=EQ)||(LA2_0>=EXCEPT && LA2_0<=EXTERNAL)||(LA2_0>=FUNCTION && LA2_0<=IDIV)||(LA2_0>=IN && LA2_0<=LEAST)||(LA2_0>=LT && LA2_0<=MOD)||(LA2_0>=NE && LA2_0<=NO_PRESERVE)||(LA2_0>=JSON && LA2_0<=ORDER)||LA2_0==ORDERING||LA2_0==PRESERVE||(LA2_0>=STRUCTURED_ITEM && LA2_0<=SCHEMA)||(LA2_0>=STABLE && LA2_0<=STRIP)||(LA2_0>=THEN && LA2_0<=TREAT)||LA2_0==UNION||(LA2_0>=VERSION && LA2_0<=MINUS_SIGN)||(LA2_0>=NAN && LA2_0<=START)||(LA2_0>=TUMBLING && LA2_0<=BEFORE)||LA2_0==FIRST||(LA2_0>=INTO && LA2_0<=POSITION)||(LA2_0>=LAST && LA2_0<=NODES)||(LA2_0>=REVALIDATION && LA2_0<=SKIP)||(LA2_0>=VALUE && LA2_0<=WORDS)||(LA2_0>=LOOP && LA2_0<=RETURNING)||(LA2_0>=CHECK && LA2_0<=QUOT_ER)||LA2_0==L_NCName) ) {s = 4;}

                            else if ( (LA2_0==EOF) && ((this.lc(XQS)))) {s = 5;}

                             
                            input.seek(index2_0);
                            if ( s>=0 ) return s;
                            break;
            }
        }).call(this.recognizer, s, input);
        if (!org.antlr.lang.isUndefined(retval)) {
            return retval;
        }
        if (this.recognizer.state.backtracking>0) {this.recognizer.state.failed=true; return -1;}
        var nvae =
            new org.antlr.runtime.NoViableAltException(this.getDescription(), 2, _s, input);
        this.error(nvae);
        throw nvae;
    },
    dummy: null
});
org.antlr.lang.augmentObject(XQueryParser, {
    DFA6_eotS:
        "\u000a\uffff",
    DFA6_eofS:
        "\u0001\u0005\u0001\u0009\u0002\uffff\u0001\u0009\u0005\uffff",
    DFA6_minS:
        "\u0001\u0010\u0001\u0012\u0002\uffff\u0001\u0012\u0005\uffff",
    DFA6_maxS:
        "\u0001\u0122\u0001\u0107\u0002\uffff\u0001\u0107\u0005\uffff",
    DFA6_acceptS:
        "\u0002\uffff\u0002\u0002\u0001\uffff\u0001\u0002\u0002\u0001\u0002"+
    "\u0002",
    DFA6_specialS:
        "\u0001\u0000\u0001\u0002\u0002\uffff\u0001\u0001\u0005\uffff}>",
    DFA6_transitionS: [
            "\u0002\u0002\u0004\u0005\u0001\u0002\u0006\u0005\u0001\u0002"+
            "\u0001\u0005\u0001\u0002\u0002\u0005\u0001\u0001\u0001\u0005"+
            "\u0002\u0002\u0002\u0005\u0003\u0002\u0005\u0005\u0001\u0002"+
            "\u0002\u0005\u0003\u0002\u0005\u0005\u0001\u0002\u0001\u0004"+
            "\u0009\u0005\u0001\u0002\u0003\u0005\u0001\u0002\u0003\u0005"+
            "\u0001\u0002\u0005\u0005\u0001\u0002\u0001\u0005\u0003\u0002"+
            "\u0001\u0005\u0001\u0002\u0007\u0005\u0004\u0002\u0003\u0005"+
            "\u0001\u0002\u0003\u0005\u0001\u0002\u0001\u0005\u0003\u0002"+
            "\u000f\u0005\u0001\u0002\u0009\u0005\u0002\u0002\u0007\u0005"+
            "\u0002\u0002\u0001\u0005\u0001\u0002\u0002\u0005\u0001\u0002"+
            "\u0003\u0005\u0002\u0002\u0002\u0005\u0001\u0002\u002c\u0005"+
            "\u0003\u0002\u0002\u0005\u0001\u0002\u000d\u0005\u0001\uffff"+
            "\u0001\u0002\u0001\uffff\u0002\u0002\u0001\uffff\u0001\u0002"+
            "\u0001\uffff\u0001\u0002\u0004\uffff\u0001\u0003\u0004\uffff"+
            "\u0004\u0002\u0005\uffff\u0002\u0002\u0001\uffff\u0002\u0002"+
            "\u000c\uffff\u0002\u0002\u0002\uffff\u0002\u0002\u0002\uffff"+
            "\u0001\u0005\u0006\uffff\u0006\u0002",
            "\u0001\u0005\u0004\uffff\u0002\u0007\u0002\uffff\u0002\u0005"+
            "\u0003\uffff\u0002\u0007\u0001\uffff\u0001\u0007\u0003\uffff"+
            "\u0001\u0005\u0007\uffff\u0001\u0005\u0001\uffff\u0001\u0005"+
            "\u0004\uffff\u0002\u0005\u0001\uffff\u0002\u0005\u0004\uffff"+
            "\u0003\u0005\u0002\uffff\u0001\u0005\u0002\uffff\u0002\u0005"+
            "\u0001\uffff\u0001\u0007\u0001\u0005\u0005\uffff\u0002\u0005"+
            "\u0002\uffff\u0001\u0007\u0015\uffff\u0002\u0005\u0001\uffff"+
            "\u0001\u0005\u0002\uffff\u0001\u0005\u0005\uffff\u0001\u0005"+
            "\u0001\uffff\u0001\u0007\u0026\uffff\u0001\u0006\u0001\uffff"+
            "\u0001\u0005\u0004\uffff\u0001\u0005\u0007\uffff\u0001\u0007"+
            "\u0026\uffff\u0001\u0005\u0003\uffff\u0002\u0005\u0006\uffff"+
            "\u0002\u0005\u0006\uffff\u0001\u0005\u0001\uffff\u0001\u0005"+
            "\u0001\uffff\u0003\u0005\u0001\uffff\u0001\u0005\u0001\uffff"+
            "\u000c\u0005\u0002\uffff\u0001\u0005\u0003\uffff\u0001\u0008"+
            "\u0001\u0005",
            "",
            "",
            "\u0001\u0009\u0008\uffff\u0002\u0009\u000a\uffff\u0001\u0009"+
            "\u0007\uffff\u0001\u0009\u0001\uffff\u0001\u0009\u0005\uffff"+
            "\u0001\u0009\u0001\uffff\u0002\u0009\u0004\uffff\u0003\u0009"+
            "\u0002\uffff\u0001\u0009\u0002\uffff\u0002\u0009\u0001\u0007"+
            "\u0001\uffff\u0001\u0009\u0006\uffff\u0001\u0009\u000e\uffff"+
            "\u0001\u0007\u0009\uffff\u0002\u0009\u0001\uffff\u0001\u0009"+
            "\u0038\uffff\u0001\u0009\u003a\uffff\u0002\u0009\u0006\uffff"+
            "\u0001\u0009\u0001\uffff\u0001\u0009\u0001\uffff\u0001\u0009"+
            "\u0001\uffff\u0001\u0009\u0001\uffff\u0001\u0009\u0001\uffff"+
            "\u000c\u0009\u0002\uffff\u0001\u0009\u0003\uffff\u0001\u0008"+
            "\u0001\u0009",
            "",
            "",
            "",
            "",
            ""
    ]
});

org.antlr.lang.augmentObject(XQueryParser, {
    DFA6_eot:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA6_eotS),
    DFA6_eof:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA6_eofS),
    DFA6_min:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA6_minS),
    DFA6_max:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA6_maxS),
    DFA6_accept:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA6_acceptS),
    DFA6_special:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA6_specialS),
    DFA6_transition: (function() {
        var a = [],
            i,
            numStates = XQueryParser.DFA6_transitionS.length;
        for (i=0; i<numStates; i++) {
            a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA6_transitionS[i]));
        }
        return a;
    })()
});

XQueryParser.DFA6 = function(recognizer) {
    this.recognizer = recognizer;
    this.decisionNumber = 6;
    this.eot = XQueryParser.DFA6_eot;
    this.eof = XQueryParser.DFA6_eof;
    this.min = XQueryParser.DFA6_min;
    this.max = XQueryParser.DFA6_max;
    this.accept = XQueryParser.DFA6_accept;
    this.special = XQueryParser.DFA6_special;
    this.transition = XQueryParser.DFA6_transition;
};

org.antlr.lang.extend(XQueryParser.DFA6, org.antlr.runtime.DFA, {
    getDescription: function() {
        return "()* loopback of 329:11: ( (dnd+= pm_DefaultNamespaceDecl | s+= p_Setter | nd+= pm_NamespaceDecl | i+= p_Import | fto+= pm_FTOptionDecl ) )*";
    },
    specialStateTransition: function(s, input) {
        var _s = s;
        var retval = (function(s, input) {
            switch ( s ) {
                        case 0 : 
                            var LA6_0 = input.LA(1);

                             
                            var index6_0 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA6_0==DECLARE) ) {s = 1;}

                            else if ( ((LA6_0>=ANCESTOR && LA6_0<=ANCESTOR_OR_SELF)||LA6_0==ATTRIBUTE||LA6_0==CHILD||LA6_0==COMMENT||(LA6_0>=DESCENDANT && LA6_0<=DESCENDANT_OR_SELF)||(LA6_0>=DOCUMENT && LA6_0<=ELEMENT)||LA6_0==EVERY||(LA6_0>=FOLLOWING && LA6_0<=FOR)||LA6_0==IF||LA6_0==LET||LA6_0==NAMESPACE||LA6_0==NODE||LA6_0==ORDERED||(LA6_0>=PARENT && LA6_0<=PRECEDING_SIBLING)||LA6_0==PROCESSING_INSTRUCTION||(LA6_0>=SCHEMA_ATTRIBUTE && LA6_0<=SOME)||LA6_0==TEXT||LA6_0==TYPESWITCH||(LA6_0>=UNORDERED && LA6_0<=VARIABLE)||LA6_0==NAMESPACE_NODE||(LA6_0>=SWITCH && LA6_0<=TRY)||(LA6_0>=COPY && LA6_0<=DELETE)||LA6_0==INSERT||LA6_0==APPEND||(LA6_0>=RENAME && LA6_0<=REPLACE)||LA6_0==UPDATING||(LA6_0>=BREAK && LA6_0<=EXIT)||LA6_0==WHILE||LA6_0==LPAREN||(LA6_0>=DOLLAR && LA6_0<=L_UNION_BRACKET)||LA6_0==LBRACKET||LA6_0==LSQUARE||(LA6_0>=STAR && LA6_0<=SMALLER)||(LA6_0>=SLASH && LA6_0<=SLASH_SLASH)||(LA6_0>=DOT && LA6_0<=DOT_DOT)||(LA6_0>=ATTR_SIGN && LA6_0<=Q)||(LA6_0>=APOS && LA6_0<=QUOT)||(LA6_0>=L_Pragma && LA6_0<=L_DoubleLiteral)) ) {s = 2;}

                            else if ( (LA6_0==ANN_PERCENT) && ((this.lc(XQS)))) {s = 3;}

                            else if ( (LA6_0==IMPORT) ) {s = 4;}

                            else if ( (LA6_0==EOF||(LA6_0>=AND && LA6_0<=AT)||(LA6_0>=BASE_URI && LA6_0<=CASTABLE)||LA6_0==COLLATION||(LA6_0>=CONSTRUCTION && LA6_0<=COPY_NAMESPACES)||LA6_0==DEFAULT||(LA6_0>=DESCENDING && LA6_0<=DIV)||(LA6_0>=ELSE && LA6_0<=EQ)||(LA6_0>=EXCEPT && LA6_0<=EXTERNAL)||(LA6_0>=FUNCTION && LA6_0<=IDIV)||(LA6_0>=IN && LA6_0<=LEAST)||(LA6_0>=LT && LA6_0<=MODULE)||(LA6_0>=NE && LA6_0<=NO_PRESERVE)||(LA6_0>=JSON && LA6_0<=ORDER)||LA6_0==ORDERING||LA6_0==PRESERVE||(LA6_0>=STRUCTURED_ITEM && LA6_0<=SCHEMA)||(LA6_0>=STABLE && LA6_0<=STRIP)||(LA6_0>=THEN && LA6_0<=TREAT)||LA6_0==UNION||(LA6_0>=VERSION && LA6_0<=MINUS_SIGN)||(LA6_0>=NAN && LA6_0<=START)||(LA6_0>=TUMBLING && LA6_0<=BEFORE)||LA6_0==FIRST||(LA6_0>=INTO && LA6_0<=POSITION)||(LA6_0>=LAST && LA6_0<=NODES)||(LA6_0>=REVALIDATION && LA6_0<=SKIP)||(LA6_0>=VALUE && LA6_0<=WORDS)||(LA6_0>=LOOP && LA6_0<=RETURNING)||(LA6_0>=CHECK && LA6_0<=QUOT_ER)||LA6_0==L_NCName) ) {s = 5;}

                             
                            input.seek(index6_0);
                            if ( s>=0 ) return s;
                            break;
                        case 1 : 
                            var LA6_4 = input.LA(1);

                             
                            var index6_4 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA6_4==EOF||LA6_4==AND||(LA6_4>=CAST && LA6_4<=CASTABLE)||LA6_4==DIV||LA6_4==EQ||LA6_4==EXCEPT||LA6_4==GE||(LA6_4>=GT && LA6_4<=IDIV)||(LA6_4>=INSTANCE && LA6_4<=IS)||LA6_4==LE||(LA6_4>=LT && LA6_4<=MOD)||LA6_4==NE||LA6_4==OR||(LA6_4>=TO && LA6_4<=TREAT)||LA6_4==UNION||LA6_4==CONTAINS||(LA6_4>=CONCAT && LA6_4<=LPAREN)||LA6_4==LSQUARE||LA6_4==EQUAL||LA6_4==NOTEQUAL||LA6_4==HASH||LA6_4==COMMA||(LA6_4>=STAR && LA6_4<=BANG)||LA6_4==COLON||LA6_4==VBAR) ) {s = 9;}

                            else if ( (LA6_4==SEMICOLON) && ((this.lc(XQS)))) {s = 8;}

                            else if ( (LA6_4==MODULE||LA6_4==SCHEMA) ) {s = 7;}

                             
                            input.seek(index6_4);
                            if ( s>=0 ) return s;
                            break;
                        case 2 : 
                            var LA6_1 = input.LA(1);

                             
                            var index6_1 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA6_1==REVALIDATION) && ((this.lc(XQU)))) {s = 6;}

                            else if ( ((LA6_1>=BASE_URI && LA6_1<=BOUNDARY_SPACE)||(LA6_1>=CONSTRUCTION && LA6_1<=COPY_NAMESPACES)||LA6_1==DEFAULT||LA6_1==NAMESPACE||LA6_1==ORDERING||LA6_1==DECIMAL_FORMAT||LA6_1==FT_OPTION) ) {s = 7;}

                            else if ( (LA6_1==AND||(LA6_1>=CAST && LA6_1<=CASTABLE)||LA6_1==DIV||LA6_1==EQ||LA6_1==EXCEPT||(LA6_1>=FUNCTION && LA6_1<=GE)||(LA6_1>=GT && LA6_1<=IDIV)||(LA6_1>=INSTANCE && LA6_1<=IS)||LA6_1==LE||(LA6_1>=LT && LA6_1<=MOD)||LA6_1==NE||(LA6_1>=OPTION && LA6_1<=OR)||(LA6_1>=TO && LA6_1<=TREAT)||LA6_1==UNION||LA6_1==VARIABLE||LA6_1==CONTEXT||LA6_1==UPDATING||LA6_1==CONTAINS||LA6_1==COLLECTION||(LA6_1>=INDEX && LA6_1<=INTEGRITY)||(LA6_1>=CONCAT && LA6_1<=LPAREN)||LA6_1==LSQUARE||LA6_1==EQUAL||(LA6_1>=NOTEQUAL && LA6_1<=HASH)||LA6_1==COMMA||(LA6_1>=STAR && LA6_1<=BANG)||LA6_1==COLON||LA6_1==VBAR) ) {s = 5;}

                            else if ( (LA6_1==SEMICOLON) && ((this.lc(XQS)))) {s = 8;}

                            else if ( (LA6_1==EOF) ) {s = 9;}

                             
                            input.seek(index6_1);
                            if ( s>=0 ) return s;
                            break;
            }
        }).call(this.recognizer, s, input);
        if (!org.antlr.lang.isUndefined(retval)) {
            return retval;
        }
        if (this.recognizer.state.backtracking>0) {this.recognizer.state.failed=true; return -1;}
        var nvae =
            new org.antlr.runtime.NoViableAltException(this.getDescription(), 6, _s, input);
        this.error(nvae);
        throw nvae;
    },
    dummy: null
});
org.antlr.lang.augmentObject(XQueryParser, {
    DFA9_eotS:
        "\u000c\uffff",
    DFA9_eofS:
        "\u000c\uffff",
    DFA9_minS:
        "\u0001\u0022\u0001\u0017\u0002\uffff\u0001\u001e\u0007\uffff",
    DFA9_maxS:
        "\u0001\u0022\u0001\u00a0\u0002\uffff\u0001\u0079\u0007\uffff",
    DFA9_acceptS:
        "\u0002\uffff\u0001\u0007\u0001\u0001\u0001\uffff\u0001\u0003\u0001"+
    "\u0004\u0001\u0005\u0001\u0008\u0001\u0009\u0001\u0002\u0001\u0006",
    DFA9_specialS:
        "\u0001\uffff\u0001\u0000\u000a\uffff}>",
    DFA9_transitionS: [
            "\u0001\u0001",
            "\u0001\u0005\u0001\u0003\u0007\uffff\u0001\u0006\u0001\u0008"+
            "\u0001\uffff\u0001\u0004\u0031\uffff\u0001\u0007\u0023\uffff"+
            "\u0001\u0009\u0026\uffff\u0001\u0002",
            "",
            "",
            "\u0001\u000a\u0034\uffff\u0001\u000b\u0025\uffff\u0001\u0009",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    ]
});

org.antlr.lang.augmentObject(XQueryParser, {
    DFA9_eot:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA9_eotS),
    DFA9_eof:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA9_eofS),
    DFA9_min:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA9_minS),
    DFA9_max:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA9_maxS),
    DFA9_accept:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA9_acceptS),
    DFA9_special:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA9_specialS),
    DFA9_transition: (function() {
        var a = [],
            i,
            numStates = XQueryParser.DFA9_transitionS.length;
        for (i=0; i<numStates; i++) {
            a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA9_transitionS[i]));
        }
        return a;
    })()
});

XQueryParser.DFA9 = function(recognizer) {
    this.recognizer = recognizer;
    this.decisionNumber = 9;
    this.eot = XQueryParser.DFA9_eot;
    this.eof = XQueryParser.DFA9_eof;
    this.min = XQueryParser.DFA9_min;
    this.max = XQueryParser.DFA9_max;
    this.accept = XQueryParser.DFA9_accept;
    this.special = XQueryParser.DFA9_special;
    this.transition = XQueryParser.DFA9_transition;
};

org.antlr.lang.extend(XQueryParser.DFA9, org.antlr.runtime.DFA, {
    getDescription: function() {
        return "355:1: p_Setter : ( pm_BoundarySpaceDecl | pm_DefaultCollationDecl | pm_BaseURIDecl | pm_ConstructionDecl | pm_OrderingModeDecl | pm_EmptyOrderDecl | {...}? => pm_RevalidationDecl | pm_CopyNamespacesDecl | pm_DecimalFormatDecl );";
    },
    specialStateTransition: function(s, input) {
        var _s = s;
        var retval = (function(s, input) {
            switch ( s ) {
                        case 0 : 
                            var LA9_1 = input.LA(1);

                             
                            var index9_1 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA9_1==REVALIDATION) && ((this.lc(XQU)))) {s = 2;}

                            else if ( (LA9_1==BOUNDARY_SPACE) ) {s = 3;}

                            else if ( (LA9_1==DEFAULT) ) {s = 4;}

                            else if ( (LA9_1==BASE_URI) ) {s = 5;}

                            else if ( (LA9_1==CONSTRUCTION) ) {s = 6;}

                            else if ( (LA9_1==ORDERING) ) {s = 7;}

                            else if ( (LA9_1==COPY_NAMESPACES) ) {s = 8;}

                            else if ( (LA9_1==DECIMAL_FORMAT) ) {s = 9;}

                             
                            input.seek(index9_1);
                            if ( s>=0 ) return s;
                            break;
            }
        }).call(this.recognizer, s, input);
        if (!org.antlr.lang.isUndefined(retval)) {
            return retval;
        }
        if (this.recognizer.state.backtracking>0) {this.recognizer.state.failed=true; return -1;}
        var nvae =
            new org.antlr.runtime.NoViableAltException(this.getDescription(), 9, _s, input);
        this.error(nvae);
        throw nvae;
    },
    dummy: null
});
org.antlr.lang.augmentObject(XQueryParser, {
    DFA44_eotS:
        "\u004b\uffff",
    DFA44_eofS:
        "\u0001\u0046\u004a\uffff",
    DFA44_minS:
        "\u0001\u0010\u0045\u0000\u0001\uffff\u0002\u0000\u0002\uffff",
    DFA44_maxS:
        "\u0001\u0122\u0045\u0000\u0001\uffff\u0002\u0000\u0002\uffff",
    DFA44_acceptS:
        "\u0046\uffff\u0001\u0001\u0003\uffff\u0001\u0002",
    DFA44_specialS:
        "\u0001\u0000\u0001\u0001\u0001\u0002\u0001\u0003\u0001\u0004\u0001"+
    "\u0005\u0001\u0006\u0001\u0007\u0001\u0008\u0001\u0009\u0001\u000a\u0001"+
    "\u000b\u0001\u000c\u0001\u000d\u0001\u000e\u0001\u000f\u0001\u0010\u0001"+
    "\u0011\u0001\u0012\u0001\u0013\u0001\u0014\u0001\u0015\u0001\u0016\u0001"+
    "\u0017\u0001\u0018\u0001\u0019\u0001\u001a\u0001\u001b\u0001\u001c\u0001"+
    "\u001d\u0001\u001e\u0001\u001f\u0001\u0020\u0001\u0021\u0001\u0022\u0001"+
    "\u0023\u0001\u0024\u0001\u0025\u0001\u0026\u0001\u0027\u0001\u0028\u0001"+
    "\u0029\u0001\u002a\u0001\u002b\u0001\u002c\u0001\u002d\u0001\u002e\u0001"+
    "\u002f\u0001\u0030\u0001\u0031\u0001\u0032\u0001\u0033\u0001\u0034\u0001"+
    "\u0035\u0001\u0036\u0001\u0037\u0001\u0038\u0001\u0039\u0001\u003a\u0001"+
    "\u003b\u0001\u003c\u0001\u003d\u0001\u003e\u0001\u003f\u0001\u0040\u0001"+
    "\u0041\u0001\u0042\u0001\u0043\u0001\u0044\u0001\u0045\u0001\uffff\u0001"+
    "\u0046\u0001\u0047\u0002\uffff}>",
    DFA44_transitionS: [
            "\u0001\u0029\u0001\u002c\u0004\u0047\u0001\u001f\u0006\u0047"+
            "\u0001\u002d\u0001\u0047\u0001\u0022\u0004\u0047\u0001\u002f"+
            "\u0001\u0031\u0002\u0047\u0001\u001a\u0001\u0024\u0001\u0017"+
            "\u0002\u0047\u0001\u0048\u0002\u0047\u0001\u0008\u0002\u0047"+
            "\u0001\u0033\u0001\u0032\u0001\u0001\u0005\u0047\u0001\u0003"+
            "\u0006\u0047\u0001\u0048\u0003\u0047\u0001\u0002\u0003\u0047"+
            "\u0001\u001e\u0003\u0047\u0001\u0039\u0005\u0047\u0001\u0016"+
            "\u0001\u0047\u0001\u0021\u0001\u002b\u0001\u002a\u0001\u0047"+
            "\u0001\u0023\u0004\u0048\u0003\u0047\u0001\u0037\u0001\u0036"+
            "\u0001\u0030\u0001\u0007\u0003\u0047\u0001\u0020\u0003\u0047"+
            "\u0001\u0005\u0001\u0047\u0001\u0019\u0001\u000b\u0001\u0045"+
            "\u000f\u0047\u0001\u0038\u0009\u0047\u0001\u0004\u0001\u0006"+
            "\u0007\u0047\u0001\u0040\u0001\u003d\u0001\u0047\u0001\u0034"+
            "\u0002\u0047\u0001\u0041\u0003\u0047\u0001\u003e\u0001\u003f"+
            "\u0002\u0047\u0001\u0018\u002c\u0047\u0001\u0042\u0001\u0043"+
            "\u0001\u0044\u0002\u0047\u0001\u003a\u000d\u0047\u0001\uffff"+
            "\u0001\u000e\u0001\uffff\u0001\u0014\u0001\u0028\u0001\uffff"+
            "\u0001\u0025\u0001\uffff\u0001\u0027\u0004\uffff\u0001\u0046"+
            "\u0004\uffff\u0001\u003b\u0001\u0009\u0001\u000a\u0001\u001b"+
            "\u0005\uffff\u0001\u000c\u0001\u000d\u0001\uffff\u0001\u0015"+
            "\u0001\u002e\u000c\uffff\u0001\u0035\u0001\u0026\u0002\uffff"+
            "\u0001\u0013\u0001\u0012\u0002\uffff\u0001\u0047\u0006\uffff"+
            "\u0001\u003c\u0001\u001c\u0001\u001d\u0001\u000f\u0001\u0010"+
            "\u0001\u0011",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "",
            "\u0001\uffff",
            "\u0001\uffff",
            "",
            ""
    ]
});

org.antlr.lang.augmentObject(XQueryParser, {
    DFA44_eot:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA44_eotS),
    DFA44_eof:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA44_eofS),
    DFA44_min:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA44_minS),
    DFA44_max:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA44_maxS),
    DFA44_accept:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA44_acceptS),
    DFA44_special:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA44_specialS),
    DFA44_transition: (function() {
        var a = [],
            i,
            numStates = XQueryParser.DFA44_transitionS.length;
        for (i=0; i<numStates; i++) {
            a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA44_transitionS[i]));
        }
        return a;
    })()
});

XQueryParser.DFA44 = function(recognizer) {
    this.recognizer = recognizer;
    this.decisionNumber = 44;
    this.eot = XQueryParser.DFA44_eot;
    this.eof = XQueryParser.DFA44_eof;
    this.min = XQueryParser.DFA44_min;
    this.max = XQueryParser.DFA44_max;
    this.accept = XQueryParser.DFA44_accept;
    this.special = XQueryParser.DFA44_special;
    this.transition = XQueryParser.DFA44_transition;
};

org.antlr.lang.extend(XQueryParser.DFA44, org.antlr.runtime.DFA, {
    getDescription: function() {
        return "534:1: pm_QueryBody : ({...}? => p_Program | p_Expr[true,true] );";
    },
    specialStateTransition: function(s, input) {
        var _s = s;
        var retval = (function(s, input) {
            switch ( s ) {
                        case 0 : 
                            var LA44_0 = input.LA(1);

                             
                            var index44_0 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA44_0==FOR) ) {s = 1;}

                            else if ( (LA44_0==LET) ) {s = 2;}

                            else if ( (LA44_0==IF) ) {s = 3;}

                            else if ( (LA44_0==SWITCH) ) {s = 4;}

                            else if ( (LA44_0==TYPESWITCH) ) {s = 5;}

                            else if ( (LA44_0==TRY) ) {s = 6;}

                            else if ( (LA44_0==SOME) ) {s = 7;}

                            else if ( (LA44_0==EVERY) ) {s = 8;}

                            else if ( (LA44_0==PLUS) ) {s = 9;}

                            else if ( (LA44_0==MINUS) ) {s = 10;}

                            else if ( (LA44_0==VALIDATE) ) {s = 11;}

                            else if ( (LA44_0==SLASH) ) {s = 12;}

                            else if ( (LA44_0==SLASH_SLASH) ) {s = 13;}

                            else if ( (LA44_0==LPAREN) ) {s = 14;}

                            else if ( (LA44_0==L_IntegerLiteral) ) {s = 15;}

                            else if ( (LA44_0==L_DecimalLiteral) ) {s = 16;}

                            else if ( (LA44_0==L_DoubleLiteral) ) {s = 17;}

                            else if ( (LA44_0==QUOT) ) {s = 18;}

                            else if ( (LA44_0==APOS) ) {s = 19;}

                            else if ( (LA44_0==DOLLAR) ) {s = 20;}

                            else if ( (LA44_0==DOT) ) {s = 21;}

                            else if ( (LA44_0==ORDERED) ) {s = 22;}

                            else if ( (LA44_0==ELEMENT) ) {s = 23;}

                            else if ( (LA44_0==UPDATING) ) {s = 24;}

                            else if ( (LA44_0==UNORDERED) ) {s = 25;}

                            else if ( (LA44_0==DOCUMENT) ) {s = 26;}

                            else if ( (LA44_0==SMALLER) ) {s = 27;}

                            else if ( (LA44_0==L_DirCommentConstructor) ) {s = 28;}

                            else if ( (LA44_0==L_DirPIConstructor) ) {s = 29;}

                            else if ( (LA44_0==NAMESPACE) ) {s = 30;}

                            else if ( (LA44_0==ATTRIBUTE) ) {s = 31;}

                            else if ( (LA44_0==TEXT) ) {s = 32;}

                            else if ( (LA44_0==PARENT) ) {s = 33;}

                            else if ( (LA44_0==COMMENT) ) {s = 34;}

                            else if ( (LA44_0==PROCESSING_INSTRUCTION) ) {s = 35;}

                            else if ( (LA44_0==DOCUMENT_NODE) ) {s = 36;}

                            else if ( (LA44_0==LBRACKET) ) {s = 37;}

                            else if ( (LA44_0==Q) ) {s = 38;}

                            else if ( (LA44_0==LSQUARE) ) {s = 39;}

                            else if ( (LA44_0==L_UNION_BRACKET) ) {s = 40;}

                            else if ( (LA44_0==ANCESTOR) ) {s = 41;}

                            else if ( (LA44_0==PRECEDING_SIBLING) ) {s = 42;}

                            else if ( (LA44_0==PRECEDING) ) {s = 43;}

                            else if ( (LA44_0==ANCESTOR_OR_SELF) ) {s = 44;}

                            else if ( (LA44_0==CHILD) ) {s = 45;}

                            else if ( (LA44_0==DOT_DOT) ) {s = 46;}

                            else if ( (LA44_0==DESCENDANT) ) {s = 47;}

                            else if ( (LA44_0==SELF) ) {s = 48;}

                            else if ( (LA44_0==DESCENDANT_OR_SELF) ) {s = 49;}

                            else if ( (LA44_0==FOLLOWING_SIBLING) ) {s = 50;}

                            else if ( (LA44_0==FOLLOWING) ) {s = 51;}

                            else if ( (LA44_0==INSERT) ) {s = 52;}

                            else if ( (LA44_0==ATTR_SIGN) ) {s = 53;}

                            else if ( (LA44_0==SCHEMA_ELEMENT) ) {s = 54;}

                            else if ( (LA44_0==SCHEMA_ATTRIBUTE) ) {s = 55;}

                            else if ( (LA44_0==NAMESPACE_NODE) ) {s = 56;}

                            else if ( (LA44_0==NODE) ) {s = 57;}

                            else if ( (LA44_0==WHILE) ) {s = 58;}

                            else if ( (LA44_0==STAR) ) {s = 59;}

                            else if ( (LA44_0==L_Pragma) ) {s = 60;}

                            else if ( (LA44_0==DELETE) ) {s = 61;}

                            else if ( (LA44_0==RENAME) ) {s = 62;}

                            else if ( (LA44_0==REPLACE) ) {s = 63;}

                            else if ( (LA44_0==COPY) ) {s = 64;}

                            else if ( (LA44_0==APPEND) ) {s = 65;}

                            else if ( (LA44_0==BREAK) ) {s = 66;}

                            else if ( (LA44_0==CONTINUE) ) {s = 67;}

                            else if ( (LA44_0==EXIT) ) {s = 68;}

                            else if ( (LA44_0==VARIABLE) ) {s = 69;}

                            else if ( (LA44_0==EOF||LA44_0==ANN_PERCENT) && ((this.lc(XQS)))) {s = 70;}

                            else if ( ((LA44_0>=AND && LA44_0<=AT)||(LA44_0>=BASE_URI && LA44_0<=CASTABLE)||LA44_0==COLLATION||(LA44_0>=CONSTRUCTION && LA44_0<=DEFAULT)||(LA44_0>=DESCENDING && LA44_0<=DIV)||(LA44_0>=ELSE && LA44_0<=EMPTY)||(LA44_0>=ENCODING && LA44_0<=EQ)||(LA44_0>=EXCEPT && LA44_0<=EXTERNAL)||(LA44_0>=FUNCTION && LA44_0<=IDIV)||(LA44_0>=IMPORT && LA44_0<=IS)||(LA44_0>=LAX && LA44_0<=LEAST)||(LA44_0>=LT && LA44_0<=MODULE)||(LA44_0>=NE && LA44_0<=NO_PRESERVE)||(LA44_0>=JSON && LA44_0<=ORDER)||LA44_0==ORDERING||LA44_0==PRESERVE||(LA44_0>=RETURN && LA44_0<=SCHEMA)||(LA44_0>=STABLE && LA44_0<=STRIP)||(LA44_0>=THEN && LA44_0<=TREAT)||LA44_0==UNION||(LA44_0>=VERSION && LA44_0<=MINUS_SIGN)||(LA44_0>=NAN && LA44_0<=START)||(LA44_0>=TUMBLING && LA44_0<=BEFORE)||LA44_0==FIRST||(LA44_0>=INTO && LA44_0<=POSITION)||(LA44_0>=LAST && LA44_0<=NODES)||(LA44_0>=REVALIDATION && LA44_0<=SKIP)||(LA44_0>=VALUE && LA44_0<=WORDS)||(LA44_0>=LOOP && LA44_0<=RETURNING)||(LA44_0>=CHECK && LA44_0<=QUOT_ER)||LA44_0==L_NCName) ) {s = 71;}

                            else if ( (LA44_0==EMPTY_SEQUENCE||LA44_0==ITEM||(LA44_0>=STRUCTURED_ITEM && LA44_0<=ARRAY)) ) {s = 72;}

                             
                            input.seek(index44_0);
                            if ( s>=0 ) return s;
                            break;
                        case 1 : 
                            var LA44_1 = input.LA(1);

                             
                            var index44_1 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_1);
                            if ( s>=0 ) return s;
                            break;
                        case 2 : 
                            var LA44_2 = input.LA(1);

                             
                            var index44_2 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_2);
                            if ( s>=0 ) return s;
                            break;
                        case 3 : 
                            var LA44_3 = input.LA(1);

                             
                            var index44_3 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_3);
                            if ( s>=0 ) return s;
                            break;
                        case 4 : 
                            var LA44_4 = input.LA(1);

                             
                            var index44_4 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_4);
                            if ( s>=0 ) return s;
                            break;
                        case 5 : 
                            var LA44_5 = input.LA(1);

                             
                            var index44_5 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_5);
                            if ( s>=0 ) return s;
                            break;
                        case 6 : 
                            var LA44_6 = input.LA(1);

                             
                            var index44_6 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_6);
                            if ( s>=0 ) return s;
                            break;
                        case 7 : 
                            var LA44_7 = input.LA(1);

                             
                            var index44_7 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_7);
                            if ( s>=0 ) return s;
                            break;
                        case 8 : 
                            var LA44_8 = input.LA(1);

                             
                            var index44_8 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_8);
                            if ( s>=0 ) return s;
                            break;
                        case 9 : 
                            var LA44_9 = input.LA(1);

                             
                            var index44_9 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_9);
                            if ( s>=0 ) return s;
                            break;
                        case 10 : 
                            var LA44_10 = input.LA(1);

                             
                            var index44_10 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_10);
                            if ( s>=0 ) return s;
                            break;
                        case 11 : 
                            var LA44_11 = input.LA(1);

                             
                            var index44_11 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_11);
                            if ( s>=0 ) return s;
                            break;
                        case 12 : 
                            var LA44_12 = input.LA(1);

                             
                            var index44_12 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_12);
                            if ( s>=0 ) return s;
                            break;
                        case 13 : 
                            var LA44_13 = input.LA(1);

                             
                            var index44_13 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_13);
                            if ( s>=0 ) return s;
                            break;
                        case 14 : 
                            var LA44_14 = input.LA(1);

                             
                            var index44_14 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_14);
                            if ( s>=0 ) return s;
                            break;
                        case 15 : 
                            var LA44_15 = input.LA(1);

                             
                            var index44_15 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_15);
                            if ( s>=0 ) return s;
                            break;
                        case 16 : 
                            var LA44_16 = input.LA(1);

                             
                            var index44_16 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_16);
                            if ( s>=0 ) return s;
                            break;
                        case 17 : 
                            var LA44_17 = input.LA(1);

                             
                            var index44_17 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_17);
                            if ( s>=0 ) return s;
                            break;
                        case 18 : 
                            var LA44_18 = input.LA(1);

                             
                            var index44_18 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_18);
                            if ( s>=0 ) return s;
                            break;
                        case 19 : 
                            var LA44_19 = input.LA(1);

                             
                            var index44_19 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_19);
                            if ( s>=0 ) return s;
                            break;
                        case 20 : 
                            var LA44_20 = input.LA(1);

                             
                            var index44_20 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_20);
                            if ( s>=0 ) return s;
                            break;
                        case 21 : 
                            var LA44_21 = input.LA(1);

                             
                            var index44_21 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_21);
                            if ( s>=0 ) return s;
                            break;
                        case 22 : 
                            var LA44_22 = input.LA(1);

                             
                            var index44_22 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_22);
                            if ( s>=0 ) return s;
                            break;
                        case 23 : 
                            var LA44_23 = input.LA(1);

                             
                            var index44_23 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_23);
                            if ( s>=0 ) return s;
                            break;
                        case 24 : 
                            var LA44_24 = input.LA(1);

                             
                            var index44_24 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_24);
                            if ( s>=0 ) return s;
                            break;
                        case 25 : 
                            var LA44_25 = input.LA(1);

                             
                            var index44_25 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_25);
                            if ( s>=0 ) return s;
                            break;
                        case 26 : 
                            var LA44_26 = input.LA(1);

                             
                            var index44_26 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_26);
                            if ( s>=0 ) return s;
                            break;
                        case 27 : 
                            var LA44_27 = input.LA(1);

                             
                            var index44_27 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_27);
                            if ( s>=0 ) return s;
                            break;
                        case 28 : 
                            var LA44_28 = input.LA(1);

                             
                            var index44_28 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_28);
                            if ( s>=0 ) return s;
                            break;
                        case 29 : 
                            var LA44_29 = input.LA(1);

                             
                            var index44_29 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_29);
                            if ( s>=0 ) return s;
                            break;
                        case 30 : 
                            var LA44_30 = input.LA(1);

                             
                            var index44_30 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_30);
                            if ( s>=0 ) return s;
                            break;
                        case 31 : 
                            var LA44_31 = input.LA(1);

                             
                            var index44_31 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_31);
                            if ( s>=0 ) return s;
                            break;
                        case 32 : 
                            var LA44_32 = input.LA(1);

                             
                            var index44_32 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_32);
                            if ( s>=0 ) return s;
                            break;
                        case 33 : 
                            var LA44_33 = input.LA(1);

                             
                            var index44_33 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_33);
                            if ( s>=0 ) return s;
                            break;
                        case 34 : 
                            var LA44_34 = input.LA(1);

                             
                            var index44_34 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_34);
                            if ( s>=0 ) return s;
                            break;
                        case 35 : 
                            var LA44_35 = input.LA(1);

                             
                            var index44_35 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_35);
                            if ( s>=0 ) return s;
                            break;
                        case 36 : 
                            var LA44_36 = input.LA(1);

                             
                            var index44_36 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_36);
                            if ( s>=0 ) return s;
                            break;
                        case 37 : 
                            var LA44_37 = input.LA(1);

                             
                            var index44_37 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_37);
                            if ( s>=0 ) return s;
                            break;
                        case 38 : 
                            var LA44_38 = input.LA(1);

                             
                            var index44_38 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_38);
                            if ( s>=0 ) return s;
                            break;
                        case 39 : 
                            var LA44_39 = input.LA(1);

                             
                            var index44_39 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_39);
                            if ( s>=0 ) return s;
                            break;
                        case 40 : 
                            var LA44_40 = input.LA(1);

                             
                            var index44_40 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_40);
                            if ( s>=0 ) return s;
                            break;
                        case 41 : 
                            var LA44_41 = input.LA(1);

                             
                            var index44_41 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_41);
                            if ( s>=0 ) return s;
                            break;
                        case 42 : 
                            var LA44_42 = input.LA(1);

                             
                            var index44_42 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_42);
                            if ( s>=0 ) return s;
                            break;
                        case 43 : 
                            var LA44_43 = input.LA(1);

                             
                            var index44_43 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_43);
                            if ( s>=0 ) return s;
                            break;
                        case 44 : 
                            var LA44_44 = input.LA(1);

                             
                            var index44_44 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_44);
                            if ( s>=0 ) return s;
                            break;
                        case 45 : 
                            var LA44_45 = input.LA(1);

                             
                            var index44_45 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_45);
                            if ( s>=0 ) return s;
                            break;
                        case 46 : 
                            var LA44_46 = input.LA(1);

                             
                            var index44_46 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_46);
                            if ( s>=0 ) return s;
                            break;
                        case 47 : 
                            var LA44_47 = input.LA(1);

                             
                            var index44_47 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_47);
                            if ( s>=0 ) return s;
                            break;
                        case 48 : 
                            var LA44_48 = input.LA(1);

                             
                            var index44_48 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_48);
                            if ( s>=0 ) return s;
                            break;
                        case 49 : 
                            var LA44_49 = input.LA(1);

                             
                            var index44_49 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_49);
                            if ( s>=0 ) return s;
                            break;
                        case 50 : 
                            var LA44_50 = input.LA(1);

                             
                            var index44_50 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_50);
                            if ( s>=0 ) return s;
                            break;
                        case 51 : 
                            var LA44_51 = input.LA(1);

                             
                            var index44_51 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_51);
                            if ( s>=0 ) return s;
                            break;
                        case 52 : 
                            var LA44_52 = input.LA(1);

                             
                            var index44_52 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (((this.lc(XQS))||((this.lc(XQS))&&(this.lc(XQU))))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_52);
                            if ( s>=0 ) return s;
                            break;
                        case 53 : 
                            var LA44_53 = input.LA(1);

                             
                            var index44_53 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_53);
                            if ( s>=0 ) return s;
                            break;
                        case 54 : 
                            var LA44_54 = input.LA(1);

                             
                            var index44_54 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_54);
                            if ( s>=0 ) return s;
                            break;
                        case 55 : 
                            var LA44_55 = input.LA(1);

                             
                            var index44_55 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_55);
                            if ( s>=0 ) return s;
                            break;
                        case 56 : 
                            var LA44_56 = input.LA(1);

                             
                            var index44_56 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_56);
                            if ( s>=0 ) return s;
                            break;
                        case 57 : 
                            var LA44_57 = input.LA(1);

                             
                            var index44_57 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_57);
                            if ( s>=0 ) return s;
                            break;
                        case 58 : 
                            var LA44_58 = input.LA(1);

                             
                            var index44_58 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_58);
                            if ( s>=0 ) return s;
                            break;
                        case 59 : 
                            var LA44_59 = input.LA(1);

                             
                            var index44_59 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_59);
                            if ( s>=0 ) return s;
                            break;
                        case 60 : 
                            var LA44_60 = input.LA(1);

                             
                            var index44_60 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_60);
                            if ( s>=0 ) return s;
                            break;
                        case 61 : 
                            var LA44_61 = input.LA(1);

                             
                            var index44_61 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (((this.lc(XQS))||((this.lc(XQS))&&(this.lc(XQU))))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_61);
                            if ( s>=0 ) return s;
                            break;
                        case 62 : 
                            var LA44_62 = input.LA(1);

                             
                            var index44_62 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (((this.lc(XQS))||((this.lc(XQS))&&(this.lc(XQU))))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_62);
                            if ( s>=0 ) return s;
                            break;
                        case 63 : 
                            var LA44_63 = input.LA(1);

                             
                            var index44_63 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (((this.lc(XQS))||((this.lc(XQS))&&(this.lc(XQU))))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_63);
                            if ( s>=0 ) return s;
                            break;
                        case 64 : 
                            var LA44_64 = input.LA(1);

                             
                            var index44_64 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (((this.lc(XQS))||((this.lc(XQS))&&(this.lc(XQU))))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_64);
                            if ( s>=0 ) return s;
                            break;
                        case 65 : 
                            var LA44_65 = input.LA(1);

                             
                            var index44_65 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (((this.lc(XQS))||((this.lc(XQS))&&(this.lc(XQU))))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_65);
                            if ( s>=0 ) return s;
                            break;
                        case 66 : 
                            var LA44_66 = input.LA(1);

                             
                            var index44_66 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_66);
                            if ( s>=0 ) return s;
                            break;
                        case 67 : 
                            var LA44_67 = input.LA(1);

                             
                            var index44_67 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_67);
                            if ( s>=0 ) return s;
                            break;
                        case 68 : 
                            var LA44_68 = input.LA(1);

                             
                            var index44_68 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_68);
                            if ( s>=0 ) return s;
                            break;
                        case 69 : 
                            var LA44_69 = input.LA(1);

                             
                            var index44_69 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_69);
                            if ( s>=0 ) return s;
                            break;
                        case 70 : 
                            var LA44_71 = input.LA(1);

                             
                            var index44_71 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_71);
                            if ( s>=0 ) return s;
                            break;
                        case 71 : 
                            var LA44_72 = input.LA(1);

                             
                            var index44_72 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((this.lc(XQS))) ) {s = 70;}

                            else if ( (true) ) {s = 74;}

                             
                            input.seek(index44_72);
                            if ( s>=0 ) return s;
                            break;
            }
        }).call(this.recognizer, s, input);
        if (!org.antlr.lang.isUndefined(retval)) {
            return retval;
        }
        if (this.recognizer.state.backtracking>0) {this.recognizer.state.failed=true; return -1;}
        var nvae =
            new org.antlr.runtime.NoViableAltException(this.getDescription(), 44, _s, input);
        this.error(nvae);
        throw nvae;
    },
    dummy: null
});
org.antlr.lang.augmentObject(XQueryParser, {
    DFA46_eotS:
        "\u0011\uffff",
    DFA46_eofS:
        "\u0001\uffff\u0006\u0007\u000a\uffff",
    DFA46_minS:
        "\u0001\u0010\u0006\u0012\u000a\uffff",
    DFA46_maxS:
        "\u0001\u0122\u0006\u0107\u000a\uffff",
    DFA46_acceptS:
        "\u0007\uffff\u0001\u0006\u0005\u0001\u0001\u0002\u0001\u0003\u0001"+
    "\u0004\u0001\u0005",
    DFA46_specialS:
        "\u0001\uffff\u0001\u0002\u0001\u0005\u0001\u0004\u0001\u0001\u0001"+
    "\u0003\u0001\u0000\u000a\uffff}>",
    DFA46_transitionS: [
            "\u0025\u0007\u0001\u0001\u0005\u0007\u0001\u0003\u000a\u0007"+
            "\u0001\u0002\u0026\u0007\u0001\u0005\u001d\u0007\u0001\u0004"+
            "\u0001\u0006\u0055\u0007\u0001\uffff\u0001\u0007\u0001\uffff"+
            "\u0002\u0007\u0001\uffff\u0001\u0007\u0001\uffff\u0001\u0007"+
            "\u0009\uffff\u0004\u0007\u0005\uffff\u0002\u0007\u0001\uffff"+
            "\u0002\u0007\u000c\uffff\u0002\u0007\u0002\uffff\u0002\u0007"+
            "\u0002\uffff\u0001\u0007\u0006\uffff\u0006\u0007",
            "\u0004\u0007\u0004\uffff\u0003\u0007\u0001\uffff\u0001\u0007"+
            "\u0004\uffff\u0001\u0007\u0002\uffff\u0002\u0007\u0004\uffff"+
            "\u0001\u0007\u0002\uffff\u0001\u0007\u0001\uffff\u0001\u0007"+
            "\u0003\uffff\u0001\u0007\u0001\uffff\u0001\u0007\u0001\uffff"+
            "\u0002\u0007\u0004\uffff\u0003\u0007\u0002\uffff\u0001\u0007"+
            "\u0001\uffff\u0003\u0007\u0002\uffff\u0001\u0007\u0006\uffff"+
            "\u0002\u0007\u000b\uffff\u0002\u0007\u0005\uffff\u0001\u0007"+
            "\u0004\uffff\u0002\u0007\u0001\uffff\u0001\u0007\u0004\uffff"+
            "\u0001\u0007\u0004\uffff\u0001\u0007\u0003\uffff\u0002\u0007"+
            "\u0006\uffff\u0001\u0007\u0004\uffff\u0001\u000a\u0001\u0007"+
            "\u0002\uffff\u0001\u0009\u0004\uffff\u0002\u0007\u0004\uffff"+
            "\u0001\u0007\u0003\uffff\u0001\u0007\u0007\uffff\u0001\u0007"+
            "\u0002\uffff\u0001\u0007\u003a\uffff\u0003\u0007\u0001\u0008"+
            "\u0001\uffff\u0001\u0007\u0001\uffff\u0004\u0007\u0001\uffff"+
            "\u0001\u0007\u0001\uffff\u0001\u0007\u0001\uffff\u0001\u0007"+
            "\u0001\uffff\u000c\u0007\u0002\uffff\u0001\u0007\u0003\uffff"+
            "\u0002\u0007",
            "\u0004\u0007\u0004\uffff\u0003\u0007\u0001\uffff\u0001\u0007"+
            "\u0004\uffff\u0001\u0007\u0002\uffff\u0002\u0007\u0004\uffff"+
            "\u0001\u0007\u0002\uffff\u0001\u0007\u0001\uffff\u0001\u0007"+
            "\u0003\uffff\u0001\u0007\u0001\uffff\u0001\u0007\u0001\uffff"+
            "\u0002\u0007\u0004\uffff\u0003\u0007\u0002\uffff\u0001\u0007"+
            "\u0001\uffff\u0003\u0007\u0002\uffff\u0001\u0007\u0006\uffff"+
            "\u0002\u0007\u000b\uffff\u0002\u0007\u0005\uffff\u0001\u0007"+
            "\u0004\uffff\u0002\u0007\u0001\uffff\u0001\u0007\u0004\uffff"+
            "\u0001\u0007\u0004\uffff\u0001\u0007\u0003\uffff\u0002\u0007"+
            "\u0006\uffff\u0001\u0007\u0005\uffff\u0001\u0007\u0007\uffff"+
            "\u0002\u0007\u0004\uffff\u0001\u0007\u0003\uffff\u0001\u0007"+
            "\u0007\uffff\u0001\u0007\u0002\uffff\u0001\u0007\u0018\uffff"+
            "\u0001\u000c\u0021\uffff\u0003\u0007\u0001\u000b\u0001\uffff"+
            "\u0001\u0007\u0001\uffff\u0004\u0007\u0001\uffff\u0001\u0007"+
            "\u0001\uffff\u0001\u0007\u0001\uffff\u0001\u0007\u0001\uffff"+
            "\u000c\u0007\u0002\uffff\u0001\u0007\u0003\uffff\u0002\u0007",
            "\u0004\u0007\u0004\uffff\u0003\u0007\u0001\uffff\u0001\u0007"+
            "\u0004\uffff\u0001\u0007\u0002\uffff\u0002\u0007\u0004\uffff"+
            "\u0001\u0007\u0002\uffff\u0001\u0007\u0001\uffff\u0001\u0007"+
            "\u0003\uffff\u0001\u0007\u0001\uffff\u0001\u0007\u0001\uffff"+
            "\u0002\u0007\u0004\uffff\u0003\u0007\u0002\uffff\u0001\u0007"+
            "\u0001\uffff\u0003\u0007\u0002\uffff\u0001\u0007\u0006\uffff"+
            "\u0002\u0007\u000b\uffff\u0002\u0007\u0005\uffff\u0001\u0007"+
            "\u0004\uffff\u0002\u0007\u0001\uffff\u0001\u0007\u0004\uffff"+
            "\u0001\u0007\u0004\uffff\u0001\u0007\u0003\uffff\u0002\u0007"+
            "\u0006\uffff\u0001\u0007\u0005\uffff\u0001\u0007\u0007\uffff"+
            "\u0002\u0007\u0004\uffff\u0001\u0007\u0003\uffff\u0001\u0007"+
            "\u0007\uffff\u0001\u0007\u0002\uffff\u0001\u0007\u003a\uffff"+
            "\u0001\u0007\u0001\u000d\u0001\u0007\u0002\uffff\u0001\u0007"+
            "\u0001\uffff\u0004\u0007\u0001\uffff\u0001\u0007\u0001\uffff"+
            "\u0001\u0007\u0001\uffff\u0001\u0007\u0001\uffff\u000c\u0007"+
            "\u0002\uffff\u0001\u0007\u0003\uffff\u0002\u0007",
            "\u0004\u0007\u0004\uffff\u0003\u0007\u0001\uffff\u0001\u0007"+
            "\u0004\uffff\u0001\u0007\u0002\uffff\u0002\u0007\u0004\uffff"+
            "\u0001\u0007\u0002\uffff\u0001\u0007\u0001\uffff\u0001\u0007"+
            "\u0003\uffff\u0001\u0007\u0001\uffff\u0001\u0007\u0001\uffff"+
            "\u0002\u0007\u0004\uffff\u0003\u0007\u0002\uffff\u0001\u0007"+
            "\u0001\uffff\u0003\u0007\u0002\uffff\u0001\u0007\u0006\uffff"+
            "\u0002\u0007\u000b\uffff\u0002\u0007\u0005\uffff\u0001\u0007"+
            "\u0004\uffff\u0002\u0007\u0001\uffff\u0001\u0007\u0004\uffff"+
            "\u0001\u0007\u0004\uffff\u0001\u0007\u0003\uffff\u0002\u0007"+
            "\u0006\uffff\u0001\u0007\u0005\uffff\u0001\u0007\u0007\uffff"+
            "\u0002\u0007\u0004\uffff\u0001\u0007\u0003\uffff\u0001\u0007"+
            "\u0007\uffff\u0001\u0007\u0002\uffff\u0001\u0007\u003a\uffff"+
            "\u0001\u0007\u0001\u000e\u0001\u0007\u0002\uffff\u0001\u0007"+
            "\u0001\uffff\u0004\u0007\u0001\uffff\u0001\u0007\u0001\uffff"+
            "\u0001\u0007\u0001\uffff\u0001\u0007\u0001\uffff\u000c\u0007"+
            "\u0002\uffff\u0001\u0007\u0003\uffff\u0002\u0007",
            "\u0004\u0007\u0004\uffff\u0003\u0007\u0001\uffff\u0001\u0007"+
            "\u0004\uffff\u0001\u0007\u0002\uffff\u0002\u0007\u0004\uffff"+
            "\u0001\u0007\u0002\uffff\u0001\u0007\u0001\uffff\u0001\u0007"+
            "\u0003\uffff\u0001\u0007\u0001\uffff\u0001\u0007\u0001\uffff"+
            "\u0002\u0007\u0004\uffff\u0003\u0007\u0002\uffff\u0001\u0007"+
            "\u0001\uffff\u0003\u0007\u0002\uffff\u0001\u0007\u0006\uffff"+
            "\u0002\u0007\u000b\uffff\u0002\u0007\u0005\uffff\u0001\u0007"+
            "\u0004\uffff\u0002\u0007\u0001\uffff\u0001\u0007\u0004\uffff"+
            "\u0001\u0007\u0004\uffff\u0001\u0007\u0003\uffff\u0002\u0007"+
            "\u0006\uffff\u0001\u0007\u0005\uffff\u0001\u0007\u0007\uffff"+
            "\u0002\u0007\u0004\uffff\u0001\u0007\u0003\uffff\u0001\u0007"+
            "\u0007\uffff\u0001\u0007\u0002\uffff\u0001\u0007\u003a\uffff"+
            "\u0001\u0007\u0001\u000f\u0001\u0007\u0002\uffff\u0001\u0007"+
            "\u0001\uffff\u0004\u0007\u0001\uffff\u0001\u0007\u0001\uffff"+
            "\u0001\u0007\u0001\uffff\u0001\u0007\u0001\uffff\u000c\u0007"+
            "\u0002\uffff\u0001\u0007\u0003\uffff\u0002\u0007",
            "\u0004\u0007\u0004\uffff\u0003\u0007\u0001\uffff\u0001\u0007"+
            "\u0004\uffff\u0001\u0007\u0002\uffff\u0002\u0007\u0004\uffff"+
            "\u0001\u0007\u0002\uffff\u0001\u0007\u0001\uffff\u0001\u0007"+
            "\u0003\uffff\u0001\u0007\u0001\uffff\u0001\u0007\u0001\uffff"+
            "\u0002\u0007\u0004\uffff\u0003\u0007\u0002\uffff\u0001\u0007"+
            "\u0001\uffff\u0003\u0007\u0002\uffff\u0001\u0007\u0006\uffff"+
            "\u0002\u0007\u000b\uffff\u0002\u0007\u0005\uffff\u0001\u0007"+
            "\u0004\uffff\u0002\u0007\u0001\uffff\u0001\u0007\u0004\uffff"+
            "\u0001\u0007\u0004\uffff\u0001\u0007\u0003\uffff\u0002\u0007"+
            "\u0006\uffff\u0001\u0007\u0005\uffff\u0001\u0007\u0007\uffff"+
            "\u0002\u0007\u0004\uffff\u0001\u0007\u0003\uffff\u0001\u0007"+
            "\u0007\uffff\u0001\u0007\u0002\uffff\u0001\u0007\u003a\uffff"+
            "\u0003\u0007\u0002\uffff\u0001\u0007\u0001\u0010\u0004\u0007"+
            "\u0001\uffff\u0001\u0007\u0001\uffff\u0001\u0007\u0001\uffff"+
            "\u0001\u0007\u0001\uffff\u000c\u0007\u0002\uffff\u0001\u0007"+
            "\u0003\uffff\u0002\u0007",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    ]
});

org.antlr.lang.augmentObject(XQueryParser, {
    DFA46_eot:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA46_eotS),
    DFA46_eof:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA46_eofS),
    DFA46_min:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA46_minS),
    DFA46_max:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA46_maxS),
    DFA46_accept:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA46_acceptS),
    DFA46_special:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA46_specialS),
    DFA46_transition: (function() {
        var a = [],
            i,
            numStates = XQueryParser.DFA46_transitionS.length;
        for (i=0; i<numStates; i++) {
            a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA46_transitionS[i]));
        }
        return a;
    })()
});

XQueryParser.DFA46 = function(recognizer) {
    this.recognizer = recognizer;
    this.decisionNumber = 46;
    this.eot = XQueryParser.DFA46_eot;
    this.eof = XQueryParser.DFA46_eof;
    this.min = XQueryParser.DFA46_min;
    this.max = XQueryParser.DFA46_max;
    this.accept = XQueryParser.DFA46_accept;
    this.special = XQueryParser.DFA46_special;
    this.transition = XQueryParser.DFA46_transition;
};

org.antlr.lang.extend(XQueryParser.DFA46, org.antlr.runtime.DFA, {
    getDescription: function() {
        return "570:1: p_ExprSingle[strict] : ( ( ( ( FOR | LET ) DOLLAR ) | ( FOR ( TUMBLING | SLIDING ) ) )=> p_FLWORHybrid[$strict] | ( IF LPAREN )=> p_IfHybrid[$strict] | ( SWITCH LPAREN )=> p_SwitchHybrid[$strict] | ( TYPESWITCH LPAREN )=> p_TypeswitchHybrid[$strict] | ( TRY LBRACKET )=> p_TryCatchHybrid[$strict] | p_ExprSimple );";
    },
    specialStateTransition: function(s, input) {
        var _s = s;
        var retval = (function(s, input) {
            switch ( s ) {
                        case 0 : 
                            var LA46_6 = input.LA(1);

                             
                            var index46_6 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA46_6==LBRACKET) && (this.synpred5_XQueryParser())) {s = 16;}

                            else if ( (LA46_6==EOF||(LA46_6>=AND && LA46_6<=AT)||(LA46_6>=CASE && LA46_6<=CASTABLE)||LA46_6==COLLATION||LA46_6==DEFAULT||(LA46_6>=DESCENDING && LA46_6<=DIV)||LA46_6==EMPTY||LA46_6==EQ||LA46_6==EXCEPT||LA46_6==FOR||LA46_6==GE||(LA46_6>=GT && LA46_6<=IDIV)||(LA46_6>=INSTANCE && LA46_6<=IS)||LA46_6==LE||(LA46_6>=LET && LA46_6<=MOD)||LA46_6==NE||(LA46_6>=OR && LA46_6<=ORDER)||(LA46_6>=RETURN && LA46_6<=SATISFIES)||LA46_6==STABLE||(LA46_6>=TO && LA46_6<=TREAT)||LA46_6==UNION||LA46_6==WHERE||LA46_6==COUNT||(LA46_6>=END && LA46_6<=GROUP)||LA46_6==ONLY||LA46_6==START||(LA46_6>=AFTER && LA46_6<=BEFORE)||LA46_6==INTO||LA46_6==MODIFY||LA46_6==WITH||LA46_6==CONTAINS||(LA46_6>=CONCAT && LA46_6<=RPAREN)||LA46_6==R_UNION_BRACKET||(LA46_6>=RBRACKET && LA46_6<=EQUAL)||LA46_6==NOTEQUAL||LA46_6==HASH||LA46_6==COMMA||(LA46_6>=STAR && LA46_6<=BANG)||LA46_6==COLON||(LA46_6>=SEMICOLON && LA46_6<=VBAR)) ) {s = 7;}

                             
                            input.seek(index46_6);
                            if ( s>=0 ) return s;
                            break;
                        case 1 : 
                            var LA46_4 = input.LA(1);

                             
                            var index46_4 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA46_4==LPAREN) && (this.synpred3_XQueryParser())) {s = 14;}

                            else if ( (LA46_4==EOF||(LA46_4>=AND && LA46_4<=AT)||(LA46_4>=CASE && LA46_4<=CASTABLE)||LA46_4==COLLATION||LA46_4==DEFAULT||(LA46_4>=DESCENDING && LA46_4<=DIV)||LA46_4==EMPTY||LA46_4==EQ||LA46_4==EXCEPT||LA46_4==FOR||LA46_4==GE||(LA46_4>=GT && LA46_4<=IDIV)||(LA46_4>=INSTANCE && LA46_4<=IS)||LA46_4==LE||(LA46_4>=LET && LA46_4<=MOD)||LA46_4==NE||(LA46_4>=OR && LA46_4<=ORDER)||(LA46_4>=RETURN && LA46_4<=SATISFIES)||LA46_4==STABLE||(LA46_4>=TO && LA46_4<=TREAT)||LA46_4==UNION||LA46_4==WHERE||LA46_4==COUNT||(LA46_4>=END && LA46_4<=GROUP)||LA46_4==ONLY||LA46_4==START||(LA46_4>=AFTER && LA46_4<=BEFORE)||LA46_4==INTO||LA46_4==MODIFY||LA46_4==WITH||LA46_4==CONTAINS||LA46_4==CONCAT||LA46_4==RPAREN||LA46_4==R_UNION_BRACKET||(LA46_4>=RBRACKET && LA46_4<=EQUAL)||LA46_4==NOTEQUAL||LA46_4==HASH||LA46_4==COMMA||(LA46_4>=STAR && LA46_4<=BANG)||LA46_4==COLON||(LA46_4>=SEMICOLON && LA46_4<=VBAR)) ) {s = 7;}

                             
                            input.seek(index46_4);
                            if ( s>=0 ) return s;
                            break;
                        case 2 : 
                            var LA46_1 = input.LA(1);

                             
                            var index46_1 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA46_1==DOLLAR) && (this.synpred1_XQueryParser())) {s = 8;}

                            else if ( (LA46_1==TUMBLING) && (this.synpred1_XQueryParser())) {s = 9;}

                            else if ( (LA46_1==SLIDING) && (this.synpred1_XQueryParser())) {s = 10;}

                            else if ( (LA46_1==EOF||(LA46_1>=AND && LA46_1<=AT)||(LA46_1>=CASE && LA46_1<=CASTABLE)||LA46_1==COLLATION||LA46_1==DEFAULT||(LA46_1>=DESCENDING && LA46_1<=DIV)||LA46_1==EMPTY||LA46_1==EQ||LA46_1==EXCEPT||LA46_1==FOR||LA46_1==GE||(LA46_1>=GT && LA46_1<=IDIV)||(LA46_1>=INSTANCE && LA46_1<=IS)||LA46_1==LE||(LA46_1>=LET && LA46_1<=MOD)||LA46_1==NE||(LA46_1>=OR && LA46_1<=ORDER)||(LA46_1>=RETURN && LA46_1<=SATISFIES)||LA46_1==STABLE||(LA46_1>=TO && LA46_1<=TREAT)||LA46_1==UNION||LA46_1==WHERE||LA46_1==COUNT||(LA46_1>=END && LA46_1<=GROUP)||LA46_1==ONLY||LA46_1==START||(LA46_1>=AFTER && LA46_1<=BEFORE)||LA46_1==INTO||LA46_1==MODIFY||LA46_1==WITH||LA46_1==CONTAINS||(LA46_1>=CONCAT && LA46_1<=RPAREN)||LA46_1==R_UNION_BRACKET||(LA46_1>=RBRACKET && LA46_1<=EQUAL)||LA46_1==NOTEQUAL||LA46_1==HASH||LA46_1==COMMA||(LA46_1>=STAR && LA46_1<=BANG)||LA46_1==COLON||(LA46_1>=SEMICOLON && LA46_1<=VBAR)) ) {s = 7;}

                             
                            input.seek(index46_1);
                            if ( s>=0 ) return s;
                            break;
                        case 3 : 
                            var LA46_5 = input.LA(1);

                             
                            var index46_5 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA46_5==LPAREN) && (this.synpred4_XQueryParser())) {s = 15;}

                            else if ( (LA46_5==EOF||(LA46_5>=AND && LA46_5<=AT)||(LA46_5>=CASE && LA46_5<=CASTABLE)||LA46_5==COLLATION||LA46_5==DEFAULT||(LA46_5>=DESCENDING && LA46_5<=DIV)||LA46_5==EMPTY||LA46_5==EQ||LA46_5==EXCEPT||LA46_5==FOR||LA46_5==GE||(LA46_5>=GT && LA46_5<=IDIV)||(LA46_5>=INSTANCE && LA46_5<=IS)||LA46_5==LE||(LA46_5>=LET && LA46_5<=MOD)||LA46_5==NE||(LA46_5>=OR && LA46_5<=ORDER)||(LA46_5>=RETURN && LA46_5<=SATISFIES)||LA46_5==STABLE||(LA46_5>=TO && LA46_5<=TREAT)||LA46_5==UNION||LA46_5==WHERE||LA46_5==COUNT||(LA46_5>=END && LA46_5<=GROUP)||LA46_5==ONLY||LA46_5==START||(LA46_5>=AFTER && LA46_5<=BEFORE)||LA46_5==INTO||LA46_5==MODIFY||LA46_5==WITH||LA46_5==CONTAINS||LA46_5==CONCAT||LA46_5==RPAREN||LA46_5==R_UNION_BRACKET||(LA46_5>=RBRACKET && LA46_5<=EQUAL)||LA46_5==NOTEQUAL||LA46_5==HASH||LA46_5==COMMA||(LA46_5>=STAR && LA46_5<=BANG)||LA46_5==COLON||(LA46_5>=SEMICOLON && LA46_5<=VBAR)) ) {s = 7;}

                             
                            input.seek(index46_5);
                            if ( s>=0 ) return s;
                            break;
                        case 4 : 
                            var LA46_3 = input.LA(1);

                             
                            var index46_3 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA46_3==LPAREN) && (this.synpred2_XQueryParser())) {s = 13;}

                            else if ( (LA46_3==EOF||(LA46_3>=AND && LA46_3<=AT)||(LA46_3>=CASE && LA46_3<=CASTABLE)||LA46_3==COLLATION||LA46_3==DEFAULT||(LA46_3>=DESCENDING && LA46_3<=DIV)||LA46_3==EMPTY||LA46_3==EQ||LA46_3==EXCEPT||LA46_3==FOR||LA46_3==GE||(LA46_3>=GT && LA46_3<=IDIV)||(LA46_3>=INSTANCE && LA46_3<=IS)||LA46_3==LE||(LA46_3>=LET && LA46_3<=MOD)||LA46_3==NE||(LA46_3>=OR && LA46_3<=ORDER)||(LA46_3>=RETURN && LA46_3<=SATISFIES)||LA46_3==STABLE||(LA46_3>=TO && LA46_3<=TREAT)||LA46_3==UNION||LA46_3==WHERE||LA46_3==COUNT||(LA46_3>=END && LA46_3<=GROUP)||LA46_3==ONLY||LA46_3==START||(LA46_3>=AFTER && LA46_3<=BEFORE)||LA46_3==INTO||LA46_3==MODIFY||LA46_3==WITH||LA46_3==CONTAINS||LA46_3==CONCAT||LA46_3==RPAREN||LA46_3==R_UNION_BRACKET||(LA46_3>=RBRACKET && LA46_3<=EQUAL)||LA46_3==NOTEQUAL||LA46_3==HASH||LA46_3==COMMA||(LA46_3>=STAR && LA46_3<=BANG)||LA46_3==COLON||(LA46_3>=SEMICOLON && LA46_3<=VBAR)) ) {s = 7;}

                             
                            input.seek(index46_3);
                            if ( s>=0 ) return s;
                            break;
                        case 5 : 
                            var LA46_2 = input.LA(1);

                             
                            var index46_2 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA46_2==DOLLAR) && (this.synpred1_XQueryParser())) {s = 11;}

                            else if ( (LA46_2==SCORE) && (this.synpred1_XQueryParser())) {s = 12;}

                            else if ( (LA46_2==EOF||(LA46_2>=AND && LA46_2<=AT)||(LA46_2>=CASE && LA46_2<=CASTABLE)||LA46_2==COLLATION||LA46_2==DEFAULT||(LA46_2>=DESCENDING && LA46_2<=DIV)||LA46_2==EMPTY||LA46_2==EQ||LA46_2==EXCEPT||LA46_2==FOR||LA46_2==GE||(LA46_2>=GT && LA46_2<=IDIV)||(LA46_2>=INSTANCE && LA46_2<=IS)||LA46_2==LE||(LA46_2>=LET && LA46_2<=MOD)||LA46_2==NE||(LA46_2>=OR && LA46_2<=ORDER)||(LA46_2>=RETURN && LA46_2<=SATISFIES)||LA46_2==STABLE||(LA46_2>=TO && LA46_2<=TREAT)||LA46_2==UNION||LA46_2==WHERE||LA46_2==COUNT||(LA46_2>=END && LA46_2<=GROUP)||LA46_2==ONLY||LA46_2==START||(LA46_2>=AFTER && LA46_2<=BEFORE)||LA46_2==INTO||LA46_2==MODIFY||LA46_2==WITH||LA46_2==CONTAINS||(LA46_2>=CONCAT && LA46_2<=RPAREN)||LA46_2==R_UNION_BRACKET||(LA46_2>=RBRACKET && LA46_2<=EQUAL)||LA46_2==NOTEQUAL||LA46_2==HASH||LA46_2==COMMA||(LA46_2>=STAR && LA46_2<=BANG)||LA46_2==COLON||(LA46_2>=SEMICOLON && LA46_2<=VBAR)) ) {s = 7;}

                             
                            input.seek(index46_2);
                            if ( s>=0 ) return s;
                            break;
            }
        }).call(this.recognizer, s, input);
        if (!org.antlr.lang.isUndefined(retval)) {
            return retval;
        }
        if (this.recognizer.state.backtracking>0) {this.recognizer.state.failed=true; return -1;}
        var nvae =
            new org.antlr.runtime.NoViableAltException(this.getDescription(), 46, _s, input);
        this.error(nvae);
        throw nvae;
    },
    dummy: null
});
org.antlr.lang.augmentObject(XQueryParser, {
    DFA119_eotS:
        "\u0033\uffff",
    DFA119_eofS:
        "\u0033\uffff",
    DFA119_minS:
        "\u0001\u0010\u0001\u0000\u0031\uffff",
    DFA119_maxS:
        "\u0001\u0122\u0001\u0000\u0031\uffff",
    DFA119_acceptS:
        "\u0002\uffff\u0001\u0003\u0001\u0004\u002d\uffff\u0001\u0001\u0001"+
    "\u0002",
    DFA119_specialS:
        "\u0001\uffff\u0001\u0000\u0031\uffff}>",
    DFA119_transitionS: [
            "\u00d2\u0003\u0001\uffff\u0001\u0003\u0001\uffff\u0002\u0003"+
            "\u0001\uffff\u0001\u0003\u0001\uffff\u0001\u0003\u0009\uffff"+
            "\u0001\u0003\u0002\uffff\u0001\u0003\u0005\uffff\u0001\u0001"+
            "\u0001\u0002\u0001\uffff\u0002\u0003\u000c\uffff\u0002\u0003"+
            "\u0002\uffff\u0002\u0003\u0002\uffff\u0001\u0003\u0007\uffff"+
            "\u0005\u0003",
            "\u0001\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    ]
});

org.antlr.lang.augmentObject(XQueryParser, {
    DFA119_eot:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA119_eotS),
    DFA119_eof:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA119_eofS),
    DFA119_min:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA119_minS),
    DFA119_max:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA119_maxS),
    DFA119_accept:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA119_acceptS),
    DFA119_special:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA119_specialS),
    DFA119_transition: (function() {
        var a = [],
            i,
            numStates = XQueryParser.DFA119_transitionS.length;
        for (i=0; i<numStates; i++) {
            a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA119_transitionS[i]));
        }
        return a;
    })()
});

XQueryParser.DFA119 = function(recognizer) {
    this.recognizer = recognizer;
    this.decisionNumber = 119;
    this.eot = XQueryParser.DFA119_eot;
    this.eof = XQueryParser.DFA119_eof;
    this.min = XQueryParser.DFA119_min;
    this.max = XQueryParser.DFA119_max;
    this.accept = XQueryParser.DFA119_accept;
    this.special = XQueryParser.DFA119_special;
    this.transition = XQueryParser.DFA119_transition;
};

org.antlr.lang.extend(XQueryParser.DFA119, org.antlr.runtime.DFA, {
    getDescription: function() {
        return "912:1: p_PathExpr : ( ( SLASH p_RelativePathExpr )=> ( SLASH p_RelativePathExpr ) | SLASH | SLASH_SLASH p_RelativePathExpr | p_RelativePathExpr );";
    },
    specialStateTransition: function(s, input) {
        var _s = s;
        var retval = (function(s, input) {
            switch ( s ) {
                        case 0 : 
                            var LA119_1 = input.LA(1);

                             
                            var index119_1 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred7_XQueryParser()) ) {s = 49;}

                            else if ( (true) ) {s = 50;}

                             
                            input.seek(index119_1);
                            if ( s>=0 ) return s;
                            break;
            }
        }).call(this.recognizer, s, input);
        if (!org.antlr.lang.isUndefined(retval)) {
            return retval;
        }
        if (this.recognizer.state.backtracking>0) {this.recognizer.state.failed=true; return -1;}
        var nvae =
            new org.antlr.runtime.NoViableAltException(this.getDescription(), 119, _s, input);
        this.error(nvae);
        throw nvae;
    },
    dummy: null
});
org.antlr.lang.augmentObject(XQueryParser, {
    DFA121_eotS:
        "\u0035\uffff",
    DFA121_eofS:
        "\u0035\uffff",
    DFA121_minS:
        "\u0001\u0010\u002e\u0000\u0006\uffff",
    DFA121_maxS:
        "\u0001\u0122\u002e\u0000\u0006\uffff",
    DFA121_acceptS:
        "\u002f\uffff\u0001\u0001\u0001\u0002\u0001\u0004\u0001\u0005\u0001"+
    "\u0003\u0001\u0006",
    DFA121_specialS:
        "\u0001\uffff\u0001\u0000\u0001\u0001\u0001\u0002\u0001\u0003\u0001"+
    "\u0004\u0001\u0005\u0001\u0006\u0001\u0007\u0001\u0008\u0001\u0009\u0001"+
    "\u000a\u0001\u000b\u0001\u000c\u0001\u000d\u0001\u000e\u0001\u000f\u0001"+
    "\u0010\u0001\u0011\u0001\u0012\u0001\u0013\u0001\u0014\u0001\u0015\u0001"+
    "\u0016\u0001\u0017\u0001\u0018\u0001\u0019\u0001\u001a\u0001\u001b\u0001"+
    "\u001c\u0001\u001d\u0001\u001e\u0001\u001f\u0001\u0020\u0001\u0021\u0001"+
    "\u0022\u0001\u0023\u0001\u0024\u0001\u0025\u0001\u0026\u0001\u0027\u0001"+
    "\u0028\u0001\u0029\u0001\u002a\u0001\u002b\u0001\u002c\u0001\u002d\u0006"+
    "\uffff}>",
    DFA121_transitionS: [
            "\u0001\u001c\u0001\u001f\u0004\u0027\u0001\u0012\u0006\u0027"+
            "\u0001\u0020\u0001\u0027\u0001\u0015\u0004\u0027\u0001\u0022"+
            "\u0001\u0024\u0002\u0027\u0001\u000d\u0001\u0017\u0001\u000a"+
            "\u0002\u0027\u0001\u002d\u0005\u0027\u0001\u0026\u0001\u0025"+
            "\u0006\u0027\u0001\u002d\u0006\u0027\u0001\u002d\u0007\u0027"+
            "\u0001\u0011\u0003\u0027\u0001\u002c\u0005\u0027\u0001\u0009"+
            "\u0001\u0027\u0001\u0014\u0001\u001e\u0001\u001d\u0001\u0027"+
            "\u0001\u0016\u0004\u002d\u0003\u0027\u0001\u002a\u0001\u0029"+
            "\u0001\u0023\u0004\u0027\u0001\u0013\u0003\u0027\u0001\u002d"+
            "\u0001\u0027\u0001\u000c\u0011\u0027\u0001\u002b\u0009\u0027"+
            "\u0001\u002d\u0016\u0027\u0001\u000b\u0031\u0027\u0001\u002d"+
            "\u000d\u0027\u0001\uffff\u0001\u0001\u0001\uffff\u0001\u0007"+
            "\u0001\u001b\u0001\uffff\u0001\u0018\u0001\uffff\u0001\u001a"+
            "\u0009\uffff\u0001\u002e\u0002\uffff\u0001\u000e\u0008\uffff"+
            "\u0001\u0008\u0001\u0021\u000c\uffff\u0001\u0028\u0001\u0019"+
            "\u0002\uffff\u0001\u0006\u0001\u0005\u0002\uffff\u0001\u0027"+
            "\u0007\uffff\u0001\u000f\u0001\u0010\u0001\u0002\u0001\u0003"+
            "\u0001\u0004",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "",
            "",
            "",
            "",
            "",
            ""
    ]
});

org.antlr.lang.augmentObject(XQueryParser, {
    DFA121_eot:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA121_eotS),
    DFA121_eof:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA121_eofS),
    DFA121_min:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA121_minS),
    DFA121_max:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA121_maxS),
    DFA121_accept:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA121_acceptS),
    DFA121_special:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA121_specialS),
    DFA121_transition: (function() {
        var a = [],
            i,
            numStates = XQueryParser.DFA121_transitionS.length;
        for (i=0; i<numStates; i++) {
            a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA121_transitionS[i]));
        }
        return a;
    })()
});

XQueryParser.DFA121 = function(recognizer) {
    this.recognizer = recognizer;
    this.decisionNumber = 121;
    this.eot = XQueryParser.DFA121_eot;
    this.eof = XQueryParser.DFA121_eof;
    this.min = XQueryParser.DFA121_min;
    this.max = XQueryParser.DFA121_max;
    this.accept = XQueryParser.DFA121_accept;
    this.special = XQueryParser.DFA121_special;
    this.transition = XQueryParser.DFA121_transition;
};

org.antlr.lang.extend(XQueryParser.DFA121, org.antlr.runtime.DFA, {
    getDescription: function() {
        return "925:1: p_StepExpr : ( ( LBRACKET | LPAREN | SMALLER | QUOT | APOS | DOLLAR )=> p_PostfixExpr | ( ( ( ELEMENT | ATTRIBUTE ) ( p_EQName )? LBRACKET ) | ( ( NAMESPACE | PROCESSING_INSTRUCTION ) ( p_NCName )? LBRACKET ) | ( ( DOCUMENT | TEXT | COMMENT ) LBRACKET ) )=> p_PostfixExpr | ( p_KindTest )=> p_AxisStep | ( p_EQName LPAREN )=> p_PostfixExpr | ( p_PrimaryExpr )=> p_PostfixExpr | p_AxisStep );";
    },
    specialStateTransition: function(s, input) {
        var _s = s;
        var retval = (function(s, input) {
            switch ( s ) {
                        case 0 : 
                            var LA121_1 = input.LA(1);

                             
                            var index121_1 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                             
                            input.seek(index121_1);
                            if ( s>=0 ) return s;
                            break;
                        case 1 : 
                            var LA121_2 = input.LA(1);

                             
                            var index121_2 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                             
                            input.seek(index121_2);
                            if ( s>=0 ) return s;
                            break;
                        case 2 : 
                            var LA121_3 = input.LA(1);

                             
                            var index121_3 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                             
                            input.seek(index121_3);
                            if ( s>=0 ) return s;
                            break;
                        case 3 : 
                            var LA121_4 = input.LA(1);

                             
                            var index121_4 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                             
                            input.seek(index121_4);
                            if ( s>=0 ) return s;
                            break;
                        case 4 : 
                            var LA121_5 = input.LA(1);

                             
                            var index121_5 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                             
                            input.seek(index121_5);
                            if ( s>=0 ) return s;
                            break;
                        case 5 : 
                            var LA121_6 = input.LA(1);

                             
                            var index121_6 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                             
                            input.seek(index121_6);
                            if ( s>=0 ) return s;
                            break;
                        case 6 : 
                            var LA121_7 = input.LA(1);

                             
                            var index121_7 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                             
                            input.seek(index121_7);
                            if ( s>=0 ) return s;
                            break;
                        case 7 : 
                            var LA121_8 = input.LA(1);

                             
                            var index121_8 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                             
                            input.seek(index121_8);
                            if ( s>=0 ) return s;
                            break;
                        case 8 : 
                            var LA121_9 = input.LA(1);

                             
                            var index121_9 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred10_XQueryParser()) ) {s = 51;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                            else if ( (true) ) {s = 52;}

                             
                            input.seek(index121_9);
                            if ( s>=0 ) return s;
                            break;
                        case 9 : 
                            var LA121_10 = input.LA(1);

                             
                            var index121_10 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred10_XQueryParser()) ) {s = 51;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                            else if ( (true) ) {s = 52;}

                             
                            input.seek(index121_10);
                            if ( s>=0 ) return s;
                            break;
                        case 10 : 
                            var LA121_11 = input.LA(1);

                             
                            var index121_11 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                             
                            input.seek(index121_11);
                            if ( s>=0 ) return s;
                            break;
                        case 11 : 
                            var LA121_12 = input.LA(1);

                             
                            var index121_12 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred10_XQueryParser()) ) {s = 51;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                            else if ( (true) ) {s = 52;}

                             
                            input.seek(index121_12);
                            if ( s>=0 ) return s;
                            break;
                        case 12 : 
                            var LA121_13 = input.LA(1);

                             
                            var index121_13 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred10_XQueryParser()) ) {s = 51;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                            else if ( (true) ) {s = 52;}

                             
                            input.seek(index121_13);
                            if ( s>=0 ) return s;
                            break;
                        case 13 : 
                            var LA121_14 = input.LA(1);

                             
                            var index121_14 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                             
                            input.seek(index121_14);
                            if ( s>=0 ) return s;
                            break;
                        case 14 : 
                            var LA121_15 = input.LA(1);

                             
                            var index121_15 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                             
                            input.seek(index121_15);
                            if ( s>=0 ) return s;
                            break;
                        case 15 : 
                            var LA121_16 = input.LA(1);

                             
                            var index121_16 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                             
                            input.seek(index121_16);
                            if ( s>=0 ) return s;
                            break;
                        case 16 : 
                            var LA121_17 = input.LA(1);

                             
                            var index121_17 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred10_XQueryParser()) ) {s = 51;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                            else if ( (true) ) {s = 52;}

                             
                            input.seek(index121_17);
                            if ( s>=0 ) return s;
                            break;
                        case 17 : 
                            var LA121_18 = input.LA(1);

                             
                            var index121_18 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred10_XQueryParser()) ) {s = 51;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                            else if ( (true) ) {s = 52;}

                             
                            input.seek(index121_18);
                            if ( s>=0 ) return s;
                            break;
                        case 18 : 
                            var LA121_19 = input.LA(1);

                             
                            var index121_19 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred10_XQueryParser()) ) {s = 51;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                            else if ( (true) ) {s = 52;}

                             
                            input.seek(index121_19);
                            if ( s>=0 ) return s;
                            break;
                        case 19 : 
                            var LA121_20 = input.LA(1);

                             
                            var index121_20 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred10_XQueryParser()) ) {s = 51;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                            else if ( (true) ) {s = 52;}

                             
                            input.seek(index121_20);
                            if ( s>=0 ) return s;
                            break;
                        case 20 : 
                            var LA121_21 = input.LA(1);

                             
                            var index121_21 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred10_XQueryParser()) ) {s = 51;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                            else if ( (true) ) {s = 52;}

                             
                            input.seek(index121_21);
                            if ( s>=0 ) return s;
                            break;
                        case 21 : 
                            var LA121_22 = input.LA(1);

                             
                            var index121_22 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred10_XQueryParser()) ) {s = 51;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                            else if ( (true) ) {s = 52;}

                             
                            input.seek(index121_22);
                            if ( s>=0 ) return s;
                            break;
                        case 22 : 
                            var LA121_23 = input.LA(1);

                             
                            var index121_23 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred10_XQueryParser()) ) {s = 51;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                            else if ( (true) ) {s = 52;}

                             
                            input.seek(index121_23);
                            if ( s>=0 ) return s;
                            break;
                        case 23 : 
                            var LA121_24 = input.LA(1);

                             
                            var index121_24 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                             
                            input.seek(index121_24);
                            if ( s>=0 ) return s;
                            break;
                        case 24 : 
                            var LA121_25 = input.LA(1);

                             
                            var index121_25 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred10_XQueryParser()) ) {s = 51;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                            else if ( (true) ) {s = 52;}

                             
                            input.seek(index121_25);
                            if ( s>=0 ) return s;
                            break;
                        case 25 : 
                            var LA121_26 = input.LA(1);

                             
                            var index121_26 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                             
                            input.seek(index121_26);
                            if ( s>=0 ) return s;
                            break;
                        case 26 : 
                            var LA121_27 = input.LA(1);

                             
                            var index121_27 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                             
                            input.seek(index121_27);
                            if ( s>=0 ) return s;
                            break;
                        case 27 : 
                            var LA121_28 = input.LA(1);

                             
                            var index121_28 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred10_XQueryParser()) ) {s = 51;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                            else if ( (true) ) {s = 52;}

                             
                            input.seek(index121_28);
                            if ( s>=0 ) return s;
                            break;
                        case 28 : 
                            var LA121_29 = input.LA(1);

                             
                            var index121_29 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred10_XQueryParser()) ) {s = 51;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                            else if ( (true) ) {s = 52;}

                             
                            input.seek(index121_29);
                            if ( s>=0 ) return s;
                            break;
                        case 29 : 
                            var LA121_30 = input.LA(1);

                             
                            var index121_30 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred10_XQueryParser()) ) {s = 51;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                            else if ( (true) ) {s = 52;}

                             
                            input.seek(index121_30);
                            if ( s>=0 ) return s;
                            break;
                        case 30 : 
                            var LA121_31 = input.LA(1);

                             
                            var index121_31 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred10_XQueryParser()) ) {s = 51;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                            else if ( (true) ) {s = 52;}

                             
                            input.seek(index121_31);
                            if ( s>=0 ) return s;
                            break;
                        case 31 : 
                            var LA121_32 = input.LA(1);

                             
                            var index121_32 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred10_XQueryParser()) ) {s = 51;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                            else if ( (true) ) {s = 52;}

                             
                            input.seek(index121_32);
                            if ( s>=0 ) return s;
                            break;
                        case 32 : 
                            var LA121_33 = input.LA(1);

                             
                            var index121_33 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred10_XQueryParser()) ) {s = 51;}

                            else if ( (true) ) {s = 52;}

                             
                            input.seek(index121_33);
                            if ( s>=0 ) return s;
                            break;
                        case 33 : 
                            var LA121_34 = input.LA(1);

                             
                            var index121_34 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred10_XQueryParser()) ) {s = 51;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                            else if ( (true) ) {s = 52;}

                             
                            input.seek(index121_34);
                            if ( s>=0 ) return s;
                            break;
                        case 34 : 
                            var LA121_35 = input.LA(1);

                             
                            var index121_35 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred10_XQueryParser()) ) {s = 51;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                            else if ( (true) ) {s = 52;}

                             
                            input.seek(index121_35);
                            if ( s>=0 ) return s;
                            break;
                        case 35 : 
                            var LA121_36 = input.LA(1);

                             
                            var index121_36 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred10_XQueryParser()) ) {s = 51;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                            else if ( (true) ) {s = 52;}

                             
                            input.seek(index121_36);
                            if ( s>=0 ) return s;
                            break;
                        case 36 : 
                            var LA121_37 = input.LA(1);

                             
                            var index121_37 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred10_XQueryParser()) ) {s = 51;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                            else if ( (true) ) {s = 52;}

                             
                            input.seek(index121_37);
                            if ( s>=0 ) return s;
                            break;
                        case 37 : 
                            var LA121_38 = input.LA(1);

                             
                            var index121_38 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred10_XQueryParser()) ) {s = 51;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                            else if ( (true) ) {s = 52;}

                             
                            input.seek(index121_38);
                            if ( s>=0 ) return s;
                            break;
                        case 38 : 
                            var LA121_39 = input.LA(1);

                             
                            var index121_39 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred10_XQueryParser()) ) {s = 51;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                            else if ( (true) ) {s = 52;}

                             
                            input.seek(index121_39);
                            if ( s>=0 ) return s;
                            break;
                        case 39 : 
                            var LA121_40 = input.LA(1);

                             
                            var index121_40 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred10_XQueryParser()) ) {s = 51;}

                            else if ( (true) ) {s = 52;}

                             
                            input.seek(index121_40);
                            if ( s>=0 ) return s;
                            break;
                        case 40 : 
                            var LA121_41 = input.LA(1);

                             
                            var index121_41 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred10_XQueryParser()) ) {s = 51;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                            else if ( (true) ) {s = 52;}

                             
                            input.seek(index121_41);
                            if ( s>=0 ) return s;
                            break;
                        case 41 : 
                            var LA121_42 = input.LA(1);

                             
                            var index121_42 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred10_XQueryParser()) ) {s = 51;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                            else if ( (true) ) {s = 52;}

                             
                            input.seek(index121_42);
                            if ( s>=0 ) return s;
                            break;
                        case 42 : 
                            var LA121_43 = input.LA(1);

                             
                            var index121_43 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred10_XQueryParser()) ) {s = 51;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                            else if ( (true) ) {s = 52;}

                             
                            input.seek(index121_43);
                            if ( s>=0 ) return s;
                            break;
                        case 43 : 
                            var LA121_44 = input.LA(1);

                             
                            var index121_44 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred10_XQueryParser()) ) {s = 51;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                            else if ( (true) ) {s = 52;}

                             
                            input.seek(index121_44);
                            if ( s>=0 ) return s;
                            break;
                        case 44 : 
                            var LA121_45 = input.LA(1);

                             
                            var index121_45 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred8_XQueryParser()) ) {s = 47;}

                            else if ( (this.synpred9_XQueryParser()) ) {s = 48;}

                            else if ( (this.synpred10_XQueryParser()) ) {s = 51;}

                            else if ( (this.synpred11_XQueryParser()) ) {s = 49;}

                            else if ( (this.synpred12_XQueryParser()) ) {s = 50;}

                            else if ( (true) ) {s = 52;}

                             
                            input.seek(index121_45);
                            if ( s>=0 ) return s;
                            break;
                        case 45 : 
                            var LA121_46 = input.LA(1);

                             
                            var index121_46 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (this.synpred10_XQueryParser()) ) {s = 51;}

                            else if ( (true) ) {s = 52;}

                             
                            input.seek(index121_46);
                            if ( s>=0 ) return s;
                            break;
            }
        }).call(this.recognizer, s, input);
        if (!org.antlr.lang.isUndefined(retval)) {
            return retval;
        }
        if (this.recognizer.state.backtracking>0) {this.recognizer.state.failed=true; return -1;}
        var nvae =
            new org.antlr.runtime.NoViableAltException(this.getDescription(), 121, _s, input);
        this.error(nvae);
        throw nvae;
    },
    dummy: null
});
org.antlr.lang.augmentObject(XQueryParser, {
    DFA123_eotS:
        "\u000a\uffff",
    DFA123_eofS:
        "\u0001\uffff\u0007\u0008\u0002\uffff",
    DFA123_minS:
        "\u0001\u0010\u0007\u0012\u0002\uffff",
    DFA123_maxS:
        "\u0001\u0116\u0007\u0107\u0002\uffff",
    DFA123_acceptS:
        "\u0008\uffff\u0001\u0002\u0001\u0001",
    DFA123_specialS:
        "\u000a\uffff}>",
    DFA123_transitionS: [
            "\u0006\u0008\u0001\u0003\u0006\u0008\u0001\u0001\u0006\u0008"+
            "\u0001\u0002\u0001\u0005\u000d\u0008\u0001\u0007\u0001\u0006"+
            "\u002f\u0008\u0001\u0004\u003d\u0008\u0001\uffff\u003f\u0008"+
            "\u0012\uffff\u0001\u0008\u0019\uffff\u0002\u0008\u0006\uffff"+
            "\u0001\u0008",
            "\u0004\u0008\u0003\uffff\u0004\u0008\u0001\uffff\u0001\u0008"+
            "\u0004\uffff\u0001\u0008\u0002\uffff\u0002\u0008\u0004\uffff"+
            "\u0001\u0008\u0002\uffff\u0001\u0008\u0001\uffff\u0001\u0008"+
            "\u0003\uffff\u0001\u0008\u0001\uffff\u0001\u0008\u0001\uffff"+
            "\u0002\u0008\u0004\uffff\u0003\u0008\u0002\uffff\u0001\u0008"+
            "\u0001\uffff\u0003\u0008\u0002\uffff\u0001\u0008\u0006\uffff"+
            "\u0002\u0008\u000b\uffff\u0002\u0008\u0005\uffff\u0001\u0008"+
            "\u0004\uffff\u0002\u0008\u0001\uffff\u0001\u0008\u0004\uffff"+
            "\u0001\u0008\u0004\uffff\u0001\u0008\u0003\uffff\u0002\u0008"+
            "\u0006\uffff\u0001\u0008\u0005\uffff\u0001\u0008\u0007\uffff"+
            "\u0002\u0008\u0004\uffff\u0001\u0008\u0003\uffff\u0001\u0008"+
            "\u0007\uffff\u0001\u0008\u0002\uffff\u0001\u0008\u0014\uffff"+
            "\u0001\u0008\u0006\uffff\u0001\u0008\u0003\uffff\u0001\u0008"+
            "\u0006\uffff\u0001\u0008\u0013\uffff\u0001\u0008\u0001\uffff"+
            "\u0001\u0008\u0002\uffff\u0001\u0008\u0001\uffff\u0004\u0008"+
            "\u0001\uffff\u0001\u0008\u0003\uffff\u0001\u0008\u0001\uffff"+
            "\u000c\u0008\u0002\uffff\u0001\u0008\u0001\u0009\u0002\uffff"+
            "\u0002\u0008",
            "\u0004\u0008\u0003\uffff\u0004\u0008\u0001\uffff\u0001\u0008"+
            "\u0004\uffff\u0001\u0008\u0002\uffff\u0002\u0008\u0004\uffff"+
            "\u0001\u0008\u0002\uffff\u0001\u0008\u0001\uffff\u0001\u0008"+
            "\u0003\uffff\u0001\u0008\u0001\uffff\u0001\u0008\u0001\uffff"+
            "\u0002\u0008\u0004\uffff\u0003\u0008\u0002\uffff\u0001\u0008"+
            "\u0001\uffff\u0003\u0008\u0002\uffff\u0001\u0008\u0006\uffff"+
            "\u0002\u0008\u000b\uffff\u0002\u0008\u0005\uffff\u0001\u0008"+
            "\u0004\uffff\u0002\u0008\u0001\uffff\u0001\u0008\u0004\uffff"+
            "\u0001\u0008\u0004\uffff\u0001\u0008\u0003\uffff\u0002\u0008"+
            "\u0006\uffff\u0001\u0008\u0005\uffff\u0001\u0008\u0007\uffff"+
            "\u0002\u0008\u0004\uffff\u0001\u0008\u0003\uffff\u0001\u0008"+
            "\u0007\uffff\u0001\u0008\u0002\uffff\u0001\u0008\u0014\uffff"+
            "\u0001\u0008\u0006\uffff\u0001\u0008\u0003\uffff\u0001\u0008"+
            "\u0006\uffff\u0001\u0008\u0013\uffff\u0001\u0008\u0001\uffff"+
            "\u0001\u0008\u0002\uffff\u0001\u0008\u0001\uffff\u0004\u0008"+
            "\u0001\uffff\u0001\u0008\u0003\uffff\u0001\u0008\u0001\uffff"+
            "\u000c\u0008\u0002\uffff\u0001\u0008\u0001\u0009\u0002\uffff"+
            "\u0002\u0008",
            "\u0004\u0008\u0003\uffff\u0004\u0008\u0001\uffff\u0001\u0008"+
            "\u0004\uffff\u0001\u0008\u0002\uffff\u0002\u0008\u0004\uffff"+
            "\u0001\u0008\u0002\uffff\u0001\u0008\u0001\uffff\u0001\u0008"+
            "\u0003\uffff\u0001\u0008\u0001\uffff\u0001\u0008\u0001\uffff"+
            "\u0002\u0008\u0004\uffff\u0003\u0008\u0002\uffff\u0001\u0008"+
            "\u0001\uffff\u0003\u0008\u0002\uffff\u0001\u0008\u0006\uffff"+
            "\u0002\u0008\u000b\uffff\u0002\u0008\u0005\uffff\u0001\u0008"+
            "\u0004\uffff\u0002\u0008\u0001\uffff\u0001\u0008\u0004\uffff"+
            "\u0001\u0008\u0004\uffff\u0001\u0008\u0003\uffff\u0002\u0008"+
            "\u0006\uffff\u0001\u0008\u0005\uffff\u0001\u0008\u0007\uffff"+
            "\u0002\u0008\u0004\uffff\u0001\u0008\u0003\uffff\u0001\u0008"+
            "\u0007\uffff\u0001\u0008\u0002\uffff\u0001\u0008\u0014\uffff"+
            "\u0001\u0008\u0006\uffff\u0001\u0008\u0003\uffff\u0001\u0008"+
            "\u0006\uffff\u0001\u0008\u0013\uffff\u0003\u0008\u0002\uffff"+
            "\u0001\u0008\u0001\uffff\u0004\u0008\u0001\uffff\u0001\u0008"+
            "\u0003\uffff\u0001\u0008\u0001\uffff\u000c\u0008\u0002\uffff"+
            "\u0001\u0008\u0001\u0009\u0002\uffff\u0002\u0008",
            "\u0004\u0008\u0003\uffff\u0004\u0008\u0001\uffff\u0001\u0008"+
            "\u0004\uffff\u0001\u0008\u0002\uffff\u0002\u0008\u0004\uffff"+
            "\u0001\u0008\u0002\uffff\u0001\u0008\u0001\uffff\u0001\u0008"+
            "\u0003\uffff\u0001\u0008\u0001\uffff\u0001\u0008\u0001\uffff"+
            "\u0002\u0008\u0004\uffff\u0003\u0008\u0002\uffff\u0001\u0008"+
            "\u0001\uffff\u0003\u0008\u0002\uffff\u0001\u0008\u0006\uffff"+
            "\u0002\u0008\u000b\uffff\u0002\u0008\u0005\uffff\u0001\u0008"+
            "\u0004\uffff\u0002\u0008\u0001\uffff\u0001\u0008\u0004\uffff"+
            "\u0001\u0008\u0004\uffff\u0001\u0008\u0003\uffff\u0002\u0008"+
            "\u0006\uffff\u0001\u0008\u0005\uffff\u0001\u0008\u0007\uffff"+
            "\u0002\u0008\u0004\uffff\u0001\u0008\u0003\uffff\u0001\u0008"+
            "\u0007\uffff\u0001\u0008\u0002\uffff\u0001\u0008\u0014\uffff"+
            "\u0001\u0008\u0006\uffff\u0001\u0008\u0003\uffff\u0001\u0008"+
            "\u0006\uffff\u0001\u0008\u0013\uffff\u0001\u0008\u0001\uffff"+
            "\u0001\u0008\u0002\uffff\u0001\u0008\u0001\uffff\u0004\u0008"+
            "\u0001\uffff\u0001\u0008\u0003\uffff\u0001\u0008\u0001\uffff"+
            "\u000c\u0008\u0002\uffff\u0001\u0008\u0001\u0009\u0002\uffff"+
            "\u0002\u0008",
            "\u0004\u0008\u0003\uffff\u0004\u0008\u0001\uffff\u0001\u0008"+
            "\u0004\uffff\u0001\u0008\u0002\uffff\u0002\u0008\u0004\uffff"+
            "\u0001\u0008\u0002\uffff\u0001\u0008\u0001\uffff\u0001\u0008"+
            "\u0003\uffff\u0001\u0008\u0001\uffff\u0001\u0008\u0001\uffff"+
            "\u0002\u0008\u0004\uffff\u0003\u0008\u0002\uffff\u0001\u0008"+
            "\u0001\uffff\u0003\u0008\u0002\uffff\u0001\u0008\u0006\uffff"+
            "\u0002\u0008\u000b\uffff\u0002\u0008\u0005\uffff\u0001\u0008"+
            "\u0004\uffff\u0002\u0008\u0001\uffff\u0001\u0008\u0004\uffff"+
            "\u0001\u0008\u0004\uffff\u0001\u0008\u0003\uffff\u0002\u0008"+
            "\u0006\uffff\u0001\u0008\u0005\uffff\u0001\u0008\u0007\uffff"+
            "\u0002\u0008\u0004\uffff\u0001\u0008\u0003\uffff\u0001\u0008"+
            "\u0007\uffff\u0001\u0008\u0002\uffff\u0001\u0008\u0014\uffff"+
            "\u0001\u0008\u0006\uffff\u0001\u0008\u0003\uffff\u0001\u0008"+
            "\u0006\uffff\u0001\u0008\u0013\uffff\u0001\u0008\u0001\uffff"+
            "\u0001\u0008\u0002\uffff\u0001\u0008\u0001\uffff\u0004\u0008"+
            "\u0001\uffff\u0001\u0008\u0003\uffff\u0001\u0008\u0001\uffff"+
            "\u000c\u0008\u0002\uffff\u0001\u0008\u0001\u0009\u0002\uffff"+
            "\u0002\u0008",
            "\u0004\u0008\u0003\uffff\u0004\u0008\u0001\uffff\u0001\u0008"+
            "\u0004\uffff\u0001\u0008\u0002\uffff\u0002\u0008\u0004\uffff"+
            "\u0001\u0008\u0002\uffff\u0001\u0008\u0001\uffff\u0001\u0008"+
            "\u0003\uffff\u0001\u0008\u0001\uffff\u0001\u0008\u0001\uffff"+
            "\u0002\u0008\u0004\uffff\u0003\u0008\u0002\uffff\u0001\u0008"+
            "\u0001\uffff\u0003\u0008\u0002\uffff\u0001\u0008\u0006\uffff"+
            "\u0002\u0008\u000b\uffff\u0002\u0008\u0005\uffff\u0001\u0008"+
            "\u0004\uffff\u0002\u0008\u0001\uffff\u0001\u0008\u0004\uffff"+
            "\u0001\u0008\u0004\uffff\u0001\u0008\u0003\uffff\u0002\u0008"+
            "\u0006\uffff\u0001\u0008\u0005\uffff\u0001\u0008\u0007\uffff"+
            "\u0002\u0008\u0004\uffff\u0001\u0008\u0003\uffff\u0001\u0008"+
            "\u0007\uffff\u0001\u0008\u0002\uffff\u0001\u0008\u0014\uffff"+
            "\u0001\u0008\u0006\uffff\u0001\u0008\u0003\uffff\u0001\u0008"+
            "\u0006\uffff\u0001\u0008\u0013\uffff\u0001\u0008\u0001\uffff"+
            "\u0001\u0008\u0002\uffff\u0001\u0008\u0001\uffff\u0004\u0008"+
            "\u0001\uffff\u0001\u0008\u0003\uffff\u0001\u0008\u0001\uffff"+
            "\u000c\u0008\u0002\uffff\u0001\u0008\u0001\u0009\u0002\uffff"+
            "\u0002\u0008",
            "\u0004\u0008\u0003\uffff\u0004\u0008\u0001\uffff\u0001\u0008"+
            "\u0004\uffff\u0001\u0008\u0002\uffff\u0002\u0008\u0004\uffff"+
            "\u0001\u0008\u0002\uffff\u0001\u0008\u0001\uffff\u0001\u0008"+
            "\u0003\uffff\u0001\u0008\u0001\uffff\u0001\u0008\u0001\uffff"+
            "\u0002\u0008\u0004\uffff\u0003\u0008\u0002\uffff\u0001\u0008"+
            "\u0001\uffff\u0003\u0008\u0002\uffff\u0001\u0008\u0006\uffff"+
            "\u0002\u0008\u000b\uffff\u0002\u0008\u0005\uffff\u0001\u0008"+
            "\u0004\uffff\u0002\u0008\u0001\uffff\u0001\u0008\u0004\uffff"+
            "\u0001\u0008\u0004\uffff\u0001\u0008\u0003\uffff\u0002\u0008"+
            "\u0006\uffff\u0001\u0008\u0005\uffff\u0001\u0008\u0007\uffff"+
            "\u0002\u0008\u0004\uffff\u0001\u0008\u0003\uffff\u0001\u0008"+
            "\u0007\uffff\u0001\u0008\u0002\uffff\u0001\u0008\u0014\uffff"+
            "\u0001\u0008\u0006\uffff\u0001\u0008\u0003\uffff\u0001\u0008"+
            "\u0006\uffff\u0001\u0008\u0013\uffff\u0001\u0008\u0001\uffff"+
            "\u0001\u0008\u0002\uffff\u0001\u0008\u0001\uffff\u0004\u0008"+
            "\u0001\uffff\u0001\u0008\u0003\uffff\u0001\u0008\u0001\uffff"+
            "\u000c\u0008\u0002\uffff\u0001\u0008\u0001\u0009\u0002\uffff"+
            "\u0002\u0008",
            "",
            ""
    ]
});

org.antlr.lang.augmentObject(XQueryParser, {
    DFA123_eot:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA123_eotS),
    DFA123_eof:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA123_eofS),
    DFA123_min:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA123_minS),
    DFA123_max:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA123_maxS),
    DFA123_accept:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA123_acceptS),
    DFA123_special:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA123_specialS),
    DFA123_transition: (function() {
        var a = [],
            i,
            numStates = XQueryParser.DFA123_transitionS.length;
        for (i=0; i<numStates; i++) {
            a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA123_transitionS[i]));
        }
        return a;
    })()
});

XQueryParser.DFA123 = function(recognizer) {
    this.recognizer = recognizer;
    this.decisionNumber = 123;
    this.eot = XQueryParser.DFA123_eot;
    this.eof = XQueryParser.DFA123_eof;
    this.min = XQueryParser.DFA123_min;
    this.max = XQueryParser.DFA123_max;
    this.accept = XQueryParser.DFA123_accept;
    this.special = XQueryParser.DFA123_special;
    this.transition = XQueryParser.DFA123_transition;
};

org.antlr.lang.extend(XQueryParser.DFA123, org.antlr.runtime.DFA, {
    getDescription: function() {
        return "944:1: p_ForwardStep : ( p_ForwardAxis p_NodeTest | p_AbbrevForwardStep );";
    },
    dummy: null
});
org.antlr.lang.augmentObject(XQueryParser, {
    DFA128_eotS:
        "\u000d\uffff",
    DFA128_eofS:
        "\u0001\uffff\u000a\u000b\u0002\uffff",
    DFA128_minS:
        "\u0001\u0010\u000a\u0012\u0002\uffff",
    DFA128_maxS:
        "\u0001\u0116\u000a\u0107\u0002\uffff",
    DFA128_acceptS:
        "\u000b\uffff\u0001\u0002\u0001\u0001",
    DFA128_specialS:
        "\u000d\uffff}>",
    DFA128_transitionS: [
            "\u0006\u000b\u0001\u0003\u0008\u000b\u0001\u0007\u0009\u000b"+
            "\u0001\u0001\u0001\u0002\u0023\u000b\u0001\u000a\u000b\u000b"+
            "\u0001\u0006\u0007\u000b\u0001\u0005\u0001\u0004\u0005\u000b"+
            "\u0001\u0008\u0017\u000b\u0001\u0009\u0020\u000b\u0001\uffff"+
            "\u003f\u000b\u0012\uffff\u0001\u000b\u001a\uffff\u0001\u000b"+
            "\u0006\uffff\u0001\u000b",
            "\u0004\u000b\u0003\uffff\u0004\u000b\u0001\uffff\u0001\u000b"+
            "\u0004\uffff\u0001\u000b\u0002\uffff\u0002\u000b\u0004\uffff"+
            "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0001\u000b"+
            "\u0003\uffff\u0001\u000b\u0001\uffff\u0001\u000b\u0001\uffff"+
            "\u0002\u000b\u0004\uffff\u0003\u000b\u0002\uffff\u0001\u000b"+
            "\u0001\uffff\u0003\u000b\u0002\uffff\u0001\u000b\u0006\uffff"+
            "\u0002\u000b\u000b\uffff\u0002\u000b\u0005\uffff\u0001\u000b"+
            "\u0004\uffff\u0002\u000b\u0001\uffff\u0001\u000b\u0004\uffff"+
            "\u0001\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0002\u000b"+
            "\u0006\uffff\u0001\u000b\u0005\uffff\u0001\u000b\u0007\uffff"+
            "\u0002\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
            "\u0007\uffff\u0001\u000b\u0002\uffff\u0001\u000b\u0014\uffff"+
            "\u0001\u000b\u0006\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
            "\u0006\uffff\u0001\u000b\u0013\uffff\u0001\u000b\u0001\u000c"+
            "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0004\u000b"+
            "\u0001\uffff\u0001\u000b\u0003\uffff\u0001\u000b\u0001\uffff"+
            "\u000c\u000b\u0002\uffff\u0001\u000b\u0003\uffff\u0002\u000b",
            "\u0004\u000b\u0003\uffff\u0004\u000b\u0001\uffff\u0001\u000b"+
            "\u0004\uffff\u0001\u000b\u0002\uffff\u0002\u000b\u0004\uffff"+
            "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0001\u000b"+
            "\u0003\uffff\u0001\u000b\u0001\uffff\u0001\u000b\u0001\uffff"+
            "\u0002\u000b\u0004\uffff\u0003\u000b\u0002\uffff\u0001\u000b"+
            "\u0001\uffff\u0003\u000b\u0002\uffff\u0001\u000b\u0006\uffff"+
            "\u0002\u000b\u000b\uffff\u0002\u000b\u0005\uffff\u0001\u000b"+
            "\u0004\uffff\u0002\u000b\u0001\uffff\u0001\u000b\u0004\uffff"+
            "\u0001\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0002\u000b"+
            "\u0006\uffff\u0001\u000b\u0005\uffff\u0001\u000b\u0007\uffff"+
            "\u0002\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
            "\u0007\uffff\u0001\u000b\u0002\uffff\u0001\u000b\u0014\uffff"+
            "\u0001\u000b\u0006\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
            "\u0006\uffff\u0001\u000b\u0013\uffff\u0001\u000b\u0001\u000c"+
            "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0004\u000b"+
            "\u0001\uffff\u0001\u000b\u0003\uffff\u0001\u000b\u0001\uffff"+
            "\u000c\u000b\u0002\uffff\u0001\u000b\u0003\uffff\u0002\u000b",
            "\u0004\u000b\u0003\uffff\u0004\u000b\u0001\uffff\u0001\u000b"+
            "\u0004\uffff\u0001\u000b\u0002\uffff\u0002\u000b\u0004\uffff"+
            "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0001\u000b"+
            "\u0003\uffff\u0001\u000b\u0001\uffff\u0001\u000b\u0001\uffff"+
            "\u0002\u000b\u0004\uffff\u0003\u000b\u0002\uffff\u0001\u000b"+
            "\u0001\uffff\u0003\u000b\u0002\uffff\u0001\u000b\u0006\uffff"+
            "\u0002\u000b\u000b\uffff\u0002\u000b\u0005\uffff\u0001\u000b"+
            "\u0004\uffff\u0002\u000b\u0001\uffff\u0001\u000b\u0004\uffff"+
            "\u0001\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0002\u000b"+
            "\u0006\uffff\u0001\u000b\u0005\uffff\u0001\u000b\u0007\uffff"+
            "\u0002\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
            "\u0007\uffff\u0001\u000b\u0002\uffff\u0001\u000b\u0014\uffff"+
            "\u0001\u000b\u0006\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
            "\u0006\uffff\u0001\u000b\u0013\uffff\u0001\u000b\u0001\u000c"+
            "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0004\u000b"+
            "\u0001\uffff\u0001\u000b\u0003\uffff\u0001\u000b\u0001\uffff"+
            "\u000c\u000b\u0002\uffff\u0001\u000b\u0003\uffff\u0002\u000b",
            "\u0004\u000b\u0003\uffff\u0004\u000b\u0001\uffff\u0001\u000b"+
            "\u0004\uffff\u0001\u000b\u0002\uffff\u0002\u000b\u0004\uffff"+
            "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0001\u000b"+
            "\u0003\uffff\u0001\u000b\u0001\uffff\u0001\u000b\u0001\uffff"+
            "\u0002\u000b\u0004\uffff\u0003\u000b\u0002\uffff\u0001\u000b"+
            "\u0001\uffff\u0003\u000b\u0002\uffff\u0001\u000b\u0006\uffff"+
            "\u0002\u000b\u000b\uffff\u0002\u000b\u0005\uffff\u0001\u000b"+
            "\u0004\uffff\u0002\u000b\u0001\uffff\u0001\u000b\u0004\uffff"+
            "\u0001\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0002\u000b"+
            "\u0006\uffff\u0001\u000b\u0005\uffff\u0001\u000b\u0007\uffff"+
            "\u0002\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
            "\u0007\uffff\u0001\u000b\u0002\uffff\u0001\u000b\u0014\uffff"+
            "\u0001\u000b\u0006\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
            "\u0006\uffff\u0001\u000b\u0013\uffff\u0001\u000b\u0001\u000c"+
            "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0004\u000b"+
            "\u0001\uffff\u0001\u000b\u0003\uffff\u0001\u000b\u0001\uffff"+
            "\u000c\u000b\u0002\uffff\u0001\u000b\u0003\uffff\u0002\u000b",
            "\u0004\u000b\u0003\uffff\u0004\u000b\u0001\uffff\u0001\u000b"+
            "\u0004\uffff\u0001\u000b\u0002\uffff\u0002\u000b\u0004\uffff"+
            "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0001\u000b"+
            "\u0003\uffff\u0001\u000b\u0001\uffff\u0001\u000b\u0001\uffff"+
            "\u0002\u000b\u0004\uffff\u0003\u000b\u0002\uffff\u0001\u000b"+
            "\u0001\uffff\u0003\u000b\u0002\uffff\u0001\u000b\u0006\uffff"+
            "\u0002\u000b\u000b\uffff\u0002\u000b\u0005\uffff\u0001\u000b"+
            "\u0004\uffff\u0002\u000b\u0001\uffff\u0001\u000b\u0004\uffff"+
            "\u0001\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0002\u000b"+
            "\u0006\uffff\u0001\u000b\u0005\uffff\u0001\u000b\u0007\uffff"+
            "\u0002\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
            "\u0007\uffff\u0001\u000b\u0002\uffff\u0001\u000b\u0014\uffff"+
            "\u0001\u000b\u0006\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
            "\u0006\uffff\u0001\u000b\u0013\uffff\u0001\u000b\u0001\u000c"+
            "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0004\u000b"+
            "\u0001\uffff\u0001\u000b\u0003\uffff\u0001\u000b\u0001\uffff"+
            "\u000c\u000b\u0002\uffff\u0001\u000b\u0003\uffff\u0002\u000b",
            "\u0004\u000b\u0003\uffff\u0004\u000b\u0001\uffff\u0001\u000b"+
            "\u0004\uffff\u0001\u000b\u0002\uffff\u0002\u000b\u0004\uffff"+
            "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0001\u000b"+
            "\u0003\uffff\u0001\u000b\u0001\uffff\u0001\u000b\u0001\uffff"+
            "\u0002\u000b\u0004\uffff\u0003\u000b\u0002\uffff\u0001\u000b"+
            "\u0001\uffff\u0003\u000b\u0002\uffff\u0001\u000b\u0006\uffff"+
            "\u0002\u000b\u000b\uffff\u0002\u000b\u0005\uffff\u0001\u000b"+
            "\u0004\uffff\u0002\u000b\u0001\uffff\u0001\u000b\u0004\uffff"+
            "\u0001\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0002\u000b"+
            "\u0006\uffff\u0001\u000b\u0005\uffff\u0001\u000b\u0007\uffff"+
            "\u0002\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
            "\u0007\uffff\u0001\u000b\u0002\uffff\u0001\u000b\u0014\uffff"+
            "\u0001\u000b\u0006\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
            "\u0006\uffff\u0001\u000b\u0013\uffff\u0001\u000b\u0001\u000c"+
            "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0004\u000b"+
            "\u0001\uffff\u0001\u000b\u0003\uffff\u0001\u000b\u0001\uffff"+
            "\u000c\u000b\u0002\uffff\u0001\u000b\u0003\uffff\u0002\u000b",
            "\u0004\u000b\u0003\uffff\u0004\u000b\u0001\uffff\u0001\u000b"+
            "\u0004\uffff\u0001\u000b\u0002\uffff\u0002\u000b\u0004\uffff"+
            "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0001\u000b"+
            "\u0003\uffff\u0001\u000b\u0001\uffff\u0001\u000b\u0001\uffff"+
            "\u0002\u000b\u0004\uffff\u0003\u000b\u0002\uffff\u0001\u000b"+
            "\u0001\uffff\u0003\u000b\u0002\uffff\u0001\u000b\u0006\uffff"+
            "\u0002\u000b\u000b\uffff\u0002\u000b\u0005\uffff\u0001\u000b"+
            "\u0004\uffff\u0002\u000b\u0001\uffff\u0001\u000b\u0004\uffff"+
            "\u0001\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0002\u000b"+
            "\u0006\uffff\u0001\u000b\u0005\uffff\u0001\u000b\u0007\uffff"+
            "\u0002\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
            "\u0007\uffff\u0001\u000b\u0002\uffff\u0001\u000b\u0014\uffff"+
            "\u0001\u000b\u0006\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
            "\u0006\uffff\u0001\u000b\u0013\uffff\u0001\u000b\u0001\u000c"+
            "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0004\u000b"+
            "\u0001\uffff\u0001\u000b\u0003\uffff\u0001\u000b\u0001\uffff"+
            "\u000c\u000b\u0002\uffff\u0001\u000b\u0003\uffff\u0002\u000b",
            "\u0004\u000b\u0003\uffff\u0004\u000b\u0001\uffff\u0001\u000b"+
            "\u0004\uffff\u0001\u000b\u0002\uffff\u0002\u000b\u0004\uffff"+
            "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0001\u000b"+
            "\u0003\uffff\u0001\u000b\u0001\uffff\u0001\u000b\u0001\uffff"+
            "\u0002\u000b\u0004\uffff\u0003\u000b\u0002\uffff\u0001\u000b"+
            "\u0001\uffff\u0003\u000b\u0002\uffff\u0001\u000b\u0006\uffff"+
            "\u0002\u000b\u000b\uffff\u0002\u000b\u0005\uffff\u0001\u000b"+
            "\u0004\uffff\u0002\u000b\u0001\uffff\u0001\u000b\u0004\uffff"+
            "\u0001\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0002\u000b"+
            "\u0006\uffff\u0001\u000b\u0005\uffff\u0001\u000b\u0007\uffff"+
            "\u0002\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
            "\u0007\uffff\u0001\u000b\u0002\uffff\u0001\u000b\u0014\uffff"+
            "\u0001\u000b\u0006\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
            "\u0006\uffff\u0001\u000b\u0013\uffff\u0001\u000b\u0001\u000c"+
            "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0004\u000b"+
            "\u0001\uffff\u0001\u000b\u0003\uffff\u0001\u000b\u0001\uffff"+
            "\u000c\u000b\u0002\uffff\u0001\u000b\u0003\uffff\u0002\u000b",
            "\u0004\u000b\u0003\uffff\u0004\u000b\u0001\uffff\u0001\u000b"+
            "\u0004\uffff\u0001\u000b\u0002\uffff\u0002\u000b\u0004\uffff"+
            "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0001\u000b"+
            "\u0003\uffff\u0001\u000b\u0001\uffff\u0001\u000b\u0001\uffff"+
            "\u0002\u000b\u0004\uffff\u0003\u000b\u0002\uffff\u0001\u000b"+
            "\u0001\uffff\u0003\u000b\u0002\uffff\u0001\u000b\u0006\uffff"+
            "\u0002\u000b\u000b\uffff\u0002\u000b\u0005\uffff\u0001\u000b"+
            "\u0004\uffff\u0002\u000b\u0001\uffff\u0001\u000b\u0004\uffff"+
            "\u0001\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0002\u000b"+
            "\u0006\uffff\u0001\u000b\u0005\uffff\u0001\u000b\u0007\uffff"+
            "\u0002\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
            "\u0007\uffff\u0001\u000b\u0002\uffff\u0001\u000b\u0014\uffff"+
            "\u0001\u000b\u0006\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
            "\u0006\uffff\u0001\u000b\u0013\uffff\u0001\u000b\u0001\u000c"+
            "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0004\u000b"+
            "\u0001\uffff\u0001\u000b\u0003\uffff\u0001\u000b\u0001\uffff"+
            "\u000c\u000b\u0002\uffff\u0001\u000b\u0003\uffff\u0002\u000b",
            "\u0004\u000b\u0003\uffff\u0004\u000b\u0001\uffff\u0001\u000b"+
            "\u0004\uffff\u0001\u000b\u0002\uffff\u0002\u000b\u0004\uffff"+
            "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0001\u000b"+
            "\u0003\uffff\u0001\u000b\u0001\uffff\u0001\u000b\u0001\uffff"+
            "\u0002\u000b\u0004\uffff\u0003\u000b\u0002\uffff\u0001\u000b"+
            "\u0001\uffff\u0003\u000b\u0002\uffff\u0001\u000b\u0006\uffff"+
            "\u0002\u000b\u000b\uffff\u0002\u000b\u0005\uffff\u0001\u000b"+
            "\u0004\uffff\u0002\u000b\u0001\uffff\u0001\u000b\u0004\uffff"+
            "\u0001\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0002\u000b"+
            "\u0006\uffff\u0001\u000b\u0005\uffff\u0001\u000b\u0007\uffff"+
            "\u0002\u000b\u0004\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
            "\u0007\uffff\u0001\u000b\u0002\uffff\u0001\u000b\u0014\uffff"+
            "\u0001\u000b\u0006\uffff\u0001\u000b\u0003\uffff\u0001\u000b"+
            "\u0006\uffff\u0001\u000b\u0013\uffff\u0001\u000b\u0001\u000c"+
            "\u0001\u000b\u0002\uffff\u0001\u000b\u0001\uffff\u0004\u000b"+
            "\u0001\uffff\u0001\u000b\u0003\uffff\u0001\u000b\u0001\uffff"+
            "\u000c\u000b\u0002\uffff\u0001\u000b\u0003\uffff\u0002\u000b",
            "",
            ""
    ]
});

org.antlr.lang.augmentObject(XQueryParser, {
    DFA128_eot:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA128_eotS),
    DFA128_eof:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA128_eofS),
    DFA128_min:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA128_minS),
    DFA128_max:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA128_maxS),
    DFA128_accept:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA128_acceptS),
    DFA128_special:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA128_specialS),
    DFA128_transition: (function() {
        var a = [],
            i,
            numStates = XQueryParser.DFA128_transitionS.length;
        for (i=0; i<numStates; i++) {
            a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA128_transitionS[i]));
        }
        return a;
    })()
});

XQueryParser.DFA128 = function(recognizer) {
    this.recognizer = recognizer;
    this.decisionNumber = 128;
    this.eot = XQueryParser.DFA128_eot;
    this.eof = XQueryParser.DFA128_eof;
    this.min = XQueryParser.DFA128_min;
    this.max = XQueryParser.DFA128_max;
    this.accept = XQueryParser.DFA128_accept;
    this.special = XQueryParser.DFA128_special;
    this.transition = XQueryParser.DFA128_transition;
};

org.antlr.lang.extend(XQueryParser.DFA128, org.antlr.runtime.DFA, {
    getDescription: function() {
        return "986:1: p_NodeTest : ( p_KindTest | p_NameTest );";
    },
    dummy: null
});
org.antlr.lang.augmentObject(XQueryParser, {
    DFA129_eotS:
        "\u0009\uffff",
    DFA129_eofS:
        "\u0001\uffff\u0001\u0005\u0007\uffff",
    DFA129_minS:
        "\u0001\u0010\u0001\u0012\u0001\u00e8\u0001\uffff\u0001\u0010\u0001"+
    "\uffff\u0002\u0004\u0001\u0010",
    DFA129_maxS:
        "\u0001\u0116\u0001\u0107\u0001\u00e8\u0001\uffff\u0001\u0116\u0001"+
    "\uffff\u0002\u015c\u0001\u0116",
    DFA129_acceptS:
        "\u0003\uffff\u0001\u0002\u0001\uffff\u0001\u0001\u0003\uffff",
    DFA129_specialS:
        "\u0009\uffff}>",
    DFA129_transitionS: [
            "\u0092\u0001\u0001\uffff\u003f\u0001\u0012\uffff\u0001\u0003"+
            "\u001a\uffff\u0001\u0002\u0006\uffff\u0001\u0001",
            "\u0004\u0005\u0003\uffff\u0004\u0005\u0001\uffff\u0001\u0005"+
            "\u0004\uffff\u0001\u0005\u0002\uffff\u0002\u0005\u0004\uffff"+
            "\u0001\u0005\u0002\uffff\u0001\u0005\u0001\uffff\u0001\u0005"+
            "\u0003\uffff\u0001\u0005\u0001\uffff\u0001\u0005\u0001\uffff"+
            "\u0002\u0005\u0004\uffff\u0003\u0005\u0002\uffff\u0001\u0005"+
            "\u0001\uffff\u0003\u0005\u0002\uffff\u0001\u0005\u0006\uffff"+
            "\u0002\u0005\u000b\uffff\u0002\u0005\u0005\uffff\u0001\u0005"+
            "\u0004\uffff\u0002\u0005\u0001\uffff\u0001\u0005\u0004\uffff"+
            "\u0001\u0005\u0004\uffff\u0001\u0005\u0003\uffff\u0002\u0005"+
            "\u0006\uffff\u0001\u0005\u0005\uffff\u0001\u0005\u0007\uffff"+
            "\u0002\u0005\u0004\uffff\u0001\u0005\u0003\uffff\u0001\u0005"+
            "\u0007\uffff\u0001\u0005\u0002\uffff\u0001\u0005\u0014\uffff"+
            "\u0001\u0005\u0006\uffff\u0001\u0005\u0003\uffff\u0001\u0005"+
            "\u0006\uffff\u0001\u0005\u0013\uffff\u0001\u0005\u0001\uffff"+
            "\u0001\u0005\u0002\uffff\u0006\u0005\u0001\uffff\u0001\u0005"+
            "\u0003\uffff\u0001\u0005\u0001\uffff\u000c\u0005\u0002\uffff"+
            "\u0001\u0004\u0003\uffff\u0002\u0005",
            "\u0001\u0006",
            "",
            "\u0092\u0005\u0001\uffff\u003f\u0005\u0012\uffff\u0001\u0003"+
            "\u0021\uffff\u0001\u0005",
            "",
            "\u00e4\u0007\u0001\uffff\u0001\u0008\u0007\u0007\u0001\uffff"+
            "\u006b\u0007",
            "\u00e4\u0007\u0001\uffff\u0001\u0008\u0007\u0007\u0001\uffff"+
            "\u006b\u0007",
            "\u0092\u0005\u0001\uffff\u003f\u0005\u0012\uffff\u0001\u0003"+
            "\u0021\uffff\u0001\u0005"
    ]
});

org.antlr.lang.augmentObject(XQueryParser, {
    DFA129_eot:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA129_eotS),
    DFA129_eof:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA129_eofS),
    DFA129_min:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA129_minS),
    DFA129_max:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA129_maxS),
    DFA129_accept:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA129_acceptS),
    DFA129_special:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA129_specialS),
    DFA129_transition: (function() {
        var a = [],
            i,
            numStates = XQueryParser.DFA129_transitionS.length;
        for (i=0; i<numStates; i++) {
            a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA129_transitionS[i]));
        }
        return a;
    })()
});

XQueryParser.DFA129 = function(recognizer) {
    this.recognizer = recognizer;
    this.decisionNumber = 129;
    this.eot = XQueryParser.DFA129_eot;
    this.eof = XQueryParser.DFA129_eof;
    this.min = XQueryParser.DFA129_min;
    this.max = XQueryParser.DFA129_max;
    this.accept = XQueryParser.DFA129_accept;
    this.special = XQueryParser.DFA129_special;
    this.transition = XQueryParser.DFA129_transition;
};

org.antlr.lang.extend(XQueryParser.DFA129, org.antlr.runtime.DFA, {
    getDescription: function() {
        return "991:1: p_NameTest : ( p_EQName | p_Wildcard );";
    },
    dummy: null
});
org.antlr.lang.augmentObject(XQueryParser, {
    DFA136_eotS:
        "\u001a\uffff",
    DFA136_eofS:
        "\u001a\uffff",
    DFA136_minS:
        "\u0001\u0010\u0004\uffff\u0001\u00e3\u0001\u0010\u0001\uffff\u0002"+
    "\u00e3\u0001\uffff\u0002\u0010\u0001\u00e8\u0001\u00e3\u0001\u00e8\u0001"+
    "\u0010\u0001\u00f0\u0004\uffff\u0001\u0010\u0002\uffff\u0001\u00e3",
    DFA136_maxS:
        "\u0001\u0122\u0004\uffff\u0001\u0102\u0001\u0116\u0001\uffff\u0002"+
    "\u0102\u0001\uffff\u0002\u0116\u0003\u0102\u0001\u0116\u0001\u0102\u0004"+
    "\uffff\u0001\u0116\u0002\uffff\u0001\u00f0",
    DFA136_acceptS:
        "\u0001\uffff\u0001\u0001\u0001\u0002\u0001\u0003\u0001\u0004\u0002"+
    "\uffff\u0001\u0005\u0002\uffff\u0001\u0008\u0007\uffff\u0001\u0009\u0001"+
    "\u000a\u0001\u000b\u0001\u000c\u0001\uffff\u0001\u0006\u0001\u0007\u0001"+
    "\uffff",
    DFA136_specialS:
        "\u0001\u0000\u0019\uffff}>",
    DFA136_transitionS: [
            "\u0006\u000e\u0001\u000c\u0008\u000e\u0001\u000f\u0008\u000e"+
            "\u0001\u0009\u0001\u0011\u0001\u0006\u0002\u000e\u0001\u0011"+
            "\u000d\u000e\u0001\u0011\u0006\u000e\u0001\u0011\u0007\u000e"+
            "\u0001\u000b\u0003\u000e\u0001\u0011\u0005\u000e\u0001\u0005"+
            "\u0005\u000e\u0001\u0010\u0004\u0011\u0003\u000e\u0002\u0011"+
            "\u0005\u000e\u0001\u000d\u0003\u000e\u0001\u0011\u0001\u000e"+
            "\u0001\u0008\u0011\u000e\u0001\u0011\u0009\u000e\u0001\u0011"+
            "\u0016\u000e\u0001\u0007\u0031\u000e\u0001\u0011\u000d\u000e"+
            "\u0001\uffff\u0001\u0001\u0001\uffff\u0001\u0003\u0001\u0015"+
            "\u0001\uffff\u0001\u0012\u0001\uffff\u0001\u0014\u000c\uffff"+
            "\u0001\u000a\u0008\uffff\u0001\u0004\u000e\uffff\u0001\u0013"+
            "\u0002\uffff\u0002\u0002\u0002\uffff\u0001\u000e\u0007\uffff"+
            "\u0002\u000a\u0003\u0002",
            "",
            "",
            "",
            "",
            "\u0001\u0007\u0004\uffff\u0001\u0017\u0007\uffff\u0001\u0013"+
            "\u0011\uffff\u0001\u0016",
            "\u0092\u000a\u0001\uffff\u003f\u000a\u0006\uffff\u0001\u000a"+
            "\u0007\uffff\u0001\u0013\u0011\uffff\u0001\u0016\u000c\uffff"+
            "\u0001\u000a\u0006\uffff\u0001\u000a",
            "",
            "\u0001\u0007\u0004\uffff\u0001\u0018\u0007\uffff\u0001\u0013"+
            "\u0011\uffff\u0001\u0016",
            "\u0001\u0007\u0004\uffff\u0001\u000a\u0007\uffff\u0001\u0013"+
            "\u0011\uffff\u0001\u0016",
            "",
            "\u0092\u000a\u0001\uffff\u003f\u000a\u0001\uffff\u0001\u0007"+
            "\u0004\uffff\u0001\u000a\u0007\uffff\u0001\u0013\u0011\uffff"+
            "\u0001\u0016\u0013\uffff\u0001\u000a",
            "\u0092\u000a\u0001\uffff\u003f\u000a\u0006\uffff\u0001\u000a"+
            "\u0007\uffff\u0001\u0013\u0011\uffff\u0001\u0016\u000c\uffff"+
            "\u0001\u000a\u0006\uffff\u0001\u000a",
            "\u0001\u000a\u0007\uffff\u0001\u0013\u0011\uffff\u0001\u0016",
            "\u0001\u0007\u000c\uffff\u0001\u0013\u0011\uffff\u0001\u0016",
            "\u0001\u000a\u0007\uffff\u0001\u0013\u0011\uffff\u0001\u0016",
            "\u0092\u000a\u0001\uffff\u003f\u000a\u0006\uffff\u0001\u000a"+
            "\u0007\uffff\u0001\u0013\u0011\uffff\u0001\u0016\u0013\uffff"+
            "\u0001\u000a",
            "\u0001\u0013\u0011\uffff\u0001\u0016",
            "",
            "",
            "",
            "",
            "\u0092\u0019\u0001\uffff\u003f\u0019\u0034\uffff\u0001\u0019",
            "",
            "",
            "\u0001\u0007\u000c\uffff\u0001\u0013"
    ]
});

org.antlr.lang.augmentObject(XQueryParser, {
    DFA136_eot:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA136_eotS),
    DFA136_eof:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA136_eofS),
    DFA136_min:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA136_minS),
    DFA136_max:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA136_maxS),
    DFA136_accept:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA136_acceptS),
    DFA136_special:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA136_specialS),
    DFA136_transition: (function() {
        var a = [],
            i,
            numStates = XQueryParser.DFA136_transitionS.length;
        for (i=0; i<numStates; i++) {
            a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA136_transitionS[i]));
        }
        return a;
    })()
});

XQueryParser.DFA136 = function(recognizer) {
    this.recognizer = recognizer;
    this.decisionNumber = 136;
    this.eot = XQueryParser.DFA136_eot;
    this.eof = XQueryParser.DFA136_eof;
    this.min = XQueryParser.DFA136_min;
    this.max = XQueryParser.DFA136_max;
    this.accept = XQueryParser.DFA136_accept;
    this.special = XQueryParser.DFA136_special;
    this.transition = XQueryParser.DFA136_transition;
};

org.antlr.lang.extend(XQueryParser.DFA136, org.antlr.runtime.DFA, {
    getDescription: function() {
        return "1028:1: p_PrimaryExpr : ( ( LPAREN )=> p_ParenthesizedExpr | p_Literal | p_VarRef | p_ContextItemExpr | p_FunctionCall | p_OrderedExpr | p_UnorderedExpr | p_Constructor | p_BlockExpr | p_FunctionItemExpr | p_ArrayConstructor | p_SimpleObjectUnion );";
    },
    specialStateTransition: function(s, input) {
        var _s = s;
        var retval = (function(s, input) {
            switch ( s ) {
                        case 0 : 
                            var LA136_0 = input.LA(1);

                             
                            var index136_0 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA136_0==LPAREN) && (this.synpred13_XQueryParser())) {s = 1;}

                            else if ( ((LA136_0>=APOS && LA136_0<=QUOT)||(LA136_0>=L_IntegerLiteral && LA136_0<=L_DoubleLiteral)) ) {s = 2;}

                            else if ( (LA136_0==DOLLAR) ) {s = 3;}

                            else if ( (LA136_0==DOT) ) {s = 4;}

                            else if ( (LA136_0==ORDERED) ) {s = 5;}

                            else if ( (LA136_0==ELEMENT) ) {s = 6;}

                            else if ( (LA136_0==UPDATING) ) {s = 7;}

                            else if ( (LA136_0==UNORDERED) ) {s = 8;}

                            else if ( (LA136_0==DOCUMENT) ) {s = 9;}

                            else if ( (LA136_0==SMALLER||(LA136_0>=L_DirCommentConstructor && LA136_0<=L_DirPIConstructor)) ) {s = 10;}

                            else if ( (LA136_0==NAMESPACE) ) {s = 11;}

                            else if ( (LA136_0==ATTRIBUTE) ) {s = 12;}

                            else if ( (LA136_0==TEXT) ) {s = 13;}

                            else if ( ((LA136_0>=ANCESTOR && LA136_0<=AT)||(LA136_0>=BASE_URI && LA136_0<=COLLATION)||(LA136_0>=CONSTRUCTION && LA136_0<=DIV)||(LA136_0>=ELSE && LA136_0<=EMPTY)||(LA136_0>=ENCODING && LA136_0<=IDIV)||(LA136_0>=IMPORT && LA136_0<=IS)||(LA136_0>=LAX && LA136_0<=MODULE)||(LA136_0>=NE && LA136_0<=NO_PRESERVE)||(LA136_0>=JSON && LA136_0<=ORDER)||(LA136_0>=ORDERING && LA136_0<=PRESERVE)||(LA136_0>=RETURN && LA136_0<=SCHEMA)||(LA136_0>=SELF && LA136_0<=STRIP)||(LA136_0>=THEN && LA136_0<=TREAT)||LA136_0==UNION||(LA136_0>=VALIDATE && LA136_0<=MINUS_SIGN)||(LA136_0>=NAN && LA136_0<=START)||(LA136_0>=TRY && LA136_0<=SKIP)||(LA136_0>=VALUE && LA136_0<=RETURNING)||(LA136_0>=CHECK && LA136_0<=QUOT_ER)||LA136_0==L_NCName) ) {s = 14;}

                            else if ( (LA136_0==COMMENT) ) {s = 15;}

                            else if ( (LA136_0==PROCESSING_INSTRUCTION) ) {s = 16;}

                            else if ( (LA136_0==DOCUMENT_NODE||LA136_0==EMPTY_SEQUENCE||LA136_0==IF||LA136_0==ITEM||LA136_0==NODE||(LA136_0>=STRUCTURED_ITEM && LA136_0<=ARRAY)||(LA136_0>=SCHEMA_ATTRIBUTE && LA136_0<=SCHEMA_ELEMENT)||LA136_0==TYPESWITCH||LA136_0==NAMESPACE_NODE||LA136_0==SWITCH||LA136_0==WHILE) ) {s = 17;}

                            else if ( (LA136_0==LBRACKET) ) {s = 18;}

                            else if ( (LA136_0==Q) ) {s = 19;}

                            else if ( (LA136_0==LSQUARE) ) {s = 20;}

                            else if ( (LA136_0==L_UNION_BRACKET) ) {s = 21;}

                             
                            input.seek(index136_0);
                            if ( s>=0 ) return s;
                            break;
            }
        }).call(this.recognizer, s, input);
        if (!org.antlr.lang.isUndefined(retval)) {
            return retval;
        }
        if (this.recognizer.state.backtracking>0) {this.recognizer.state.failed=true; return -1;}
        var nvae =
            new org.antlr.runtime.NoViableAltException(this.getDescription(), 136, _s, input);
        this.error(nvae);
        throw nvae;
    },
    dummy: null
});
org.antlr.lang.augmentObject(XQueryParser, {
    DFA172_eotS:
        "\u0018\uffff",
    DFA172_eofS:
        "\u0001\uffff\u000b\u000f\u0001\uffff\u0002\u000f\u0002\uffff\u0003"+
    "\u000f\u0004\uffff",
    DFA172_minS:
        "\u0001\u0010\u000b\u0012\u0001\uffff\u0002\u0012\u0002\uffff\u0003"+
    "\u0012\u0004\uffff",
    DFA172_maxS:
        "\u0001\u0116\u000b\u0107\u0001\uffff\u0002\u0107\u0002\uffff\u0003"+
    "\u0107\u0004\uffff",
    DFA172_acceptS:
        "\u000c\uffff\u0001\u0003\u0002\uffff\u0001\u0004\u0001\u0005\u0003"+
    "\uffff\u0001\u0001\u0001\u0002\u0001\u0006\u0001\u0007",
    DFA172_specialS:
        "\u0018\uffff}>",
    DFA172_transitionS: [
            "\u0006\u000f\u0001\u0003\u0008\u000f\u0001\u0007\u0009\u000f"+
            "\u0001\u0001\u0001\u0002\u000b\u000f\u0001\u000d\u000b\u000f"+
            "\u0001\u000b\u000b\u000f\u0001\u000a\u000b\u000f\u0001\u0006"+
            "\u0001\u0013\u0001\u000e\u0001\u0011\u0001\u0012\u0003\u000f"+
            "\u0001\u0005\u0001\u0004\u0005\u000f\u0001\u0008\u0017\u000f"+
            "\u0001\u0009\u0020\u000f\u0001\uffff\u003f\u000f\u0001\uffff"+
            "\u0001\u0010\u000b\uffff\u0001\u000c\u001f\uffff\u0001\u000f"+
            "\u0006\uffff\u0001\u000f",
            "\u0004\u000f\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f"+
            "\u0004\uffff\u0001\u000f\u0002\uffff\u0002\u000f\u0004\uffff"+
            "\u0001\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0002\u000f"+
            "\u0002\uffff\u0001\u000f\u0001\uffff\u0001\u000f\u0001\uffff"+
            "\u0002\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f"+
            "\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f\u0002\uffff"+
            "\u0001\u000f\u0006\uffff\u0002\u000f\u000b\uffff\u0002\u000f"+
            "\u0005\uffff\u0001\u000f\u0004\uffff\u0001\u000f\u0002\uffff"+
            "\u0001\u000f\u0004\uffff\u0001\u000f\u0001\uffff\u0001\u000f"+
            "\u0002\uffff\u0001\u000f\u0003\uffff\u0002\u000f\u0006\uffff"+
            "\u0001\u000f\u0005\uffff\u0001\u000f\u0007\uffff\u0002\u000f"+
            "\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f\u0007\uffff"+
            "\u0001\u000f\u0002\uffff\u0001\u000f\u0014\uffff\u0001\u000f"+
            "\u0003\uffff\u0001\u000f\u0002\uffff\u0001\u000f\u0003\uffff"+
            "\u0001\u000f\u0006\uffff\u0001\u000f\u0013\uffff\u0001\u000f"+
            "\u0001\u0014\u0001\u000f\u0002\uffff\u0003\u000f\u0001\uffff"+
            "\u0004\u000f\u0003\uffff\u000b\u000f\u0005\uffff\u0001\u000f"+
            "\u0003\uffff\u0002\u000f",
            "\u0004\u000f\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f"+
            "\u0004\uffff\u0001\u000f\u0002\uffff\u0002\u000f\u0004\uffff"+
            "\u0001\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0002\u000f"+
            "\u0002\uffff\u0001\u000f\u0001\uffff\u0001\u000f\u0001\uffff"+
            "\u0002\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f"+
            "\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f\u0002\uffff"+
            "\u0001\u000f\u0006\uffff\u0002\u000f\u000b\uffff\u0002\u000f"+
            "\u0005\uffff\u0001\u000f\u0004\uffff\u0001\u000f\u0002\uffff"+
            "\u0001\u000f\u0004\uffff\u0001\u000f\u0001\uffff\u0001\u000f"+
            "\u0002\uffff\u0001\u000f\u0003\uffff\u0002\u000f\u0006\uffff"+
            "\u0001\u000f\u0005\uffff\u0001\u000f\u0007\uffff\u0002\u000f"+
            "\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f\u0007\uffff"+
            "\u0001\u000f\u0002\uffff\u0001\u000f\u0014\uffff\u0001\u000f"+
            "\u0003\uffff\u0001\u000f\u0002\uffff\u0001\u000f\u0003\uffff"+
            "\u0001\u000f\u0006\uffff\u0001\u000f\u0013\uffff\u0001\u000f"+
            "\u0001\u0014\u0001\u000f\u0002\uffff\u0003\u000f\u0001\uffff"+
            "\u0004\u000f\u0003\uffff\u000b\u000f\u0005\uffff\u0001\u000f"+
            "\u0003\uffff\u0002\u000f",
            "\u0004\u000f\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f"+
            "\u0004\uffff\u0001\u000f\u0002\uffff\u0002\u000f\u0004\uffff"+
            "\u0001\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0002\u000f"+
            "\u0002\uffff\u0001\u000f\u0001\uffff\u0001\u000f\u0001\uffff"+
            "\u0002\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f"+
            "\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f\u0002\uffff"+
            "\u0001\u000f\u0006\uffff\u0002\u000f\u000b\uffff\u0002\u000f"+
            "\u0005\uffff\u0001\u000f\u0004\uffff\u0001\u000f\u0002\uffff"+
            "\u0001\u000f\u0004\uffff\u0001\u000f\u0001\uffff\u0001\u000f"+
            "\u0002\uffff\u0001\u000f\u0003\uffff\u0002\u000f\u0006\uffff"+
            "\u0001\u000f\u0005\uffff\u0001\u000f\u0007\uffff\u0002\u000f"+
            "\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f\u0007\uffff"+
            "\u0001\u000f\u0002\uffff\u0001\u000f\u0014\uffff\u0001\u000f"+
            "\u0003\uffff\u0001\u000f\u0002\uffff\u0001\u000f\u0003\uffff"+
            "\u0001\u000f\u0006\uffff\u0001\u000f\u0013\uffff\u0001\u000f"+
            "\u0001\u0014\u0001\u000f\u0002\uffff\u0003\u000f\u0001\uffff"+
            "\u0004\u000f\u0003\uffff\u000b\u000f\u0005\uffff\u0001\u000f"+
            "\u0003\uffff\u0002\u000f",
            "\u0004\u000f\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f"+
            "\u0004\uffff\u0001\u000f\u0002\uffff\u0002\u000f\u0004\uffff"+
            "\u0001\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0002\u000f"+
            "\u0002\uffff\u0001\u000f\u0001\uffff\u0001\u000f\u0001\uffff"+
            "\u0002\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f"+
            "\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f\u0002\uffff"+
            "\u0001\u000f\u0006\uffff\u0002\u000f\u000b\uffff\u0002\u000f"+
            "\u0005\uffff\u0001\u000f\u0004\uffff\u0001\u000f\u0002\uffff"+
            "\u0001\u000f\u0004\uffff\u0001\u000f\u0001\uffff\u0001\u000f"+
            "\u0002\uffff\u0001\u000f\u0003\uffff\u0002\u000f\u0006\uffff"+
            "\u0001\u000f\u0005\uffff\u0001\u000f\u0007\uffff\u0002\u000f"+
            "\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f\u0007\uffff"+
            "\u0001\u000f\u0002\uffff\u0001\u000f\u0014\uffff\u0001\u000f"+
            "\u0003\uffff\u0001\u000f\u0002\uffff\u0001\u000f\u0003\uffff"+
            "\u0001\u000f\u0006\uffff\u0001\u000f\u0013\uffff\u0001\u000f"+
            "\u0001\u0014\u0001\u000f\u0002\uffff\u0003\u000f\u0001\uffff"+
            "\u0004\u000f\u0003\uffff\u000b\u000f\u0005\uffff\u0001\u000f"+
            "\u0003\uffff\u0002\u000f",
            "\u0004\u000f\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f"+
            "\u0004\uffff\u0001\u000f\u0002\uffff\u0002\u000f\u0004\uffff"+
            "\u0001\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0002\u000f"+
            "\u0002\uffff\u0001\u000f\u0001\uffff\u0001\u000f\u0001\uffff"+
            "\u0002\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f"+
            "\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f\u0002\uffff"+
            "\u0001\u000f\u0006\uffff\u0002\u000f\u000b\uffff\u0002\u000f"+
            "\u0005\uffff\u0001\u000f\u0004\uffff\u0001\u000f\u0002\uffff"+
            "\u0001\u000f\u0004\uffff\u0001\u000f\u0001\uffff\u0001\u000f"+
            "\u0002\uffff\u0001\u000f\u0003\uffff\u0002\u000f\u0006\uffff"+
            "\u0001\u000f\u0005\uffff\u0001\u000f\u0007\uffff\u0002\u000f"+
            "\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f\u0007\uffff"+
            "\u0001\u000f\u0002\uffff\u0001\u000f\u0014\uffff\u0001\u000f"+
            "\u0003\uffff\u0001\u000f\u0002\uffff\u0001\u000f\u0003\uffff"+
            "\u0001\u000f\u0006\uffff\u0001\u000f\u0013\uffff\u0001\u000f"+
            "\u0001\u0014\u0001\u000f\u0002\uffff\u0003\u000f\u0001\uffff"+
            "\u0004\u000f\u0003\uffff\u000b\u000f\u0005\uffff\u0001\u000f"+
            "\u0003\uffff\u0002\u000f",
            "\u0004\u000f\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f"+
            "\u0004\uffff\u0001\u000f\u0002\uffff\u0002\u000f\u0004\uffff"+
            "\u0001\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0002\u000f"+
            "\u0002\uffff\u0001\u000f\u0001\uffff\u0001\u000f\u0001\uffff"+
            "\u0002\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f"+
            "\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f\u0002\uffff"+
            "\u0001\u000f\u0006\uffff\u0002\u000f\u000b\uffff\u0002\u000f"+
            "\u0005\uffff\u0001\u000f\u0004\uffff\u0001\u000f\u0002\uffff"+
            "\u0001\u000f\u0004\uffff\u0001\u000f\u0001\uffff\u0001\u000f"+
            "\u0002\uffff\u0001\u000f\u0003\uffff\u0002\u000f\u0006\uffff"+
            "\u0001\u000f\u0005\uffff\u0001\u000f\u0007\uffff\u0002\u000f"+
            "\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f\u0007\uffff"+
            "\u0001\u000f\u0002\uffff\u0001\u000f\u0014\uffff\u0001\u000f"+
            "\u0003\uffff\u0001\u000f\u0002\uffff\u0001\u000f\u0003\uffff"+
            "\u0001\u000f\u0006\uffff\u0001\u000f\u0013\uffff\u0001\u000f"+
            "\u0001\u0014\u0001\u000f\u0002\uffff\u0003\u000f\u0001\uffff"+
            "\u0004\u000f\u0003\uffff\u000b\u000f\u0005\uffff\u0001\u000f"+
            "\u0003\uffff\u0002\u000f",
            "\u0004\u000f\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f"+
            "\u0004\uffff\u0001\u000f\u0002\uffff\u0002\u000f\u0004\uffff"+
            "\u0001\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0002\u000f"+
            "\u0002\uffff\u0001\u000f\u0001\uffff\u0001\u000f\u0001\uffff"+
            "\u0002\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f"+
            "\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f\u0002\uffff"+
            "\u0001\u000f\u0006\uffff\u0002\u000f\u000b\uffff\u0002\u000f"+
            "\u0005\uffff\u0001\u000f\u0004\uffff\u0001\u000f\u0002\uffff"+
            "\u0001\u000f\u0004\uffff\u0001\u000f\u0001\uffff\u0001\u000f"+
            "\u0002\uffff\u0001\u000f\u0003\uffff\u0002\u000f\u0006\uffff"+
            "\u0001\u000f\u0005\uffff\u0001\u000f\u0007\uffff\u0002\u000f"+
            "\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f\u0007\uffff"+
            "\u0001\u000f\u0002\uffff\u0001\u000f\u0014\uffff\u0001\u000f"+
            "\u0003\uffff\u0001\u000f\u0002\uffff\u0001\u000f\u0003\uffff"+
            "\u0001\u000f\u0006\uffff\u0001\u000f\u0013\uffff\u0001\u000f"+
            "\u0001\u0014\u0001\u000f\u0002\uffff\u0003\u000f\u0001\uffff"+
            "\u0004\u000f\u0003\uffff\u000b\u000f\u0005\uffff\u0001\u000f"+
            "\u0003\uffff\u0002\u000f",
            "\u0004\u000f\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f"+
            "\u0004\uffff\u0001\u000f\u0002\uffff\u0002\u000f\u0004\uffff"+
            "\u0001\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0002\u000f"+
            "\u0002\uffff\u0001\u000f\u0001\uffff\u0001\u000f\u0001\uffff"+
            "\u0002\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f"+
            "\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f\u0002\uffff"+
            "\u0001\u000f\u0006\uffff\u0002\u000f\u000b\uffff\u0002\u000f"+
            "\u0005\uffff\u0001\u000f\u0004\uffff\u0001\u000f\u0002\uffff"+
            "\u0001\u000f\u0004\uffff\u0001\u000f\u0001\uffff\u0001\u000f"+
            "\u0002\uffff\u0001\u000f\u0003\uffff\u0002\u000f\u0006\uffff"+
            "\u0001\u000f\u0005\uffff\u0001\u000f\u0007\uffff\u0002\u000f"+
            "\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f\u0007\uffff"+
            "\u0001\u000f\u0002\uffff\u0001\u000f\u0014\uffff\u0001\u000f"+
            "\u0003\uffff\u0001\u000f\u0002\uffff\u0001\u000f\u0003\uffff"+
            "\u0001\u000f\u0006\uffff\u0001\u000f\u0013\uffff\u0001\u000f"+
            "\u0001\u0014\u0001\u000f\u0002\uffff\u0003\u000f\u0001\uffff"+
            "\u0004\u000f\u0003\uffff\u000b\u000f\u0005\uffff\u0001\u000f"+
            "\u0003\uffff\u0002\u000f",
            "\u0004\u000f\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f"+
            "\u0004\uffff\u0001\u000f\u0002\uffff\u0002\u000f\u0004\uffff"+
            "\u0001\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0002\u000f"+
            "\u0002\uffff\u0001\u000f\u0001\uffff\u0001\u000f\u0001\uffff"+
            "\u0002\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f"+
            "\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f\u0002\uffff"+
            "\u0001\u000f\u0006\uffff\u0002\u000f\u000b\uffff\u0002\u000f"+
            "\u0005\uffff\u0001\u000f\u0004\uffff\u0001\u000f\u0002\uffff"+
            "\u0001\u000f\u0004\uffff\u0001\u000f\u0001\uffff\u0001\u000f"+
            "\u0002\uffff\u0001\u000f\u0003\uffff\u0002\u000f\u0006\uffff"+
            "\u0001\u000f\u0005\uffff\u0001\u000f\u0007\uffff\u0002\u000f"+
            "\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f\u0007\uffff"+
            "\u0001\u000f\u0002\uffff\u0001\u000f\u0014\uffff\u0001\u000f"+
            "\u0003\uffff\u0001\u000f\u0002\uffff\u0001\u000f\u0003\uffff"+
            "\u0001\u000f\u0006\uffff\u0001\u000f\u0013\uffff\u0001\u000f"+
            "\u0001\u0014\u0001\u000f\u0002\uffff\u0003\u000f\u0001\uffff"+
            "\u0004\u000f\u0003\uffff\u000b\u000f\u0005\uffff\u0001\u000f"+
            "\u0003\uffff\u0002\u000f",
            "\u0004\u000f\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f"+
            "\u0004\uffff\u0001\u000f\u0002\uffff\u0002\u000f\u0004\uffff"+
            "\u0001\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0002\u000f"+
            "\u0002\uffff\u0001\u000f\u0001\uffff\u0001\u000f\u0001\uffff"+
            "\u0002\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f"+
            "\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f\u0002\uffff"+
            "\u0001\u000f\u0006\uffff\u0002\u000f\u000b\uffff\u0002\u000f"+
            "\u0005\uffff\u0001\u000f\u0004\uffff\u0001\u000f\u0002\uffff"+
            "\u0001\u000f\u0004\uffff\u0001\u000f\u0001\uffff\u0001\u000f"+
            "\u0002\uffff\u0001\u000f\u0003\uffff\u0002\u000f\u0006\uffff"+
            "\u0001\u000f\u0005\uffff\u0001\u000f\u0007\uffff\u0002\u000f"+
            "\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f\u0007\uffff"+
            "\u0001\u000f\u0002\uffff\u0001\u000f\u0014\uffff\u0001\u000f"+
            "\u0003\uffff\u0001\u000f\u0002\uffff\u0001\u000f\u0003\uffff"+
            "\u0001\u000f\u0006\uffff\u0001\u000f\u0013\uffff\u0001\u000f"+
            "\u0001\u0014\u0001\u000f\u0002\uffff\u0003\u000f\u0001\uffff"+
            "\u0004\u000f\u0003\uffff\u000b\u000f\u0005\uffff\u0001\u000f"+
            "\u0003\uffff\u0002\u000f",
            "\u0004\u000f\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f"+
            "\u0004\uffff\u0001\u000f\u0002\uffff\u0002\u000f\u0004\uffff"+
            "\u0001\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0002\u000f"+
            "\u0002\uffff\u0001\u000f\u0001\uffff\u0001\u000f\u0001\uffff"+
            "\u0002\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f"+
            "\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f\u0002\uffff"+
            "\u0001\u000f\u0006\uffff\u0002\u000f\u000b\uffff\u0002\u000f"+
            "\u0005\uffff\u0001\u000f\u0004\uffff\u0001\u000f\u0002\uffff"+
            "\u0001\u000f\u0004\uffff\u0001\u000f\u0001\uffff\u0001\u000f"+
            "\u0002\uffff\u0001\u000f\u0003\uffff\u0002\u000f\u0006\uffff"+
            "\u0001\u000f\u0005\uffff\u0001\u000f\u0007\uffff\u0002\u000f"+
            "\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f\u0007\uffff"+
            "\u0001\u000f\u0002\uffff\u0001\u000f\u0014\uffff\u0001\u000f"+
            "\u0003\uffff\u0001\u000f\u0002\uffff\u0001\u000f\u0003\uffff"+
            "\u0001\u000f\u0006\uffff\u0001\u000f\u0013\uffff\u0001\u000f"+
            "\u0001\u0015\u0001\u000f\u0002\uffff\u0003\u000f\u0001\uffff"+
            "\u0004\u000f\u0003\uffff\u000b\u000f\u0005\uffff\u0001\u000f"+
            "\u0003\uffff\u0002\u000f",
            "",
            "\u0004\u000f\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f"+
            "\u0004\uffff\u0001\u000f\u0002\uffff\u0002\u000f\u0004\uffff"+
            "\u0001\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0002\u000f"+
            "\u0002\uffff\u0001\u000f\u0001\uffff\u0001\u000f\u0001\uffff"+
            "\u0002\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f"+
            "\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f\u0002\uffff"+
            "\u0001\u000f\u0006\uffff\u0002\u000f\u000b\uffff\u0002\u000f"+
            "\u0005\uffff\u0001\u000f\u0004\uffff\u0001\u000f\u0002\uffff"+
            "\u0001\u000f\u0004\uffff\u0001\u000f\u0001\uffff\u0001\u000f"+
            "\u0002\uffff\u0001\u000f\u0003\uffff\u0002\u000f\u0006\uffff"+
            "\u0001\u000f\u0005\uffff\u0001\u000f\u0007\uffff\u0002\u000f"+
            "\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f\u0007\uffff"+
            "\u0001\u000f\u0002\uffff\u0001\u000f\u0014\uffff\u0001\u000f"+
            "\u0003\uffff\u0001\u000f\u0002\uffff\u0001\u000f\u0003\uffff"+
            "\u0001\u000f\u0006\uffff\u0001\u000f\u0013\uffff\u0001\u000f"+
            "\u0001\u000c\u0001\u000f\u0002\uffff\u0003\u000f\u0001\uffff"+
            "\u0004\u000f\u0003\uffff\u000b\u000f\u0005\uffff\u0001\u000f"+
            "\u0003\uffff\u0002\u000f",
            "\u0004\u000f\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f"+
            "\u0004\uffff\u0001\u000f\u0002\uffff\u0002\u000f\u0004\uffff"+
            "\u0001\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0002\u000f"+
            "\u0002\uffff\u0001\u000f\u0001\uffff\u0001\u000f\u0001\uffff"+
            "\u0002\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f"+
            "\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f\u0002\uffff"+
            "\u0001\u000f\u0006\uffff\u0002\u000f\u000b\uffff\u0002\u000f"+
            "\u0005\uffff\u0001\u000f\u0004\uffff\u0001\u000f\u0002\uffff"+
            "\u0001\u000f\u0004\uffff\u0001\u000f\u0001\uffff\u0001\u000f"+
            "\u0002\uffff\u0001\u000f\u0003\uffff\u0002\u000f\u0006\uffff"+
            "\u0001\u000f\u0005\uffff\u0001\u000f\u0007\uffff\u0002\u000f"+
            "\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f\u0007\uffff"+
            "\u0001\u000f\u0002\uffff\u0001\u000f\u0014\uffff\u0001\u000f"+
            "\u0003\uffff\u0001\u000f\u0002\uffff\u0001\u000f\u0003\uffff"+
            "\u0001\u000f\u0006\uffff\u0001\u000f\u0013\uffff\u0001\u000f"+
            "\u0001\u0016\u0001\u000f\u0002\uffff\u0003\u000f\u0001\uffff"+
            "\u0004\u000f\u0003\uffff\u000b\u000f\u0005\uffff\u0001\u000f"+
            "\u0003\uffff\u0002\u000f",
            "",
            "",
            "\u0004\u000f\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f"+
            "\u0004\uffff\u0001\u000f\u0002\uffff\u0002\u000f\u0004\uffff"+
            "\u0001\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0002\u000f"+
            "\u0002\uffff\u0001\u000f\u0001\uffff\u0001\u000f\u0001\uffff"+
            "\u0002\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f"+
            "\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f\u0002\uffff"+
            "\u0001\u000f\u0006\uffff\u0002\u000f\u000b\uffff\u0002\u000f"+
            "\u0005\uffff\u0001\u000f\u0004\uffff\u0001\u000f\u0002\uffff"+
            "\u0001\u000f\u0004\uffff\u0001\u000f\u0001\uffff\u0001\u000f"+
            "\u0002\uffff\u0001\u000f\u0003\uffff\u0002\u000f\u0006\uffff"+
            "\u0001\u000f\u0005\uffff\u0001\u000f\u0007\uffff\u0002\u000f"+
            "\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f\u0007\uffff"+
            "\u0001\u000f\u0002\uffff\u0001\u000f\u0014\uffff\u0001\u000f"+
            "\u0003\uffff\u0001\u000f\u0002\uffff\u0001\u000f\u0003\uffff"+
            "\u0001\u000f\u0006\uffff\u0001\u000f\u0013\uffff\u0001\u000f"+
            "\u0001\u0016\u0001\u000f\u0002\uffff\u0003\u000f\u0001\uffff"+
            "\u0004\u000f\u0003\uffff\u000b\u000f\u0005\uffff\u0001\u000f"+
            "\u0003\uffff\u0002\u000f",
            "\u0004\u000f\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f"+
            "\u0004\uffff\u0001\u000f\u0002\uffff\u0002\u000f\u0004\uffff"+
            "\u0001\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0002\u000f"+
            "\u0002\uffff\u0001\u000f\u0001\uffff\u0001\u000f\u0001\uffff"+
            "\u0002\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f"+
            "\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f\u0002\uffff"+
            "\u0001\u000f\u0006\uffff\u0002\u000f\u000b\uffff\u0002\u000f"+
            "\u0005\uffff\u0001\u000f\u0004\uffff\u0001\u000f\u0002\uffff"+
            "\u0001\u000f\u0004\uffff\u0001\u000f\u0001\uffff\u0001\u000f"+
            "\u0002\uffff\u0001\u000f\u0003\uffff\u0002\u000f\u0006\uffff"+
            "\u0001\u000f\u0005\uffff\u0001\u000f\u0007\uffff\u0002\u000f"+
            "\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f\u0007\uffff"+
            "\u0001\u000f\u0002\uffff\u0001\u000f\u0014\uffff\u0001\u000f"+
            "\u0003\uffff\u0001\u000f\u0002\uffff\u0001\u000f\u0003\uffff"+
            "\u0001\u000f\u0006\uffff\u0001\u000f\u0013\uffff\u0001\u000f"+
            "\u0001\u0016\u0001\u000f\u0002\uffff\u0003\u000f\u0001\uffff"+
            "\u0004\u000f\u0003\uffff\u000b\u000f\u0005\uffff\u0001\u000f"+
            "\u0003\uffff\u0002\u000f",
            "\u0004\u000f\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f"+
            "\u0004\uffff\u0001\u000f\u0002\uffff\u0002\u000f\u0004\uffff"+
            "\u0001\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0002\u000f"+
            "\u0002\uffff\u0001\u000f\u0001\uffff\u0001\u000f\u0001\uffff"+
            "\u0002\u000f\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f"+
            "\u0002\uffff\u0001\u000f\u0001\uffff\u0003\u000f\u0002\uffff"+
            "\u0001\u000f\u0006\uffff\u0002\u000f\u000b\uffff\u0002\u000f"+
            "\u0005\uffff\u0001\u000f\u0004\uffff\u0001\u000f\u0002\uffff"+
            "\u0001\u000f\u0004\uffff\u0001\u000f\u0001\uffff\u0001\u000f"+
            "\u0002\uffff\u0001\u000f\u0003\uffff\u0002\u000f\u0006\uffff"+
            "\u0001\u000f\u0005\uffff\u0001\u000f\u0007\uffff\u0002\u000f"+
            "\u0004\uffff\u0001\u000f\u0003\uffff\u0001\u000f\u0007\uffff"+
            "\u0001\u000f\u0002\uffff\u0001\u000f\u0014\uffff\u0001\u000f"+
            "\u0003\uffff\u0001\u000f\u0002\uffff\u0001\u000f\u0003\uffff"+
            "\u0001\u000f\u0006\uffff\u0001\u000f\u0013\uffff\u0001\u000f"+
            "\u0001\u0017\u0001\u000f\u0002\uffff\u0003\u000f\u0001\uffff"+
            "\u0004\u000f\u0003\uffff\u000b\u000f\u0005\uffff\u0001\u000f"+
            "\u0003\uffff\u0002\u000f",
            "",
            "",
            "",
            ""
    ]
});

org.antlr.lang.augmentObject(XQueryParser, {
    DFA172_eot:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA172_eotS),
    DFA172_eof:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA172_eofS),
    DFA172_min:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA172_minS),
    DFA172_max:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA172_maxS),
    DFA172_accept:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA172_acceptS),
    DFA172_special:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA172_specialS),
    DFA172_transition: (function() {
        var a = [],
            i,
            numStates = XQueryParser.DFA172_transitionS.length;
        for (i=0; i<numStates; i++) {
            a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA172_transitionS[i]));
        }
        return a;
    })()
});

XQueryParser.DFA172 = function(recognizer) {
    this.recognizer = recognizer;
    this.decisionNumber = 172;
    this.eot = XQueryParser.DFA172_eot;
    this.eof = XQueryParser.DFA172_eof;
    this.min = XQueryParser.DFA172_min;
    this.max = XQueryParser.DFA172_max;
    this.accept = XQueryParser.DFA172_accept;
    this.special = XQueryParser.DFA172_special;
    this.transition = XQueryParser.DFA172_transition;
};

org.antlr.lang.extend(XQueryParser.DFA172, org.antlr.runtime.DFA, {
    getDescription: function() {
        return "1337:1: p_ItemType : ( p_KindTest -> ^( KindTest p_KindTest ) | ( ITEM LPAREN RPAREN ) -> ^( ItemTest ITEM LPAREN RPAREN ) | p_FunctionTest -> ^( FunctionTest p_FunctionTest ) | p_AtomicOrUnionType | p_ParenthesizedItemType | p_JSONTest | p_StructuredItemTest );";
    },
    dummy: null
});
org.antlr.lang.augmentObject(XQueryParser, {
    DFA195_eotS:
        "\u000f\uffff",
    DFA195_eofS:
        "\u000f\uffff",
    DFA195_minS:
        "\u0001\u0094\u0004\u004e\u000a\uffff",
    DFA195_maxS:
        "\u0001\u009f\u0002\u009d\u0001\u004f\u0001\u00a3\u000a\uffff",
    DFA195_acceptS:
        "\u0005\uffff\u0001\u0005\u0001\u000a\u0001\u0007\u0001\u0001\u0001"+
    "\u0006\u0001\u0002\u0001\u0003\u0001\u0008\u0001\u0009\u0001\u0004",
    DFA195_specialS:
        "\u000f\uffff}>",
    DFA195_transitionS: [
            "\u0001\u0005\u0001\u0002\u0001\uffff\u0001\u0001\u0002\uffff"+
            "\u0001\u0006\u0003\uffff\u0001\u0003\u0001\u0004",
            "\u0001\u0008\u0001\u0007\u004d\uffff\u0001\u0008",
            "\u0001\u000a\u0001\u0009\u004d\uffff\u0001\u000a",
            "\u0001\u000b\u0001\u000c",
            "\u0001\u000e\u0001\u000d\u0053\uffff\u0001\u000e",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    ]
});

org.antlr.lang.augmentObject(XQueryParser, {
    DFA195_eot:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA195_eotS),
    DFA195_eof:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA195_eofS),
    DFA195_min:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA195_minS),
    DFA195_max:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA195_maxS),
    DFA195_accept:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA195_acceptS),
    DFA195_special:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA195_specialS),
    DFA195_transition: (function() {
        var a = [],
            i,
            numStates = XQueryParser.DFA195_transitionS.length;
        for (i=0; i<numStates; i++) {
            a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA195_transitionS[i]));
        }
        return a;
    })()
});

XQueryParser.DFA195 = function(recognizer) {
    this.recognizer = recognizer;
    this.decisionNumber = 195;
    this.eot = XQueryParser.DFA195_eot;
    this.eof = XQueryParser.DFA195_eof;
    this.min = XQueryParser.DFA195_min;
    this.max = XQueryParser.DFA195_max;
    this.accept = XQueryParser.DFA195_accept;
    this.special = XQueryParser.DFA195_special;
    this.transition = XQueryParser.DFA195_transition;
};

org.antlr.lang.extend(XQueryParser.DFA195, org.antlr.runtime.DFA, {
    getDescription: function() {
        return "1697:1: pg_UpdateExpr : ( p_InsertExpr | p_DeleteExpr | p_RenameExpr | p_ReplaceExpr | p_TransformExpr | p_JSONDeleteExpr | p_JSONInsertExpr | p_JSONRenameExpr | p_JSONReplaceExpr | p_JSONAppendExpr );";
    },
    dummy: null
});
org.antlr.lang.augmentObject(XQueryParser, {
    DFA230_eotS:
        "\u000a\uffff",
    DFA230_eofS:
        "\u000a\uffff",
    DFA230_minS:
        "\u0001\u001a\u0002\uffff\u0001\u00c4\u0006\uffff",
    DFA230_maxS:
        "\u0001\u00cb\u0002\uffff\u0001\u00cb\u0006\uffff",
    DFA230_acceptS:
        "\u0001\uffff\u0001\u0001\u0001\u0002\u0001\uffff\u0001\u0003\u0001"+
    "\u0004\u0001\u0005\u0001\u0006\u0001\u0007\u0001\u0008",
    DFA230_specialS:
        "\u000a\uffff}>",
    DFA230_transitionS: [
            "\u0001\u0006\u0036\uffff\u0001\u0009\u0057\uffff\u0001\u0007"+
            "\u000a\uffff\u0001\u0001\u0001\uffff\u0001\u0006\u0001\uffff"+
            "\u0001\u0003\u000b\uffff\u0001\u0005\u0001\u0008\u0001\u0004"+
            "\u0001\uffff\u0001\u0006\u0002\uffff\u0001\u0002",
            "",
            "",
            "\u0001\u0005\u0001\u0008\u0001\u0004\u0004\uffff\u0001\u0002",
            "",
            "",
            "",
            "",
            "",
            ""
    ]
});

org.antlr.lang.augmentObject(XQueryParser, {
    DFA230_eot:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA230_eotS),
    DFA230_eof:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA230_eofS),
    DFA230_min:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA230_minS),
    DFA230_max:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA230_maxS),
    DFA230_accept:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA230_acceptS),
    DFA230_special:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA230_specialS),
    DFA230_transition: (function() {
        var a = [],
            i,
            numStates = XQueryParser.DFA230_transitionS.length;
        for (i=0; i<numStates; i++) {
            a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA230_transitionS[i]));
        }
        return a;
    })()
});

XQueryParser.DFA230 = function(recognizer) {
    this.recognizer = recognizer;
    this.decisionNumber = 230;
    this.eot = XQueryParser.DFA230_eot;
    this.eof = XQueryParser.DFA230_eof;
    this.min = XQueryParser.DFA230_min;
    this.max = XQueryParser.DFA230_max;
    this.accept = XQueryParser.DFA230_accept;
    this.special = XQueryParser.DFA230_special;
    this.transition = XQueryParser.DFA230_transition;
};

org.antlr.lang.extend(XQueryParser.DFA230, org.antlr.runtime.DFA, {
    getDescription: function() {
        return "1932:1: p_FTMatchOption : ( p_FTLanguageOption | p_FTWildCardOption | p_FTThesaurusOption | p_FTStemOption | p_FTCaseOption | p_FTDiacriticsOption | p_FTStopWordOption | p_FTExtensionOption );";
    },
    dummy: null
});
org.antlr.lang.augmentObject(XQueryParser, {
    DFA249_eotS:
        "\u0011\uffff",
    DFA249_eofS:
        "\u0011\uffff",
    DFA249_minS:
        "\u0001\u0010\u0001\uffff\u0001\u0010\u0005\u0012\u0001\uffff\u0001"+
    "\u0012\u0001\u00e8\u0001\u0010\u0001\u0004\u0001\u0012\u0001\u0004\u0001"+
    "\u0010\u0001\u0012",
    DFA249_maxS:
        "\u0001\u0122\u0001\uffff\u0001\u0116\u0005\u0107\u0001\uffff\u0001"+
    "\u0107\u0001\u00e8\u0001\u0116\u0001\u015c\u0001\u0107\u0001\u015c\u0001"+
    "\u0116\u0001\u0107",
    DFA249_acceptS:
        "\u0001\uffff\u0001\u0001\u0006\uffff\u0001\u0002\u0008\uffff",
    DFA249_specialS:
        "\u0011\uffff}>",
    DFA249_transitionS: [
            "\u0061\u0001\u0001\u0007\u005d\u0001\u0001\u0004\u0001\u0005"+
            "\u0001\u0006\u0002\u0001\u0001\u0003\u000d\u0001\u0001\uffff"+
            "\u0001\u0001\u0001\uffff\u0001\u0002\u0001\u0001\u0001\uffff"+
            "\u0001\u0001\u0001\uffff\u0001\u0001\u0004\uffff\u0001\u0008"+
            "\u0004\uffff\u0004\u0001\u0005\uffff\u0002\u0001\u0001\uffff"+
            "\u0002\u0001\u000c\uffff\u0002\u0001\u0002\uffff\u0002\u0001"+
            "\u0002\uffff\u0001\u0001\u0006\uffff\u0006\u0001",
            "",
            "\u0092\u0009\u0001\uffff\u003f\u0009\u002d\uffff\u0001\u000a"+
            "\u0006\uffff\u0001\u0009",
            "\u0001\u0001\u0008\uffff\u0002\u0001\u000a\uffff\u0001\u0001"+
            "\u0007\uffff\u0001\u0001\u0001\uffff\u0001\u0001\u0005\uffff"+
            "\u0001\u0001\u0001\uffff\u0002\u0001\u0004\uffff\u0003\u0001"+
            "\u0002\uffff\u0001\u0001\u0002\uffff\u0002\u0001\u0002\uffff"+
            "\u0001\u0001\u0006\uffff\u0001\u0001\u0018\uffff\u0002\u0001"+
            "\u0001\uffff\u0001\u0001\u0038\uffff\u0001\u0001\u003a\uffff"+
            "\u0001\u0001\u0001\u0008\u0006\uffff\u0001\u0001\u0001\uffff"+
            "\u0001\u0001\u0001\uffff\u0001\u0001\u0001\uffff\u0001\u0001"+
            "\u0001\uffff\u0001\u0001\u0001\uffff\u000c\u0001\u0002\uffff"+
            "\u0001\u0001\u0003\uffff\u0002\u0001",
            "\u0001\u0001\u0008\uffff\u0002\u0001\u000a\uffff\u0001\u0001"+
            "\u0007\uffff\u0001\u0001\u0001\uffff\u0001\u0001\u0005\uffff"+
            "\u0001\u0001\u0001\uffff\u0002\u0001\u0004\uffff\u0003\u0001"+
            "\u0002\uffff\u0001\u0001\u0002\uffff\u0002\u0001\u0002\uffff"+
            "\u0001\u0001\u0006\uffff\u0001\u0001\u0018\uffff\u0002\u0001"+
            "\u0001\uffff\u0001\u0001\u0038\uffff\u0001\u0001\u002a\uffff"+
            "\u0001\u0008\u000f\uffff\u0002\u0001\u0006\uffff\u0001\u0001"+
            "\u0001\uffff\u0001\u0001\u0001\uffff\u0001\u0001\u0001\uffff"+
            "\u0001\u0001\u0001\uffff\u0001\u0001\u0001\uffff\u000c\u0001"+
            "\u0002\uffff\u0001\u0001\u0003\uffff\u0002\u0001",
            "\u0001\u0001\u0008\uffff\u0002\u0001\u000a\uffff\u0001\u0001"+
            "\u0007\uffff\u0001\u0001\u0001\uffff\u0001\u0001\u0005\uffff"+
            "\u0001\u0001\u0001\uffff\u0002\u0001\u0004\uffff\u0003\u0001"+
            "\u0002\uffff\u0001\u0001\u0002\uffff\u0002\u0001\u0002\uffff"+
            "\u0001\u0001\u0006\uffff\u0001\u0001\u0018\uffff\u0002\u0001"+
            "\u0001\uffff\u0001\u0001\u0038\uffff\u0001\u0001\u002a\uffff"+
            "\u0001\u0008\u000f\uffff\u0002\u0001\u0006\uffff\u0001\u0001"+
            "\u0001\uffff\u0001\u0001\u0001\uffff\u0001\u0001\u0001\uffff"+
            "\u0001\u0001\u0001\uffff\u0001\u0001\u0001\uffff\u000c\u0001"+
            "\u0002\uffff\u0001\u0001\u0003\uffff\u0002\u0001",
            "\u0001\u0001\u0008\uffff\u0002\u0001\u000a\uffff\u0001\u0001"+
            "\u0007\uffff\u0001\u0001\u0001\uffff\u0001\u0001\u0005\uffff"+
            "\u0001\u0001\u0001\uffff\u0002\u0001\u0004\uffff\u0003\u0001"+
            "\u0002\uffff\u0001\u0001\u0002\uffff\u0002\u0001\u0002\uffff"+
            "\u0001\u0001\u0006\uffff\u0001\u0001\u0018\uffff\u0002\u0001"+
            "\u0001\uffff\u0001\u0001\u0038\uffff\u0001\u0001\u002b\uffff"+
            "\u0001\u0008\u000e\uffff\u0002\u0001\u0006\uffff\u0001\u0001"+
            "\u0001\uffff\u0001\u0001\u0001\uffff\u0001\u0001\u0001\uffff"+
            "\u0001\u0001\u0001\uffff\u0001\u0001\u0001\uffff\u000c\u0001"+
            "\u0002\uffff\u0001\u0001\u0003\uffff\u0002\u0001",
            "\u0001\u0001\u0008\uffff\u0002\u0001\u000a\uffff\u0001\u0001"+
            "\u0007\uffff\u0001\u0001\u0001\uffff\u0001\u0001\u0005\uffff"+
            "\u0001\u0001\u0001\uffff\u0002\u0001\u0004\uffff\u0003\u0001"+
            "\u0002\uffff\u0001\u0001\u0002\uffff\u0002\u0001\u0002\uffff"+
            "\u0001\u0001\u0006\uffff\u0001\u0001\u0018\uffff\u0002\u0001"+
            "\u0001\uffff\u0001\u0001\u0038\uffff\u0001\u0001\u003a\uffff"+
            "\u0002\u0001\u0001\uffff\u0001\u0008\u0004\uffff\u0001\u0001"+
            "\u0001\uffff\u0001\u0001\u0001\uffff\u0001\u0001\u0001\uffff"+
            "\u0001\u0001\u0001\uffff\u0001\u0001\u0001\uffff\u000c\u0001"+
            "\u0002\uffff\u0001\u0001\u0003\uffff\u0002\u0001",
            "",
            "\u0001\u0001\u0008\uffff\u0002\u0001\u000a\uffff\u0001\u0001"+
            "\u0007\uffff\u0001\u0001\u0001\uffff\u0001\u0001\u0005\uffff"+
            "\u0001\u0001\u0001\uffff\u0002\u0001\u0004\uffff\u0003\u0001"+
            "\u0002\uffff\u0001\u0001\u0002\uffff\u0002\u0001\u0002\uffff"+
            "\u0001\u0001\u0006\uffff\u0001\u0001\u0018\uffff\u0002\u0001"+
            "\u0001\uffff\u0001\u0001\u0038\uffff\u0001\u0001\u003a\uffff"+
            "\u0002\u0001\u0006\uffff\u0001\u0001\u0001\uffff\u0001\u0001"+
            "\u0001\u0008\u0001\u0001\u0003\uffff\u0001\u0001\u0001\uffff"+
            "\u000c\u0001\u0002\uffff\u0001\u000b\u0003\uffff\u0002\u0001",
            "\u0001\u000c",
            "\u0092\u000d\u0001\uffff\u003f\u000d\u0034\uffff\u0001\u000d",
            "\u00e4\u000e\u0001\uffff\u0001\u000f\u0007\u000e\u0001\uffff"+
            "\u006b\u000e",
            "\u0001\u0001\u0008\uffff\u0002\u0001\u000a\uffff\u0001\u0001"+
            "\u0007\uffff\u0001\u0001\u0001\uffff\u0001\u0001\u0005\uffff"+
            "\u0001\u0001\u0001\uffff\u0002\u0001\u0004\uffff\u0003\u0001"+
            "\u0002\uffff\u0001\u0001\u0002\uffff\u0002\u0001\u0002\uffff"+
            "\u0001\u0001\u0006\uffff\u0001\u0001\u0018\uffff\u0002\u0001"+
            "\u0001\uffff\u0001\u0001\u0038\uffff\u0001\u0001\u003a\uffff"+
            "\u0002\u0001\u0006\uffff\u0001\u0001\u0001\uffff\u0001\u0001"+
            "\u0001\u0008\u0001\u0001\u0003\uffff\u0001\u0001\u0001\uffff"+
            "\u000c\u0001\u0006\uffff\u0002\u0001",
            "\u00e4\u000e\u0001\uffff\u0001\u000f\u0007\u000e\u0001\uffff"+
            "\u006b\u000e",
            "\u0092\u0010\u0001\uffff\u003f\u0010\u0034\uffff\u0001\u0010",
            "\u0001\u0001\u0008\uffff\u0002\u0001\u000a\uffff\u0001\u0001"+
            "\u0007\uffff\u0001\u0001\u0001\uffff\u0001\u0001\u0005\uffff"+
            "\u0001\u0001\u0001\uffff\u0002\u0001\u0004\uffff\u0003\u0001"+
            "\u0002\uffff\u0001\u0001\u0002\uffff\u0002\u0001\u0002\uffff"+
            "\u0001\u0001\u0006\uffff\u0001\u0001\u0018\uffff\u0002\u0001"+
            "\u0001\uffff\u0001\u0001\u0038\uffff\u0001\u0001\u003a\uffff"+
            "\u0002\u0001\u0006\uffff\u0001\u0001\u0001\uffff\u0001\u0001"+
            "\u0001\u0008\u0001\u0001\u0003\uffff\u0001\u0001\u0001\uffff"+
            "\u000c\u0001\u0006\uffff\u0002\u0001"
    ]
});

org.antlr.lang.augmentObject(XQueryParser, {
    DFA249_eot:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA249_eotS),
    DFA249_eof:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA249_eofS),
    DFA249_min:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA249_minS),
    DFA249_max:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA249_maxS),
    DFA249_accept:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA249_acceptS),
    DFA249_special:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA249_specialS),
    DFA249_transition: (function() {
        var a = [],
            i,
            numStates = XQueryParser.DFA249_transitionS.length;
        for (i=0; i<numStates; i++) {
            a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA249_transitionS[i]));
        }
        return a;
    })()
});

XQueryParser.DFA249 = function(recognizer) {
    this.recognizer = recognizer;
    this.decisionNumber = 249;
    this.eot = XQueryParser.DFA249_eot;
    this.eof = XQueryParser.DFA249_eof;
    this.min = XQueryParser.DFA249_min;
    this.max = XQueryParser.DFA249_max;
    this.accept = XQueryParser.DFA249_accept;
    this.special = XQueryParser.DFA249_special;
    this.transition = XQueryParser.DFA249_transition;
};

org.antlr.lang.extend(XQueryParser.DFA249, org.antlr.runtime.DFA, {
    getDescription: function() {
        return "2046:1: p_Hybrid[strict, allowConcat] : ( p_HybridExprSingle[$strict,$allowConcat] | p_Statement );";
    },
    dummy: null
});
org.antlr.lang.augmentObject(XQueryParser, {
    DFA265_eotS:
        "\u000c\uffff",
    DFA265_eofS:
        "\u0001\uffff\u0002\u0003\u0001\uffff\u0006\u0003\u0002\uffff",
    DFA265_minS:
        "\u0001\u0010\u0002\u0012\u0001\uffff\u0006\u0012\u0002\uffff",
    DFA265_maxS:
        "\u0001\u0122\u0002\u0107\u0001\uffff\u0006\u0107\u0002\uffff",
    DFA265_acceptS:
        "\u0003\uffff\u0001\u0002\u0006\uffff\u0001\u0001\u0001\u0003",
    DFA265_specialS:
        "\u0004\uffff\u0001\u0002\u0001\u0004\u0001\u0005\u0001\u0001\u0001"+
    "\u0003\u0001\u0000\u0002\uffff}>",
    DFA265_transitionS: [
            "\u0020\u0003\u0001\u0002\u0034\u0003\u0001\u0001\u002e\u0003"+
            "\u0001\u0008\u0001\u0005\u0001\u0003\u0001\u0004\u0002\u0003"+
            "\u0001\u0009\u0003\u0003\u0001\u0006\u0001\u0007\u0042\u0003"+
            "\u0001\uffff\u0001\u0003\u0001\uffff\u0002\u0003\u0001\uffff"+
            "\u0001\u0003\u0001\uffff\u0001\u0003\u0009\uffff\u0004\u0003"+
            "\u0005\uffff\u0002\u0003\u0001\uffff\u0002\u0003\u000c\uffff"+
            "\u0002\u0003\u0002\uffff\u0002\u0003\u0002\uffff\u0001\u0003"+
            "\u0006\uffff\u0006\u0003",
            "\u0004\u0003\u0004\uffff\u0003\u0003\u0001\uffff\u0001\u0003"+
            "\u0004\uffff\u0001\u0003\u0002\uffff\u0002\u0003\u0004\uffff"+
            "\u0001\u0003\u0002\uffff\u0001\u0003\u0001\uffff\u0001\u0003"+
            "\u0003\uffff\u0001\u0003\u0001\uffff\u0001\u0003\u0001\uffff"+
            "\u0002\u0003\u0004\uffff\u0003\u0003\u0002\uffff\u0001\u0003"+
            "\u0001\uffff\u0003\u0003\u0002\uffff\u0001\u0003\u0006\uffff"+
            "\u0002\u0003\u000b\uffff\u0002\u0003\u0005\uffff\u0001\u0003"+
            "\u0004\uffff\u0002\u0003\u0001\uffff\u0001\u0003\u0004\uffff"+
            "\u0001\u0003\u0004\uffff\u0001\u0003\u0003\uffff\u0002\u0003"+
            "\u0006\uffff\u0001\u0003\u0005\uffff\u0001\u0003\u0007\uffff"+
            "\u0002\u0003\u0004\uffff\u0001\u0003\u0003\uffff\u0001\u0003"+
            "\u0007\uffff\u0001\u0003\u0002\uffff\u0001\u0003\u003a\uffff"+
            "\u0003\u0003\u0001\u000a\u0001\uffff\u0001\u0003\u0001\uffff"+
            "\u0004\u0003\u0001\uffff\u0001\u0003\u0001\uffff\u0001\u0003"+
            "\u0001\uffff\u0001\u0003\u0001\uffff\u000c\u0003\u0002\uffff"+
            "\u0001\u0003\u0003\uffff\u0002\u0003",
            "\u0004\u0003\u0004\uffff\u0003\u0003\u0001\uffff\u0001\u0003"+
            "\u0004\uffff\u0001\u0003\u0002\uffff\u0002\u0003\u0004\uffff"+
            "\u0001\u0003\u0002\uffff\u0001\u0003\u0001\uffff\u0001\u0003"+
            "\u0003\uffff\u0001\u0003\u0001\uffff\u0001\u0003\u0001\uffff"+
            "\u0002\u0003\u0004\uffff\u0003\u0003\u0002\uffff\u0001\u0003"+
            "\u0001\uffff\u0003\u0003\u0002\uffff\u0001\u0003\u0006\uffff"+
            "\u0002\u0003\u000b\uffff\u0002\u0003\u0005\uffff\u0001\u0003"+
            "\u0004\uffff\u0002\u0003\u0001\uffff\u0001\u0003\u0004\uffff"+
            "\u0001\u0003\u0004\uffff\u0001\u0003\u0003\uffff\u0002\u0003"+
            "\u0006\uffff\u0001\u0003\u0005\uffff\u0001\u0003\u0007\uffff"+
            "\u0002\u0003\u0004\uffff\u0001\u0003\u0003\uffff\u0001\u0003"+
            "\u0007\uffff\u0001\u0003\u0002\uffff\u0001\u0003\u003a\uffff"+
            "\u0003\u0003\u0001\u000a\u0001\uffff\u0001\u0003\u0001\uffff"+
            "\u0004\u0003\u0001\uffff\u0001\u0003\u0001\uffff\u0001\u0003"+
            "\u0001\uffff\u0001\u0003\u0001\uffff\u000c\u0003\u0002\uffff"+
            "\u0001\u0003\u0003\uffff\u0002\u0003",
            "",
            "\u0004\u0003\u0004\uffff\u0003\u0003\u0001\uffff\u0001\u0003"+
            "\u0004\uffff\u0001\u0003\u0002\uffff\u0002\u0003\u0004\uffff"+
            "\u0001\u0003\u0002\uffff\u0001\u0003\u0001\uffff\u0001\u0003"+
            "\u0003\uffff\u0001\u0003\u0001\uffff\u0001\u0003\u0001\uffff"+
            "\u0002\u0003\u0004\uffff\u0003\u0003\u0002\uffff\u0001\u0003"+
            "\u0001\uffff\u0003\u0003\u0002\uffff\u0001\u0003\u0002\uffff"+
            "\u0002\u000b\u0002\uffff\u0002\u0003\u000b\uffff\u0002\u0003"+
            "\u0005\uffff\u0001\u0003\u0004\uffff\u0002\u0003\u0001\uffff"+
            "\u0001\u0003\u0004\uffff\u0001\u0003\u0004\uffff\u0001\u0003"+
            "\u0003\uffff\u0002\u0003\u0006\uffff\u0001\u0003\u0005\uffff"+
            "\u0001\u0003\u0007\uffff\u0002\u0003\u0004\uffff\u0001\u0003"+
            "\u0003\uffff\u0001\u0003\u0001\u000b\u0006\uffff\u0001\u0003"+
            "\u0002\uffff\u0001\u0003\u003a\uffff\u0003\u0003\u0002\uffff"+
            "\u0001\u0003\u0001\uffff\u0004\u0003\u0001\uffff\u0001\u0003"+
            "\u0001\uffff\u0001\u0003\u0001\uffff\u0001\u0003\u0001\uffff"+
            "\u000c\u0003\u0002\uffff\u0001\u0003\u0003\uffff\u0002\u0003",
            "\u0004\u0003\u0004\uffff\u0003\u0003\u0001\uffff\u0001\u0003"+
            "\u0004\uffff\u0001\u0003\u0002\uffff\u0002\u0003\u0004\uffff"+
            "\u0001\u0003\u0002\uffff\u0001\u0003\u0001\uffff\u0001\u0003"+
            "\u0003\uffff\u0001\u0003\u0001\uffff\u0001\u0003\u0001\uffff"+
            "\u0002\u0003\u0004\uffff\u0003\u0003\u0002\uffff\u0001\u0003"+
            "\u0001\uffff\u0003\u0003\u0002\uffff\u0001\u0003\u0002\uffff"+
            "\u0002\u000b\u0002\uffff\u0002\u0003\u000b\uffff\u0002\u0003"+
            "\u0005\uffff\u0001\u0003\u0004\uffff\u0002\u0003\u0001\uffff"+
            "\u0001\u0003\u0004\uffff\u0001\u0003\u0004\uffff\u0001\u0003"+
            "\u0003\uffff\u0002\u0003\u0006\uffff\u0001\u0003\u0005\uffff"+
            "\u0001\u0003\u0007\uffff\u0002\u0003\u0004\uffff\u0001\u0003"+
            "\u0003\uffff\u0001\u0003\u0001\u000b\u0006\uffff\u0001\u0003"+
            "\u0002\uffff\u0001\u0003\u003a\uffff\u0003\u0003\u0002\uffff"+
            "\u0001\u0003\u0001\uffff\u0004\u0003\u0001\uffff\u0001\u0003"+
            "\u0001\uffff\u0001\u0003\u0001\uffff\u0001\u0003\u0001\uffff"+
            "\u000c\u0003\u0002\uffff\u0001\u0003\u0003\uffff\u0002\u0003",
            "\u0004\u0003\u0004\uffff\u0003\u0003\u0001\uffff\u0001\u0003"+
            "\u0004\uffff\u0001\u0003\u0002\uffff\u0002\u0003\u0004\uffff"+
            "\u0001\u0003\u0002\uffff\u0001\u0003\u0001\uffff\u0001\u0003"+
            "\u0003\uffff\u0001\u0003\u0001\uffff\u0001\u0003\u0001\uffff"+
            "\u0002\u0003\u0004\uffff\u0003\u0003\u0002\uffff\u0001\u0003"+
            "\u0001\uffff\u0003\u0003\u0002\uffff\u0001\u0003\u0002\uffff"+
            "\u0002\u000b\u0002\uffff\u0002\u0003\u000b\uffff\u0002\u0003"+
            "\u0005\uffff\u0001\u0003\u0004\uffff\u0002\u0003\u0001\uffff"+
            "\u0001\u0003\u0004\uffff\u0001\u0003\u0004\uffff\u0001\u0003"+
            "\u0003\uffff\u0002\u0003\u0006\uffff\u0001\u0003\u0005\uffff"+
            "\u0001\u0003\u0007\uffff\u0002\u0003\u0004\uffff\u0001\u0003"+
            "\u0003\uffff\u0001\u0003\u0007\uffff\u0001\u0003\u0002\uffff"+
            "\u0001\u0003\u003a\uffff\u0003\u0003\u0002\uffff\u0001\u0003"+
            "\u0001\uffff\u0004\u0003\u0001\uffff\u0001\u0003\u0001\uffff"+
            "\u0001\u0003\u0001\uffff\u0001\u0003\u0001\uffff\u000c\u0003"+
            "\u0002\uffff\u0001\u0003\u0003\uffff\u0002\u0003",
            "\u0004\u0003\u0004\uffff\u0003\u0003\u0001\uffff\u0001\u0003"+
            "\u0004\uffff\u0001\u0003\u0002\uffff\u0002\u0003\u0004\uffff"+
            "\u0001\u0003\u0002\uffff\u0001\u0003\u0001\uffff\u0001\u0003"+
            "\u0003\uffff\u0001\u0003\u0001\uffff\u0001\u0003\u0001\uffff"+
            "\u0002\u0003\u0004\uffff\u0003\u0003\u0002\uffff\u0001\u0003"+
            "\u0001\uffff\u0003\u0003\u0002\uffff\u0001\u0003\u0002\uffff"+
            "\u0002\u000b\u0002\uffff\u0002\u0003\u000b\uffff\u0002\u0003"+
            "\u0005\uffff\u0001\u0003\u0004\uffff\u0002\u0003\u0001\uffff"+
            "\u0001\u0003\u0004\uffff\u0001\u0003\u0004\uffff\u0001\u0003"+
            "\u0003\uffff\u0002\u0003\u0006\uffff\u0001\u0003\u0005\uffff"+
            "\u0001\u0003\u0007\uffff\u0002\u0003\u0004\uffff\u0001\u0003"+
            "\u0003\uffff\u0001\u0003\u0006\uffff\u0001\u000b\u0001\u0003"+
            "\u0002\uffff\u0001\u0003\u003a\uffff\u0003\u0003\u0002\uffff"+
            "\u0001\u0003\u0001\uffff\u0004\u0003\u0001\uffff\u0001\u0003"+
            "\u0001\uffff\u0001\u0003\u0001\uffff\u0001\u0003\u0001\uffff"+
            "\u000c\u0003\u0002\uffff\u0001\u0003\u0003\uffff\u0002\u0003",
            "\u0004\u0003\u0004\uffff\u0003\u0003\u0001\uffff\u0001\u0003"+
            "\u0004\uffff\u0001\u0003\u0002\uffff\u0002\u0003\u0004\uffff"+
            "\u0001\u0003\u0002\uffff\u0001\u0003\u0001\uffff\u0001\u0003"+
            "\u0003\uffff\u0001\u0003\u0001\uffff\u0001\u0003\u0001\uffff"+
            "\u0002\u0003\u0004\uffff\u0003\u0003\u0002\uffff\u0001\u0003"+
            "\u0001\uffff\u0003\u0003\u0002\uffff\u0001\u0003\u0006\uffff"+
            "\u0002\u0003\u000b\uffff\u0002\u0003\u0005\uffff\u0001\u0003"+
            "\u0004\uffff\u0002\u0003\u0001\uffff\u0001\u0003\u0004\uffff"+
            "\u0001\u0003\u0004\uffff\u0001\u0003\u0003\uffff\u0002\u0003"+
            "\u0006\uffff\u0001\u0003\u0005\uffff\u0001\u0003\u0007\uffff"+
            "\u0002\u0003\u0004\uffff\u0001\u0003\u0003\uffff\u0001\u0003"+
            "\u0007\uffff\u0001\u0003\u0002\uffff\u0001\u0003\u003a\uffff"+
            "\u0003\u0003\u0001\u000b\u0001\uffff\u0001\u0003\u0001\uffff"+
            "\u0004\u0003\u0001\uffff\u0001\u0003\u0001\uffff\u0001\u0003"+
            "\u0001\uffff\u0001\u0003\u0001\uffff\u000c\u0003\u0002\uffff"+
            "\u0001\u0003\u0003\uffff\u0002\u0003",
            "\u0004\u0003\u0004\uffff\u0003\u0003\u0001\uffff\u0001\u0003"+
            "\u0004\uffff\u0001\u0003\u0002\uffff\u0002\u0003\u0004\uffff"+
            "\u0001\u0003\u0002\uffff\u0001\u0003\u0001\uffff\u0001\u0003"+
            "\u0003\uffff\u0001\u0003\u0001\uffff\u0001\u0003\u0001\uffff"+
            "\u0002\u0003\u0004\uffff\u0003\u0003\u0002\uffff\u0001\u0003"+
            "\u0001\uffff\u0003\u0003\u0002\uffff\u0001\u0003\u0003\uffff"+
            "\u0001\u000b\u0002\uffff\u0002\u0003\u000b\uffff\u0002\u0003"+
            "\u0005\uffff\u0001\u0003\u0004\uffff\u0002\u0003\u0001\uffff"+
            "\u0001\u0003\u0004\uffff\u0001\u0003\u0004\uffff\u0001\u0003"+
            "\u0003\uffff\u0002\u0003\u0006\uffff\u0001\u0003\u0005\uffff"+
            "\u0001\u0003\u0007\uffff\u0002\u0003\u0004\uffff\u0001\u0003"+
            "\u0003\uffff\u0001\u0003\u0007\uffff\u0001\u0003\u0002\uffff"+
            "\u0001\u0003\u003a\uffff\u0003\u0003\u0002\uffff\u0001\u0003"+
            "\u0001\uffff\u0004\u0003\u0001\uffff\u0001\u0003\u0001\uffff"+
            "\u0001\u0003\u0001\uffff\u0001\u0003\u0001\uffff\u000c\u0003"+
            "\u0002\uffff\u0001\u0003\u0003\uffff\u0002\u0003",
            "",
            ""
    ]
});

org.antlr.lang.augmentObject(XQueryParser, {
    DFA265_eot:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA265_eotS),
    DFA265_eof:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA265_eofS),
    DFA265_min:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA265_minS),
    DFA265_max:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XQueryParser.DFA265_maxS),
    DFA265_accept:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA265_acceptS),
    DFA265_special:
        org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA265_specialS),
    DFA265_transition: (function() {
        var a = [],
            i,
            numStates = XQueryParser.DFA265_transitionS.length;
        for (i=0; i<numStates; i++) {
            a.push(org.antlr.runtime.DFA.unpackEncodedString(XQueryParser.DFA265_transitionS[i]));
        }
        return a;
    })()
});

XQueryParser.DFA265 = function(recognizer) {
    this.recognizer = recognizer;
    this.decisionNumber = 265;
    this.eot = XQueryParser.DFA265_eot;
    this.eof = XQueryParser.DFA265_eof;
    this.min = XQueryParser.DFA265_min;
    this.max = XQueryParser.DFA265_max;
    this.accept = XQueryParser.DFA265_accept;
    this.special = XQueryParser.DFA265_special;
    this.transition = XQueryParser.DFA265_transition;
};

org.antlr.lang.extend(XQueryParser.DFA265, org.antlr.runtime.DFA, {
    getDescription: function() {
        return "2207:1: p_ExprSimple : ( p_QuantifiedExpr | p_OrExpr | {...}? => pg_UpdateExpr );";
    },
    specialStateTransition: function(s, input) {
        var _s = s;
        var retval = (function(s, input) {
            switch ( s ) {
                        case 0 : 
                            var LA265_9 = input.LA(1);

                             
                            var index265_9 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA265_9==JSON) && ((this.lc(XQU)))) {s = 11;}

                            else if ( (LA265_9==EOF||(LA265_9>=AND && LA265_9<=AT)||(LA265_9>=CASE && LA265_9<=CASTABLE)||LA265_9==COLLATION||LA265_9==DEFAULT||(LA265_9>=DESCENDING && LA265_9<=DIV)||LA265_9==EMPTY||LA265_9==EQ||LA265_9==EXCEPT||LA265_9==FOR||LA265_9==GE||(LA265_9>=GT && LA265_9<=IDIV)||(LA265_9>=INSTANCE && LA265_9<=IS)||LA265_9==LE||(LA265_9>=LET && LA265_9<=MOD)||LA265_9==NE||(LA265_9>=OR && LA265_9<=ORDER)||(LA265_9>=RETURN && LA265_9<=SATISFIES)||LA265_9==STABLE||(LA265_9>=TO && LA265_9<=TREAT)||LA265_9==UNION||LA265_9==WHERE||LA265_9==COUNT||(LA265_9>=END && LA265_9<=GROUP)||LA265_9==ONLY||LA265_9==START||(LA265_9>=AFTER && LA265_9<=BEFORE)||LA265_9==INTO||LA265_9==MODIFY||LA265_9==WITH||LA265_9==CONTAINS||(LA265_9>=CONCAT && LA265_9<=RPAREN)||LA265_9==R_UNION_BRACKET||(LA265_9>=RBRACKET && LA265_9<=EQUAL)||LA265_9==NOTEQUAL||LA265_9==HASH||LA265_9==COMMA||(LA265_9>=STAR && LA265_9<=BANG)||LA265_9==COLON||(LA265_9>=SEMICOLON && LA265_9<=VBAR)) ) {s = 3;}

                             
                            input.seek(index265_9);
                            if ( s>=0 ) return s;
                            break;
                        case 1 : 
                            var LA265_7 = input.LA(1);

                             
                            var index265_7 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((LA265_7>=NODE && LA265_7<=JSON)||LA265_7==VALUE) && ((this.lc(XQU)))) {s = 11;}

                            else if ( (LA265_7==EOF||(LA265_7>=AND && LA265_7<=AT)||(LA265_7>=CASE && LA265_7<=CASTABLE)||LA265_7==COLLATION||LA265_7==DEFAULT||(LA265_7>=DESCENDING && LA265_7<=DIV)||LA265_7==EMPTY||LA265_7==EQ||LA265_7==EXCEPT||LA265_7==FOR||LA265_7==GE||(LA265_7>=GT && LA265_7<=IDIV)||(LA265_7>=INSTANCE && LA265_7<=IS)||LA265_7==LE||(LA265_7>=LET && LA265_7<=MOD)||LA265_7==NE||(LA265_7>=OR && LA265_7<=ORDER)||(LA265_7>=RETURN && LA265_7<=SATISFIES)||LA265_7==STABLE||(LA265_7>=TO && LA265_7<=TREAT)||LA265_7==UNION||LA265_7==WHERE||LA265_7==COUNT||(LA265_7>=END && LA265_7<=GROUP)||LA265_7==ONLY||LA265_7==START||(LA265_7>=AFTER && LA265_7<=BEFORE)||LA265_7==INTO||LA265_7==MODIFY||LA265_7==WITH||LA265_7==CONTAINS||(LA265_7>=CONCAT && LA265_7<=RPAREN)||LA265_7==R_UNION_BRACKET||(LA265_7>=RBRACKET && LA265_7<=EQUAL)||LA265_7==NOTEQUAL||LA265_7==HASH||LA265_7==COMMA||(LA265_7>=STAR && LA265_7<=BANG)||LA265_7==COLON||(LA265_7>=SEMICOLON && LA265_7<=VBAR)) ) {s = 3;}

                             
                            input.seek(index265_7);
                            if ( s>=0 ) return s;
                            break;
                        case 2 : 
                            var LA265_4 = input.LA(1);

                             
                            var index265_4 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((LA265_4>=NODE && LA265_4<=JSON)||LA265_4==NODES) && ((this.lc(XQU)))) {s = 11;}

                            else if ( (LA265_4==EOF||(LA265_4>=AND && LA265_4<=AT)||(LA265_4>=CASE && LA265_4<=CASTABLE)||LA265_4==COLLATION||LA265_4==DEFAULT||(LA265_4>=DESCENDING && LA265_4<=DIV)||LA265_4==EMPTY||LA265_4==EQ||LA265_4==EXCEPT||LA265_4==FOR||LA265_4==GE||(LA265_4>=GT && LA265_4<=IDIV)||(LA265_4>=INSTANCE && LA265_4<=IS)||LA265_4==LE||(LA265_4>=LET && LA265_4<=MOD)||LA265_4==NE||(LA265_4>=OR && LA265_4<=ORDER)||(LA265_4>=RETURN && LA265_4<=SATISFIES)||LA265_4==STABLE||(LA265_4>=TO && LA265_4<=TREAT)||LA265_4==UNION||LA265_4==WHERE||LA265_4==COUNT||(LA265_4>=END && LA265_4<=GROUP)||LA265_4==ONLY||LA265_4==START||(LA265_4>=AFTER && LA265_4<=BEFORE)||LA265_4==INTO||LA265_4==MODIFY||LA265_4==WITH||LA265_4==CONTAINS||(LA265_4>=CONCAT && LA265_4<=RPAREN)||LA265_4==R_UNION_BRACKET||(LA265_4>=RBRACKET && LA265_4<=EQUAL)||LA265_4==NOTEQUAL||LA265_4==HASH||LA265_4==COMMA||(LA265_4>=STAR && LA265_4<=BANG)||LA265_4==COLON||(LA265_4>=SEMICOLON && LA265_4<=VBAR)) ) {s = 3;}

                             
                            input.seek(index265_4);
                            if ( s>=0 ) return s;
                            break;
                        case 3 : 
                            var LA265_8 = input.LA(1);

                             
                            var index265_8 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA265_8==DOLLAR) && ((this.lc(XQU)))) {s = 11;}

                            else if ( (LA265_8==EOF||(LA265_8>=AND && LA265_8<=AT)||(LA265_8>=CASE && LA265_8<=CASTABLE)||LA265_8==COLLATION||LA265_8==DEFAULT||(LA265_8>=DESCENDING && LA265_8<=DIV)||LA265_8==EMPTY||LA265_8==EQ||LA265_8==EXCEPT||LA265_8==FOR||LA265_8==GE||(LA265_8>=GT && LA265_8<=IDIV)||(LA265_8>=INSTANCE && LA265_8<=IS)||LA265_8==LE||(LA265_8>=LET && LA265_8<=MOD)||LA265_8==NE||(LA265_8>=OR && LA265_8<=ORDER)||(LA265_8>=RETURN && LA265_8<=SATISFIES)||LA265_8==STABLE||(LA265_8>=TO && LA265_8<=TREAT)||LA265_8==UNION||LA265_8==WHERE||LA265_8==COUNT||(LA265_8>=END && LA265_8<=GROUP)||LA265_8==ONLY||LA265_8==START||(LA265_8>=AFTER && LA265_8<=BEFORE)||LA265_8==INTO||LA265_8==MODIFY||LA265_8==WITH||LA265_8==CONTAINS||(LA265_8>=CONCAT && LA265_8<=RPAREN)||LA265_8==R_UNION_BRACKET||(LA265_8>=RBRACKET && LA265_8<=EQUAL)||LA265_8==NOTEQUAL||LA265_8==HASH||LA265_8==COMMA||(LA265_8>=STAR && LA265_8<=BANG)||LA265_8==COLON||(LA265_8>=SEMICOLON && LA265_8<=VBAR)) ) {s = 3;}

                             
                            input.seek(index265_8);
                            if ( s>=0 ) return s;
                            break;
                        case 4 : 
                            var LA265_5 = input.LA(1);

                             
                            var index265_5 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((LA265_5>=NODE && LA265_5<=JSON)||LA265_5==NODES) && ((this.lc(XQU)))) {s = 11;}

                            else if ( (LA265_5==EOF||(LA265_5>=AND && LA265_5<=AT)||(LA265_5>=CASE && LA265_5<=CASTABLE)||LA265_5==COLLATION||LA265_5==DEFAULT||(LA265_5>=DESCENDING && LA265_5<=DIV)||LA265_5==EMPTY||LA265_5==EQ||LA265_5==EXCEPT||LA265_5==FOR||LA265_5==GE||(LA265_5>=GT && LA265_5<=IDIV)||(LA265_5>=INSTANCE && LA265_5<=IS)||LA265_5==LE||(LA265_5>=LET && LA265_5<=MOD)||LA265_5==NE||(LA265_5>=OR && LA265_5<=ORDER)||(LA265_5>=RETURN && LA265_5<=SATISFIES)||LA265_5==STABLE||(LA265_5>=TO && LA265_5<=TREAT)||LA265_5==UNION||LA265_5==WHERE||LA265_5==COUNT||(LA265_5>=END && LA265_5<=GROUP)||LA265_5==ONLY||LA265_5==START||(LA265_5>=AFTER && LA265_5<=BEFORE)||LA265_5==INTO||LA265_5==MODIFY||LA265_5==WITH||LA265_5==CONTAINS||(LA265_5>=CONCAT && LA265_5<=RPAREN)||LA265_5==R_UNION_BRACKET||(LA265_5>=RBRACKET && LA265_5<=EQUAL)||LA265_5==NOTEQUAL||LA265_5==HASH||LA265_5==COMMA||(LA265_5>=STAR && LA265_5<=BANG)||LA265_5==COLON||(LA265_5>=SEMICOLON && LA265_5<=VBAR)) ) {s = 3;}

                             
                            input.seek(index265_5);
                            if ( s>=0 ) return s;
                            break;
                        case 5 : 
                            var LA265_6 = input.LA(1);

                             
                            var index265_6 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((LA265_6>=NODE && LA265_6<=JSON)) && ((this.lc(XQU)))) {s = 11;}

                            else if ( (LA265_6==EOF||(LA265_6>=AND && LA265_6<=AT)||(LA265_6>=CASE && LA265_6<=CASTABLE)||LA265_6==COLLATION||LA265_6==DEFAULT||(LA265_6>=DESCENDING && LA265_6<=DIV)||LA265_6==EMPTY||LA265_6==EQ||LA265_6==EXCEPT||LA265_6==FOR||LA265_6==GE||(LA265_6>=GT && LA265_6<=IDIV)||(LA265_6>=INSTANCE && LA265_6<=IS)||LA265_6==LE||(LA265_6>=LET && LA265_6<=MOD)||LA265_6==NE||(LA265_6>=OR && LA265_6<=ORDER)||(LA265_6>=RETURN && LA265_6<=SATISFIES)||LA265_6==STABLE||(LA265_6>=TO && LA265_6<=TREAT)||LA265_6==UNION||LA265_6==WHERE||LA265_6==COUNT||(LA265_6>=END && LA265_6<=GROUP)||LA265_6==ONLY||LA265_6==START||(LA265_6>=AFTER && LA265_6<=BEFORE)||LA265_6==INTO||LA265_6==MODIFY||LA265_6==WITH||LA265_6==CONTAINS||(LA265_6>=CONCAT && LA265_6<=RPAREN)||LA265_6==R_UNION_BRACKET||(LA265_6>=RBRACKET && LA265_6<=EQUAL)||LA265_6==NOTEQUAL||LA265_6==HASH||LA265_6==COMMA||(LA265_6>=STAR && LA265_6<=BANG)||LA265_6==COLON||(LA265_6>=SEMICOLON && LA265_6<=VBAR)) ) {s = 3;}

                             
                            input.seek(index265_6);
                            if ( s>=0 ) return s;
                            break;
            }
        }).call(this.recognizer, s, input);
        if (!org.antlr.lang.isUndefined(retval)) {
            return retval;
        }
        if (this.recognizer.state.backtracking>0) {this.recognizer.state.failed=true; return -1;}
        var nvae =
            new org.antlr.runtime.NoViableAltException(this.getDescription(), 265, _s, input);
        this.error(nvae);
        throw nvae;
    },
    dummy: null
});
 

// public class variables
org.antlr.lang.augmentObject(XQueryParser, {
    tokenNames: ["<invalid>", "<EOR>", "<DOWN>", "<UP>", "L_QuotAttrContentChar", "L_AposAttrContentChar", "L_ElementContentChar", "L_CDataSection", "L_PredefinedEntityRef", "L_CharRef", "ESCAPE_LBRACKET", "ESCAPE_RBRACKET", "ESCAPE_APOS", "ESCAPE_QUOT", "CDATA_START", "CDATA_END", "ANCESTOR", "ANCESTOR_OR_SELF", "AND", "AS", "ASCENDING", "AT", "ATTRIBUTE", "BASE_URI", "BOUNDARY_SPACE", "BY", "CASE", "CAST", "CASTABLE", "CHILD", "COLLATION", "COMMENT", "CONSTRUCTION", "COPY_NAMESPACES", "DECLARE", "DEFAULT", "DESCENDANT", "DESCENDANT_OR_SELF", "DESCENDING", "DIV", "DOCUMENT", "DOCUMENT_NODE", "ELEMENT", "ELSE", "EMPTY", "EMPTY_SEQUENCE", "ENCODING", "EQ", "EVERY", "EXCEPT", "EXTERNAL", "FOLLOWING", "FOLLOWING_SIBLING", "FOR", "FUNCTION", "GE", "GREATEST", "GT", "IDIV", "IF", "IMPORT", "IN", "INHERIT", "INSTANCE", "INTERSECT", "IS", "ITEM", "LAX", "LE", "LEAST", "LET", "LT", "MOD", "MODULE", "NAMESPACE", "NE", "NO_INHERIT", "NO_PRESERVE", "NODE", "JSON", "OF", "OPTION", "OR", "ORDER", "ORDERED", "ORDERING", "PARENT", "PRECEDING", "PRECEDING_SIBLING", "PRESERVE", "PROCESSING_INSTRUCTION", "STRUCTURED_ITEM", "JSON_ITEM", "OBJECT", "ARRAY", "RETURN", "SATISFIES", "SCHEMA", "SCHEMA_ATTRIBUTE", "SCHEMA_ELEMENT", "SELF", "SOME", "STABLE", "STRICT", "STRIP", "TEXT", "THEN", "TO", "TREAT", "TYPESWITCH", "UNION", "UNORDERED", "VALIDATE", "VARIABLE", "VERSION", "WHERE", "XQUERY", "ALLOWING", "CATCH", "CONTEXT", "COUNT", "DECIMAL_FORMAT", "DECIMAL_SEPARATOR", "DIGIT", "END", "GROUP", "GROUPING_SEPARATOR", "INFINITY", "MINUS_SIGN", "NAMESPACE_NODE", "NAN", "NEXT", "ONLY", "PATTERN_SEPARATOR", "PERCENT", "PER_MILLE", "PREVIOUS", "SLIDING", "START", "SWITCH", "TRY", "TUMBLING", "TYPE", "WHEN", "WINDOW", "ZERO_DIGIT", "AFTER", "BEFORE", "COPY", "DELETE", "FIRST", "INSERT", "INTO", "POSITION", "APPEND", "LAST", "MODIFY", "NODES", "RENAME", "REPLACE", "REVALIDATION", "SKIP", "UPDATING", "VALUE", "WITH", "ALL", "ANY", "CONTAINS", "CONTENT", "DIACRITICS", "DIFFERENT", "DISTANCE", "ENTIRE", "EXACTLY", "FROM", "FT_OPTION", "FTAND", "FTNOT", "FTOR", "INSENSITIVE", "LANGUAGE", "LEVELS", "LOWERCASE", "MOST", "NO", "NOT", "OCCURS", "PARAGRAPH", "PARAGRAPHS", "PHRASE", "RELATIONSHIP", "SAME", "SCORE", "SENSITIVE", "SENTENCE", "SENTENCES", "STEMMING", "STOP", "THESAURUS", "TIMES", "UPPERCASE", "USING", "WEIGHT", "WILDCARDS", "WITHOUT", "WORD", "WORDS", "BREAK", "CONTINUE", "EXIT", "LOOP", "RETURNING", "WHILE", "CHECK", "COLLECTION", "CONSTRAINT", "FOREACH", "FOREIGN", "INDEX", "INTEGRITY", "KEY", "ON", "UNIQUE", "AMP_ER", "APOS_ER", "QUOT_ER", "CONCAT", "LPAREN", "RPAREN", "DOLLAR", "L_UNION_BRACKET", "R_UNION_BRACKET", "LBRACKET", "RBRACKET", "LSQUARE", "RSQUARE", "EQUAL", "BIND", "NOTEQUAL", "ANN_PERCENT", "HASH", "AMP", "COMMA", "QUESTION", "STAR", "PLUS", "MINUS", "SMALLER", "GREATER", "SMALLEREQ", "GREATEREQ", "SMALLER_SMALLER", "GREATER_GREATER", "SLASH", "SLASH_SLASH", "BANG", "DOT", "DOT_DOT", "COLON", "COLON_COLON", "EMPTY_CLOSE_TAG", "CLOSE_TAG", "SEMICOLON", "VBAR", "PRAGMA_START", "PRAGMA_END", "XML_COMMENT_START", "XML_COMMENT_END", "PI_START", "PI_END", "ATTR_SIGN", "Q", "CHARREF_DEC", "CHARREF_HEX", "APOS", "QUOT", "NCNameStartChar", "NCNameChar", "L_NCName", "Letter", "HexLetter", "Digit", "Digits", "S", "SU", "L_Pragma", "L_DirCommentConstructor", "L_DirPIConstructor", "L_IntegerLiteral", "L_DecimalLiteral", "L_DoubleLiteral", "L_Comment", "L_AnyChar", "L_QuotStringLiteralChar", "L_AposStringLiteralChar", "LibraryModule", "MainModule", "VersionDecl", "VersionDeclEncoding", "VersionDeclVersion", "ModuleDecl", "Prolog", "DefaultNamespaceDecls", "DefaultNamespaceDecl", "Setters", "Setter", "NamespaceDecls", "NamespaceDecl", "Imports", "FTOptionDecls", "SchemaImport", "SchemaPrefix", "NamespaceName", "DefaultElementNamespace", "AtHints", "ModuleImport", "BaseURIDecl", "OrderedDecls", "VarDecl", "VarType", "VarValue", "VarDefaultValue", "VarVariableDecl", "FunctionDecl", "ParamList", "ReturnType", "OptionDecl", "TypeDeclaration", "Param", "EnclosedExpr", "QueryBody", "UnaryExpr", "DirElemConstructor", "DirAttributeList", "DirAttributeValue", "DirElemContent", "CommonContent", "SequenceType", "EmptySequenceTest", "KindTest", "ItemTest", "FunctionTest", "AtomicType", "AtomicOrUnionType", "StringLiteral", "ElementContentChar", "AttributeValueChar", "QName", "BlockExpr"],
    FOLLOW_p_VersionDecl_in_p_Module503: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
    FOLLOW_p_LibraryModule_in_p_Module536: new org.antlr.runtime.BitSet([0x00000000, 0x00000000]),
    FOLLOW_p_MainModule_in_p_Module559: new org.antlr.runtime.BitSet([0x00000000, 0x00000000]),
    FOLLOW_EOF_in_p_Module583: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_XQUERY_in_p_VersionDecl611: new org.antlr.runtime.BitSet([0x00000000, 0x00004000,0x00000000, 0x00040000]),
    FOLLOW_ENCODING_in_p_VersionDecl619: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
    FOLLOW_p_StringLiteral_in_p_VersionDecl625: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_VERSION_in_p_VersionDecl646: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
    FOLLOW_p_StringLiteral_in_p_VersionDecl652: new org.antlr.runtime.BitSet([0x00000000, 0x00004000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_ENCODING_in_p_VersionDecl657: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
    FOLLOW_p_StringLiteral_in_p_VersionDecl663: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_SEMICOLON_in_p_VersionDecl669: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_pm_Prolog_in_p_MainModule735: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
    FOLLOW_pm_QueryBody_in_p_MainModule737: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ModuleDecl_in_p_LibraryModule793: new org.antlr.runtime.BitSet([0x00000000, 0x10000004]),
    FOLLOW_pm_Prolog_in_p_LibraryModule795: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_MODULE_in_p_ModuleDecl851: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000400, 0x00000000]),
    FOLLOW_NAMESPACE_in_p_ModuleDecl855: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
    FOLLOW_p_NCName_in_p_ModuleDecl859: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00001000]),
    FOLLOW_EQUAL_in_p_ModuleDecl861: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
    FOLLOW_p_StringLiteral_in_p_ModuleDecl863: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_SEMICOLON_in_p_ModuleDecl865: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_pm_DefaultNamespaceDecl_in_pm_Prolog924: new org.antlr.runtime.BitSet([0x00000002, 0x10000004]),
    FOLLOW_p_Setter_in_pm_Prolog930: new org.antlr.runtime.BitSet([0x00000002, 0x10000004]),
    FOLLOW_pm_NamespaceDecl_in_pm_Prolog936: new org.antlr.runtime.BitSet([0x00000002, 0x10000004]),
    FOLLOW_p_Import_in_pm_Prolog942: new org.antlr.runtime.BitSet([0x00000002, 0x10000004]),
    FOLLOW_pm_FTOptionDecl_in_pm_Prolog948: new org.antlr.runtime.BitSet([0x00000002, 0x10000004]),
    FOLLOW_pg_OrderedDecl_in_pm_Prolog955: new org.antlr.runtime.BitSet([0x00000002, 0x00000004]),
    FOLLOW_pm_ContextItemDecl_in_pg_OrderedDecl1270: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_pm_AnnotatedDecl_in_pg_OrderedDecl1282: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_pm_OptionDecl_in_pg_OrderedDecl1294: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_pm_BoundarySpaceDecl_in_p_Setter1324: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_pm_DefaultCollationDecl_in_p_Setter1336: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_pm_BaseURIDecl_in_p_Setter1348: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_pm_ConstructionDecl_in_p_Setter1360: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_pm_OrderingModeDecl_in_p_Setter1372: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_pm_EmptyOrderDecl_in_p_Setter1384: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_pm_RevalidationDecl_in_p_Setter1399: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_pm_CopyNamespacesDecl_in_p_Setter1411: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_pm_DecimalFormatDecl_in_p_Setter1423: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DECLARE_in_pm_BoundarySpaceDecl1455: new org.antlr.runtime.BitSet([0x01000000, 0x00000000]),
    FOLLOW_BOUNDARY_SPACE_in_pm_BoundarySpaceDecl1461: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x02000000, 0x00000100]),
    FOLLOW_PRESERVE_in_pm_BoundarySpaceDecl1470: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_STRIP_in_pm_BoundarySpaceDecl1480: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_SEMICOLON_in_pm_BoundarySpaceDecl1487: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DECLARE_in_pm_DefaultCollationDecl1515: new org.antlr.runtime.BitSet([0x00000000, 0x00000008]),
    FOLLOW_DEFAULT_in_pm_DefaultCollationDecl1521: new org.antlr.runtime.BitSet([0x40000000, 0x00000000]),
    FOLLOW_COLLATION_in_pm_DefaultCollationDecl1527: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
    FOLLOW_p_StringLiteral_in_pm_DefaultCollationDecl1531: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_SEMICOLON_in_pm_DefaultCollationDecl1533: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DECLARE_in_pm_BaseURIDecl1569: new org.antlr.runtime.BitSet([0x00800000, 0x00000000]),
    FOLLOW_BASE_URI_in_pm_BaseURIDecl1575: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
    FOLLOW_p_StringLiteral_in_pm_BaseURIDecl1581: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_SEMICOLON_in_pm_BaseURIDecl1583: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DECLARE_in_pm_ConstructionDecl1636: new org.antlr.runtime.BitSet([0x00000000, 0x00000001]),
    FOLLOW_CONSTRUCTION_in_pm_ConstructionDecl1642: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x02000000, 0x00000100]),
    FOLLOW_STRIP_in_pm_ConstructionDecl1651: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_PRESERVE_in_pm_ConstructionDecl1657: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_SEMICOLON_in_pm_ConstructionDecl1664: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DECLARE_in_pm_OrderingModeDecl1692: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00200000, 0x00000000]),
    FOLLOW_ORDERING_in_pm_OrderingModeDecl1698: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00100000, 0x00008000]),
    FOLLOW_ORDERED_in_pm_OrderingModeDecl1707: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_UNORDERED_in_pm_OrderingModeDecl1713: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_SEMICOLON_in_pm_OrderingModeDecl1720: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DECLARE_in_pm_EmptyOrderDecl1748: new org.antlr.runtime.BitSet([0x00000000, 0x00000008]),
    FOLLOW_DEFAULT_in_pm_EmptyOrderDecl1754: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00080000, 0x00000000]),
    FOLLOW_ORDER_in_pm_EmptyOrderDecl1760: new org.antlr.runtime.BitSet([0x00000000, 0x00001000]),
    FOLLOW_EMPTY_in_pm_EmptyOrderDecl1766: new org.antlr.runtime.BitSet([0x00000000, 0x01000000,0x00000020, 0x00000000]),
    FOLLOW_GREATEST_in_pm_EmptyOrderDecl1775: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_LEAST_in_pm_EmptyOrderDecl1781: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_SEMICOLON_in_pm_EmptyOrderDecl1788: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DECLARE_in_pm_CopyNamespacesDecl1816: new org.antlr.runtime.BitSet([0x00000000, 0x00000002]),
    FOLLOW_COPY_NAMESPACES_in_pm_CopyNamespacesDecl1822: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x02002000, 0x00000000]),
    FOLLOW_p_PreserveMode_in_pm_CopyNamespacesDecl1826: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
    FOLLOW_COMMA_in_pm_CopyNamespacesDecl1828: new org.antlr.runtime.BitSet([0x00000000, 0x40000000,0x00001000, 0x00000000]),
    FOLLOW_p_InheritMode_in_pm_CopyNamespacesDecl1830: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_SEMICOLON_in_pm_CopyNamespacesDecl1832: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_PRESERVE_in_p_PreserveMode1861: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_NO_PRESERVE_in_p_PreserveMode1867: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_INHERIT_in_p_InheritMode1899: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_NO_INHERIT_in_p_InheritMode1905: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DECLARE_in_pm_DecimalFormatDecl1944: new org.antlr.runtime.BitSet([0x00000000, 0x00000008,0x00000000, 0x02000000]),
    FOLLOW_DECIMAL_FORMAT_in_pm_DecimalFormatDecl1952: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_EQName_in_pm_DecimalFormatDecl1956: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0xCC000000,0x000200E5, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_DEFAULT_in_pm_DecimalFormatDecl1964: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x02000000]),
    FOLLOW_DECIMAL_FORMAT_in_pm_DecimalFormatDecl1970: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0xCC000000,0x000200E5, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_p_DFPropertyName_in_pm_DecimalFormatDecl1977: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00001000]),
    FOLLOW_EQUAL_in_pm_DecimalFormatDecl1979: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
    FOLLOW_p_StringLiteral_in_pm_DecimalFormatDecl1981: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0xCC000000,0x000200E5, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_SEMICOLON_in_pm_DecimalFormatDecl1985: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DECIMAL_SEPARATOR_in_p_DFPropertyName2014: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_GROUPING_SEPARATOR_in_p_DFPropertyName2020: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_INFINITY_in_p_DFPropertyName2026: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_MINUS_SIGN_in_p_DFPropertyName2032: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_NAN_in_p_DFPropertyName2038: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_PERCENT_in_p_DFPropertyName2044: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_PER_MILLE_in_p_DFPropertyName2050: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_ZERO_DIGIT_in_p_DFPropertyName2056: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DIGIT_in_p_DFPropertyName2062: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_PATTERN_SEPARATOR_in_p_DFPropertyName2068: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_pm_SchemaImport_in_p_Import2097: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_pm_ModuleImport_in_p_Import2101: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_IMPORT_in_pm_SchemaImport2137: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000002]),
    FOLLOW_SCHEMA_in_pm_SchemaImport2143: new org.antlr.runtime.BitSet([0x00000000, 0x00000008,0x00000400, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
    FOLLOW_p_SchemaPrefix_in_pm_SchemaImport2149: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
    FOLLOW_p_StringLiteral_in_pm_SchemaImport2154: new org.antlr.runtime.BitSet([0x00200000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_AT_in_pm_SchemaImport2159: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
    FOLLOW_p_StringLiteral_in_pm_SchemaImport2165: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000,0x00000040, 0x00000000]),
    FOLLOW_COMMA_in_pm_SchemaImport2168: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
    FOLLOW_p_StringLiteral_in_pm_SchemaImport2172: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000,0x00000040, 0x00000000]),
    FOLLOW_SEMICOLON_in_pm_SchemaImport2178: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_NAMESPACE_in_p_SchemaPrefix2248: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
    FOLLOW_p_NCName_in_p_SchemaPrefix2254: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00001000]),
    FOLLOW_EQUAL_in_p_SchemaPrefix2256: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DEFAULT_in_p_SchemaPrefix2295: new org.antlr.runtime.BitSet([0x00000000, 0x00000400]),
    FOLLOW_ELEMENT_in_p_SchemaPrefix2301: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000400, 0x00000000]),
    FOLLOW_NAMESPACE_in_p_SchemaPrefix2307: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_IMPORT_in_pm_ModuleImport2357: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000200, 0x00000000]),
    FOLLOW_MODULE_in_pm_ModuleImport2363: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000400, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
    FOLLOW_NAMESPACE_in_pm_ModuleImport2370: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
    FOLLOW_p_NCName_in_pm_ModuleImport2376: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00001000]),
    FOLLOW_EQUAL_in_pm_ModuleImport2378: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
    FOLLOW_p_StringLiteral_in_pm_ModuleImport2384: new org.antlr.runtime.BitSet([0x00200000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_AT_in_pm_ModuleImport2389: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
    FOLLOW_p_StringLiteral_in_pm_ModuleImport2395: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000,0x00000040, 0x00000000]),
    FOLLOW_COMMA_in_pm_ModuleImport2398: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
    FOLLOW_p_StringLiteral_in_pm_ModuleImport2402: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000,0x00000040, 0x00000000]),
    FOLLOW_SEMICOLON_in_pm_ModuleImport2408: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DECLARE_in_pm_NamespaceDecl2477: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000400, 0x00000000]),
    FOLLOW_NAMESPACE_in_pm_NamespaceDecl2483: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
    FOLLOW_p_NCName_in_pm_NamespaceDecl2489: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00001000]),
    FOLLOW_EQUAL_in_pm_NamespaceDecl2491: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
    FOLLOW_p_StringLiteral_in_pm_NamespaceDecl2495: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_SEMICOLON_in_pm_NamespaceDecl2497: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DECLARE_in_pm_DefaultNamespaceDecl2554: new org.antlr.runtime.BitSet([0x00000000, 0x00000008]),
    FOLLOW_DEFAULT_in_pm_DefaultNamespaceDecl2560: new org.antlr.runtime.BitSet([0x00000000, 0x00400400]),
    FOLLOW_ELEMENT_in_pm_DefaultNamespaceDecl2567: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000400, 0x00000000]),
    FOLLOW_FUNCTION_in_pm_DefaultNamespaceDecl2573: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000400, 0x00000000]),
    FOLLOW_NAMESPACE_in_pm_DefaultNamespaceDecl2580: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
    FOLLOW_p_StringLiteral_in_pm_DefaultNamespaceDecl2584: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_SEMICOLON_in_pm_DefaultNamespaceDecl2586: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DECLARE_in_pm_AnnotatedDecl2614: new org.antlr.runtime.BitSet([0x00000000, 0x00400000,0x00000000, 0x00020000,0x00000000, 0x00000004,0x0C400000, 0x00008000]),
    FOLLOW_p_Annotation_in_pm_AnnotatedDecl2618: new org.antlr.runtime.BitSet([0x00000000, 0x00400000,0x00000000, 0x00020000,0x00000000, 0x00000004,0x0C400000, 0x00008000]),
    FOLLOW_pg_AnnotatedDecl_in_pm_AnnotatedDecl2621: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_SEMICOLON_in_pm_AnnotatedDecl2623: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_VarDecl_in_pg_AnnotatedDecl2647: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_pm_FunctionDecl_in_pg_AnnotatedDecl2659: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_CollectionDecl_in_pg_AnnotatedDecl2674: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_IndexDecl_in_pg_AnnotatedDecl2689: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ICDecl_in_pg_AnnotatedDecl2704: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_ANN_PERCENT_in_p_Annotation2730: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_EQName_in_p_Annotation2732: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_LPAREN_in_p_Annotation2735: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
    FOLLOW_p_Literal_in_p_Annotation2737: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040010]),
    FOLLOW_COMMA_in_p_Annotation2740: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
    FOLLOW_p_Literal_in_p_Annotation2742: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040010]),
    FOLLOW_RPAREN_in_p_Annotation2746: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_VARIABLE_in_p_VarDecl2776: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
    FOLLOW_DOLLAR_in_p_VarDecl2782: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_EQName_in_p_VarDecl2786: new org.antlr.runtime.BitSet([0x00080000, 0x00040000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00002000]),
    FOLLOW_p_TypeDeclaration_in_p_VarDecl2792: new org.antlr.runtime.BitSet([0x00000000, 0x00040000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00002000]),
    FOLLOW_BIND_in_p_VarDecl2797: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_VarValue_in_p_VarDecl2801: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_EXTERNAL_in_p_VarDecl2809: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00002000]),
    FOLLOW_BIND_in_p_VarDecl2814: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_VarDefaultValue_in_p_VarDecl2818: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ExprSingle_in_p_VarValue2897: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ExprSingle_in_p_VarDefaultValue2924: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DECLARE_in_pm_ContextItemDecl2953: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00800000]),
    FOLLOW_CONTEXT_in_pm_ContextItemDecl2959: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000004, 0x00000000]),
    FOLLOW_ITEM_in_pm_ContextItemDecl2965: new org.antlr.runtime.BitSet([0x00080000, 0x00040000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00002000]),
    FOLLOW_AS_in_pm_ContextItemDecl2972: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x0000800B,0x00408000, 0x00000000]),
    FOLLOW_p_ItemType_in_pm_ContextItemDecl2976: new org.antlr.runtime.BitSet([0x00000000, 0x00040000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00002000]),
    FOLLOW_BIND_in_pm_ContextItemDecl2982: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_VarValue_in_pm_ContextItemDecl2984: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_EXTERNAL_in_pm_ContextItemDecl2992: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00002000,0x00000040, 0x00000000]),
    FOLLOW_BIND_in_pm_ContextItemDecl2997: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_VarDefaultValue_in_pm_ContextItemDecl2999: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_SEMICOLON_in_pm_ContextItemDecl3005: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_UPDATING_in_pm_FunctionDecl3038: new org.antlr.runtime.BitSet([0x00000000, 0x00400000]),
    FOLLOW_FUNCTION_in_pm_FunctionDecl3046: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
    FOLLOW_pg_FQName_in_pm_FunctionDecl3052: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_LPAREN_in_pm_FunctionDecl3054: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000030]),
    FOLLOW_p_ParamList_in_pm_FunctionDecl3058: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_RPAREN_in_pm_FunctionDecl3061: new org.antlr.runtime.BitSet([0x00080000, 0x00040000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_AS_in_pm_FunctionDecl3066: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x0000800B,0x00408000, 0x00000000]),
    FOLLOW_p_SequenceType_in_pm_FunctionDecl3072: new org.antlr.runtime.BitSet([0x00000000, 0x00040000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_LBRACKET_in_pm_FunctionDecl3077: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
    FOLLOW_p_StatementsAndOptionalExpr_in_pm_FunctionDecl3081: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
    FOLLOW_RBRACKET_in_pm_FunctionDecl3083: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_EXTERNAL_in_pm_FunctionDecl3089: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_Param_in_p_ParamList3166: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
    FOLLOW_COMMA_in_p_ParamList3169: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
    FOLLOW_p_Param_in_p_ParamList3173: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
    FOLLOW_DOLLAR_in_p_Param3233: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_EQName_in_p_Param3237: new org.antlr.runtime.BitSet([0x00080002, 0x00000000]),
    FOLLOW_p_TypeDeclaration_in_p_Param3243: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_EnclosedExpr_in_pm_FunctionBody3299: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_LBRACKET_in_p_EnclosedExpr3326: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Expr_in_p_EnclosedExpr3328: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
    FOLLOW_RBRACKET_in_p_EnclosedExpr3331: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DECLARE_in_pm_OptionDecl3383: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00020000, 0x00000000]),
    FOLLOW_OPTION_in_pm_OptionDecl3389: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_EQName_in_pm_OptionDecl3393: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
    FOLLOW_p_StringLiteral_in_pm_OptionDecl3395: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_SEMICOLON_in_pm_OptionDecl3397: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_Program_in_pm_QueryBody3426: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_Expr_in_pm_QueryBody3438: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ExprSingle_in_p_Expr3474: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
    FOLLOW_COMMA_in_p_Expr3490: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_ExprSingle_in_p_Expr3492: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
    FOLLOW_p_FLWORHybrid_in_p_ExprSingle3559: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_IfHybrid_in_p_ExprSingle3589: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_SwitchHybrid_in_p_ExprSingle3615: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_TypeswitchHybrid_in_p_ExprSingle3637: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_TryCatchHybrid_in_p_ExprSingle3664: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ExprSimple_in_p_ExprSingle3677: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_InitialClause_in_p_FLWORHybrid3704: new org.antlr.runtime.BitSet([0x00000000, 0x00200000,0x80080040, 0x21080040]),
    FOLLOW_p_IntermediateClause_in_p_FLWORHybrid3706: new org.antlr.runtime.BitSet([0x00000000, 0x00200000,0x80080040, 0x21080040]),
    FOLLOW_p_ReturnHybrid_in_p_FLWORHybrid3709: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ForClause_in_p_InitialClause3736: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_LetClause_in_p_InitialClause3740: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_WindowClause_in_p_InitialClause3744: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_InitialClause_in_p_IntermediateClause3770: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_WhereClause_in_p_IntermediateClause3774: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_GroupByClause_in_p_IntermediateClause3778: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_OrderByClause_in_p_IntermediateClause3782: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_CountClause_in_p_IntermediateClause3786: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_RangeExpr_in_p_StringConcatExpr3807: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000004]),
    FOLLOW_CONCAT_in_p_StringConcatExpr3813: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_RangeExpr_in_p_StringConcatExpr3817: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000004]),
    FOLLOW_FOR_in_p_ForClause3844: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
    FOLLOW_p_ForBinding_in_p_ForClause3848: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
    FOLLOW_COMMA_in_p_ForClause3851: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
    FOLLOW_p_ForBinding_in_p_ForClause3853: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
    FOLLOW_DOLLAR_in_p_ForBinding3883: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_VarName_in_p_ForBinding3887: new org.antlr.runtime.BitSet([0x00280000, 0x20000000,0x00000000, 0x00200000,0x00000000, 0x00000000,0x00000001, 0x00000000]),
    FOLLOW_p_TypeDeclaration_in_p_ForBinding3891: new org.antlr.runtime.BitSet([0x00200000, 0x20000000,0x00000000, 0x00200000,0x00000000, 0x00000000,0x00000001, 0x00000000]),
    FOLLOW_p_AllowingEmpty_in_p_ForBinding3894: new org.antlr.runtime.BitSet([0x00200000, 0x20000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000001, 0x00000000]),
    FOLLOW_p_PositionalVar_in_p_ForBinding3897: new org.antlr.runtime.BitSet([0x00000000, 0x20000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000001, 0x00000000]),
    FOLLOW_p_FTScoreVar_in_p_ForBinding3900: new org.antlr.runtime.BitSet([0x00000000, 0x20000000]),
    FOLLOW_IN_in_p_ForBinding3905: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_ExprSingle_in_p_ForBinding3909: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_ALLOWING_in_p_AllowingEmpty3938: new org.antlr.runtime.BitSet([0x00000000, 0x00001000]),
    FOLLOW_EMPTY_in_p_AllowingEmpty3944: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_AT_in_p_PositionalVar3974: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
    FOLLOW_DOLLAR_in_p_PositionalVar3980: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_VarName_in_p_PositionalVar3984: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_LET_in_p_LetClause4014: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000001, 0x00000020]),
    FOLLOW_p_LetBinding_in_p_LetClause4018: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
    FOLLOW_COMMA_in_p_LetClause4021: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000001, 0x00000020]),
    FOLLOW_p_LetBinding_in_p_LetClause4023: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
    FOLLOW_DOLLAR_in_p_LetBinding4057: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_VarName_in_p_LetBinding4061: new org.antlr.runtime.BitSet([0x00080000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00002000]),
    FOLLOW_p_TypeDeclaration_in_p_LetBinding4065: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00002000]),
    FOLLOW_p_FTScoreVar_in_p_LetBinding4071: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00002000]),
    FOLLOW_BIND_in_p_LetBinding4075: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_ExprSingle_in_p_LetBinding4077: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_FOR_in_p_WindowClause4106: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00002200, 0x00000000]),
    FOLLOW_p_TumblingWindowClause_in_p_WindowClause4111: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_SlidingWindowClause_in_p_WindowClause4115: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_TUMBLING_in_p_TumblingWindowClause4152: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00010000, 0x00000000]),
    FOLLOW_WINDOW_in_p_TumblingWindowClause4158: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
    FOLLOW_DOLLAR_in_p_TumblingWindowClause4164: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_VarName_in_p_TumblingWindowClause4168: new org.antlr.runtime.BitSet([0x00080000, 0x20000000]),
    FOLLOW_p_TypeDeclaration_in_p_TumblingWindowClause4172: new org.antlr.runtime.BitSet([0x00000000, 0x20000000]),
    FOLLOW_IN_in_p_TumblingWindowClause4177: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_ExprSingle_in_p_TumblingWindowClause4181: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000400, 0x00000000]),
    FOLLOW_p_WindowStartCondition_in_p_TumblingWindowClause4184: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x10000000,0x00000010, 0x00000000]),
    FOLLOW_p_WindowEndCondition_in_p_TumblingWindowClause4186: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_SLIDING_in_p_SlidingWindowClause4215: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00010000, 0x00000000]),
    FOLLOW_WINDOW_in_p_SlidingWindowClause4221: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
    FOLLOW_DOLLAR_in_p_SlidingWindowClause4227: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_VarName_in_p_SlidingWindowClause4231: new org.antlr.runtime.BitSet([0x00080000, 0x20000000]),
    FOLLOW_p_TypeDeclaration_in_p_SlidingWindowClause4235: new org.antlr.runtime.BitSet([0x00000000, 0x20000000]),
    FOLLOW_IN_in_p_SlidingWindowClause4240: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_ExprSingle_in_p_SlidingWindowClause4244: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000400, 0x00000000]),
    FOLLOW_p_WindowStartCondition_in_p_SlidingWindowClause4247: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x10000000,0x00000010, 0x00000000]),
    FOLLOW_p_WindowEndCondition_in_p_SlidingWindowClause4249: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_START_in_p_WindowStartCondition4278: new org.antlr.runtime.BitSet([0x00200000, 0x00000000,0x00000000, 0x00000000,0x00008108, 0x00000000,0x00000000, 0x00000020]),
    FOLLOW_p_WindowVars_in_p_WindowStartCondition4282: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00008000, 0x00000000]),
    FOLLOW_WHEN_in_p_WindowStartCondition4286: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_ExprSingle_in_p_WindowStartCondition4290: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_ONLY_in_p_WindowEndCondition4320: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x10000000]),
    FOLLOW_END_in_p_WindowEndCondition4328: new org.antlr.runtime.BitSet([0x00200000, 0x00000000,0x00000000, 0x00000000,0x00008108, 0x00000000,0x00000000, 0x00000020]),
    FOLLOW_p_WindowVars_in_p_WindowEndCondition4332: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00008000, 0x00000000]),
    FOLLOW_WHEN_in_p_WindowEndCondition4336: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_ExprSingle_in_p_WindowEndCondition4340: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DOLLAR_in_p_WindowVars4370: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_CurrentItem_in_p_WindowVars4374: new org.antlr.runtime.BitSet([0x00200002, 0x00000000,0x00000000, 0x00000000,0x00000108, 0x00000000]),
    FOLLOW_p_PositionalVar_in_p_WindowVars4380: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000108, 0x00000000]),
    FOLLOW_PREVIOUS_in_p_WindowVars4386: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
    FOLLOW_DOLLAR_in_p_WindowVars4390: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_PreviousItem_in_p_WindowVars4392: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000008, 0x00000000]),
    FOLLOW_NEXT_in_p_WindowVars4399: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
    FOLLOW_DOLLAR_in_p_WindowVars4403: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_NextItem_in_p_WindowVars4405: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_EQName_in_p_CurrentItem4433: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_EQName_in_p_PreviousItem4459: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_EQName_in_p_NextItem4485: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_COUNT_in_p_CountClause4513: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
    FOLLOW_DOLLAR_in_p_CountClause4519: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_VarName_in_p_CountClause4523: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_WHERE_in_p_WhereClause4561: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_ExprSingle_in_p_WhereClause4565: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_GROUP_in_p_GroupByClause4594: new org.antlr.runtime.BitSet([0x02000000, 0x00000000]),
    FOLLOW_BY_in_p_GroupByClause4600: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
    FOLLOW_p_GroupingSpecList_in_p_GroupByClause4604: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_GroupingSpec_in_p_GroupingSpecList4630: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
    FOLLOW_COMMA_in_p_GroupingSpecList4633: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
    FOLLOW_p_GroupingSpec_in_p_GroupingSpecList4635: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
    FOLLOW_p_GroupingVariable_in_p_GroupingSpec4663: new org.antlr.runtime.BitSet([0x40080002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00002000]),
    FOLLOW_p_TypeDeclaration_in_p_GroupingSpec4666: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00002000]),
    FOLLOW_BIND_in_p_GroupingSpec4669: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_ExprSingle_in_p_GroupingSpec4671: new org.antlr.runtime.BitSet([0x40000002, 0x00000000]),
    FOLLOW_COLLATION_in_p_GroupingSpec4679: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
    FOLLOW_p_StringLiteral_in_p_GroupingSpec4683: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DOLLAR_in_p_GroupingVariable4712: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_VarName_in_p_GroupingVariable4716: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_ORDER_in_p_OrderByClause4748: new org.antlr.runtime.BitSet([0x02000000, 0x00000000]),
    FOLLOW_BY_in_p_OrderByClause4752: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_STABLE_in_p_OrderByClause4760: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00080000, 0x00000000]),
    FOLLOW_ORDER_in_p_OrderByClause4764: new org.antlr.runtime.BitSet([0x02000000, 0x00000000]),
    FOLLOW_BY_in_p_OrderByClause4768: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_OrderSpecList_in_p_OrderByClause4774: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_OrderSpec_in_p_OrderSpecList4800: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
    FOLLOW_COMMA_in_p_OrderSpecList4803: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_OrderSpec_in_p_OrderSpecList4805: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
    FOLLOW_p_ExprSingle_in_p_OrderSpec4833: new org.antlr.runtime.BitSet([0x40100000, 0x00001040]),
    FOLLOW_p_OrderModifier_in_p_OrderSpec4836: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_ASCENDING_in_p_OrderModifier4865: new org.antlr.runtime.BitSet([0x40000002, 0x00001000]),
    FOLLOW_DESCENDING_in_p_OrderModifier4871: new org.antlr.runtime.BitSet([0x40000002, 0x00001000]),
    FOLLOW_EMPTY_in_p_OrderModifier4878: new org.antlr.runtime.BitSet([0x00000000, 0x01000000,0x00000020, 0x00000000]),
    FOLLOW_GREATEST_in_p_OrderModifier4883: new org.antlr.runtime.BitSet([0x40000002, 0x00000000]),
    FOLLOW_LEAST_in_p_OrderModifier4889: new org.antlr.runtime.BitSet([0x40000002, 0x00000000]),
    FOLLOW_COLLATION_in_p_OrderModifier4897: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
    FOLLOW_p_StringLiteral_in_p_OrderModifier4899: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_RETURN_in_p_ReturnHybrid4932: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Hybrid_in_p_ReturnHybrid4936: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_SOME_in_p_QuantifiedExpr4966: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
    FOLLOW_EVERY_in_p_QuantifiedExpr4972: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
    FOLLOW_DOLLAR_in_p_QuantifiedExpr4979: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_VarName_in_p_QuantifiedExpr4983: new org.antlr.runtime.BitSet([0x00080000, 0x20000000]),
    FOLLOW_p_TypeDeclaration_in_p_QuantifiedExpr4987: new org.antlr.runtime.BitSet([0x00000000, 0x20000000]),
    FOLLOW_IN_in_p_QuantifiedExpr4992: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_ExprSingle_in_p_QuantifiedExpr4996: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000001,0x00000000, 0x00000000,0x00000000, 0x00040000]),
    FOLLOW_COMMA_in_p_QuantifiedExpr5000: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
    FOLLOW_DOLLAR_in_p_QuantifiedExpr5004: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_EQName_in_p_QuantifiedExpr5008: new org.antlr.runtime.BitSet([0x00080000, 0x20000000]),
    FOLLOW_p_TypeDeclaration_in_p_QuantifiedExpr5012: new org.antlr.runtime.BitSet([0x00000000, 0x20000000]),
    FOLLOW_IN_in_p_QuantifiedExpr5017: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_ExprSingle_in_p_QuantifiedExpr5021: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000001,0x00000000, 0x00000000,0x00000000, 0x00040000]),
    FOLLOW_SATISFIES_in_p_QuantifiedExpr5028: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_ExprSingle_in_p_QuantifiedExpr5032: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_SWITCH_in_p_SwitchHybrid5062: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_LPAREN_in_p_SwitchHybrid5066: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Expr_in_p_SwitchHybrid5068: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_RPAREN_in_p_SwitchHybrid5071: new org.antlr.runtime.BitSet([0x04000000, 0x00000000]),
    FOLLOW_p_SwitchCaseHybrid_in_p_SwitchHybrid5073: new org.antlr.runtime.BitSet([0x04000000, 0x00000008]),
    FOLLOW_DEFAULT_in_p_SwitchHybrid5079: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x80000000, 0x00000000]),
    FOLLOW_RETURN_in_p_SwitchHybrid5085: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Hybrid_in_p_SwitchHybrid5089: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_CASE_in_p_SwitchCaseHybrid5120: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_SwitchCaseOperand_in_p_SwitchCaseHybrid5124: new org.antlr.runtime.BitSet([0x04000000, 0x00000000,0x80000000, 0x00000000]),
    FOLLOW_RETURN_in_p_SwitchCaseHybrid5130: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Hybrid_in_p_SwitchCaseHybrid5134: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ExprSingle_in_p_SwitchCaseOperand5161: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_TYPESWITCH_in_p_TypeswitchHybrid5191: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_LPAREN_in_p_TypeswitchHybrid5195: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Expr_in_p_TypeswitchHybrid5197: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_RPAREN_in_p_TypeswitchHybrid5200: new org.antlr.runtime.BitSet([0x04000000, 0x00000000]),
    FOLLOW_p_CaseHybrid_in_p_TypeswitchHybrid5202: new org.antlr.runtime.BitSet([0x04000000, 0x00000008]),
    FOLLOW_DEFAULT_in_p_TypeswitchHybrid5208: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x80000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
    FOLLOW_DOLLAR_in_p_TypeswitchHybrid5215: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_VarName_in_p_TypeswitchHybrid5219: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x80000000, 0x00000000]),
    FOLLOW_RETURN_in_p_TypeswitchHybrid5227: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Hybrid_in_p_TypeswitchHybrid5231: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_CASE_in_p_CaseHybrid5261: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x0000802B,0x00408000, 0x00000000]),
    FOLLOW_DOLLAR_in_p_CaseHybrid5268: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_VarName_in_p_CaseHybrid5272: new org.antlr.runtime.BitSet([0x00080000, 0x00000000]),
    FOLLOW_AS_in_p_CaseHybrid5278: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x0000802B,0x00408000, 0x00000000]),
    FOLLOW_p_SequenceTypeUnion_in_p_CaseHybrid5284: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x80000000, 0x00000000]),
    FOLLOW_RETURN_in_p_CaseHybrid5288: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_ExprSingle_in_p_CaseHybrid5292: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_SequenceType_in_p_SequenceTypeUnion5319: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000080, 0x00000000]),
    FOLLOW_VBAR_in_p_SequenceTypeUnion5322: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x0000800B,0x00408000, 0x00000000]),
    FOLLOW_p_SequenceType_in_p_SequenceTypeUnion5324: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000080, 0x00000000]),
    FOLLOW_IF_in_p_IfHybrid5355: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_LPAREN_in_p_IfHybrid5359: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Expr_in_p_IfHybrid5361: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_RPAREN_in_p_IfHybrid5364: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000400]),
    FOLLOW_THEN_in_p_IfHybrid5368: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Hybrid_in_p_IfHybrid5372: new org.antlr.runtime.BitSet([0x00000000, 0x00000800]),
    FOLLOW_ELSE_in_p_IfHybrid5377: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Hybrid_in_p_IfHybrid5381: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_TryClause_in_p_TryCatchExpr5408: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00400000]),
    FOLLOW_p_CatchClause_in_p_TryCatchExpr5410: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00400000]),
    FOLLOW_TRY_in_p_TryClause5439: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_LBRACKET_in_p_TryClause5443: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_TryTargetExpr_in_p_TryClause5445: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
    FOLLOW_RBRACKET_in_p_TryClause5447: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_Expr_in_p_TryTargetExpr5473: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_CATCH_in_p_CatchClause5502: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00100003,0x0040C002, 0x00000000]),
    FOLLOW_p_CatchErrorList_in_p_CatchClause5506: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_LBRACKET_in_p_CatchClause5508: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Expr_in_p_CatchClause5510: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
    FOLLOW_RBRACKET_in_p_CatchClause5513: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_NameTest_in_p_CatchErrorList5539: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000080, 0x00000000]),
    FOLLOW_VBAR_in_p_CatchErrorList5542: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00100003,0x0040C002, 0x00000000]),
    FOLLOW_p_NameTest_in_p_CatchErrorList5544: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000080, 0x00000000]),
    FOLLOW_p_AndExpr_in_p_OrExpr5572: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00040000, 0x00000000]),
    FOLLOW_OR_in_p_OrExpr5578: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_AndExpr_in_p_OrExpr5582: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00040000, 0x00000000]),
    FOLLOW_p_ComparisonExpr_in_p_AndExpr5611: new org.antlr.runtime.BitSet([0x00040002, 0x00000000]),
    FOLLOW_AND_in_p_AndExpr5617: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_ComparisonExpr_in_p_AndExpr5621: new org.antlr.runtime.BitSet([0x00040002, 0x00000000]),
    FOLLOW_p_FTContainsExpr_in_p_ComparisonExpr5651: new org.antlr.runtime.BitSet([0x00000002, 0x02808000,0x00000892, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x1F805000]),
    FOLLOW_p_ValueComp_in_p_ComparisonExpr5656: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_GeneralComp_in_p_ComparisonExpr5660: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_NodeComp_in_p_ComparisonExpr5664: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_FTContainsExpr_in_p_ComparisonExpr5667: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_AdditiveExpr_in_p_RangeExpr5696: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000800]),
    FOLLOW_TO_in_p_RangeExpr5702: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_AdditiveExpr_in_p_RangeExpr5706: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_MultiplicativeExpr_in_p_AdditiveExpr5735: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00600000]),
    FOLLOW_PLUS_in_p_AdditiveExpr5742: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_MINUS_in_p_AdditiveExpr5750: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_MultiplicativeExpr_in_p_AdditiveExpr5755: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00600000]),
    FOLLOW_p_UnionExpr_in_p_MultiplicativeExpr5784: new org.antlr.runtime.BitSet([0x00000002, 0x04000080,0x00000100, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00100000]),
    FOLLOW_STAR_in_p_MultiplicativeExpr5791: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_DIV_in_p_MultiplicativeExpr5800: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_IDIV_in_p_MultiplicativeExpr5806: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_MOD_in_p_MultiplicativeExpr5812: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_UnionExpr_in_p_MultiplicativeExpr5818: new org.antlr.runtime.BitSet([0x00000002, 0x04000080,0x00000100, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00100000]),
    FOLLOW_p_IntersectExceptExpr_in_p_UnionExpr5847: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00004000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000080, 0x00000000]),
    FOLLOW_UNION_in_p_UnionExpr5854: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_VBAR_in_p_UnionExpr5860: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_IntersectExceptExpr_in_p_UnionExpr5863: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00004000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000080, 0x00000000]),
    FOLLOW_p_InstanceofExpr_in_p_IntersectExceptExpr5892: new org.antlr.runtime.BitSet([0x00000002, 0x00020000,0x00000001, 0x00000000]),
    FOLLOW_INTERSECT_in_p_IntersectExceptExpr5899: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_EXCEPT_in_p_IntersectExceptExpr5905: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_InstanceofExpr_in_p_IntersectExceptExpr5910: new org.antlr.runtime.BitSet([0x00000002, 0x00020000,0x00000001, 0x00000000]),
    FOLLOW_p_TreatExpr_in_p_InstanceofExpr5939: new org.antlr.runtime.BitSet([0x00000002, 0x80000000]),
    FOLLOW_INSTANCE_in_p_InstanceofExpr5945: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00010000, 0x00000000]),
    FOLLOW_OF_in_p_InstanceofExpr5951: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x0000800B,0x00408000, 0x00000000]),
    FOLLOW_p_SequenceType_in_p_InstanceofExpr5955: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_CastableExpr_in_p_TreatExpr5983: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00001000]),
    FOLLOW_TREAT_in_p_TreatExpr5989: new org.antlr.runtime.BitSet([0x00080000, 0x00000000]),
    FOLLOW_AS_in_p_TreatExpr5995: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x0000800B,0x00408000, 0x00000000]),
    FOLLOW_p_SequenceType_in_p_TreatExpr5999: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_CastExpr_in_p_CastableExpr6036: new org.antlr.runtime.BitSet([0x10000002, 0x00000000]),
    FOLLOW_CASTABLE_in_p_CastableExpr6042: new org.antlr.runtime.BitSet([0x00080000, 0x00000000]),
    FOLLOW_AS_in_p_CastableExpr6048: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_SingleType_in_p_CastableExpr6052: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_UnaryExpr_in_p_CastExpr6089: new org.antlr.runtime.BitSet([0x08000002, 0x00000000]),
    FOLLOW_CAST_in_p_CastExpr6095: new org.antlr.runtime.BitSet([0x00080000, 0x00000000]),
    FOLLOW_AS_in_p_CastExpr6101: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_SingleType_in_p_CastExpr6105: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_PLUS_in_p_UnaryExpr6137: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_MINUS_in_p_UnaryExpr6145: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_ValueExpr_in_p_UnaryExpr6150: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ValidateExpr_in_p_ValueExpr6220: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_SimpleMapExpr_in_p_ValueExpr6232: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ExtensionExpr_in_p_ValueExpr6244: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_PathExpr_in_p_SimpleMapExpr6269: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x80000000]),
    FOLLOW_BANG_in_p_SimpleMapExpr6272: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x6090056B,0xC04CC003, 0x00000007]),
    FOLLOW_p_PathExpr_in_p_SimpleMapExpr6274: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x80000000]),
    FOLLOW_EQUAL_in_p_GeneralComp6305: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_NOTEQUAL_in_p_GeneralComp6311: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_SMALLER_in_p_GeneralComp6317: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_SMALLEREQ_in_p_GeneralComp6323: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_GREATER_in_p_GeneralComp6329: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_GREATEREQ_in_p_GeneralComp6335: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_EQ_in_p_ValueComp6367: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_NE_in_p_ValueComp6373: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_LT_in_p_ValueComp6379: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_LE_in_p_ValueComp6385: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_GT_in_p_ValueComp6391: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_GE_in_p_ValueComp6397: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_IS_in_p_NodeComp6428: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_SMALLER_SMALLER_in_p_NodeComp6434: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_GREATER_GREATER_in_p_NodeComp6438: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_VALIDATE_in_p_ValidateExpr6466: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000008, 0x00000080,0x00004000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_p_ValidationMode_in_p_ValidateExpr6472: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_TYPE_in_p_ValidateExpr6478: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_TypeName_in_p_ValidateExpr6482: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_LBRACKET_in_p_ValidateExpr6487: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Expr_in_p_ValidateExpr6489: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
    FOLLOW_RBRACKET_in_p_ValidateExpr6492: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_LAX_in_p_ValidationMode6521: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_STRICT_in_p_ValidationMode6527: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_L_Pragma_in_p_ExtensionExpr6556: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100,0x20000000, 0x00000000]),
    FOLLOW_LBRACKET_in_p_ExtensionExpr6559: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0076B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Expr_in_p_ExtensionExpr6561: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
    FOLLOW_RBRACKET_in_p_ExtensionExpr6565: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_SLASH_in_p_PathExpr6608: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x6090056B,0xC04CC003, 0x00000007]),
    FOLLOW_p_RelativePathExpr_in_p_PathExpr6610: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_SLASH_in_p_PathExpr6623: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_SLASH_SLASH_in_p_PathExpr6635: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x6090056B,0xC04CC003, 0x00000007]),
    FOLLOW_p_RelativePathExpr_in_p_PathExpr6637: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_RelativePathExpr_in_p_PathExpr6649: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_StepExpr_in_p_RelativePathExpr6677: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x60000000]),
    FOLLOW_set_in_p_RelativePathExpr6680: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x6090056B,0xC04CC003, 0x00000007]),
    FOLLOW_p_StepExpr_in_p_RelativePathExpr6688: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x60000000]),
    FOLLOW_p_PostfixExpr_in_p_StepExpr6742: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_PostfixExpr_in_p_StepExpr6856: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_AxisStep_in_p_StepExpr6874: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_PostfixExpr_in_p_StepExpr6895: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_PostfixExpr_in_p_StepExpr6913: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_AxisStep_in_p_StepExpr6925: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ReverseStep_in_p_AxisStep6952: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000400]),
    FOLLOW_p_ForwardStep_in_p_AxisStep6956: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000400]),
    FOLLOW_p_PredicateList_in_p_AxisStep6959: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ForwardAxis_in_p_ForwardStep6985: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00100003,0x0040C002, 0x00000000]),
    FOLLOW_p_NodeTest_in_p_ForwardStep6987: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_AbbrevForwardStep_in_p_ForwardStep6999: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_CHILD_in_p_ForwardAxis7025: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000008, 0x00000000]),
    FOLLOW_COLON_COLON_in_p_ForwardAxis7027: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DESCENDANT_in_p_ForwardAxis7039: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000008, 0x00000000]),
    FOLLOW_COLON_COLON_in_p_ForwardAxis7041: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_ATTRIBUTE_in_p_ForwardAxis7053: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000008, 0x00000000]),
    FOLLOW_COLON_COLON_in_p_ForwardAxis7055: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_SELF_in_p_ForwardAxis7067: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000008, 0x00000000]),
    FOLLOW_COLON_COLON_in_p_ForwardAxis7069: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DESCENDANT_OR_SELF_in_p_ForwardAxis7081: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000008, 0x00000000]),
    FOLLOW_COLON_COLON_in_p_ForwardAxis7083: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_FOLLOWING_SIBLING_in_p_ForwardAxis7095: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000008, 0x00000000]),
    FOLLOW_COLON_COLON_in_p_ForwardAxis7097: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_FOLLOWING_in_p_ForwardAxis7109: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000008, 0x00000000]),
    FOLLOW_COLON_COLON_in_p_ForwardAxis7111: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_ATTR_SIGN_in_p_AbbrevForwardStep7137: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00100003,0x0040C002, 0x00000000]),
    FOLLOW_p_NodeTest_in_p_AbbrevForwardStep7140: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ReverseAxis_in_p_ReverseStep7166: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00100003,0x0040C002, 0x00000000]),
    FOLLOW_p_NodeTest_in_p_ReverseStep7168: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_AbbrevReverseStep_in_p_ReverseStep7180: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_PARENT_in_p_ReverseAxis7206: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000008, 0x00000000]),
    FOLLOW_COLON_COLON_in_p_ReverseAxis7208: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_ANCESTOR_in_p_ReverseAxis7220: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000008, 0x00000000]),
    FOLLOW_COLON_COLON_in_p_ReverseAxis7222: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_PRECEDING_SIBLING_in_p_ReverseAxis7234: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000008, 0x00000000]),
    FOLLOW_COLON_COLON_in_p_ReverseAxis7236: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_PRECEDING_in_p_ReverseAxis7248: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000008, 0x00000000]),
    FOLLOW_COLON_COLON_in_p_ReverseAxis7250: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_ANCESTOR_OR_SELF_in_p_ReverseAxis7262: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000008, 0x00000000]),
    FOLLOW_COLON_COLON_in_p_ReverseAxis7264: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DOT_DOT_in_p_AbbrevReverseStep7290: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_KindTest_in_p_NodeTest7316: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_NameTest_in_p_NodeTest7320: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_EQName_in_p_NameTest7346: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_Wildcard_in_p_NameTest7350: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_STAR_in_p_Wildcard7383: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000004, 0x00000000]),
    FOLLOW_COLON_in_p_Wildcard7386: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
    FOLLOW_p_NCName_in_p_Wildcard7388: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_NCName_in_p_Wildcard7402: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000004, 0x00000000]),
    FOLLOW_COLON_in_p_Wildcard7404: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00100000]),
    FOLLOW_STAR_in_p_Wildcard7406: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_BracedURILiteral_in_p_Wildcard7418: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00100000]),
    FOLLOW_STAR_in_p_Wildcard7420: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_PrimaryExpr_in_p_PostfixExpr7458: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000408]),
    FOLLOW_p_Predicate_in_p_PostfixExpr7461: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000408]),
    FOLLOW_p_ArgumentList_in_p_PostfixExpr7465: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000408]),
    FOLLOW_LPAREN_in_p_ArgumentList7493: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F8057B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Argument_in_p_ArgumentList7496: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040010]),
    FOLLOW_COMMA_in_p_ArgumentList7499: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F8056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Argument_in_p_ArgumentList7501: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040010]),
    FOLLOW_RPAREN_in_p_ArgumentList7507: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_Predicate_in_p_PredicateList7533: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000400]),
    FOLLOW_LSQUARE_in_p_Predicate7560: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Expr_in_p_Predicate7562: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000800]),
    FOLLOW_RSQUARE_in_p_Predicate7565: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ParenthesizedExpr_in_p_PrimaryExpr7598: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_Literal_in_p_PrimaryExpr7610: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_VarRef_in_p_PrimaryExpr7622: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ContextItemExpr_in_p_PrimaryExpr7634: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_FunctionCall_in_p_PrimaryExpr7646: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_OrderedExpr_in_p_PrimaryExpr7659: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_UnorderedExpr_in_p_PrimaryExpr7671: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_Constructor_in_p_PrimaryExpr7683: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_BlockExpr_in_p_PrimaryExpr7696: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_FunctionItemExpr_in_p_PrimaryExpr7708: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ArrayConstructor_in_p_PrimaryExpr7721: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_SimpleObjectUnion_in_p_PrimaryExpr7733: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_L_UNION_BRACKET_in_p_SimpleObjectUnion7769: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F005EB,0xE04CC003, 0x00000007]),
    FOLLOW_p_Expr_in_p_SimpleObjectUnion7771: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000080]),
    FOLLOW_R_UNION_BRACKET_in_p_SimpleObjectUnion7775: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_COLON_in_p_PairConstructor7817: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_ExprSingle_in_p_PairConstructor7819: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
    FOLLOW_COMMA_in_p_PairConstructor7823: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Hybrid_in_p_PairConstructor7825: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
    FOLLOW_LSQUARE_in_p_ArrayConstructor7856: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F00D6B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Expr_in_p_ArrayConstructor7858: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000800]),
    FOLLOW_RSQUARE_in_p_ArrayConstructor7862: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_NumericLiteral_in_p_Literal7888: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_StringLiteral_in_p_Literal7892: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_L_IntegerLiteral_in_p_NumericLiteral7920: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_L_DecimalLiteral_in_p_NumericLiteral7928: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_L_DoubleLiteral_in_p_NumericLiteral7936: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DOLLAR_in_p_VarRef7974: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_VarName_in_p_VarRef7978: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_EQName_in_p_VarName8006: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_LPAREN_in_p_ParenthesizedExpr8032: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0057B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Expr_in_p_ParenthesizedExpr8034: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_RPAREN_in_p_ParenthesizedExpr8038: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DOT_in_p_ContextItemExpr8064: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_ORDERED_in_p_OrderedExpr8092: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_LBRACKET_in_p_OrderedExpr8096: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Expr_in_p_OrderedExpr8098: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
    FOLLOW_RBRACKET_in_p_OrderedExpr8101: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_UNORDERED_in_p_UnorderedExpr8129: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_LBRACKET_in_p_UnorderedExpr8133: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Expr_in_p_UnorderedExpr8135: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
    FOLLOW_RBRACKET_in_p_UnorderedExpr8138: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_pg_FQName_in_p_FunctionCall8167: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000408]),
    FOLLOW_p_ArgumentList_in_p_FunctionCall8172: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ExprSingle_in_p_Argument8198: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ArgumentPlaceholder_in_p_Argument8203: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_QUESTION_in_p_ArgumentPlaceholder8229: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_DirectConstructor_in_p_Constructor8255: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ComputedConstructor_in_p_Constructor8267: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_DirElemConstructor_in_p_DirectConstructor8293: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_DirCommentConstructor_in_p_DirectConstructor8305: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_DirPIConstructor_in_p_DirectConstructor8317: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_SMALLER_in_p_DirElemConstructor8344: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
    FOLLOW_p_QName_in_p_DirElemConstructor8360: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x01000000,0x08000010, 0x00000000]),
    FOLLOW_p_DirAttributeList_in_p_DirElemConstructor8365: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x01000000,0x00000010, 0x00000000]),
    FOLLOW_EMPTY_CLOSE_TAG_in_p_DirElemConstructor8379: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_GREATER_in_p_DirElemConstructor8384: new org.antlr.runtime.BitSet([0x00000FC0, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00800100,0xC0000020, 0x00000000]),
    FOLLOW_pm_DirElemContent_in_p_DirElemConstructor8386: new org.antlr.runtime.BitSet([0x00000FC0, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00800100,0xC0000020, 0x00000000]),
    FOLLOW_CLOSE_TAG_in_p_DirElemConstructor8389: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
    FOLLOW_p_QName_in_p_DirElemConstructor8393: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x01000000,0x08000000, 0x00000000]),
    FOLLOW_S_in_p_DirElemConstructor8397: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x01000000]),
    FOLLOW_GREATER_in_p_DirElemConstructor8400: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_S_in_p_DirAttributeList8477: new org.antlr.runtime.BitSet([0xFFFF0002, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x08400000, 0x00000000]),
    FOLLOW_p_QName_in_p_DirAttributeList8482: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00001000,0x08000000, 0x00000000]),
    FOLLOW_S_in_p_DirAttributeList8486: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00001000]),
    FOLLOW_EQUAL_in_p_DirAttributeList8489: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x080C0000, 0x00000000]),
    FOLLOW_S_in_p_DirAttributeList8491: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x080C0000, 0x00000000]),
    FOLLOW_p_DirAttributeValue_in_p_DirAttributeList8496: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x08000000, 0x00000000]),
    FOLLOW_QUOT_in_p_DirAttributeValue8530: new org.antlr.runtime.BitSet([0x00002F10, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100,0x000C0000, 0x00000000]),
    FOLLOW_ESCAPE_QUOT_in_p_DirAttributeValue8537: new org.antlr.runtime.BitSet([0x00002F10, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100,0x000C0000, 0x00000000]),
    FOLLOW_APOS_in_p_DirAttributeValue8543: new org.antlr.runtime.BitSet([0x00002F10, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100,0x000C0000, 0x00000000]),
    FOLLOW_p_QuotAttrValueContent_in_p_DirAttributeValue8547: new org.antlr.runtime.BitSet([0x00002F10, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100,0x000C0000, 0x00000000]),
    FOLLOW_QUOT_in_p_DirAttributeValue8553: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_APOS_in_p_DirAttributeValue8598: new org.antlr.runtime.BitSet([0x00001F20, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100,0x000C0000, 0x00000000]),
    FOLLOW_ESCAPE_APOS_in_p_DirAttributeValue8605: new org.antlr.runtime.BitSet([0x00001F20, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100,0x000C0000, 0x00000000]),
    FOLLOW_QUOT_in_p_DirAttributeValue8611: new org.antlr.runtime.BitSet([0x00001F20, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100,0x000C0000, 0x00000000]),
    FOLLOW_p_AposAttrValueContent_in_p_DirAttributeValue8615: new org.antlr.runtime.BitSet([0x00001F20, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100,0x000C0000, 0x00000000]),
    FOLLOW_APOS_in_p_DirAttributeValue8621: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_QuotAttrContentChar_in_p_QuotAttrValueContent8679: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_pm_CommonContent_in_p_QuotAttrValueContent8685: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_AposAttrContentChar_in_p_AposAttrValueContent8713: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_pm_CommonContent_in_p_AposAttrValueContent8719: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_DirectConstructor_in_pm_DirElemContent8745: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_CDataSection_in_pm_DirElemContent8757: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_pm_CommonContent_in_pm_DirElemContent8769: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ElementContentChar_in_pm_DirElemContent8781: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_L_PredefinedEntityRef_in_pm_CommonContent8809: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_L_CharRef_in_pm_CommonContent8821: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_ESCAPE_LBRACKET_in_pm_CommonContent8835: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_ESCAPE_RBRACKET_in_pm_CommonContent8851: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_pg_EnclosedExprXml_in_pm_CommonContent8865: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_LBRACKET_in_pg_EnclosedExprXml8897: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
    FOLLOW_p_StatementsAndOptionalExpr_in_pg_EnclosedExprXml8913: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
    FOLLOW_RBRACKET_in_pg_EnclosedExprXml8927: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_L_DirCommentConstructor_in_p_DirCommentConstructor8958: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_L_DirPIConstructor_in_p_DirPIConstructor8994: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_L_CDataSection_in_p_CDataSection9031: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_pm_CompDocConstructor_in_p_ComputedConstructor9065: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_pm_CompElemConstructor_in_p_ComputedConstructor9077: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_pm_CompAttrConstructor_in_p_ComputedConstructor9089: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_CompNamespaceConstructor_in_p_ComputedConstructor9101: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_CompTextConstructor_in_p_ComputedConstructor9113: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_pm_CompCommentConstructor_in_p_ComputedConstructor9125: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_pm_CompPIConstructor_in_p_ComputedConstructor9137: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DOCUMENT_in_pm_CompDocConstructor9166: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_LBRACKET_in_pm_CompDocConstructor9170: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
    FOLLOW_p_StatementsAndOptionalExpr_in_pm_CompDocConstructor9172: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
    FOLLOW_RBRACKET_in_pm_CompDocConstructor9174: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_ELEMENT_in_pm_CompElemConstructor9210: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000103,0x00408000, 0x00000000]),
    FOLLOW_p_EQName_in_pm_CompElemConstructor9215: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_LBRACKET_in_pm_CompElemConstructor9220: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Expr_in_pm_CompElemConstructor9222: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
    FOLLOW_RBRACKET_in_pm_CompElemConstructor9225: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_LBRACKET_in_pm_CompElemConstructor9229: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
    FOLLOW_pm_ContentExpr_in_pm_CompElemConstructor9231: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
    FOLLOW_RBRACKET_in_pm_CompElemConstructor9233: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_StatementsAndOptionalExpr_in_pm_ContentExpr9260: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_ATTRIBUTE_in_pm_CompAttrConstructor9289: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000103,0x00408000, 0x00000000]),
    FOLLOW_p_EQName_in_pm_CompAttrConstructor9294: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_LBRACKET_in_pm_CompAttrConstructor9299: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Expr_in_pm_CompAttrConstructor9301: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
    FOLLOW_RBRACKET_in_pm_CompAttrConstructor9304: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_LBRACKET_in_pm_CompAttrConstructor9308: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
    FOLLOW_p_StatementsAndOptionalExpr_in_pm_CompAttrConstructor9310: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
    FOLLOW_RBRACKET_in_pm_CompAttrConstructor9312: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_NAMESPACE_in_p_CompNamespaceConstructor9340: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000103,0x00400000, 0x00000000]),
    FOLLOW_p_Prefix_in_p_CompNamespaceConstructor9345: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_LBRACKET_in_p_CompNamespaceConstructor9350: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_PrefixExpr_in_p_CompNamespaceConstructor9352: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
    FOLLOW_RBRACKET_in_p_CompNamespaceConstructor9354: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_LBRACKET_in_p_CompNamespaceConstructor9358: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0076B,0xE04CC003, 0x00000007]),
    FOLLOW_p_URIExpr_in_p_CompNamespaceConstructor9360: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
    FOLLOW_RBRACKET_in_p_CompNamespaceConstructor9363: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_NCName_in_p_Prefix9389: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_Expr_in_p_PrefixExpr9415: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_Expr_in_p_URIExpr9442: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_TEXT_in_p_CompTextConstructor9471: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_LBRACKET_in_p_CompTextConstructor9475: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Expr_in_p_CompTextConstructor9477: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
    FOLLOW_RBRACKET_in_p_CompTextConstructor9480: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_COMMENT_in_pm_CompCommentConstructor9509: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_LBRACKET_in_pm_CompCommentConstructor9513: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
    FOLLOW_p_StatementsAndOptionalExpr_in_pm_CompCommentConstructor9515: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
    FOLLOW_RBRACKET_in_pm_CompCommentConstructor9517: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_PROCESSING_INSTRUCTION_in_pm_CompPIConstructor9546: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000103,0x00400000, 0x00000000]),
    FOLLOW_p_NCName_in_pm_CompPIConstructor9551: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_LBRACKET_in_pm_CompPIConstructor9556: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Expr_in_pm_CompPIConstructor9558: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
    FOLLOW_RBRACKET_in_pm_CompPIConstructor9561: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_LBRACKET_in_pm_CompPIConstructor9565: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
    FOLLOW_p_StatementsAndOptionalExpr_in_pm_CompPIConstructor9567: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
    FOLLOW_RBRACKET_in_pm_CompPIConstructor9569: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_LiteralFunctionItem_in_p_FunctionItemExpr9595: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_EQName_in_p_LiteralFunctionItem9622: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00010000]),
    FOLLOW_HASH_in_p_LiteralFunctionItem9624: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000001]),
    FOLLOW_L_IntegerLiteral_in_p_LiteralFunctionItem9626: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_Annotation_in_p_InlineFunction9661: new org.antlr.runtime.BitSet([0x00000000, 0x00400000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00008000]),
    FOLLOW_FUNCTION_in_p_InlineFunction9666: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_LPAREN_in_p_InlineFunction9670: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000030]),
    FOLLOW_p_ParamList_in_p_InlineFunction9672: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_RPAREN_in_p_InlineFunction9675: new org.antlr.runtime.BitSet([0x00080000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_AS_in_p_InlineFunction9680: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x0000800B,0x00408000, 0x00000000]),
    FOLLOW_p_SequenceType_in_p_InlineFunction9684: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_LBRACKET_in_p_InlineFunction9688: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
    FOLLOW_p_StatementsAndOptionalExpr_in_p_InlineFunction9690: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
    FOLLOW_RBRACKET_in_p_InlineFunction9692: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_AtomicOrUnionType_in_p_SingleType9718: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00080000]),
    FOLLOW_QUESTION_in_p_SingleType9720: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_AS_in_p_TypeDeclaration9749: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x0000800B,0x00408000, 0x00000000]),
    FOLLOW_p_SequenceType_in_p_TypeDeclaration9755: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_EMPTY_SEQUENCE_in_p_SequenceType9808: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_LPAREN_in_p_SequenceType9814: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_RPAREN_in_p_SequenceType9818: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ItemType_in_p_SequenceType9867: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00380000]),
    FOLLOW_p_OccurrenceIndicator_in_p_SequenceType9878: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_set_in_p_OccurrenceIndicator0: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_KindTest_in_p_ItemType9980: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_ITEM_in_p_ItemType10017: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_LPAREN_in_p_ItemType10019: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_RPAREN_in_p_ItemType10021: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_FunctionTest_in_p_ItemType10062: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_AtomicOrUnionType_in_p_ItemType10098: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ParenthesizedItemType_in_p_ItemType10110: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_JSONTest_in_p_ItemType10122: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_StructuredItemTest_in_p_ItemType10134: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_JSONItemTest_in_p_JSONTest10159: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_JSONObjectTest_in_p_JSONTest10171: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_JSONArrayTest_in_p_JSONTest10183: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_STRUCTURED_ITEM_in_p_StructuredItemTest10208: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_LPAREN_in_p_StructuredItemTest10210: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_RPAREN_in_p_StructuredItemTest10212: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_JSON_ITEM_in_p_JSONItemTest10237: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_LPAREN_in_p_JSONItemTest10239: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_RPAREN_in_p_JSONItemTest10241: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_OBJECT_in_p_JSONObjectTest10266: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_LPAREN_in_p_JSONObjectTest10268: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_RPAREN_in_p_JSONObjectTest10270: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_ARRAY_in_p_JSONArrayTest10295: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_LPAREN_in_p_JSONArrayTest10297: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_RPAREN_in_p_JSONArrayTest10299: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_EQName_in_p_AtomicOrUnionType10325: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_DocumentTest_in_p_KindTest10375: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ElementTest_in_p_KindTest10387: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_AttributeTest_in_p_KindTest10399: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_SchemaElementTest_in_p_KindTest10411: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_SchemaAttributeTest_in_p_KindTest10423: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_PITest_in_p_KindTest10435: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_CommentTest_in_p_KindTest10447: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_TextTest_in_p_KindTest10459: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_NamespaceNodeTest_in_p_KindTest10471: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_AnyKindTest_in_p_KindTest10483: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_NODE_in_p_AnyKindTest10509: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_LPAREN_in_p_AnyKindTest10511: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_RPAREN_in_p_AnyKindTest10513: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DOCUMENT_NODE_in_p_DocumentTest10539: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_LPAREN_in_p_DocumentTest10541: new org.antlr.runtime.BitSet([0x00000000, 0x00000400,0x00000000, 0x00000008,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_p_ElementTest_in_p_DocumentTest10544: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_p_SchemaElementTest_in_p_DocumentTest10548: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_RPAREN_in_p_DocumentTest10552: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_TEXT_in_p_TextTest10578: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_LPAREN_in_p_TextTest10580: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_RPAREN_in_p_TextTest10582: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_COMMENT_in_p_CommentTest10608: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_LPAREN_in_p_CommentTest10610: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_RPAREN_in_p_CommentTest10612: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_NAMESPACE_NODE_in_p_NamespaceNodeTest10638: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_LPAREN_in_p_NamespaceNodeTest10640: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_RPAREN_in_p_NamespaceNodeTest10642: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_PROCESSING_INSTRUCTION_in_p_PITest10668: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_LPAREN_in_p_PITest10670: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000013,0x004C0000, 0x00000007]),
    FOLLOW_p_NCName_in_p_PITest10673: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_p_StringLiteral_in_p_PITest10677: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_RPAREN_in_p_PITest10681: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_ATTRIBUTE_in_p_AttributeTest10707: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_LPAREN_in_p_AttributeTest10709: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00100013,0x00408000, 0x00000000]),
    FOLLOW_p_AttribNameOrWildcard_in_p_AttributeTest10712: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040010]),
    FOLLOW_COMMA_in_p_AttributeTest10715: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_TypeName_in_p_AttributeTest10717: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_RPAREN_in_p_AttributeTest10723: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_AttributeName_in_p_AttribNameOrWildcard10751: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_STAR_in_p_AttribNameOrWildcard10755: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_SCHEMA_ATTRIBUTE_in_p_SchemaAttributeTest10781: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_LPAREN_in_p_SchemaAttributeTest10783: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_AttributeDeclaration_in_p_SchemaAttributeTest10785: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_RPAREN_in_p_SchemaAttributeTest10787: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_AttributeName_in_p_AttributeDeclaration10813: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_ELEMENT_in_p_ElementTest10839: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_LPAREN_in_p_ElementTest10841: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00100013,0x00408000, 0x00000000]),
    FOLLOW_p_ElementNameOrWildcard_in_p_ElementTest10844: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040010]),
    FOLLOW_COMMA_in_p_ElementTest10847: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_TypeName_in_p_ElementTest10849: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00080010]),
    FOLLOW_QUESTION_in_p_ElementTest10851: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_RPAREN_in_p_ElementTest10858: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_EQName_in_p_ElementNameOrWildcard10884: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_STAR_in_p_ElementNameOrWildcard10888: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_SCHEMA_ELEMENT_in_p_SchemaElementTest10906: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_LPAREN_in_p_SchemaElementTest10908: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_ElementDeclaration_in_p_SchemaElementTest10910: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_RPAREN_in_p_SchemaElementTest10912: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ElementName_in_p_ElementDeclaration10938: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_EQName_in_p_AttributeName10964: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_EQName_in_p_ElementName10990: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_EQName_in_p_TypeName11016: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_Annotation_in_p_FunctionTest11042: new org.antlr.runtime.BitSet([0x00000000, 0x00400000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00008000]),
    FOLLOW_p_AnyFunctionTest_in_p_FunctionTest11046: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_TypedFunctionTest_in_p_FunctionTest11050: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_FUNCTION_in_p_AnyFunctionTest11077: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_LPAREN_in_p_AnyFunctionTest11079: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00100000]),
    FOLLOW_STAR_in_p_AnyFunctionTest11081: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_RPAREN_in_p_AnyFunctionTest11083: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_FUNCTION_in_p_TypedFunctionTest11109: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_LPAREN_in_p_TypedFunctionTest11111: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x0000801B,0x00408000, 0x00000000]),
    FOLLOW_p_SequenceType_in_p_TypedFunctionTest11114: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040010]),
    FOLLOW_COMMA_in_p_TypedFunctionTest11117: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x0000800B,0x00408000, 0x00000000]),
    FOLLOW_p_SequenceType_in_p_TypedFunctionTest11119: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040010]),
    FOLLOW_RPAREN_in_p_TypedFunctionTest11125: new org.antlr.runtime.BitSet([0x00080000, 0x00000000]),
    FOLLOW_AS_in_p_TypedFunctionTest11127: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x0000800B,0x00408000, 0x00000000]),
    FOLLOW_p_SequenceType_in_p_TypedFunctionTest11129: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_LPAREN_in_p_ParenthesizedItemType11155: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x0000800B,0x00408000, 0x00000000]),
    FOLLOW_p_ItemType_in_p_ParenthesizedItemType11157: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_RPAREN_in_p_ParenthesizedItemType11159: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_QUOT_in_p_StringLiteral11210: new org.antlr.runtime.BitSet([0xFFFFFFF0, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFDFFFF,0xFFFFFFFF, 0xFFFFFFFF,0x1FFFFFFF, 0x00000000]),
    FOLLOW_pg_QuotStringLiteralContent_in_p_StringLiteral11214: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00080000, 0x00000000]),
    FOLLOW_QUOT_in_p_StringLiteral11216: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_APOS_in_p_StringLiteral11255: new org.antlr.runtime.BitSet([0xFFFFFFF0, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFDFFFF,0xFFFFFFFF, 0xFFFFFFFF,0x1FFFFFFF, 0x00000000]),
    FOLLOW_pg_AposStringLiteralContent_in_p_StringLiteral11259: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00040000, 0x00000000]),
    FOLLOW_APOS_in_p_StringLiteral11261: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_set_in_pg_QuotStringLiteralContent11327: new org.antlr.runtime.BitSet([0xFFFFFFF2, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFDFFFF,0xFFF7FFFF, 0xFFFFFFFF,0x1FFFFFFF, 0x00000000]),
    FOLLOW_set_in_pg_AposStringLiteralContent11378: new org.antlr.runtime.BitSet([0xFFFFFFF2, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFDFFFF,0xFFFBFFFF, 0xFFFFFFFF,0x1FFFFFFF, 0x00000000]),
    FOLLOW_L_ElementContentChar_in_p_ElementContentChar11436: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_L_QuotAttrContentChar_in_p_QuotAttrContentChar11462: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_L_AposAttrContentChar_in_p_AposAttrContentChar11512: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_QName_in_p_EQName11581: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_URIQualifiedName_in_p_EQName11593: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_BracedURILiteral_in_p_URIQualifiedName11618: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
    FOLLOW_p_NCName_in_p_URIQualifiedName11620: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_Q_in_p_BracedURILiteral11645: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_LBRACKET_in_p_BracedURILiteral11647: new org.antlr.runtime.BitSet([0xFFFFFFF0, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFDFEFF,0xFFFFFFFF, 0xFFFFFFFF,0x1FFFFFFF, 0x00000000]),
    FOLLOW_set_in_p_BracedURILiteral11649: new org.antlr.runtime.BitSet([0xFFFFFFF0, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFDFEFF,0xFFFFFFFF, 0xFFFFFFFF,0x1FFFFFFF, 0x00000000]),
    FOLLOW_RBRACKET_in_p_BracedURILiteral11673: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_pg_QName_in_p_QName11715: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_NCName_in_p_QName11727: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_pg_QName_in_pg_FQName11788: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_FNCName_in_pg_FQName11800: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_NCName_in_pg_QName11844: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000004, 0x00000000]),
    FOLLOW_COLON_in_pg_QName11846: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
    FOLLOW_p_NCName_in_pg_QName11850: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_set_in_p_NCName0: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_set_in_p_FNCName0: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_InsertExpr_in_pg_UpdateExpr13847: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_DeleteExpr_in_pg_UpdateExpr13859: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_RenameExpr_in_pg_UpdateExpr13871: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ReplaceExpr_in_pg_UpdateExpr13883: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_TransformExpr_in_pg_UpdateExpr13895: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_JSONDeleteExpr_in_pg_UpdateExpr13907: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_JSONInsertExpr_in_pg_UpdateExpr13919: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_JSONRenameExpr_in_pg_UpdateExpr13931: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_JSONReplaceExpr_in_pg_UpdateExpr13943: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_JSONAppendExpr_in_pg_UpdateExpr13955: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DELETE_in_p_JSONDeleteExpr13982: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00008000, 0x00000000]),
    FOLLOW_JSON_in_p_JSONDeleteExpr13986: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_TargetExpr_in_p_JSONDeleteExpr13990: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_INSERT_in_p_JSONInsertExpr14017: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00008000, 0x00000000]),
    FOLLOW_JSON_in_p_JSONInsertExpr14021: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_SourceExpr_in_p_JSONInsertExpr14023: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x01000000, 0x00000000]),
    FOLLOW_INTO_in_p_JSONInsertExpr14027: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_TargetExpr_in_p_JSONInsertExpr14029: new org.antlr.runtime.BitSet([0x00200002, 0x00000000]),
    FOLLOW_AT_in_p_JSONInsertExpr14034: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x02000000, 0x00000000]),
    FOLLOW_POSITION_in_p_JSONInsertExpr14038: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_ExprSingle_in_p_JSONInsertExpr14040: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_RENAME_in_p_JSONRenameExpr14076: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00008000, 0x00000000]),
    FOLLOW_JSON_in_p_JSONRenameExpr14080: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_TargetExpr_in_p_JSONRenameExpr14082: new org.antlr.runtime.BitSet([0x00080000, 0x00000000]),
    FOLLOW_AS_in_p_JSONRenameExpr14086: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_ExprSingle_in_p_JSONRenameExpr14090: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_REPLACE_in_p_JSONReplaceExpr14120: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00008000, 0x00000000]),
    FOLLOW_JSON_in_p_JSONReplaceExpr14124: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_VALUE_in_p_JSONReplaceExpr14128: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00010000, 0x00000000]),
    FOLLOW_OF_in_p_JSONReplaceExpr14132: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_TargetExpr_in_p_JSONReplaceExpr14134: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_WITH_in_p_JSONReplaceExpr14138: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_ExprSingle_in_p_JSONReplaceExpr14140: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_APPEND_in_p_JSONAppendExpr14171: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00008000, 0x00000000]),
    FOLLOW_JSON_in_p_JSONAppendExpr14175: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000400]),
    FOLLOW_LSQUARE_in_p_JSONAppendExpr14177: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Expr_in_p_JSONAppendExpr14179: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000800]),
    FOLLOW_RSQUARE_in_p_JSONAppendExpr14182: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000800]),
    FOLLOW_TO_in_p_JSONAppendExpr14186: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_ExprSingle_in_p_JSONAppendExpr14188: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DECLARE_in_pm_RevalidationDecl14219: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000001]),
    FOLLOW_REVALIDATION_in_pm_RevalidationDecl14223: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000008, 0x00000080,0x00000000, 0x00000002]),
    FOLLOW_STRICT_in_pm_RevalidationDecl14228: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_LAX_in_pm_RevalidationDecl14234: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_SKIP_in_pm_RevalidationDecl14240: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_SEMICOLON_in_pm_RevalidationDecl14245: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_AS_in_p_InsertExprTargetChoice14275: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x08400000, 0x00000000]),
    FOLLOW_FIRST_in_p_InsertExprTargetChoice14280: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x01000000, 0x00000000]),
    FOLLOW_LAST_in_p_InsertExprTargetChoice14286: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x01000000, 0x00000000]),
    FOLLOW_INTO_in_p_InsertExprTargetChoice14293: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_AFTER_in_p_InsertExprTargetChoice14310: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_BEFORE_in_p_InsertExprTargetChoice14326: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_INSERT_in_p_InsertExpr14356: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00004000, 0x00000000,0x20000000, 0x00000000]),
    FOLLOW_NODE_in_p_InsertExpr14361: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_NODES_in_p_InsertExpr14367: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_SourceExpr_in_p_InsertExpr14370: new org.antlr.runtime.BitSet([0x00080000, 0x00000000,0x00000000, 0x00000000,0x010C0000, 0x00000000]),
    FOLLOW_p_InsertExprTargetChoice_in_p_InsertExpr14372: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_TargetExpr_in_p_InsertExpr14374: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DELETE_in_p_DeleteExpr14404: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00004000, 0x00000000,0x20000000, 0x00000000]),
    FOLLOW_NODE_in_p_DeleteExpr14409: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_NODES_in_p_DeleteExpr14415: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_TargetExpr_in_p_DeleteExpr14418: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_REPLACE_in_p_ReplaceExpr14448: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00004000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_VALUE_in_p_ReplaceExpr14453: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00010000, 0x00000000]),
    FOLLOW_OF_in_p_ReplaceExpr14457: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00004000, 0x00000000]),
    FOLLOW_NODE_in_p_ReplaceExpr14463: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_ExprSingle_in_p_ReplaceExpr14465: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_WITH_in_p_ReplaceExpr14470: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_ExprSingle_in_p_ReplaceExpr14472: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_RENAME_in_p_RenameExpr14503: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00004000, 0x00000000]),
    FOLLOW_NODE_in_p_RenameExpr14507: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_TargetExpr_in_p_RenameExpr14509: new org.antlr.runtime.BitSet([0x00080000, 0x00000000]),
    FOLLOW_AS_in_p_RenameExpr14513: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_NewNameExpr_in_p_RenameExpr14515: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ExprSingle_in_p_SourceExpr14543: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ExprSingle_in_p_TargetExpr14570: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ExprSingle_in_p_NewNameExpr14597: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_COPY_in_p_TransformExpr14626: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
    FOLLOW_DOLLAR_in_p_TransformExpr14630: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_VarName_in_p_TransformExpr14634: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00002000]),
    FOLLOW_BIND_in_p_TransformExpr14638: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_ExprSingle_in_p_TransformExpr14640: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x10000000, 0x00000000,0x00000000, 0x00040000]),
    FOLLOW_COMMA_in_p_TransformExpr14644: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
    FOLLOW_DOLLAR_in_p_TransformExpr14648: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_VarName_in_p_TransformExpr14652: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00002000]),
    FOLLOW_BIND_in_p_TransformExpr14656: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_ExprSingle_in_p_TransformExpr14658: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x10000000, 0x00000000,0x00000000, 0x00040000]),
    FOLLOW_MODIFY_in_p_TransformExpr14665: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_ExprSingle_in_p_TransformExpr14667: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x80000000, 0x00000000]),
    FOLLOW_RETURN_in_p_TransformExpr14672: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_ExprSingle_in_p_TransformExpr14674: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DECLARE_in_pm_FTOptionDecl14712: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00008000]),
    FOLLOW_FT_OPTION_in_pm_FTOptionDecl14716: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000200, 0x00000000]),
    FOLLOW_p_FTMatchOptions_in_pm_FTOptionDecl14718: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_SEMICOLON_in_pm_FTOptionDecl14720: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_SCORE_in_p_FTScoreVar14750: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
    FOLLOW_DOLLAR_in_p_FTScoreVar14756: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_VarName_in_p_FTScoreVar14760: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_StringConcatExpr_in_p_FTContainsExpr14788: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000080]),
    FOLLOW_CONTAINS_in_p_FTContainsExpr14794: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000200]),
    FOLLOW_TEXT_in_p_FTContainsExpr14798: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00020000,0x00000000, 0x00000108,0x200C0000, 0x00000007]),
    FOLLOW_p_FTSelection_in_p_FTContainsExpr14802: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00001000, 0x00000000]),
    FOLLOW_p_FTIgnoreOption_in_p_FTContainsExpr14804: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_FTOr_in_p_FTSelection14834: new org.antlr.runtime.BitSet([0x00200002, 0x00000000,0x00100000, 0x00000000,0x00010000, 0x80001C00]),
    FOLLOW_p_FTPosFilter_in_p_FTSelection14836: new org.antlr.runtime.BitSet([0x00200002, 0x00000000,0x00100000, 0x00000000,0x00010000, 0x80001C00]),
    FOLLOW_WEIGHT_in_p_FTWeight14865: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_LBRACKET_in_p_FTWeight14869: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Expr_in_p_FTWeight14871: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
    FOLLOW_RBRACKET_in_p_FTWeight14874: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_FTAnd_in_p_FTOr14900: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
    FOLLOW_FTOR_in_p_FTOr14906: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00020000,0x00000000, 0x00000108,0x200C0000, 0x00000007]),
    FOLLOW_p_FTAnd_in_p_FTOr14910: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
    FOLLOW_p_FTMildNot_in_p_FTAnd14939: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00010000]),
    FOLLOW_FTAND_in_p_FTAnd14945: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00020000,0x00000000, 0x00000108,0x200C0000, 0x00000007]),
    FOLLOW_p_FTMildNot_in_p_FTAnd14949: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00010000]),
    FOLLOW_p_FTUnaryNot_in_p_FTMildNot14978: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x02000000]),
    FOLLOW_NOT_in_p_FTMildNot14984: new org.antlr.runtime.BitSet([0x00000000, 0x20000000]),
    FOLLOW_IN_in_p_FTMildNot14988: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00020000,0x00000000, 0x00000108,0x200C0000, 0x00000007]),
    FOLLOW_p_FTUnaryNot_in_p_FTMildNot14992: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x02000000]),
    FOLLOW_FTNOT_in_p_FTUnaryNot15025: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00020000,0x00000000, 0x00000108,0x200C0000, 0x00000007]),
    FOLLOW_p_FTPrimaryWithOptions_in_p_FTUnaryNot15032: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_FTPrimary_in_p_FTPrimaryWithOptions15058: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000600, 0x00000000]),
    FOLLOW_p_FTMatchOptions_in_p_FTPrimaryWithOptions15060: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000400, 0x00000000]),
    FOLLOW_p_FTWeight_in_p_FTPrimaryWithOptions15063: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_FTWords_in_p_FTPrimary15094: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x04000000]),
    FOLLOW_p_FTTimes_in_p_FTPrimary15096: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_LPAREN_in_p_FTPrimary15111: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00020000,0x00000000, 0x00000108,0x200C0000, 0x00000007]),
    FOLLOW_p_FTSelection_in_p_FTPrimary15113: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_RPAREN_in_p_FTPrimary15115: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_FTExtensionSelection_in_p_FTPrimary15128: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_FTWordsValue_in_p_FTWords15154: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x20000060]),
    FOLLOW_p_FTAnyallOption_in_p_FTWords15156: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_StringLiteral_in_p_FTWordsValue15183: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_LBRACKET_in_p_FTWordsValue15196: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Expr_in_p_FTWordsValue15198: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
    FOLLOW_RBRACKET_in_p_FTWordsValue15201: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_L_Pragma_in_p_FTExtensionSelection15228: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100,0x20000000, 0x00000000]),
    FOLLOW_LBRACKET_in_p_FTExtensionSelection15231: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00020000,0x00000000, 0x00000308,0x200C0000, 0x00000007]),
    FOLLOW_p_FTSelection_in_p_FTExtensionSelection15233: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
    FOLLOW_RBRACKET_in_p_FTExtensionSelection15236: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_ANY_in_p_FTAnyallOption15267: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00002000, 0x00000000]),
    FOLLOW_WORD_in_p_FTAnyallOption15271: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_ALL_in_p_FTAnyallOption15280: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00004000, 0x00000000]),
    FOLLOW_WORDS_in_p_FTAnyallOption15282: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_PHRASE_in_p_FTAnyallOption15290: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_OCCURS_in_p_FTTimes15322: new org.antlr.runtime.BitSet([0x00200000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00006000]),
    FOLLOW_p_FTRange_in_p_FTTimes15324: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000080, 0x00000000]),
    FOLLOW_TIMES_in_p_FTTimes15328: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_EXACTLY_in_p_FTRange15361: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_AdditiveExpr_in_p_FTRange15363: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_AT_in_p_FTRange15381: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000020, 0x00000000]),
    FOLLOW_LEAST_in_p_FTRange15385: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_AdditiveExpr_in_p_FTRange15387: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_AT_in_p_FTRange15405: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00800000]),
    FOLLOW_MOST_in_p_FTRange15409: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_AdditiveExpr_in_p_FTRange15411: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_FROM_in_p_FTRange15429: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_AdditiveExpr_in_p_FTRange15431: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000800]),
    FOLLOW_TO_in_p_FTRange15435: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_AdditiveExpr_in_p_FTRange15437: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_FTOrder_in_p_FTPosFilter15468: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_FTWindow_in_p_FTPosFilter15472: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_FTDistance_in_p_FTPosFilter15476: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_FTScope_in_p_FTPosFilter15480: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_FTContent_in_p_FTPosFilter15484: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_ORDERED_in_p_FTOrder15512: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_WINDOW_in_p_FTWindow15542: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_AdditiveExpr_in_p_FTWindow15546: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x10000000,0x00004008, 0x00000000]),
    FOLLOW_p_FTUnit_in_p_FTWindow15548: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DISTANCE_in_p_FTDistance15576: new org.antlr.runtime.BitSet([0x00200000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00006000]),
    FOLLOW_p_FTRange_in_p_FTDistance15580: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x10000000,0x00004008, 0x00000000]),
    FOLLOW_p_FTUnit_in_p_FTDistance15582: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_WORDS_in_p_FTUnit15612: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_SENTENCES_in_p_FTUnit15618: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_PARAGRAPHS_in_p_FTUnit15624: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_SAME_in_p_FTScope15657: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x08000000,0x00000004, 0x00000000]),
    FOLLOW_DIFFERENT_in_p_FTScope15663: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x08000000,0x00000004, 0x00000000]),
    FOLLOW_p_FTBigUnit_in_p_FTScope15668: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_SENTENCE_in_p_FTBigUnit15698: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_PARAGRAPH_in_p_FTBigUnit15704: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_AT_in_p_FTContent15739: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000400, 0x00000000]),
    FOLLOW_START_in_p_FTContent15743: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_AT_in_p_FTContent15751: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x10000000]),
    FOLLOW_END_in_p_FTContent15755: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_ENTIRE_in_p_FTContent15763: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_CONTENT_in_p_FTContent15767: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_USING_in_p_FTMatchOptions15801: new org.antlr.runtime.BitSet([0x04000000, 0x00000000,0x00020000, 0x00000000,0x00000000, 0x01500200,0x00000970, 0x00000000]),
    FOLLOW_p_FTMatchOption_in_p_FTMatchOptions15805: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000200, 0x00000000]),
    FOLLOW_p_FTLanguageOption_in_p_FTMatchOption15833: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_FTWildCardOption_in_p_FTMatchOption15845: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_FTThesaurusOption_in_p_FTMatchOption15857: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_FTStemOption_in_p_FTMatchOption15869: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_FTCaseOption_in_p_FTMatchOption15881: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_FTDiacriticsOption_in_p_FTMatchOption15893: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_FTStopWordOption_in_p_FTMatchOption15905: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_FTExtensionOption_in_p_FTMatchOption15917: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_CASE_in_p_FTCaseOption15948: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00080000]),
    FOLLOW_INSENSITIVE_in_p_FTCaseOption15952: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_CASE_in_p_FTCaseOption15970: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000002, 0x00000000]),
    FOLLOW_SENSITIVE_in_p_FTCaseOption15974: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_LOWERCASE_in_p_FTCaseOption15991: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_UPPERCASE_in_p_FTCaseOption16007: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DIACRITICS_in_p_FTDiacriticsOption16042: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00080000]),
    FOLLOW_INSENSITIVE_in_p_FTDiacriticsOption16046: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DIACRITICS_in_p_FTDiacriticsOption16064: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000002, 0x00000000]),
    FOLLOW_SENSITIVE_in_p_FTDiacriticsOption16068: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_STEMMING_in_p_FTStemOption16103: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_NO_in_p_FTStemOption16110: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000010, 0x00000000]),
    FOLLOW_STEMMING_in_p_FTStemOption16114: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_THESAURUS_in_p_FTThesaurusOption16150: new org.antlr.runtime.BitSet([0x00200000, 0x00000008]),
    FOLLOW_p_FTThesaurusID_in_p_FTThesaurusOption16153: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DEFAULT_in_p_FTThesaurusOption16159: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_THESAURUS_in_p_FTThesaurusOption16178: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_LPAREN_in_p_FTThesaurusOption16180: new org.antlr.runtime.BitSet([0x00200000, 0x00000008]),
    FOLLOW_p_FTThesaurusID_in_p_FTThesaurusOption16183: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040010]),
    FOLLOW_DEFAULT_in_p_FTThesaurusOption16189: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040010]),
    FOLLOW_COMMA_in_p_FTThesaurusOption16193: new org.antlr.runtime.BitSet([0x00200000, 0x00000000]),
    FOLLOW_p_FTThesaurusID_in_p_FTThesaurusOption16195: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040010]),
    FOLLOW_RPAREN_in_p_FTThesaurusOption16199: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_NO_in_p_FTThesaurusOption16217: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_THESAURUS_in_p_FTThesaurusOption16221: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_AT_in_p_FTThesaurusID16254: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
    FOLLOW_p_StringLiteral_in_p_FTThesaurusID16256: new org.antlr.runtime.BitSet([0x00200002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x40006000]),
    FOLLOW_RELATIONSHIP_in_p_FTThesaurusID16261: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
    FOLLOW_p_StringLiteral_in_p_FTThesaurusID16263: new org.antlr.runtime.BitSet([0x00200002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00006000]),
    FOLLOW_p_FTLiteralRange_in_p_FTThesaurusID16268: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00200000]),
    FOLLOW_LEVELS_in_p_FTThesaurusID16272: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_EXACTLY_in_p_FTLiteralRange16307: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000001]),
    FOLLOW_L_IntegerLiteral_in_p_FTLiteralRange16309: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_AT_in_p_FTLiteralRange16327: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000020, 0x00000000]),
    FOLLOW_LEAST_in_p_FTLiteralRange16331: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000001]),
    FOLLOW_L_IntegerLiteral_in_p_FTLiteralRange16333: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_AT_in_p_FTLiteralRange16351: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00800000]),
    FOLLOW_MOST_in_p_FTLiteralRange16355: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000001]),
    FOLLOW_L_IntegerLiteral_in_p_FTLiteralRange16357: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_FROM_in_p_FTLiteralRange16375: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000001]),
    FOLLOW_L_IntegerLiteral_in_p_FTLiteralRange16377: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000800]),
    FOLLOW_TO_in_p_FTLiteralRange16379: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000001]),
    FOLLOW_L_IntegerLiteral_in_p_FTLiteralRange16381: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_STOP_in_p_FTStopWordOption16417: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00004000, 0x00000000]),
    FOLLOW_WORDS_in_p_FTStopWordOption16421: new org.antlr.runtime.BitSet([0x00200000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_p_FTStopWords_in_p_FTStopWordOption16423: new org.antlr.runtime.BitSet([0x00000002, 0x00020000,0x00000000, 0x00004000]),
    FOLLOW_p_FTStopWordsInclExcl_in_p_FTStopWordOption16425: new org.antlr.runtime.BitSet([0x00000002, 0x00020000,0x00000000, 0x00004000]),
    FOLLOW_STOP_in_p_FTStopWordOption16444: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00004000, 0x00000000]),
    FOLLOW_WORDS_in_p_FTStopWordOption16448: new org.antlr.runtime.BitSet([0x00000000, 0x00000008]),
    FOLLOW_DEFAULT_in_p_FTStopWordOption16452: new org.antlr.runtime.BitSet([0x00000002, 0x00020000,0x00000000, 0x00004000]),
    FOLLOW_p_FTStopWordsInclExcl_in_p_FTStopWordOption16454: new org.antlr.runtime.BitSet([0x00000002, 0x00020000,0x00000000, 0x00004000]),
    FOLLOW_NO_in_p_FTStopWordOption16473: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000020, 0x00000000]),
    FOLLOW_STOP_in_p_FTStopWordOption16477: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00004000, 0x00000000]),
    FOLLOW_WORDS_in_p_FTStopWordOption16481: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_AT_in_p_FTStopWords16515: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
    FOLLOW_p_StringLiteral_in_p_FTStopWords16519: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_LPAREN_in_p_FTStopWords16533: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
    FOLLOW_p_StringLiteral_in_p_FTStopWords16535: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040010]),
    FOLLOW_COMMA_in_p_FTStopWords16538: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
    FOLLOW_p_StringLiteral_in_p_FTStopWords16540: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040010]),
    FOLLOW_RPAREN_in_p_FTStopWords16544: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_UNION_in_p_FTStopWordsInclExcl16576: new org.antlr.runtime.BitSet([0x00200000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_EXCEPT_in_p_FTStopWordsInclExcl16582: new org.antlr.runtime.BitSet([0x00200000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_p_FTStopWords_in_p_FTStopWordsInclExcl16585: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_LANGUAGE_in_p_FTLanguageOption16617: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
    FOLLOW_p_StringLiteral_in_p_FTLanguageOption16621: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_WILDCARDS_in_p_FTWildCardOption16651: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_NO_in_p_FTWildCardOption16658: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000800, 0x00000000]),
    FOLLOW_WILDCARDS_in_p_FTWildCardOption16662: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_OPTION_in_p_FTExtensionOption16695: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
    FOLLOW_p_QName_in_p_FTExtensionOption16699: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
    FOLLOW_p_StringLiteral_in_p_FTExtensionOption16701: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_WITHOUT_in_p_FTIgnoreOption16729: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_CONTENT_in_p_FTIgnoreOption16733: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_UnionExpr_in_p_FTIgnoreOption16737: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_StatementsAndOptionalExpr_in_p_Program16769: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_Hybrid_in_p_Statements16796: new org.antlr.runtime.BitSet([0xFFFF0002, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Statements_in_p_StatementsAndExpr16824: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_Statements_in_p_StatementsAndOptionalExpr16851: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_HybridExprSingle_in_p_Hybrid16878: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_Statement_in_p_Hybrid16891: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_AssignStatement_in_p_Statement16922: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_BreakStatement_in_p_Statement16934: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ContinueStatement_in_p_Statement16946: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ExitStatement_in_p_Statement16958: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_VarDeclStatement_in_p_Statement16970: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_WhileStatement_in_p_Statement16982: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_Expr_in_p_HybridExprSingle17009: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_SEMICOLON_in_p_HybridExprSingle17024: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ExprSimple_in_p_ApplyStatement17074: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_SEMICOLON_in_p_ApplyStatement17076: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DOLLAR_in_p_AssignStatement17104: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_VarName_in_p_AssignStatement17108: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00002000]),
    FOLLOW_BIND_in_p_AssignStatement17112: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_ExprSingle_in_p_AssignStatement17114: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_SEMICOLON_in_p_AssignStatement17117: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_LBRACKET_in_p_BlockStatement17143: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0876B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Statements_in_p_BlockStatement17145: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
    FOLLOW_RBRACKET_in_p_BlockStatement17148: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_LBRACKET_in_p_BlockHybrid17174: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0876B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Statements_in_p_BlockHybrid17176: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
    FOLLOW_RBRACKET_in_p_BlockHybrid17179: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_BREAK_in_p_BreakStatement17207: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00040000, 0x00000000]),
    FOLLOW_LOOP_in_p_BreakStatement17213: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_SEMICOLON_in_p_BreakStatement17217: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_CONTINUE_in_p_ContinueStatement17245: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00040000, 0x00000000]),
    FOLLOW_LOOP_in_p_ContinueStatement17251: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_SEMICOLON_in_p_ContinueStatement17255: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_EXIT_in_p_ExitStatement17283: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00080000, 0x00000000]),
    FOLLOW_RETURNING_in_p_ExitStatement17289: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_ExprSingle_in_p_ExitStatement17293: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000040, 0x00000000]),
    FOLLOW_SEMICOLON_in_p_ExitStatement17296: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_InitialClause_in_p_FLWORStatement17322: new org.antlr.runtime.BitSet([0x00000000, 0x00200000,0x80080040, 0x21080040]),
    FOLLOW_p_IntermediateClause_in_p_FLWORStatement17324: new org.antlr.runtime.BitSet([0x00000000, 0x00200000,0x80080040, 0x21080040]),
    FOLLOW_p_ReturnStatement_in_p_FLWORStatement17327: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_RETURN_in_p_ReturnStatement17359: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Hybrid_in_p_ReturnStatement17363: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_IF_in_p_IfStatement17392: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_LPAREN_in_p_IfStatement17396: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Expr_in_p_IfStatement17398: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_RPAREN_in_p_IfStatement17401: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000400]),
    FOLLOW_THEN_in_p_IfStatement17405: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Hybrid_in_p_IfStatement17409: new org.antlr.runtime.BitSet([0x00000000, 0x00000800]),
    FOLLOW_ELSE_in_p_IfStatement17414: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Hybrid_in_p_IfStatement17418: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_SWITCH_in_p_SwitchStatement17447: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_LPAREN_in_p_SwitchStatement17451: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Expr_in_p_SwitchStatement17453: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_RPAREN_in_p_SwitchStatement17456: new org.antlr.runtime.BitSet([0x04000000, 0x00000000]),
    FOLLOW_p_SwitchCaseStatement_in_p_SwitchStatement17458: new org.antlr.runtime.BitSet([0x04000000, 0x00000008]),
    FOLLOW_DEFAULT_in_p_SwitchStatement17463: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x80000000, 0x00000000]),
    FOLLOW_RETURN_in_p_SwitchStatement17469: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Hybrid_in_p_SwitchStatement17473: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_CASE_in_p_SwitchCaseStatement17503: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_SwitchCaseOperand_in_p_SwitchCaseStatement17507: new org.antlr.runtime.BitSet([0x04000000, 0x00000000,0x80000000, 0x00000000]),
    FOLLOW_RETURN_in_p_SwitchCaseStatement17513: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Hybrid_in_p_SwitchCaseStatement17517: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_TRY_in_p_TryCatchStatement17546: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_p_BlockStatement_in_p_TryCatchStatement17550: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00400000]),
    FOLLOW_CATCH_in_p_TryCatchStatement17555: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00100003,0x0040C002, 0x00000000]),
    FOLLOW_p_CatchErrorList_in_p_TryCatchStatement17559: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_p_BlockStatement_in_p_TryCatchStatement17561: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00400000]),
    FOLLOW_TRY_in_p_TryCatchHybrid17593: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_p_BlockHybrid_in_p_TryCatchHybrid17597: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00400000]),
    FOLLOW_CATCH_in_p_TryCatchHybrid17603: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00100003,0x0040C002, 0x00000000]),
    FOLLOW_p_CatchErrorList_in_p_TryCatchHybrid17607: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_p_BlockHybrid_in_p_TryCatchHybrid17609: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00400000]),
    FOLLOW_TYPESWITCH_in_p_TypeswitchStatement17642: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_LPAREN_in_p_TypeswitchStatement17646: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Expr_in_p_TypeswitchStatement17648: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_RPAREN_in_p_TypeswitchStatement17651: new org.antlr.runtime.BitSet([0x04000000, 0x00000000]),
    FOLLOW_p_CaseStatement_in_p_TypeswitchStatement17653: new org.antlr.runtime.BitSet([0x04000000, 0x00000008]),
    FOLLOW_DEFAULT_in_p_TypeswitchStatement17658: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x80000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
    FOLLOW_DOLLAR_in_p_TypeswitchStatement17665: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_VarName_in_p_TypeswitchStatement17669: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x80000000, 0x00000000]),
    FOLLOW_RETURN_in_p_TypeswitchStatement17677: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Hybrid_in_p_TypeswitchStatement17681: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_CASE_in_p_CaseStatement17710: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x0000802B,0x00408000, 0x00000000]),
    FOLLOW_DOLLAR_in_p_CaseStatement17717: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_VarName_in_p_CaseStatement17721: new org.antlr.runtime.BitSet([0x00080000, 0x00000000]),
    FOLLOW_AS_in_p_CaseStatement17725: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x0000800B,0x00408000, 0x00000000]),
    FOLLOW_p_SequenceType_in_p_CaseStatement17729: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x80000000, 0x00000000]),
    FOLLOW_RETURN_in_p_CaseStatement17733: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Hybrid_in_p_CaseStatement17737: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_Annotation_in_p_VarDeclStatement17764: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00020000,0x00000000, 0x00000000,0x00000000, 0x00008000]),
    FOLLOW_VARIABLE_in_p_VarDeclStatement17769: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
    FOLLOW_DOLLAR_in_p_VarDeclStatement17775: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_VarName_in_p_VarDeclStatement17779: new org.antlr.runtime.BitSet([0x00080000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00042000,0x00000040, 0x00000000]),
    FOLLOW_p_TypeDeclaration_in_p_VarDeclStatement17783: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00042000,0x00000040, 0x00000000]),
    FOLLOW_BIND_in_p_VarDeclStatement17787: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_ExprSingle_in_p_VarDeclStatement17789: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000,0x00000040, 0x00000000]),
    FOLLOW_COMMA_in_p_VarDeclStatement17805: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
    FOLLOW_DOLLAR_in_p_VarDeclStatement17809: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00408000, 0x00000000]),
    FOLLOW_p_VarName_in_p_VarDeclStatement17813: new org.antlr.runtime.BitSet([0x00080000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00042000,0x00000040, 0x00000000]),
    FOLLOW_p_TypeDeclaration_in_p_VarDeclStatement17817: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00042000,0x00000040, 0x00000000]),
    FOLLOW_BIND_in_p_VarDeclStatement17821: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_ExprSingle_in_p_VarDeclStatement17823: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000,0x00000040, 0x00000000]),
    FOLLOW_SEMICOLON_in_p_VarDeclStatement17840: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_WHILE_in_p_WhileStatement17868: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_LPAREN_in_p_WhileStatement17872: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Expr_in_p_WhileStatement17874: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000010]),
    FOLLOW_RPAREN_in_p_WhileStatement17877: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
    FOLLOW_p_Hybrid_in_p_WhileStatement17879: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_QuantifiedExpr_in_p_ExprSimple17906: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_OrExpr_in_p_ExprSimple17918: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_pg_UpdateExpr_in_p_ExprSimple17933: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_LBRACKET_in_p_BlockExpr17959: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0856B,0xE04CC003, 0x00000007]),
    FOLLOW_p_StatementsAndExpr_in_p_BlockExpr17961: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000200]),
    FOLLOW_RBRACKET_in_p_BlockExpr17963: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_COLLECTION_in_p_CollectionDecl17994: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
    FOLLOW_p_QName_in_p_CollectionDecl17998: new org.antlr.runtime.BitSet([0x00080002, 0x00000000]),
    FOLLOW_p_CollectionTypeDecl_in_p_CollectionDecl18000: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_AS_in_p_CollectionTypeDecl18029: new org.antlr.runtime.BitSet([0x80400000, 0x00000600,0x04004000, 0x0000020C,0x00000002, 0x00000000]),
    FOLLOW_p_KindTest_in_p_CollectionTypeDecl18033: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00380000]),
    FOLLOW_p_OccurrenceIndicator_in_p_CollectionTypeDecl18042: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_INDEX_in_p_IndexDecl18072: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
    FOLLOW_p_IndexName_in_p_IndexDecl18076: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x20000000, 0x00000000]),
    FOLLOW_ON_in_p_IndexDecl18080: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x20000000, 0x00000000]),
    FOLLOW_NODES_in_p_IndexDecl18086: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x6090056B,0xC04CC003, 0x00000007]),
    FOLLOW_p_IndexDomainExpr_in_p_IndexDecl18090: new org.antlr.runtime.BitSet([0x02000000, 0x00000000]),
    FOLLOW_BY_in_p_IndexDecl18094: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x6090056B,0xC04CC003, 0x00000007]),
    FOLLOW_p_IndexKeySpec_in_p_IndexDecl18098: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
    FOLLOW_COMMA_in_p_IndexDecl18101: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x6090056B,0xC04CC003, 0x00000007]),
    FOLLOW_p_IndexKeySpec_in_p_IndexDecl18103: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00040000]),
    FOLLOW_p_QName_in_p_IndexName18130: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_PathExpr_in_p_IndexDomainExpr18155: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_IndexKeyExpr_in_p_IndexKeySpec18180: new org.antlr.runtime.BitSet([0x40080002, 0x00000000]),
    FOLLOW_p_IndexKeyTypeDecl_in_p_IndexKeySpec18182: new org.antlr.runtime.BitSet([0x40000002, 0x00000000]),
    FOLLOW_p_IndexKeyCollation_in_p_IndexKeySpec18185: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_PathExpr_in_p_IndexKeyExpr18211: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_AS_in_p_IndexKeyTypeDecl18238: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
    FOLLOW_p_AtomicType_in_p_IndexKeyTypeDecl18242: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00380000]),
    FOLLOW_p_OccurrenceIndicator_in_p_IndexKeyTypeDecl18244: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_QName_in_p_AtomicType18270: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_COLLATION_in_p_IndexKeyCollation18297: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x000C0000, 0x00000007]),
    FOLLOW_p_StringLiteral_in_p_IndexKeyCollation18301: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_INTEGRITY_in_p_ICDecl18328: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00800000, 0x00000000]),
    FOLLOW_CONSTRAINT_in_p_ICDecl18334: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
    FOLLOW_p_QName_in_p_ICDecl18338: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x22000000, 0x00000000]),
    FOLLOW_p_ICCollection_in_p_ICDecl18341: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ICForeignKey_in_p_ICDecl18345: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_ON_in_p_ICCollection18373: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00400000, 0x00000000]),
    FOLLOW_COLLECTION_in_p_ICCollection18379: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
    FOLLOW_p_QName_in_p_ICCollection18383: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00004000, 0x00000000,0x00000000, 0x00000000,0x01000000, 0x00000020]),
    FOLLOW_p_ICCollSequence_in_p_ICCollection18386: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ICCollSequenceUnique_in_p_ICCollection18390: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_ICCollNode_in_p_ICCollection18394: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_DOLLAR_in_p_ICCollSequence18422: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
    FOLLOW_p_QName_in_p_ICCollSequence18426: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00200000, 0x00000000]),
    FOLLOW_CHECK_in_p_ICCollSequence18432: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_ExprSingle_in_p_ICCollSequence18436: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_NODE_in_p_ICCollSequenceUnique18464: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
    FOLLOW_DOLLAR_in_p_ICCollSequenceUnique18470: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
    FOLLOW_p_QName_in_p_ICCollSequenceUnique18474: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00200000, 0x00000000]),
    FOLLOW_CHECK_in_p_ICCollSequenceUnique18480: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x40000000, 0x00000000]),
    FOLLOW_UNIQUE_in_p_ICCollSequenceUnique18486: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x10000000, 0x00000000]),
    FOLLOW_KEY_in_p_ICCollSequenceUnique18492: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x6090056B,0xC04CC003, 0x00000007]),
    FOLLOW_p_PathExpr_in_p_ICCollSequenceUnique18496: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_FOREACH_in_p_ICCollNode18523: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00004000, 0x00000000]),
    FOLLOW_NODE_in_p_ICCollNode18529: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
    FOLLOW_DOLLAR_in_p_ICCollNode18535: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
    FOLLOW_p_QName_in_p_ICCollNode18539: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00200000, 0x00000000]),
    FOLLOW_CHECK_in_p_ICCollNode18545: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x60F0056B,0xE04CC003, 0x00000007]),
    FOLLOW_p_ExprSingle_in_p_ICCollNode18549: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_FOREIGN_in_p_ICForeignKey18577: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x10000000, 0x00000000]),
    FOLLOW_KEY_in_p_ICForeignKey18583: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00004000]),
    FOLLOW_p_ICForeignKeySource_in_p_ICForeignKey18587: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000800]),
    FOLLOW_p_ICForeignKeyTarget_in_p_ICForeignKey18589: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_FROM_in_p_ICForeignKeySource18616: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00400000, 0x00000000]),
    FOLLOW_p_ICForeignKeyValues_in_p_ICForeignKeySource18620: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_TO_in_p_ICForeignKeyTarget18647: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00400000, 0x00000000]),
    FOLLOW_p_ICForeignKeyValues_in_p_ICForeignKeyTarget18651: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_COLLECTION_in_p_ICForeignKeyValues18678: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
    FOLLOW_p_QName_in_p_ICForeignKeyValues18682: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00004000, 0x00000000]),
    FOLLOW_NODE_in_p_ICForeignKeyValues18686: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
    FOLLOW_DOLLAR_in_p_ICForeignKeyValues18692: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000003,0x00400000, 0x00000000]),
    FOLLOW_p_QName_in_p_ICForeignKeyValues18696: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x10000000, 0x00000000]),
    FOLLOW_KEY_in_p_ICForeignKeyValues18702: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x6090056B,0xC04CC003, 0x00000007]),
    FOLLOW_p_PathExpr_in_p_ICForeignKeyValues18706: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_set_in_synpred1_XQueryParser3531: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000020]),
    FOLLOW_DOLLAR_in_synpred1_XQueryParser3539: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_FOR_in_synpred1_XQueryParser3545: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00002200, 0x00000000]),
    FOLLOW_set_in_synpred1_XQueryParser3547: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_IF_in_synpred2_XQueryParser3573: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_LPAREN_in_synpred2_XQueryParser3575: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_SWITCH_in_synpred3_XQueryParser3603: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_LPAREN_in_synpred3_XQueryParser3605: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_TYPESWITCH_in_synpred4_XQueryParser3629: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_LPAREN_in_synpred4_XQueryParser3631: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_TRY_in_synpred5_XQueryParser3651: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_LBRACKET_in_synpred5_XQueryParser3653: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_VALIDATE_in_synpred6_XQueryParser6204: new org.antlr.runtime.BitSet([0x00000002, 0x00000000,0x00000008, 0x00000080,0x00004000, 0x00000000]),
    FOLLOW_p_ValidationMode_in_synpred6_XQueryParser6208: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_TYPE_in_synpred6_XQueryParser6212: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_SLASH_in_synpred7_XQueryParser6600: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0x6090056B,0xC04CC003, 0x00000007]),
    FOLLOW_p_RelativePathExpr_in_synpred7_XQueryParser6602: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_set_in_synpred8_XQueryParser6716: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_set_in_synpred9_XQueryParser6769: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000103,0x00408000, 0x00000000]),
    FOLLOW_p_EQName_in_synpred9_XQueryParser6777: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_LBRACKET_in_synpred9_XQueryParser6780: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_set_in_synpred9_XQueryParser6798: new org.antlr.runtime.BitSet([0xFFFF0000, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFF,0xFFFFFFFF, 0xFFFFFFFB,0xFFFFFFFF, 0x00000103,0x00400000, 0x00000000]),
    FOLLOW_p_NCName_in_synpred9_XQueryParser6806: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_LBRACKET_in_synpred9_XQueryParser6809: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_set_in_synpred9_XQueryParser6827: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000100]),
    FOLLOW_LBRACKET_in_synpred9_XQueryParser6839: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_KindTest_in_synpred10_XQueryParser6869: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_EQName_in_synpred11_XQueryParser6888: new org.antlr.runtime.BitSet([0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000000,0x00000000, 0x00000008]),
    FOLLOW_LPAREN_in_synpred11_XQueryParser6890: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_PrimaryExpr_in_synpred12_XQueryParser6908: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_LPAREN_in_synpred13_XQueryParser7593: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_OccurrenceIndicator_in_synpred14_XQueryParser9871: new org.antlr.runtime.BitSet([0x00000002, 0x00000000]),
    FOLLOW_p_OccurrenceIndicator_in_synpred15_XQueryParser18037: new org.antlr.runtime.BitSet([0x00000002, 0x00000000])
});

})();
exports.XQueryParser = XQueryParser; });
define('ace/mode/xquery/StringLexer', ['require', 'exports', 'module' , 'ace/mode/xquery/antlr3-all', 'ace/mode/xquery/XQDTLexer'], function(require, exports, module) {// $ANTLR 3.3 Nov 30, 2010 12:50:56 /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g 2012-09-05 10:41:39

/* ***** BEGIN LICENSE BLOCK *****
 * Distributed under the BSD license:
 *
 * Copyright (c) 2010, Ajax.org B.V.
 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in the
 *       documentation and/or other materials provided with the distribution.
 *     * Neither the name of Ajax.org B.V. nor the
 *       names of its contributors may be used to endorse or promote products
 *       derived from this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * ***** END LICENSE BLOCK ***** */
  var org =  require("./antlr3-all").org;
  var XQDTLexer = require("./XQDTLexer").XQDTLexer;


var StringLexer = function(input, state) {
// alternate constructor @todo
// public StringLexer(CharStream input)
// public StringLexer(CharStream input, RecognizerSharedState state) {
    if (!state) {
        state = new org.antlr.runtime.RecognizerSharedState();
    }

    (function(){


        this.inQuotStr = false;
        this.inAposStr = false;

        //boolean inQuotStr = false;
        //boolean inAposStr = false;

        //public StringLexer(CharStream input, boolean isAposStr) {
        //	this(input, new RecognizerSharedState());
        //	this.inAposStr = isAposStr;
        //	this.inQuotStr = !isAposStr;
        //	setIsWsExplicit(true);
        //}

    }).call(this);

    this.dfa8 = new StringLexer.DFA8(this);
    StringLexer.superclass.constructor.call(this, input, state);


};

org.antlr.lang.augmentObject(StringLexer, {
    EOF: -1,
    L_QuotAttrContentChar: 4,
    L_AposAttrContentChar: 5,
    L_ElementContentChar: 6,
    L_CDataSection: 7,
    L_PredefinedEntityRef: 8,
    L_CharRef: 9,
    ESCAPE_LBRACKET: 10,
    ESCAPE_RBRACKET: 11,
    ESCAPE_APOS: 12,
    ESCAPE_QUOT: 13,
    CDATA_START: 14,
    CDATA_END: 15,
    ANCESTOR: 16,
    ANCESTOR_OR_SELF: 17,
    AND: 18,
    AS: 19,
    ASCENDING: 20,
    AT: 21,
    ATTRIBUTE: 22,
    BASE_URI: 23,
    BOUNDARY_SPACE: 24,
    BY: 25,
    CASE: 26,
    CAST: 27,
    CASTABLE: 28,
    CHILD: 29,
    COLLATION: 30,
    COMMENT: 31,
    CONSTRUCTION: 32,
    COPY_NAMESPACES: 33,
    DECLARE: 34,
    DEFAULT: 35,
    DESCENDANT: 36,
    DESCENDANT_OR_SELF: 37,
    DESCENDING: 38,
    DIV: 39,
    DOCUMENT: 40,
    DOCUMENT_NODE: 41,
    ELEMENT: 42,
    ELSE: 43,
    EMPTY: 44,
    EMPTY_SEQUENCE: 45,
    ENCODING: 46,
    EQ: 47,
    EVERY: 48,
    EXCEPT: 49,
    EXTERNAL: 50,
    FOLLOWING: 51,
    FOLLOWING_SIBLING: 52,
    FOR: 53,
    FUNCTION: 54,
    GE: 55,
    GREATEST: 56,
    GT: 57,
    IDIV: 58,
    IF: 59,
    IMPORT: 60,
    IN: 61,
    INHERIT: 62,
    INSTANCE: 63,
    INTERSECT: 64,
    IS: 65,
    ITEM: 66,
    LAX: 67,
    LE: 68,
    LEAST: 69,
    LET: 70,
    LT: 71,
    MOD: 72,
    MODULE: 73,
    NAMESPACE: 74,
    NE: 75,
    NO_INHERIT: 76,
    NO_PRESERVE: 77,
    NODE: 78,
    JSON: 79,
    OF: 80,
    OPTION: 81,
    OR: 82,
    ORDER: 83,
    ORDERED: 84,
    ORDERING: 85,
    PARENT: 86,
    PRECEDING: 87,
    PRECEDING_SIBLING: 88,
    PRESERVE: 89,
    PROCESSING_INSTRUCTION: 90,
    STRUCTURED_ITEM: 91,
    JSON_ITEM: 92,
    OBJECT: 93,
    ARRAY: 94,
    RETURN: 95,
    SATISFIES: 96,
    SCHEMA: 97,
    SCHEMA_ATTRIBUTE: 98,
    SCHEMA_ELEMENT: 99,
    SELF: 100,
    SOME: 101,
    STABLE: 102,
    STRICT: 103,
    STRIP: 104,
    TEXT: 105,
    THEN: 106,
    TO: 107,
    TREAT: 108,
    TYPESWITCH: 109,
    UNION: 110,
    UNORDERED: 111,
    VALIDATE: 112,
    VARIABLE: 113,
    VERSION: 114,
    WHERE: 115,
    XQUERY: 116,
    ALLOWING: 117,
    CATCH: 118,
    CONTEXT: 119,
    COUNT: 120,
    DECIMAL_FORMAT: 121,
    DECIMAL_SEPARATOR: 122,
    DIGIT: 123,
    END: 124,
    GROUP: 125,
    GROUPING_SEPARATOR: 126,
    INFINITY: 127,
    MINUS_SIGN: 128,
    NAMESPACE_NODE: 129,
    NAN: 130,
    NEXT: 131,
    ONLY: 132,
    PATTERN_SEPARATOR: 133,
    PERCENT: 134,
    PER_MILLE: 135,
    PREVIOUS: 136,
    SLIDING: 137,
    START: 138,
    SWITCH: 139,
    TRY: 140,
    TUMBLING: 141,
    TYPE: 142,
    WHEN: 143,
    WINDOW: 144,
    ZERO_DIGIT: 145,
    AFTER: 146,
    BEFORE: 147,
    COPY: 148,
    DELETE: 149,
    FIRST: 150,
    INSERT: 151,
    INTO: 152,
    POSITION: 153,
    APPEND: 154,
    LAST: 155,
    MODIFY: 156,
    NODES: 157,
    RENAME: 158,
    REPLACE: 159,
    REVALIDATION: 160,
    SKIP: 161,
    UPDATING: 162,
    VALUE: 163,
    WITH: 164,
    ALL: 165,
    ANY: 166,
    CONTAINS: 167,
    CONTENT: 168,
    DIACRITICS: 169,
    DIFFERENT: 170,
    DISTANCE: 171,
    ENTIRE: 172,
    EXACTLY: 173,
    FROM: 174,
    FT_OPTION: 175,
    FTAND: 176,
    FTNOT: 177,
    FTOR: 178,
    INSENSITIVE: 179,
    LANGUAGE: 180,
    LEVELS: 181,
    LOWERCASE: 182,
    MOST: 183,
    NO: 184,
    NOT: 185,
    OCCURS: 186,
    PARAGRAPH: 187,
    PARAGRAPHS: 188,
    PHRASE: 189,
    RELATIONSHIP: 190,
    SAME: 191,
    SCORE: 192,
    SENSITIVE: 193,
    SENTENCE: 194,
    SENTENCES: 195,
    STEMMING: 196,
    STOP: 197,
    THESAURUS: 198,
    TIMES: 199,
    UPPERCASE: 200,
    USING: 201,
    WEIGHT: 202,
    WILDCARDS: 203,
    WITHOUT: 204,
    WORD: 205,
    WORDS: 206,
    BREAK: 207,
    CONTINUE: 208,
    EXIT: 209,
    LOOP: 210,
    RETURNING: 211,
    WHILE: 212,
    CHECK: 213,
    COLLECTION: 214,
    CONSTRAINT: 215,
    FOREACH: 216,
    FOREIGN: 217,
    INDEX: 218,
    INTEGRITY: 219,
    KEY: 220,
    ON: 221,
    UNIQUE: 222,
    AMP_ER: 223,
    APOS_ER: 224,
    QUOT_ER: 225,
    CONCAT: 226,
    LPAREN: 227,
    RPAREN: 228,
    DOLLAR: 229,
    L_UNION_BRACKET: 230,
    R_UNION_BRACKET: 231,
    LBRACKET: 232,
    RBRACKET: 233,
    LSQUARE: 234,
    RSQUARE: 235,
    EQUAL: 236,
    BIND: 237,
    NOTEQUAL: 238,
    ANN_PERCENT: 239,
    HASH: 240,
    AMP: 241,
    COMMA: 242,
    QUESTION: 243,
    STAR: 244,
    PLUS: 245,
    MINUS: 246,
    SMALLER: 247,
    GREATER: 248,
    SMALLEREQ: 249,
    GREATEREQ: 250,
    SMALLER_SMALLER: 251,
    GREATER_GREATER: 252,
    SLASH: 253,
    SLASH_SLASH: 254,
    BANG: 255,
    DOT: 256,
    DOT_DOT: 257,
    COLON: 258,
    COLON_COLON: 259,
    EMPTY_CLOSE_TAG: 260,
    CLOSE_TAG: 261,
    SEMICOLON: 262,
    VBAR: 263,
    PRAGMA_START: 264,
    PRAGMA_END: 265,
    XML_COMMENT_START: 266,
    XML_COMMENT_END: 267,
    PI_START: 268,
    PI_END: 269,
    ATTR_SIGN: 270,
    Q: 271,
    CHARREF_DEC: 272,
    CHARREF_HEX: 273,
    APOS: 274,
    QUOT: 275,
    NCNameStartChar: 276,
    NCNameChar: 277,
    L_NCName: 278,
    Letter: 279,
    HexLetter: 280,
    Digit: 281,
    Digits: 282,
    S: 283,
    SU: 284,
    L_Pragma: 285,
    L_DirCommentConstructor: 286,
    L_DirPIConstructor: 287,
    L_IntegerLiteral: 288,
    L_DecimalLiteral: 289,
    L_DoubleLiteral: 290,
    L_Comment: 291,
    L_AnyChar: 292,
    L_QuotStringLiteralChar: 293,
    L_AposStringLiteralChar: 294
});

(function(){
var HIDDEN = org.antlr.runtime.Token.HIDDEN_CHANNEL,
    EOF = org.antlr.runtime.Token.EOF;
org.antlr.lang.extend(StringLexer, XQDTLexer, {
    EOF : -1,
    L_QuotAttrContentChar : 4,
    L_AposAttrContentChar : 5,
    L_ElementContentChar : 6,
    L_CDataSection : 7,
    L_PredefinedEntityRef : 8,
    L_CharRef : 9,
    ESCAPE_LBRACKET : 10,
    ESCAPE_RBRACKET : 11,
    ESCAPE_APOS : 12,
    ESCAPE_QUOT : 13,
    CDATA_START : 14,
    CDATA_END : 15,
    ANCESTOR : 16,
    ANCESTOR_OR_SELF : 17,
    AND : 18,
    AS : 19,
    ASCENDING : 20,
    AT : 21,
    ATTRIBUTE : 22,
    BASE_URI : 23,
    BOUNDARY_SPACE : 24,
    BY : 25,
    CASE : 26,
    CAST : 27,
    CASTABLE : 28,
    CHILD : 29,
    COLLATION : 30,
    COMMENT : 31,
    CONSTRUCTION : 32,
    COPY_NAMESPACES : 33,
    DECLARE : 34,
    DEFAULT : 35,
    DESCENDANT : 36,
    DESCENDANT_OR_SELF : 37,
    DESCENDING : 38,
    DIV : 39,
    DOCUMENT : 40,
    DOCUMENT_NODE : 41,
    ELEMENT : 42,
    ELSE : 43,
    EMPTY : 44,
    EMPTY_SEQUENCE : 45,
    ENCODING : 46,
    EQ : 47,
    EVERY : 48,
    EXCEPT : 49,
    EXTERNAL : 50,
    FOLLOWING : 51,
    FOLLOWING_SIBLING : 52,
    FOR : 53,
    FUNCTION : 54,
    GE : 55,
    GREATEST : 56,
    GT : 57,
    IDIV : 58,
    IF : 59,
    IMPORT : 60,
    IN : 61,
    INHERIT : 62,
    INSTANCE : 63,
    INTERSECT : 64,
    IS : 65,
    ITEM : 66,
    LAX : 67,
    LE : 68,
    LEAST : 69,
    LET : 70,
    LT : 71,
    MOD : 72,
    MODULE : 73,
    NAMESPACE : 74,
    NE : 75,
    NO_INHERIT : 76,
    NO_PRESERVE : 77,
    NODE : 78,
    JSON : 79,
    OF : 80,
    OPTION : 81,
    OR : 82,
    ORDER : 83,
    ORDERED : 84,
    ORDERING : 85,
    PARENT : 86,
    PRECEDING : 87,
    PRECEDING_SIBLING : 88,
    PRESERVE : 89,
    PROCESSING_INSTRUCTION : 90,
    STRUCTURED_ITEM : 91,
    JSON_ITEM : 92,
    OBJECT : 93,
    ARRAY : 94,
    RETURN : 95,
    SATISFIES : 96,
    SCHEMA : 97,
    SCHEMA_ATTRIBUTE : 98,
    SCHEMA_ELEMENT : 99,
    SELF : 100,
    SOME : 101,
    STABLE : 102,
    STRICT : 103,
    STRIP : 104,
    TEXT : 105,
    THEN : 106,
    TO : 107,
    TREAT : 108,
    TYPESWITCH : 109,
    UNION : 110,
    UNORDERED : 111,
    VALIDATE : 112,
    VARIABLE : 113,
    VERSION : 114,
    WHERE : 115,
    XQUERY : 116,
    ALLOWING : 117,
    CATCH : 118,
    CONTEXT : 119,
    COUNT : 120,
    DECIMAL_FORMAT : 121,
    DECIMAL_SEPARATOR : 122,
    DIGIT : 123,
    END : 124,
    GROUP : 125,
    GROUPING_SEPARATOR : 126,
    INFINITY : 127,
    MINUS_SIGN : 128,
    NAMESPACE_NODE : 129,
    NAN : 130,
    NEXT : 131,
    ONLY : 132,
    PATTERN_SEPARATOR : 133,
    PERCENT : 134,
    PER_MILLE : 135,
    PREVIOUS : 136,
    SLIDING : 137,
    START : 138,
    SWITCH : 139,
    TRY : 140,
    TUMBLING : 141,
    TYPE : 142,
    WHEN : 143,
    WINDOW : 144,
    ZERO_DIGIT : 145,
    AFTER : 146,
    BEFORE : 147,
    COPY : 148,
    DELETE : 149,
    FIRST : 150,
    INSERT : 151,
    INTO : 152,
    POSITION : 153,
    APPEND : 154,
    LAST : 155,
    MODIFY : 156,
    NODES : 157,
    RENAME : 158,
    REPLACE : 159,
    REVALIDATION : 160,
    SKIP : 161,
    UPDATING : 162,
    VALUE : 163,
    WITH : 164,
    ALL : 165,
    ANY : 166,
    CONTAINS : 167,
    CONTENT : 168,
    DIACRITICS : 169,
    DIFFERENT : 170,
    DISTANCE : 171,
    ENTIRE : 172,
    EXACTLY : 173,
    FROM : 174,
    FT_OPTION : 175,
    FTAND : 176,
    FTNOT : 177,
    FTOR : 178,
    INSENSITIVE : 179,
    LANGUAGE : 180,
    LEVELS : 181,
    LOWERCASE : 182,
    MOST : 183,
    NO : 184,
    NOT : 185,
    OCCURS : 186,
    PARAGRAPH : 187,
    PARAGRAPHS : 188,
    PHRASE : 189,
    RELATIONSHIP : 190,
    SAME : 191,
    SCORE : 192,
    SENSITIVE : 193,
    SENTENCE : 194,
    SENTENCES : 195,
    STEMMING : 196,
    STOP : 197,
    THESAURUS : 198,
    TIMES : 199,
    UPPERCASE : 200,
    USING : 201,
    WEIGHT : 202,
    WILDCARDS : 203,
    WITHOUT : 204,
    WORD : 205,
    WORDS : 206,
    BREAK : 207,
    CONTINUE : 208,
    EXIT : 209,
    LOOP : 210,
    RETURNING : 211,
    WHILE : 212,
    CHECK : 213,
    COLLECTION : 214,
    CONSTRAINT : 215,
    FOREACH : 216,
    FOREIGN : 217,
    INDEX : 218,
    INTEGRITY : 219,
    KEY : 220,
    ON : 221,
    UNIQUE : 222,
    AMP_ER : 223,
    APOS_ER : 224,
    QUOT_ER : 225,
    CONCAT : 226,
    LPAREN : 227,
    RPAREN : 228,
    DOLLAR : 229,
    L_UNION_BRACKET : 230,
    R_UNION_BRACKET : 231,
    LBRACKET : 232,
    RBRACKET : 233,
    LSQUARE : 234,
    RSQUARE : 235,
    EQUAL : 236,
    BIND : 237,
    NOTEQUAL : 238,
    ANN_PERCENT : 239,
    HASH : 240,
    AMP : 241,
    COMMA : 242,
    QUESTION : 243,
    STAR : 244,
    PLUS : 245,
    MINUS : 246,
    SMALLER : 247,
    GREATER : 248,
    SMALLEREQ : 249,
    GREATEREQ : 250,
    SMALLER_SMALLER : 251,
    GREATER_GREATER : 252,
    SLASH : 253,
    SLASH_SLASH : 254,
    BANG : 255,
    DOT : 256,
    DOT_DOT : 257,
    COLON : 258,
    COLON_COLON : 259,
    EMPTY_CLOSE_TAG : 260,
    CLOSE_TAG : 261,
    SEMICOLON : 262,
    VBAR : 263,
    PRAGMA_START : 264,
    PRAGMA_END : 265,
    XML_COMMENT_START : 266,
    XML_COMMENT_END : 267,
    PI_START : 268,
    PI_END : 269,
    ATTR_SIGN : 270,
    Q : 271,
    CHARREF_DEC : 272,
    CHARREF_HEX : 273,
    APOS : 274,
    QUOT : 275,
    NCNameStartChar : 276,
    NCNameChar : 277,
    L_NCName : 278,
    Letter : 279,
    HexLetter : 280,
    Digit : 281,
    Digits : 282,
    S : 283,
    SU : 284,
    L_Pragma : 285,
    L_DirCommentConstructor : 286,
    L_DirPIConstructor : 287,
    L_IntegerLiteral : 288,
    L_DecimalLiteral : 289,
    L_DoubleLiteral : 290,
    L_Comment : 291,
    L_AnyChar : 292,
    L_QuotStringLiteralChar : 293,
    L_AposStringLiteralChar : 294,
    getGrammarFileName: function() { return "/Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g"; }
});
org.antlr.lang.augmentObject(StringLexer.prototype, {
    // $ANTLR start QUOT
    mQUOT: function()  {
        try {
            var _type = this.QUOT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:66:6: ({...}? => '\"' )
            // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:66:8: {...}? => '\"'
            if ( !(( this.inQuotStr )) ) {
                throw new org.antlr.runtime.FailedPredicateException(this.input, "QUOT", " this.inQuotStr ");
            }
            this.match('\"'); 
             this.inQuotStr = !this.inQuotStr; 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "QUOT",

    // $ANTLR start APOS
    mAPOS: function()  {
        try {
            var _type = this.APOS;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:67:6: ({...}? => '\\'' )
            // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:67:8: {...}? => '\\''
            if ( !(( this.inAposStr )) ) {
                throw new org.antlr.runtime.FailedPredicateException(this.input, "APOS", " this.inAposStr ");
            }
            this.match('\''); 
             this.inAposStr = !this.inAposStr; 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "APOS",

    // $ANTLR start ESCAPE_QUOT
    mESCAPE_QUOT: function()  {
        try {
            var _type = this.ESCAPE_QUOT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:68:13: ({...}? => '\"\"' )
            // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:68:15: {...}? => '\"\"'
            if ( !(( this.inQuotStr )) ) {
                throw new org.antlr.runtime.FailedPredicateException(this.input, "ESCAPE_QUOT", " this.inQuotStr ");
            }
            this.match("\"\""); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "ESCAPE_QUOT",

    // $ANTLR start ESCAPE_APOS
    mESCAPE_APOS: function()  {
        try {
            var _type = this.ESCAPE_APOS;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:69:13: ({...}? => '\\'\\'' )
            // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:69:15: {...}? => '\\'\\''
            if ( !(( this.inAposStr )) ) {
                throw new org.antlr.runtime.FailedPredicateException(this.input, "ESCAPE_APOS", " this.inAposStr ");
            }
            this.match("''"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "ESCAPE_APOS",

    // $ANTLR start L_PredefinedEntityRef
    mL_PredefinedEntityRef: function()  {
        try {
            var _type = this.L_PredefinedEntityRef;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:73:2: ({...}? => '&' ( 'lt' | 'gt' | 'apos' | 'quot' | 'amp' ) ';' )
            // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:73:4: {...}? => '&' ( 'lt' | 'gt' | 'apos' | 'quot' | 'amp' ) ';'
            if ( !(( this.inQuotStr | this.inAposStr )) ) {
                throw new org.antlr.runtime.FailedPredicateException(this.input, "L_PredefinedEntityRef", " this.inQuotStr | this.inAposStr ");
            }
            this.match('&'); 
            // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:73:48: ( 'lt' | 'gt' | 'apos' | 'quot' | 'amp' )
            var alt1=5;
            switch ( this.input.LA(1) ) {
            case 'l':
                alt1=1;
                break;
            case 'g':
                alt1=2;
                break;
            case 'a':
                var LA1_3 = this.input.LA(2);

                if ( (LA1_3=='p') ) {
                    alt1=3;
                }
                else if ( (LA1_3=='m') ) {
                    alt1=5;
                }
                else {
                    var nvae =
                        new org.antlr.runtime.NoViableAltException("", 1, 3, this.input);

                    throw nvae;
                }
                break;
            case 'q':
                alt1=4;
                break;
            default:
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 1, 0, this.input);

                throw nvae;
            }

            switch (alt1) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:73:49: 'lt'
                    this.match("lt"); 



                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:73:56: 'gt'
                    this.match("gt"); 



                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:73:63: 'apos'
                    this.match("apos"); 



                    break;
                case 4 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:73:72: 'quot'
                    this.match("quot"); 



                    break;
                case 5 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:73:81: 'amp'
                    this.match("amp"); 



                    break;

            }

            this.match(';'); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "L_PredefinedEntityRef",

    // $ANTLR start L_CharRef
    mL_CharRef: function()  {
        try {
            var _type = this.L_CharRef;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:78:2: ({...}? => '&#' ( '0' .. '9' )+ ';' | '&#x' ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )+ ';' )
            var alt4=2;
            var LA4_0 = this.input.LA(1);

            if ( (LA4_0=='&') ) {
                var LA4_1 = this.input.LA(2);

                if ( (LA4_1=='#') ) {
                    var LA4_2 = this.input.LA(3);

                    if ( (LA4_2=='x') ) {
                        alt4=2;
                    }
                    else if ( ((LA4_2>='0' && LA4_2<='9')) && (( this.inQuotStr | this.inAposStr ))) {
                        alt4=1;
                    }
                    else {
                        var nvae =
                            new org.antlr.runtime.NoViableAltException("", 4, 2, this.input);

                        throw nvae;
                    }
                }
                else {
                    var nvae =
                        new org.antlr.runtime.NoViableAltException("", 4, 1, this.input);

                    throw nvae;
                }
            }
            else {
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 4, 0, this.input);

                throw nvae;
            }
            switch (alt4) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:78:4: {...}? => '&#' ( '0' .. '9' )+ ';'
                    if ( !(( this.inQuotStr | this.inAposStr )) ) {
                        throw new org.antlr.runtime.FailedPredicateException(this.input, "L_CharRef", " this.inQuotStr | this.inAposStr ");
                    }
                    this.match("&#"); 

                    // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:78:49: ( '0' .. '9' )+
                    var cnt2=0;
                    loop2:
                    do {
                        var alt2=2;
                        var LA2_0 = this.input.LA(1);

                        if ( ((LA2_0>='0' && LA2_0<='9')) ) {
                            alt2=1;
                        }


                        switch (alt2) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:78:49: '0' .. '9'
                            this.matchRange('0','9'); 


                            break;

                        default :
                            if ( cnt2 >= 1 ) {
                                break loop2;
                            }
                                var eee = new org.antlr.runtime.EarlyExitException(2, this.input);
                                throw eee;
                        }
                        cnt2++;
                    } while (true);

                    this.match(';'); 


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:78:65: '&#x' ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )+ ';'
                    this.match("&#x"); 

                    // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:78:71: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )+
                    var cnt3=0;
                    loop3:
                    do {
                        var alt3=2;
                        var LA3_0 = this.input.LA(1);

                        if ( ((LA3_0>='0' && LA3_0<='9')||(LA3_0>='A' && LA3_0<='F')||(LA3_0>='a' && LA3_0<='f')) ) {
                            alt3=1;
                        }


                        switch (alt3) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:
                            if ( (this.input.LA(1)>='0' && this.input.LA(1)<='9')||(this.input.LA(1)>='A' && this.input.LA(1)<='F')||(this.input.LA(1)>='a' && this.input.LA(1)<='f') ) {
                                this.input.consume();

                            }
                            else {
                                var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
                                this.recover(mse);
                                throw mse;}



                            break;

                        default :
                            if ( cnt3 >= 1 ) {
                                break loop3;
                            }
                                var eee = new org.antlr.runtime.EarlyExitException(3, this.input);
                                throw eee;
                        }
                        cnt3++;
                    } while (true);

                    this.match(';'); 


                    break;

            }
            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "L_CharRef",

    // $ANTLR start L_QuotStringLiteralChar
    mL_QuotStringLiteralChar: function()  {
        try {
            var _type = this.L_QuotStringLiteralChar;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:82:2: ({...}? => ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' .. '\\u0021' | '\\u0023' .. '\\u0025' | '\\u0027' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+ )
            // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:82:4: {...}? => ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' .. '\\u0021' | '\\u0023' .. '\\u0025' | '\\u0027' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+
            if ( !(( this.inQuotStr )) ) {
                throw new org.antlr.runtime.FailedPredicateException(this.input, "L_QuotStringLiteralChar", " this.inQuotStr ");
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:83:3: ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' .. '\\u0021' | '\\u0023' .. '\\u0025' | '\\u0027' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+
            var cnt5=0;
            loop5:
            do {
                var alt5=2;
                var LA5_0 = this.input.LA(1);

                if ( ((LA5_0>='\t' && LA5_0<='\n')||LA5_0=='\r'||(LA5_0>=' ' && LA5_0<='!')||(LA5_0>='#' && LA5_0<='%')||(LA5_0>='\'' && LA5_0<='\uD7FF')||(LA5_0>='\uE000' && LA5_0<='\uFFFD')) ) {
                    alt5=1;
                }


                switch (alt5) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:
                    if ( (this.input.LA(1)>='\t' && this.input.LA(1)<='\n')||this.input.LA(1)=='\r'||(this.input.LA(1)>=' ' && this.input.LA(1)<='!')||(this.input.LA(1)>='#' && this.input.LA(1)<='%')||(this.input.LA(1)>='\'' && this.input.LA(1)<='\uD7FF')||(this.input.LA(1)>='\uE000' && this.input.LA(1)<='\uFFFD') ) {
                        this.input.consume();

                    }
                    else {
                        var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
                        this.recover(mse);
                        throw mse;}



                    break;

                default :
                    if ( cnt5 >= 1 ) {
                        break loop5;
                    }
                        var eee = new org.antlr.runtime.EarlyExitException(5, this.input);
                        throw eee;
                }
                cnt5++;
            } while (true);




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "L_QuotStringLiteralChar",

    // $ANTLR start L_AposStringLiteralChar
    mL_AposStringLiteralChar: function()  {
        try {
            var _type = this.L_AposStringLiteralChar;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:88:2: ({...}? => ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' .. '\\u0025' | '\\u0028' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+ )
            // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:88:4: {...}? => ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' .. '\\u0025' | '\\u0028' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+
            if ( !(( this.inAposStr )) ) {
                throw new org.antlr.runtime.FailedPredicateException(this.input, "L_AposStringLiteralChar", " this.inAposStr ");
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:89:3: ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' .. '\\u0025' | '\\u0028' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+
            var cnt6=0;
            loop6:
            do {
                var alt6=2;
                var LA6_0 = this.input.LA(1);

                if ( ((LA6_0>='\t' && LA6_0<='\n')||LA6_0=='\r'||(LA6_0>=' ' && LA6_0<='%')||(LA6_0>='(' && LA6_0<='\uD7FF')||(LA6_0>='\uE000' && LA6_0<='\uFFFD')) ) {
                    alt6=1;
                }


                switch (alt6) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:
                    if ( (this.input.LA(1)>='\t' && this.input.LA(1)<='\n')||this.input.LA(1)=='\r'||(this.input.LA(1)>=' ' && this.input.LA(1)<='%')||(this.input.LA(1)>='(' && this.input.LA(1)<='\uD7FF')||(this.input.LA(1)>='\uE000' && this.input.LA(1)<='\uFFFD') ) {
                        this.input.consume();

                    }
                    else {
                        var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
                        this.recover(mse);
                        throw mse;}



                    break;

                default :
                    if ( cnt6 >= 1 ) {
                        break loop6;
                    }
                        var eee = new org.antlr.runtime.EarlyExitException(6, this.input);
                        throw eee;
                }
                cnt6++;
            } while (true);




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "L_AposStringLiteralChar",

    // $ANTLR start L_AnyChar
    mL_AnyChar: function()  {
        try {
            var _type = this.L_AnyChar;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:98:5: ({...}? => ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' .. '\\u0025' | '\\u0027' .. '\\u003B' | '\\u003D' .. '\\u007A' | '\\u007C' | '\\u007E' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+ )
            // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:98:9: {...}? => ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' .. '\\u0025' | '\\u0027' .. '\\u003B' | '\\u003D' .. '\\u007A' | '\\u007C' | '\\u007E' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+
            if ( !(( !this.inQuotStr && !this.inAposStr )) ) {
                throw new org.antlr.runtime.FailedPredicateException(this.input, "L_AnyChar", " !this.inQuotStr && !this.inAposStr ");
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:99:9: ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' .. '\\u0025' | '\\u0027' .. '\\u003B' | '\\u003D' .. '\\u007A' | '\\u007C' | '\\u007E' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+
            var cnt7=0;
            loop7:
            do {
                var alt7=2;
                var LA7_0 = this.input.LA(1);

                if ( ((LA7_0>='\t' && LA7_0<='\n')||LA7_0=='\r'||(LA7_0>=' ' && LA7_0<='%')||(LA7_0>='\'' && LA7_0<=';')||(LA7_0>='=' && LA7_0<='z')||LA7_0=='|'||(LA7_0>='~' && LA7_0<='\uD7FF')||(LA7_0>='\uE000' && LA7_0<='\uFFFD')) ) {
                    alt7=1;
                }


                switch (alt7) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:
                    if ( (this.input.LA(1)>='\t' && this.input.LA(1)<='\n')||this.input.LA(1)=='\r'||(this.input.LA(1)>=' ' && this.input.LA(1)<='%')||(this.input.LA(1)>='\'' && this.input.LA(1)<=';')||(this.input.LA(1)>='=' && this.input.LA(1)<='z')||this.input.LA(1)=='|'||(this.input.LA(1)>='~' && this.input.LA(1)<='\uD7FF')||(this.input.LA(1)>='\uE000' && this.input.LA(1)<='\uFFFD') ) {
                        this.input.consume();

                    }
                    else {
                        var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
                        this.recover(mse);
                        throw mse;}



                    break;

                default :
                    if ( cnt7 >= 1 ) {
                        break loop7;
                    }
                        var eee = new org.antlr.runtime.EarlyExitException(7, this.input);
                        throw eee;
                }
                cnt7++;
            } while (true);




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "L_AnyChar",

    mTokens: function() {
        // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:1:8: ( QUOT | APOS | ESCAPE_QUOT | ESCAPE_APOS | L_PredefinedEntityRef | L_CharRef | L_QuotStringLiteralChar | L_AposStringLiteralChar | L_AnyChar )
        var alt8=9;
        alt8 = this.dfa8.predict(this.input);
        switch (alt8) {
            case 1 :
                // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:1:10: QUOT
                this.mQUOT(); 


                break;
            case 2 :
                // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:1:15: APOS
                this.mAPOS(); 


                break;
            case 3 :
                // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:1:20: ESCAPE_QUOT
                this.mESCAPE_QUOT(); 


                break;
            case 4 :
                // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:1:32: ESCAPE_APOS
                this.mESCAPE_APOS(); 


                break;
            case 5 :
                // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:1:44: L_PredefinedEntityRef
                this.mL_PredefinedEntityRef(); 


                break;
            case 6 :
                // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:1:66: L_CharRef
                this.mL_CharRef(); 


                break;
            case 7 :
                // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:1:76: L_QuotStringLiteralChar
                this.mL_QuotStringLiteralChar(); 


                break;
            case 8 :
                // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:1:100: L_AposStringLiteralChar
                this.mL_AposStringLiteralChar(); 


                break;
            case 9 :
                // /Users/wcandillon/28msec/xquery.js/xquery/StringLexer.g:1:124: L_AnyChar
                this.mL_AnyChar(); 


                break;

        }

    }

}, true); // important to pass true to overwrite default implementations

org.antlr.lang.augmentObject(StringLexer, {
    DFA8_eotS:
        "\u0001\uffff\u0001\u0007\u0001\u000c\u0001\uffff\u0001\u0011\u0001"+
    "\u0012\u0001\u0013\u0001\uffff\u0001\u0015\u0002\uffff\u0001\u0016\u0001"+
    "\uffff\u0001\u0018\u000d\uffff",
    DFA8_eofS:
        "\u001b\uffff",
    DFA8_minS:
        "\u0003\u0009\u0001\u0023\u0003\u0009\u0001\u0000\u0001\u0009\u0002"+
    "\uffff\u0001\u0009\u0001\u0000\u0001\u0009\u0003\uffff\u0003\u0000\u0001"+
    "\uffff\u0002\u0000\u0001\uffff\u0001\u0000\u0002\uffff",
    DFA8_maxS:
        "\u0003\ufffd\u0001\u0071\u0003\ufffd\u0001\u0000\u0001\ufffd\u0002"+
    "\uffff\u0001\ufffd\u0001\u0000\u0001\ufffd\u0003\uffff\u0003\u0000\u0001"+
    "\uffff\u0002\u0000\u0001\uffff\u0001\u0000\u0002\uffff",
    DFA8_acceptS:
        "\u0009\uffff\u0001\u0008\u0001\u0009\u0003\uffff\u0001\u0007\u0001"+
    "\u0006\u0001\u0005\u0003\uffff\u0001\u0001\u0002\uffff\u0001\u0002\u0001"+
    "\uffff\u0001\u0003\u0001\u0004",
    DFA8_specialS:
        "\u0001\u0007\u0001\u000e\u0001\u0000\u0001\u0004\u0001\u0011\u0001"+
    "\u000a\u0001\u0005\u0001\u0009\u0001\u0010\u0002\uffff\u0001\u000f\u0001"+
    "\u0008\u0001\u0006\u0003\uffff\u0001\u000d\u0001\u0003\u0001\u000b\u0001"+
    "\uffff\u0001\u0001\u0001\u000c\u0001\uffff\u0001\u0002\u0002\uffff}>",
    DFA8_transitionS: [
            "\u0002\u0004\u0002\uffff\u0001\u0004\u0012\uffff\u0002\u0004"+
            "\u0001\u0001\u0003\u0004\u0001\u0003\u0001\u0002\u0014\u0004"+
            "\u0001\u0005\u003e\u0004\u0001\u0005\u0001\u0004\u0001\u0005"+
            "\ud782\u0004\u0800\uffff\u1ffe\u0004",
            "\u0002\u0008\u0002\uffff\u0001\u0008\u0012\uffff\u0002\u0008"+
            "\u0001\u0006\u0003\u0008\u0001\uffff\u0001\u000a\u0014\u0008"+
            "\u0001\u0009\u003e\u0008\u0001\u0009\u0001\u0008\u0001\u0009"+
            "\ud782\u0008\u0800\uffff\u1ffe\u0008",
            "\u0002\u000d\u0002\uffff\u0001\u000d\u0012\uffff\u0002\u000d"+
            "\u0001\u000a\u0003\u000d\u0001\uffff\u0001\u000b\u0014\u000d"+
            "\u0001\u000e\u003e\u000d\u0001\u000e\u0001\u000d\u0001\u000e"+
            "\ud782\u000d\u0800\uffff\u1ffe\u000d",
            "\u0001\u000f\u003d\uffff\u0001\u0010\u0005\uffff\u0001\u0010"+
            "\u0004\uffff\u0001\u0010\u0004\uffff\u0001\u0010",
            "\u0002\u0004\u0002\uffff\u0001\u0004\u0012\uffff\u0002\u0004"+
            "\u0001\u0008\u0003\u0004\u0001\uffff\u0001\u000d\u0014\u0004"+
            "\u0001\u0005\u003e\u0004\u0001\u0005\u0001\u0004\u0001\u0005"+
            "\ud782\u0004\u0800\uffff\u1ffe\u0004",
            "\u0002\u0005\u0002\uffff\u0001\u0005\u0012\uffff\u0002\u0005"+
            "\u0001\u0009\u0003\u0005\u0001\uffff\u0001\u000e\ud7d8\u0005"+
            "\u0800\uffff\u1ffe\u0005",
            "\u0002\u0008\u0002\uffff\u0001\u0008\u0012\uffff\u0006\u0008"+
            "\u0001\uffff\u0001\u000a\u0014\u0008\u0001\u0009\u003e\u0008"+
            "\u0001\u0009\u0001\u0008\u0001\u0009\ud782\u0008\u0800\uffff"+
            "\u1ffe\u0008",
            "\u0001\uffff",
            "\u0002\u0008\u0002\uffff\u0001\u0008\u0012\uffff\u0006\u0008"+
            "\u0001\uffff\u0001\u000a\u0014\u0008\u0001\u0009\u003e\u0008"+
            "\u0001\u0009\u0001\u0008\u0001\u0009\ud782\u0008\u0800\uffff"+
            "\u1ffe\u0008",
            "",
            "",
            "\u0002\u000d\u0002\uffff\u0001\u000d\u0012\uffff\u0002\u000d"+
            "\u0001\u000a\u0003\u000d\u0001\uffff\u0015\u000d\u0001\u000e"+
            "\u003e\u000d\u0001\u000e\u0001\u000d\u0001\u000e\ud782\u000d"+
            "\u0800\uffff\u1ffe\u000d",
            "\u0001\uffff",
            "\u0002\u000d\u0002\uffff\u0001\u000d\u0012\uffff\u0002\u000d"+
            "\u0001\u000a\u0003\u000d\u0001\uffff\u0015\u000d\u0001\u000e"+
            "\u003e\u000d\u0001\u000e\u0001\u000d\u0001\u000e\ud782\u000d"+
            "\u0800\uffff\u1ffe\u000d",
            "",
            "",
            "",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "",
            "\u0001\uffff",
            "\u0001\uffff",
            "",
            "\u0001\uffff",
            "",
            ""
    ]
});

org.antlr.lang.augmentObject(StringLexer, {
    DFA8_eot:
        org.antlr.runtime.DFA.unpackEncodedString(StringLexer.DFA8_eotS),
    DFA8_eof:
        org.antlr.runtime.DFA.unpackEncodedString(StringLexer.DFA8_eofS),
    DFA8_min:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(StringLexer.DFA8_minS),
    DFA8_max:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(StringLexer.DFA8_maxS),
    DFA8_accept:
        org.antlr.runtime.DFA.unpackEncodedString(StringLexer.DFA8_acceptS),
    DFA8_special:
        org.antlr.runtime.DFA.unpackEncodedString(StringLexer.DFA8_specialS),
    DFA8_transition: (function() {
        var a = [],
            i,
            numStates = StringLexer.DFA8_transitionS.length;
        for (i=0; i<numStates; i++) {
            a.push(org.antlr.runtime.DFA.unpackEncodedString(StringLexer.DFA8_transitionS[i]));
        }
        return a;
    })()
});

StringLexer.DFA8 = function(recognizer) {
    this.recognizer = recognizer;
    this.decisionNumber = 8;
    this.eot = StringLexer.DFA8_eot;
    this.eof = StringLexer.DFA8_eof;
    this.min = StringLexer.DFA8_min;
    this.max = StringLexer.DFA8_max;
    this.accept = StringLexer.DFA8_accept;
    this.special = StringLexer.DFA8_special;
    this.transition = StringLexer.DFA8_transition;
};

org.antlr.lang.extend(StringLexer.DFA8, org.antlr.runtime.DFA, {
    getDescription: function() {
        return "1:1: Tokens : ( QUOT | APOS | ESCAPE_QUOT | ESCAPE_APOS | L_PredefinedEntityRef | L_CharRef | L_QuotStringLiteralChar | L_AposStringLiteralChar | L_AnyChar );";
    },
    specialStateTransition: function(s, input) {
        var _s = s;
        var retval = (function(s, input) {
            switch ( s ) {
                        case 0 : 
                            var LA8_2 = input.LA(1);

                             
                            var index8_2 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA8_2=='\'') && ((( this.inAposStr )||( this.inQuotStr )||( !this.inQuotStr && !this.inAposStr )))) {s = 11;}

                            else if ( ((LA8_2>='\t' && LA8_2<='\n')||LA8_2=='\r'||(LA8_2>=' ' && LA8_2<='!')||(LA8_2>='#' && LA8_2<='%')||(LA8_2>='(' && LA8_2<=';')||(LA8_2>='=' && LA8_2<='z')||LA8_2=='|'||(LA8_2>='~' && LA8_2<='\uD7FF')||(LA8_2>='\uE000' && LA8_2<='\uFFFD')) && ((( this.inQuotStr )||( !this.inQuotStr && !this.inAposStr )))) {s = 13;}

                            else if ( (LA8_2=='<'||LA8_2=='{'||LA8_2=='}') && (( this.inQuotStr ))) {s = 14;}

                            else if ( (LA8_2=='\"') && (( !this.inQuotStr && !this.inAposStr ))) {s = 10;}

                            else s = 12;

                             
                            input.seek(index8_2);
                            if ( s>=0 ) return s;
                            break;
                        case 1 : 
                            var LA8_21 = input.LA(1);

                             
                            var index8_21 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (( this.inAposStr )) ) {s = 9;}

                            else if ( (( !this.inQuotStr && !this.inAposStr )) ) {s = 10;}

                             
                            input.seek(index8_21);
                            if ( s>=0 ) return s;
                            break;
                        case 2 : 
                            var LA8_24 = input.LA(1);

                             
                            var index8_24 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (( this.inQuotStr )) ) {s = 14;}

                            else if ( (( !this.inQuotStr && !this.inAposStr )) ) {s = 10;}

                             
                            input.seek(index8_24);
                            if ( s>=0 ) return s;
                            break;
                        case 3 : 
                            var LA8_18 = input.LA(1);

                             
                            var index8_18 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (( this.inQuotStr )) ) {s = 14;}

                            else if ( (( this.inAposStr )) ) {s = 9;}

                             
                            input.seek(index8_18);
                            if ( s>=0 ) return s;
                            break;
                        case 4 : 
                            var LA8_3 = input.LA(1);

                             
                            var index8_3 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA8_3=='#') ) {s = 15;}

                            else if ( (LA8_3=='a'||LA8_3=='g'||LA8_3=='l'||LA8_3=='q') && (( this.inQuotStr | this.inAposStr ))) {s = 16;}

                             
                            input.seek(index8_3);
                            if ( s>=0 ) return s;
                            break;
                        case 5 : 
                            var LA8_6 = input.LA(1);

                             
                            var index8_6 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((LA8_6>='\t' && LA8_6<='\n')||LA8_6=='\r'||(LA8_6>=' ' && LA8_6<='%')||(LA8_6>='(' && LA8_6<=';')||(LA8_6>='=' && LA8_6<='z')||LA8_6=='|'||(LA8_6>='~' && LA8_6<='\uD7FF')||(LA8_6>='\uE000' && LA8_6<='\uFFFD')) && ((( this.inAposStr )||( !this.inQuotStr && !this.inAposStr )))) {s = 8;}

                            else if ( (LA8_6=='<'||LA8_6=='{'||LA8_6=='}') && (( this.inAposStr ))) {s = 9;}

                            else if ( (LA8_6=='\'') && (( !this.inQuotStr && !this.inAposStr ))) {s = 10;}

                            else s = 19;

                             
                            input.seek(index8_6);
                            if ( s>=0 ) return s;
                            break;
                        case 6 : 
                            var LA8_13 = input.LA(1);

                             
                            var index8_13 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((LA8_13>='\t' && LA8_13<='\n')||LA8_13=='\r'||(LA8_13>=' ' && LA8_13<='!')||(LA8_13>='#' && LA8_13<='%')||(LA8_13>='\'' && LA8_13<=';')||(LA8_13>='=' && LA8_13<='z')||LA8_13=='|'||(LA8_13>='~' && LA8_13<='\uD7FF')||(LA8_13>='\uE000' && LA8_13<='\uFFFD')) && ((( this.inQuotStr )||( !this.inQuotStr && !this.inAposStr )))) {s = 13;}

                            else if ( (LA8_13=='<'||LA8_13=='{'||LA8_13=='}') && (( this.inQuotStr ))) {s = 14;}

                            else if ( (LA8_13=='\"') && (( !this.inQuotStr && !this.inAposStr ))) {s = 10;}

                            else s = 24;

                             
                            input.seek(index8_13);
                            if ( s>=0 ) return s;
                            break;
                        case 7 : 
                            var LA8_0 = input.LA(1);

                             
                            var index8_0 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA8_0=='\"') && ((( this.inAposStr )||( this.inQuotStr )||( !this.inQuotStr && !this.inAposStr )))) {s = 1;}

                            else if ( (LA8_0=='\'') && ((( this.inAposStr )||( this.inQuotStr )||( !this.inQuotStr && !this.inAposStr )))) {s = 2;}

                            else if ( (LA8_0=='&') ) {s = 3;}

                            else if ( ((LA8_0>='\t' && LA8_0<='\n')||LA8_0=='\r'||(LA8_0>=' ' && LA8_0<='!')||(LA8_0>='#' && LA8_0<='%')||(LA8_0>='(' && LA8_0<=';')||(LA8_0>='=' && LA8_0<='z')||LA8_0=='|'||(LA8_0>='~' && LA8_0<='\uD7FF')||(LA8_0>='\uE000' && LA8_0<='\uFFFD')) && ((( this.inAposStr )||( this.inQuotStr )||( !this.inQuotStr && !this.inAposStr )))) {s = 4;}

                            else if ( (LA8_0=='<'||LA8_0=='{'||LA8_0=='}') && ((( this.inAposStr )||( this.inQuotStr )))) {s = 5;}

                             
                            input.seek(index8_0);
                            if ( s>=0 ) return s;
                            break;
                        case 8 : 
                            var LA8_12 = input.LA(1);

                             
                            var index8_12 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (( this.inAposStr )) ) {s = 23;}

                            else if ( (( this.inQuotStr )) ) {s = 14;}

                            else if ( (( !this.inQuotStr && !this.inAposStr )) ) {s = 10;}

                             
                            input.seek(index8_12);
                            if ( s>=0 ) return s;
                            break;
                        case 9 : 
                            var LA8_7 = input.LA(1);

                             
                            var index8_7 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (( this.inQuotStr )) ) {s = 20;}

                            else if ( (( this.inAposStr )) ) {s = 9;}

                            else if ( (( !this.inQuotStr && !this.inAposStr )) ) {s = 10;}

                             
                            input.seek(index8_7);
                            if ( s>=0 ) return s;
                            break;
                        case 10 : 
                            var LA8_5 = input.LA(1);

                             
                            var index8_5 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((LA8_5>='\t' && LA8_5<='\n')||LA8_5=='\r'||(LA8_5>=' ' && LA8_5<='!')||(LA8_5>='#' && LA8_5<='%')||(LA8_5>='(' && LA8_5<='\uD7FF')||(LA8_5>='\uE000' && LA8_5<='\uFFFD')) && ((( this.inAposStr )||( this.inQuotStr )))) {s = 5;}

                            else if ( (LA8_5=='\'') && (( this.inQuotStr ))) {s = 14;}

                            else if ( (LA8_5=='\"') && (( this.inAposStr ))) {s = 9;}

                            else s = 18;

                             
                            input.seek(index8_5);
                            if ( s>=0 ) return s;
                            break;
                        case 11 : 
                            var LA8_19 = input.LA(1);

                             
                            var index8_19 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (( this.inQuotStr )) ) {s = 25;}

                            else if ( (( this.inAposStr )) ) {s = 9;}

                            else if ( (( !this.inQuotStr && !this.inAposStr )) ) {s = 10;}

                             
                            input.seek(index8_19);
                            if ( s>=0 ) return s;
                            break;
                        case 12 : 
                            var LA8_22 = input.LA(1);

                             
                            var index8_22 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (( this.inAposStr )) ) {s = 26;}

                            else if ( (( this.inQuotStr )) ) {s = 14;}

                            else if ( (( !this.inQuotStr && !this.inAposStr )) ) {s = 10;}

                             
                            input.seek(index8_22);
                            if ( s>=0 ) return s;
                            break;
                        case 13 : 
                            var LA8_17 = input.LA(1);

                             
                            var index8_17 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (( this.inQuotStr )) ) {s = 14;}

                            else if ( (( this.inAposStr )) ) {s = 9;}

                            else if ( (( !this.inQuotStr && !this.inAposStr )) ) {s = 10;}

                             
                            input.seek(index8_17);
                            if ( s>=0 ) return s;
                            break;
                        case 14 : 
                            var LA8_1 = input.LA(1);

                             
                            var index8_1 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA8_1=='\"') && ((( this.inAposStr )||( this.inQuotStr )||( !this.inQuotStr && !this.inAposStr )))) {s = 6;}

                            else if ( ((LA8_1>='\t' && LA8_1<='\n')||LA8_1=='\r'||(LA8_1>=' ' && LA8_1<='!')||(LA8_1>='#' && LA8_1<='%')||(LA8_1>='(' && LA8_1<=';')||(LA8_1>='=' && LA8_1<='z')||LA8_1=='|'||(LA8_1>='~' && LA8_1<='\uD7FF')||(LA8_1>='\uE000' && LA8_1<='\uFFFD')) && ((( this.inAposStr )||( !this.inQuotStr && !this.inAposStr )))) {s = 8;}

                            else if ( (LA8_1=='<'||LA8_1=='{'||LA8_1=='}') && (( this.inAposStr ))) {s = 9;}

                            else if ( (LA8_1=='\'') && (( !this.inQuotStr && !this.inAposStr ))) {s = 10;}

                            else s = 7;

                             
                            input.seek(index8_1);
                            if ( s>=0 ) return s;
                            break;
                        case 15 : 
                            var LA8_11 = input.LA(1);

                             
                            var index8_11 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((LA8_11>='\t' && LA8_11<='\n')||LA8_11=='\r'||(LA8_11>=' ' && LA8_11<='!')||(LA8_11>='#' && LA8_11<='%')||(LA8_11>='\'' && LA8_11<=';')||(LA8_11>='=' && LA8_11<='z')||LA8_11=='|'||(LA8_11>='~' && LA8_11<='\uD7FF')||(LA8_11>='\uE000' && LA8_11<='\uFFFD')) && ((( this.inQuotStr )||( !this.inQuotStr && !this.inAposStr )))) {s = 13;}

                            else if ( (LA8_11=='<'||LA8_11=='{'||LA8_11=='}') && (( this.inQuotStr ))) {s = 14;}

                            else if ( (LA8_11=='\"') && (( !this.inQuotStr && !this.inAposStr ))) {s = 10;}

                            else s = 22;

                             
                            input.seek(index8_11);
                            if ( s>=0 ) return s;
                            break;
                        case 16 : 
                            var LA8_8 = input.LA(1);

                             
                            var index8_8 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((LA8_8>='\t' && LA8_8<='\n')||LA8_8=='\r'||(LA8_8>=' ' && LA8_8<='%')||(LA8_8>='(' && LA8_8<=';')||(LA8_8>='=' && LA8_8<='z')||LA8_8=='|'||(LA8_8>='~' && LA8_8<='\uD7FF')||(LA8_8>='\uE000' && LA8_8<='\uFFFD')) && ((( this.inAposStr )||( !this.inQuotStr && !this.inAposStr )))) {s = 8;}

                            else if ( (LA8_8=='<'||LA8_8=='{'||LA8_8=='}') && (( this.inAposStr ))) {s = 9;}

                            else if ( (LA8_8=='\'') && (( !this.inQuotStr && !this.inAposStr ))) {s = 10;}

                            else s = 21;

                             
                            input.seek(index8_8);
                            if ( s>=0 ) return s;
                            break;
                        case 17 : 
                            var LA8_4 = input.LA(1);

                             
                            var index8_4 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((LA8_4>='\t' && LA8_4<='\n')||LA8_4=='\r'||(LA8_4>=' ' && LA8_4<='!')||(LA8_4>='#' && LA8_4<='%')||(LA8_4>='(' && LA8_4<=';')||(LA8_4>='=' && LA8_4<='z')||LA8_4=='|'||(LA8_4>='~' && LA8_4<='\uD7FF')||(LA8_4>='\uE000' && LA8_4<='\uFFFD')) && ((( this.inAposStr )||( this.inQuotStr )||( !this.inQuotStr && !this.inAposStr )))) {s = 4;}

                            else if ( (LA8_4=='\'') && ((( this.inQuotStr )||( !this.inQuotStr && !this.inAposStr )))) {s = 13;}

                            else if ( (LA8_4=='\"') && ((( this.inAposStr )||( !this.inQuotStr && !this.inAposStr )))) {s = 8;}

                            else if ( (LA8_4=='<'||LA8_4=='{'||LA8_4=='}') && ((( this.inAposStr )||( this.inQuotStr )))) {s = 5;}

                            else s = 17;

                             
                            input.seek(index8_4);
                            if ( s>=0 ) return s;
                            break;
            }
        }).call(this.recognizer, s, input);
        if (!org.antlr.lang.isUndefined(retval)) {
            return retval;
        }
        var nvae =
            new org.antlr.runtime.NoViableAltException(this.getDescription(), 8, _s, input);
        this.error(nvae);
        throw nvae;
    },
    dummy: null
});
 
})();
exports.StringLexer = StringLexer; });
define('ace/mode/xquery/XMLLexer', ['require', 'exports', 'module' , 'ace/mode/xquery/antlr3-all', 'ace/mode/xquery/XQDTLexer'], function(require, exports, module) {// $ANTLR 3.3 Nov 30, 2010 12:50:56 /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g 2012-09-05 10:41:40

/* ***** BEGIN LICENSE BLOCK *****
 * Distributed under the BSD license:
 *
 * Copyright (c) 2010, Ajax.org B.V.
 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in the
 *       documentation and/or other materials provided with the distribution.
 *     * Neither the name of Ajax.org B.V. nor the
 *       names of its contributors may be used to endorse or promote products
 *       derived from this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * ***** END LICENSE BLOCK ***** */
var org =  require("./antlr3-all").org;
var XQDTLexer   = require("./XQDTLexer").XQDTLexer;


var XMLLexer = function(input, state) {
// alternate constructor @todo
// public XMLLexer(CharStream input)
// public XMLLexer(CharStream input, RecognizerSharedState state) {
    if (!state) {
        state = new org.antlr.runtime.RecognizerSharedState();
    }

    (function(){


        this.inElem = true;
        this.inAposAttr = false;
        this.inQuotAttr = false;

        this.isInElement = function()
        {
           return this.inElem;
        }

        this.isInAposAttribute = function()
        {
           return this.inAposAttr;
        }

        this.isInQuotAttr = function()
        {
           return this.inQuotAttr;
        }
            
        this.addToStack = function(stack) {
        	if (!this.inAposAttr && !this.inQuotAttr)
        		this.inElem = false;
        	stack.push(this);
        } 


        // dummy list for warning elimination
        //List<Stack<Object>> dummy = new ArrayList<Stack<Object>>();

        // when we start, the '<' has already been eaten by the other lexer
        //boolean inElem = true;
        //boolean inAposAttr = false;
        //boolean inQuotAttr = false;
        //
        //public boolean isInElement()
        //{
        //   return inElem;
        //}
        //
        //public boolean isInAposAttribute()
        //{
        //   return inAposAttr;
        //}
        //
        //public boolean isInQuotAttr()
        //{
        //   return inQuotAttr;
        //}
        //    
        //@Override
        //public void addToStack(List<XQDTLexer> stack) {
        //	if (!inAposAttr && !inQuotAttr)
        //		inElem = false;
        //	stack.add(this);
        //} 
        //
        //private boolean log() {
        //	System.out.println("inApos:\t" + inAposAttr);
        //	System.out.println("inQuot:\t" + inQuotAttr);
        //	System.out.println("inElem:\t" + inElem);
        //	System.out.println("---------------------");
        //	return false;
        //}


    }).call(this);

    this.dfa16 = new XMLLexer.DFA16(this);
    XMLLexer.superclass.constructor.call(this, input, state);


};

org.antlr.lang.augmentObject(XMLLexer, {
    EOF: -1,
    L_QuotAttrContentChar: 4,
    L_AposAttrContentChar: 5,
    L_ElementContentChar: 6,
    L_CDataSection: 7,
    L_PredefinedEntityRef: 8,
    L_CharRef: 9,
    ESCAPE_LBRACKET: 10,
    ESCAPE_RBRACKET: 11,
    ESCAPE_APOS: 12,
    ESCAPE_QUOT: 13,
    CDATA_START: 14,
    CDATA_END: 15,
    ANCESTOR: 16,
    ANCESTOR_OR_SELF: 17,
    AND: 18,
    AS: 19,
    ASCENDING: 20,
    AT: 21,
    ATTRIBUTE: 22,
    BASE_URI: 23,
    BOUNDARY_SPACE: 24,
    BY: 25,
    CASE: 26,
    CAST: 27,
    CASTABLE: 28,
    CHILD: 29,
    COLLATION: 30,
    COMMENT: 31,
    CONSTRUCTION: 32,
    COPY_NAMESPACES: 33,
    DECLARE: 34,
    DEFAULT: 35,
    DESCENDANT: 36,
    DESCENDANT_OR_SELF: 37,
    DESCENDING: 38,
    DIV: 39,
    DOCUMENT: 40,
    DOCUMENT_NODE: 41,
    ELEMENT: 42,
    ELSE: 43,
    EMPTY: 44,
    EMPTY_SEQUENCE: 45,
    ENCODING: 46,
    EQ: 47,
    EVERY: 48,
    EXCEPT: 49,
    EXTERNAL: 50,
    FOLLOWING: 51,
    FOLLOWING_SIBLING: 52,
    FOR: 53,
    FUNCTION: 54,
    GE: 55,
    GREATEST: 56,
    GT: 57,
    IDIV: 58,
    IF: 59,
    IMPORT: 60,
    IN: 61,
    INHERIT: 62,
    INSTANCE: 63,
    INTERSECT: 64,
    IS: 65,
    ITEM: 66,
    LAX: 67,
    LE: 68,
    LEAST: 69,
    LET: 70,
    LT: 71,
    MOD: 72,
    MODULE: 73,
    NAMESPACE: 74,
    NE: 75,
    NO_INHERIT: 76,
    NO_PRESERVE: 77,
    NODE: 78,
    JSON: 79,
    OF: 80,
    OPTION: 81,
    OR: 82,
    ORDER: 83,
    ORDERED: 84,
    ORDERING: 85,
    PARENT: 86,
    PRECEDING: 87,
    PRECEDING_SIBLING: 88,
    PRESERVE: 89,
    PROCESSING_INSTRUCTION: 90,
    STRUCTURED_ITEM: 91,
    JSON_ITEM: 92,
    OBJECT: 93,
    ARRAY: 94,
    RETURN: 95,
    SATISFIES: 96,
    SCHEMA: 97,
    SCHEMA_ATTRIBUTE: 98,
    SCHEMA_ELEMENT: 99,
    SELF: 100,
    SOME: 101,
    STABLE: 102,
    STRICT: 103,
    STRIP: 104,
    TEXT: 105,
    THEN: 106,
    TO: 107,
    TREAT: 108,
    TYPESWITCH: 109,
    UNION: 110,
    UNORDERED: 111,
    VALIDATE: 112,
    VARIABLE: 113,
    VERSION: 114,
    WHERE: 115,
    XQUERY: 116,
    ALLOWING: 117,
    CATCH: 118,
    CONTEXT: 119,
    COUNT: 120,
    DECIMAL_FORMAT: 121,
    DECIMAL_SEPARATOR: 122,
    DIGIT: 123,
    END: 124,
    GROUP: 125,
    GROUPING_SEPARATOR: 126,
    INFINITY: 127,
    MINUS_SIGN: 128,
    NAMESPACE_NODE: 129,
    NAN: 130,
    NEXT: 131,
    ONLY: 132,
    PATTERN_SEPARATOR: 133,
    PERCENT: 134,
    PER_MILLE: 135,
    PREVIOUS: 136,
    SLIDING: 137,
    START: 138,
    SWITCH: 139,
    TRY: 140,
    TUMBLING: 141,
    TYPE: 142,
    WHEN: 143,
    WINDOW: 144,
    ZERO_DIGIT: 145,
    AFTER: 146,
    BEFORE: 147,
    COPY: 148,
    DELETE: 149,
    FIRST: 150,
    INSERT: 151,
    INTO: 152,
    POSITION: 153,
    APPEND: 154,
    LAST: 155,
    MODIFY: 156,
    NODES: 157,
    RENAME: 158,
    REPLACE: 159,
    REVALIDATION: 160,
    SKIP: 161,
    UPDATING: 162,
    VALUE: 163,
    WITH: 164,
    ALL: 165,
    ANY: 166,
    CONTAINS: 167,
    CONTENT: 168,
    DIACRITICS: 169,
    DIFFERENT: 170,
    DISTANCE: 171,
    ENTIRE: 172,
    EXACTLY: 173,
    FROM: 174,
    FT_OPTION: 175,
    FTAND: 176,
    FTNOT: 177,
    FTOR: 178,
    INSENSITIVE: 179,
    LANGUAGE: 180,
    LEVELS: 181,
    LOWERCASE: 182,
    MOST: 183,
    NO: 184,
    NOT: 185,
    OCCURS: 186,
    PARAGRAPH: 187,
    PARAGRAPHS: 188,
    PHRASE: 189,
    RELATIONSHIP: 190,
    SAME: 191,
    SCORE: 192,
    SENSITIVE: 193,
    SENTENCE: 194,
    SENTENCES: 195,
    STEMMING: 196,
    STOP: 197,
    THESAURUS: 198,
    TIMES: 199,
    UPPERCASE: 200,
    USING: 201,
    WEIGHT: 202,
    WILDCARDS: 203,
    WITHOUT: 204,
    WORD: 205,
    WORDS: 206,
    BREAK: 207,
    CONTINUE: 208,
    EXIT: 209,
    LOOP: 210,
    RETURNING: 211,
    WHILE: 212,
    CHECK: 213,
    COLLECTION: 214,
    CONSTRAINT: 215,
    FOREACH: 216,
    FOREIGN: 217,
    INDEX: 218,
    INTEGRITY: 219,
    KEY: 220,
    ON: 221,
    UNIQUE: 222,
    AMP_ER: 223,
    APOS_ER: 224,
    QUOT_ER: 225,
    CONCAT: 226,
    LPAREN: 227,
    RPAREN: 228,
    DOLLAR: 229,
    L_UNION_BRACKET: 230,
    R_UNION_BRACKET: 231,
    LBRACKET: 232,
    RBRACKET: 233,
    LSQUARE: 234,
    RSQUARE: 235,
    EQUAL: 236,
    BIND: 237,
    NOTEQUAL: 238,
    ANN_PERCENT: 239,
    HASH: 240,
    AMP: 241,
    COMMA: 242,
    QUESTION: 243,
    STAR: 244,
    PLUS: 245,
    MINUS: 246,
    SMALLER: 247,
    GREATER: 248,
    SMALLEREQ: 249,
    GREATEREQ: 250,
    SMALLER_SMALLER: 251,
    GREATER_GREATER: 252,
    SLASH: 253,
    SLASH_SLASH: 254,
    BANG: 255,
    DOT: 256,
    DOT_DOT: 257,
    COLON: 258,
    COLON_COLON: 259,
    EMPTY_CLOSE_TAG: 260,
    CLOSE_TAG: 261,
    SEMICOLON: 262,
    VBAR: 263,
    PRAGMA_START: 264,
    PRAGMA_END: 265,
    XML_COMMENT_START: 266,
    XML_COMMENT_END: 267,
    PI_START: 268,
    PI_END: 269,
    ATTR_SIGN: 270,
    Q: 271,
    CHARREF_DEC: 272,
    CHARREF_HEX: 273,
    APOS: 274,
    QUOT: 275,
    NCNameStartChar: 276,
    NCNameChar: 277,
    L_NCName: 278,
    Letter: 279,
    HexLetter: 280,
    Digit: 281,
    Digits: 282,
    S: 283,
    SU: 284,
    L_Pragma: 285,
    L_DirCommentConstructor: 286,
    L_DirPIConstructor: 287,
    L_IntegerLiteral: 288,
    L_DecimalLiteral: 289,
    L_DoubleLiteral: 290,
    L_Comment: 291,
    L_AnyChar: 292,
    NCNameUnprotected: 293,
    XMLDigit: 294
});

(function(){
var HIDDEN = org.antlr.runtime.Token.HIDDEN_CHANNEL,
    EOF = org.antlr.runtime.Token.EOF;
org.antlr.lang.extend(XMLLexer, XQDTLexer, {
    EOF : -1,
    L_QuotAttrContentChar : 4,
    L_AposAttrContentChar : 5,
    L_ElementContentChar : 6,
    L_CDataSection : 7,
    L_PredefinedEntityRef : 8,
    L_CharRef : 9,
    ESCAPE_LBRACKET : 10,
    ESCAPE_RBRACKET : 11,
    ESCAPE_APOS : 12,
    ESCAPE_QUOT : 13,
    CDATA_START : 14,
    CDATA_END : 15,
    ANCESTOR : 16,
    ANCESTOR_OR_SELF : 17,
    AND : 18,
    AS : 19,
    ASCENDING : 20,
    AT : 21,
    ATTRIBUTE : 22,
    BASE_URI : 23,
    BOUNDARY_SPACE : 24,
    BY : 25,
    CASE : 26,
    CAST : 27,
    CASTABLE : 28,
    CHILD : 29,
    COLLATION : 30,
    COMMENT : 31,
    CONSTRUCTION : 32,
    COPY_NAMESPACES : 33,
    DECLARE : 34,
    DEFAULT : 35,
    DESCENDANT : 36,
    DESCENDANT_OR_SELF : 37,
    DESCENDING : 38,
    DIV : 39,
    DOCUMENT : 40,
    DOCUMENT_NODE : 41,
    ELEMENT : 42,
    ELSE : 43,
    EMPTY : 44,
    EMPTY_SEQUENCE : 45,
    ENCODING : 46,
    EQ : 47,
    EVERY : 48,
    EXCEPT : 49,
    EXTERNAL : 50,
    FOLLOWING : 51,
    FOLLOWING_SIBLING : 52,
    FOR : 53,
    FUNCTION : 54,
    GE : 55,
    GREATEST : 56,
    GT : 57,
    IDIV : 58,
    IF : 59,
    IMPORT : 60,
    IN : 61,
    INHERIT : 62,
    INSTANCE : 63,
    INTERSECT : 64,
    IS : 65,
    ITEM : 66,
    LAX : 67,
    LE : 68,
    LEAST : 69,
    LET : 70,
    LT : 71,
    MOD : 72,
    MODULE : 73,
    NAMESPACE : 74,
    NE : 75,
    NO_INHERIT : 76,
    NO_PRESERVE : 77,
    NODE : 78,
    JSON : 79,
    OF : 80,
    OPTION : 81,
    OR : 82,
    ORDER : 83,
    ORDERED : 84,
    ORDERING : 85,
    PARENT : 86,
    PRECEDING : 87,
    PRECEDING_SIBLING : 88,
    PRESERVE : 89,
    PROCESSING_INSTRUCTION : 90,
    STRUCTURED_ITEM : 91,
    JSON_ITEM : 92,
    OBJECT : 93,
    ARRAY : 94,
    RETURN : 95,
    SATISFIES : 96,
    SCHEMA : 97,
    SCHEMA_ATTRIBUTE : 98,
    SCHEMA_ELEMENT : 99,
    SELF : 100,
    SOME : 101,
    STABLE : 102,
    STRICT : 103,
    STRIP : 104,
    TEXT : 105,
    THEN : 106,
    TO : 107,
    TREAT : 108,
    TYPESWITCH : 109,
    UNION : 110,
    UNORDERED : 111,
    VALIDATE : 112,
    VARIABLE : 113,
    VERSION : 114,
    WHERE : 115,
    XQUERY : 116,
    ALLOWING : 117,
    CATCH : 118,
    CONTEXT : 119,
    COUNT : 120,
    DECIMAL_FORMAT : 121,
    DECIMAL_SEPARATOR : 122,
    DIGIT : 123,
    END : 124,
    GROUP : 125,
    GROUPING_SEPARATOR : 126,
    INFINITY : 127,
    MINUS_SIGN : 128,
    NAMESPACE_NODE : 129,
    NAN : 130,
    NEXT : 131,
    ONLY : 132,
    PATTERN_SEPARATOR : 133,
    PERCENT : 134,
    PER_MILLE : 135,
    PREVIOUS : 136,
    SLIDING : 137,
    START : 138,
    SWITCH : 139,
    TRY : 140,
    TUMBLING : 141,
    TYPE : 142,
    WHEN : 143,
    WINDOW : 144,
    ZERO_DIGIT : 145,
    AFTER : 146,
    BEFORE : 147,
    COPY : 148,
    DELETE : 149,
    FIRST : 150,
    INSERT : 151,
    INTO : 152,
    POSITION : 153,
    APPEND : 154,
    LAST : 155,
    MODIFY : 156,
    NODES : 157,
    RENAME : 158,
    REPLACE : 159,
    REVALIDATION : 160,
    SKIP : 161,
    UPDATING : 162,
    VALUE : 163,
    WITH : 164,
    ALL : 165,
    ANY : 166,
    CONTAINS : 167,
    CONTENT : 168,
    DIACRITICS : 169,
    DIFFERENT : 170,
    DISTANCE : 171,
    ENTIRE : 172,
    EXACTLY : 173,
    FROM : 174,
    FT_OPTION : 175,
    FTAND : 176,
    FTNOT : 177,
    FTOR : 178,
    INSENSITIVE : 179,
    LANGUAGE : 180,
    LEVELS : 181,
    LOWERCASE : 182,
    MOST : 183,
    NO : 184,
    NOT : 185,
    OCCURS : 186,
    PARAGRAPH : 187,
    PARAGRAPHS : 188,
    PHRASE : 189,
    RELATIONSHIP : 190,
    SAME : 191,
    SCORE : 192,
    SENSITIVE : 193,
    SENTENCE : 194,
    SENTENCES : 195,
    STEMMING : 196,
    STOP : 197,
    THESAURUS : 198,
    TIMES : 199,
    UPPERCASE : 200,
    USING : 201,
    WEIGHT : 202,
    WILDCARDS : 203,
    WITHOUT : 204,
    WORD : 205,
    WORDS : 206,
    BREAK : 207,
    CONTINUE : 208,
    EXIT : 209,
    LOOP : 210,
    RETURNING : 211,
    WHILE : 212,
    CHECK : 213,
    COLLECTION : 214,
    CONSTRAINT : 215,
    FOREACH : 216,
    FOREIGN : 217,
    INDEX : 218,
    INTEGRITY : 219,
    KEY : 220,
    ON : 221,
    UNIQUE : 222,
    AMP_ER : 223,
    APOS_ER : 224,
    QUOT_ER : 225,
    CONCAT : 226,
    LPAREN : 227,
    RPAREN : 228,
    DOLLAR : 229,
    L_UNION_BRACKET : 230,
    R_UNION_BRACKET : 231,
    LBRACKET : 232,
    RBRACKET : 233,
    LSQUARE : 234,
    RSQUARE : 235,
    EQUAL : 236,
    BIND : 237,
    NOTEQUAL : 238,
    ANN_PERCENT : 239,
    HASH : 240,
    AMP : 241,
    COMMA : 242,
    QUESTION : 243,
    STAR : 244,
    PLUS : 245,
    MINUS : 246,
    SMALLER : 247,
    GREATER : 248,
    SMALLEREQ : 249,
    GREATEREQ : 250,
    SMALLER_SMALLER : 251,
    GREATER_GREATER : 252,
    SLASH : 253,
    SLASH_SLASH : 254,
    BANG : 255,
    DOT : 256,
    DOT_DOT : 257,
    COLON : 258,
    COLON_COLON : 259,
    EMPTY_CLOSE_TAG : 260,
    CLOSE_TAG : 261,
    SEMICOLON : 262,
    VBAR : 263,
    PRAGMA_START : 264,
    PRAGMA_END : 265,
    XML_COMMENT_START : 266,
    XML_COMMENT_END : 267,
    PI_START : 268,
    PI_END : 269,
    ATTR_SIGN : 270,
    Q : 271,
    CHARREF_DEC : 272,
    CHARREF_HEX : 273,
    APOS : 274,
    QUOT : 275,
    NCNameStartChar : 276,
    NCNameChar : 277,
    L_NCName : 278,
    Letter : 279,
    HexLetter : 280,
    Digit : 281,
    Digits : 282,
    S : 283,
    SU : 284,
    L_Pragma : 285,
    L_DirCommentConstructor : 286,
    L_DirPIConstructor : 287,
    L_IntegerLiteral : 288,
    L_DecimalLiteral : 289,
    L_DoubleLiteral : 290,
    L_Comment : 291,
    L_AnyChar : 292,
    NCNameUnprotected : 293,
    XMLDigit : 294,
    getGrammarFileName: function() { return "/Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g"; }
});
org.antlr.lang.augmentObject(XMLLexer.prototype, {
    // $ANTLR start QUOT
    mQUOT: function()  {
        try {
            var _type = this.QUOT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:132:6: ({...}? => '\"' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:132:8: {...}? => '\"'
            if ( !(( this.inElem || this.inQuotAttr )) ) {
                throw new org.antlr.runtime.FailedPredicateException(this.input, "QUOT", " this.inElem || this.inQuotAttr ");
            }
            this.match('\"'); 
             if (!this.inAposAttr) this.inQuotAttr = (!this.inQuotAttr); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "QUOT",

    // $ANTLR start APOS
    mAPOS: function()  {
        try {
            var _type = this.APOS;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:133:6: ({...}? => '\\'' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:133:8: {...}? => '\\''
            if ( !(( this.inElem || this.inAposAttr )) ) {
                throw new org.antlr.runtime.FailedPredicateException(this.input, "APOS", " this.inElem || this.inAposAttr ");
            }
            this.match('\''); 
             if (!this.inQuotAttr) this.inAposAttr = !this.inAposAttr; 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "APOS",

    // $ANTLR start L_QuotAttrContentChar
    mL_QuotAttrContentChar: function()  {
        try {
            var _type = this.L_QuotAttrContentChar;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:136:2: ({...}? => ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' | '\\u0021' | '\\u0023' .. '\\u0025' | '\\u0028' .. '\\u003B' | '\\u003D' .. '\\u007A' | '\\u007C' .. '\\u007C' | '\\u007E' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+ )
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:136:4: {...}? => ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' | '\\u0021' | '\\u0023' .. '\\u0025' | '\\u0028' .. '\\u003B' | '\\u003D' .. '\\u007A' | '\\u007C' .. '\\u007C' | '\\u007E' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+
            if ( !(( this.inQuotAttr )) ) {
                throw new org.antlr.runtime.FailedPredicateException(this.input, "L_QuotAttrContentChar", " this.inQuotAttr ");
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:137:3: ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' | '\\u0021' | '\\u0023' .. '\\u0025' | '\\u0028' .. '\\u003B' | '\\u003D' .. '\\u007A' | '\\u007C' .. '\\u007C' | '\\u007E' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+
            var cnt1=0;
            loop1:
            do {
                var alt1=2;
                var LA1_0 = this.input.LA(1);

                if ( ((LA1_0>='\t' && LA1_0<='\n')||LA1_0=='\r'||(LA1_0>=' ' && LA1_0<='!')||(LA1_0>='#' && LA1_0<='%')||(LA1_0>='(' && LA1_0<=';')||(LA1_0>='=' && LA1_0<='z')||LA1_0=='|'||(LA1_0>='~' && LA1_0<='\uD7FF')||(LA1_0>='\uE000' && LA1_0<='\uFFFD')) ) {
                    alt1=1;
                }


                switch (alt1) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:
                    if ( (this.input.LA(1)>='\t' && this.input.LA(1)<='\n')||this.input.LA(1)=='\r'||(this.input.LA(1)>=' ' && this.input.LA(1)<='!')||(this.input.LA(1)>='#' && this.input.LA(1)<='%')||(this.input.LA(1)>='(' && this.input.LA(1)<=';')||(this.input.LA(1)>='=' && this.input.LA(1)<='z')||this.input.LA(1)=='|'||(this.input.LA(1)>='~' && this.input.LA(1)<='\uD7FF')||(this.input.LA(1)>='\uE000' && this.input.LA(1)<='\uFFFD') ) {
                        this.input.consume();

                    }
                    else {
                        var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
                        this.recover(mse);
                        throw mse;}



                    break;

                default :
                    if ( cnt1 >= 1 ) {
                        break loop1;
                    }
                        var eee = new org.antlr.runtime.EarlyExitException(1, this.input);
                        throw eee;
                }
                cnt1++;
            } while (true);




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "L_QuotAttrContentChar",

    // $ANTLR start L_AposAttrContentChar
    mL_AposAttrContentChar: function()  {
        try {
            var _type = this.L_AposAttrContentChar;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:143:2: ({...}? => ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' | '\\u0021' | '\\u0023' .. '\\u0025' | '\\u0028' .. '\\u003B' | '\\u003D' .. '\\u007A' | '\\u007C' .. '\\u007C' | '\\u007E' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+ )
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:143:4: {...}? => ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' | '\\u0021' | '\\u0023' .. '\\u0025' | '\\u0028' .. '\\u003B' | '\\u003D' .. '\\u007A' | '\\u007C' .. '\\u007C' | '\\u007E' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+
            if ( !(( this.inAposAttr )) ) {
                throw new org.antlr.runtime.FailedPredicateException(this.input, "L_AposAttrContentChar", " this.inAposAttr ");
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:144:3: ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' | '\\u0021' | '\\u0023' .. '\\u0025' | '\\u0028' .. '\\u003B' | '\\u003D' .. '\\u007A' | '\\u007C' .. '\\u007C' | '\\u007E' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+
            var cnt2=0;
            loop2:
            do {
                var alt2=2;
                var LA2_0 = this.input.LA(1);

                if ( ((LA2_0>='\t' && LA2_0<='\n')||LA2_0=='\r'||(LA2_0>=' ' && LA2_0<='!')||(LA2_0>='#' && LA2_0<='%')||(LA2_0>='(' && LA2_0<=';')||(LA2_0>='=' && LA2_0<='z')||LA2_0=='|'||(LA2_0>='~' && LA2_0<='\uD7FF')||(LA2_0>='\uE000' && LA2_0<='\uFFFD')) ) {
                    alt2=1;
                }


                switch (alt2) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:
                    if ( (this.input.LA(1)>='\t' && this.input.LA(1)<='\n')||this.input.LA(1)=='\r'||(this.input.LA(1)>=' ' && this.input.LA(1)<='!')||(this.input.LA(1)>='#' && this.input.LA(1)<='%')||(this.input.LA(1)>='(' && this.input.LA(1)<=';')||(this.input.LA(1)>='=' && this.input.LA(1)<='z')||this.input.LA(1)=='|'||(this.input.LA(1)>='~' && this.input.LA(1)<='\uD7FF')||(this.input.LA(1)>='\uE000' && this.input.LA(1)<='\uFFFD') ) {
                        this.input.consume();

                    }
                    else {
                        var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
                        this.recover(mse);
                        throw mse;}



                    break;

                default :
                    if ( cnt2 >= 1 ) {
                        break loop2;
                    }
                        var eee = new org.antlr.runtime.EarlyExitException(2, this.input);
                        throw eee;
                }
                cnt2++;
            } while (true);




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "L_AposAttrContentChar",

    // $ANTLR start L_ElementContentChar
    mL_ElementContentChar: function()  {
        try {
            var _type = this.L_ElementContentChar;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:151:2: ({...}? => ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' .. '\\u0025' | '\\u0027' .. '\\u003B' | '\\u003D' .. '\\u007A' | '\\u007C' | '\\u007E' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+ )
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:151:4: {...}? => ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' .. '\\u0025' | '\\u0027' .. '\\u003B' | '\\u003D' .. '\\u007A' | '\\u007C' | '\\u007E' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+
            if ( !(( !this.inElem )) ) {
                throw new org.antlr.runtime.FailedPredicateException(this.input, "L_ElementContentChar", " !this.inElem ");
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:152:3: ( '\\u0009' | '\\u000A' | '\\u000D' | '\\u0020' .. '\\u0025' | '\\u0027' .. '\\u003B' | '\\u003D' .. '\\u007A' | '\\u007C' | '\\u007E' .. '\\uD7FF' | '\\uE000' .. '\\uFFFD' )+
            var cnt3=0;
            loop3:
            do {
                var alt3=2;
                var LA3_0 = this.input.LA(1);

                if ( ((LA3_0>='\t' && LA3_0<='\n')||LA3_0=='\r'||(LA3_0>=' ' && LA3_0<='%')||(LA3_0>='\'' && LA3_0<=';')||(LA3_0>='=' && LA3_0<='z')||LA3_0=='|'||(LA3_0>='~' && LA3_0<='\uD7FF')||(LA3_0>='\uE000' && LA3_0<='\uFFFD')) ) {
                    alt3=1;
                }


                switch (alt3) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:
                    if ( (this.input.LA(1)>='\t' && this.input.LA(1)<='\n')||this.input.LA(1)=='\r'||(this.input.LA(1)>=' ' && this.input.LA(1)<='%')||(this.input.LA(1)>='\'' && this.input.LA(1)<=';')||(this.input.LA(1)>='=' && this.input.LA(1)<='z')||this.input.LA(1)=='|'||(this.input.LA(1)>='~' && this.input.LA(1)<='\uD7FF')||(this.input.LA(1)>='\uE000' && this.input.LA(1)<='\uFFFD') ) {
                        this.input.consume();

                    }
                    else {
                        var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
                        this.recover(mse);
                        throw mse;}



                    break;

                default :
                    if ( cnt3 >= 1 ) {
                        break loop3;
                    }
                        var eee = new org.antlr.runtime.EarlyExitException(3, this.input);
                        throw eee;
                }
                cnt3++;
            } while (true);




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "L_ElementContentChar",

    // $ANTLR start GREATER
    mGREATER: function()  {
        try {
            var _type = this.GREATER;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:158:2: ({...}? => '>' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:158:4: {...}? => '>'
            if ( !(( this.inElem )) ) {
                throw new org.antlr.runtime.FailedPredicateException(this.input, "GREATER", " this.inElem ");
            }
            this.match('>'); 
             this.inElem = false; 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "GREATER",

    // $ANTLR start EMPTY_CLOSE_TAG
    mEMPTY_CLOSE_TAG: function()  {
        try {
            var _type = this.EMPTY_CLOSE_TAG;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:162:2: ({...}? => '/>' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:162:4: {...}? => '/>'
            if ( !(( this.inElem )) ) {
                throw new org.antlr.runtime.FailedPredicateException(this.input, "EMPTY_CLOSE_TAG", " this.inElem ");
            }
            this.match("/>"); 

             this.inElem = false; 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "EMPTY_CLOSE_TAG",

    // $ANTLR start S
    mS: function()  {
        try {
            var _type = this.S;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:166:2: ({...}? => ( ' ' | '\\t' | '\\r' | '\\n' )+ )
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:166:4: {...}? => ( ' ' | '\\t' | '\\r' | '\\n' )+
            if ( !(( this.inElem )) ) {
                throw new org.antlr.runtime.FailedPredicateException(this.input, "S", " this.inElem ");
            }
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:166:24: ( ' ' | '\\t' | '\\r' | '\\n' )+
            var cnt4=0;
            loop4:
            do {
                var alt4=2;
                var LA4_0 = this.input.LA(1);

                if ( ((LA4_0>='\t' && LA4_0<='\n')||LA4_0=='\r'||LA4_0==' ') ) {
                    alt4=1;
                }


                switch (alt4) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:
                    if ( (this.input.LA(1)>='\t' && this.input.LA(1)<='\n')||this.input.LA(1)=='\r'||this.input.LA(1)==' ' ) {
                        this.input.consume();

                    }
                    else {
                        var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
                        this.recover(mse);
                        throw mse;}



                    break;

                default :
                    if ( cnt4 >= 1 ) {
                        break loop4;
                    }
                        var eee = new org.antlr.runtime.EarlyExitException(4, this.input);
                        throw eee;
                }
                cnt4++;
            } while (true);




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "S",

    // $ANTLR start L_NCName
    mL_NCName: function()  {
        try {
            var _type = this.L_NCName;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:172:2: ({...}? => NCNameUnprotected )
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:172:4: {...}? => NCNameUnprotected
            if ( !(( this.inElem )) ) {
                throw new org.antlr.runtime.FailedPredicateException(this.input, "L_NCName", " this.inElem ");
            }
            this.mNCNameUnprotected(); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "L_NCName",

    // $ANTLR start NCNameUnprotected
    mNCNameUnprotected: function()  {
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:176:2: ( NCNameStartChar ( NCNameChar )* )
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:176:4: NCNameStartChar ( NCNameChar )*
            this.mNCNameStartChar(); 
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:176:20: ( NCNameChar )*
            loop5:
            do {
                var alt5=2;
                var LA5_0 = this.input.LA(1);

                if ( ((LA5_0>='-' && LA5_0<='.')||(LA5_0>='0' && LA5_0<='9')||(LA5_0>='A' && LA5_0<='Z')||LA5_0=='_'||(LA5_0>='a' && LA5_0<='z')) ) {
                    alt5=1;
                }


                switch (alt5) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:176:20: NCNameChar
                    this.mNCNameChar(); 


                    break;

                default :
                    break loop5;
                }
            } while (true);




        }
        finally {
        }
    },
    // $ANTLR end "NCNameUnprotected",

    // $ANTLR start NCNameStartChar
    mNCNameStartChar: function()  {
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:180:2: ( Letter | '_' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:
            if ( (this.input.LA(1)>='A' && this.input.LA(1)<='Z')||this.input.LA(1)=='_'||(this.input.LA(1)>='a' && this.input.LA(1)<='z') ) {
                this.input.consume();

            }
            else {
                var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
                this.recover(mse);
                throw mse;}




        }
        finally {
        }
    },
    // $ANTLR end "NCNameStartChar",

    // $ANTLR start NCNameChar
    mNCNameChar: function()  {
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:184:2: ( Letter | XMLDigit | '.' | '-' | '_' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:
            if ( (this.input.LA(1)>='-' && this.input.LA(1)<='.')||(this.input.LA(1)>='0' && this.input.LA(1)<='9')||(this.input.LA(1)>='A' && this.input.LA(1)<='Z')||this.input.LA(1)=='_'||(this.input.LA(1)>='a' && this.input.LA(1)<='z') ) {
                this.input.consume();

            }
            else {
                var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
                this.recover(mse);
                throw mse;}




        }
        finally {
        }
    },
    // $ANTLR end "NCNameChar",

    // $ANTLR start Letter
    mLetter: function()  {
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:188:2: ( 'a' .. 'z' | 'A' .. 'Z' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:
            if ( (this.input.LA(1)>='A' && this.input.LA(1)<='Z')||(this.input.LA(1)>='a' && this.input.LA(1)<='z') ) {
                this.input.consume();

            }
            else {
                var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
                this.recover(mse);
                throw mse;}




        }
        finally {
        }
    },
    // $ANTLR end "Letter",

    // $ANTLR start XMLDigit
    mXMLDigit: function()  {
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:192:2: ( '0' .. '9' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:192:4: '0' .. '9'
            this.matchRange('0','9'); 



        }
        finally {
        }
    },
    // $ANTLR end "XMLDigit",

    // $ANTLR start EQUAL
    mEQUAL: function()  {
        try {
            var _type = this.EQUAL;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:207:7: ({...}? => '=' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:207:9: {...}? => '='
            if ( !(( this.inElem  )) ) {
                throw new org.antlr.runtime.FailedPredicateException(this.input, "EQUAL", " this.inElem  ");
            }
            this.match('='); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "EQUAL",

    // $ANTLR start ESCAPE_APOS
    mESCAPE_APOS: function()  {
        try {
            var _type = this.ESCAPE_APOS;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:208:13: ({...}? => '\\'\\'' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:208:15: {...}? => '\\'\\''
            if ( !(( this.inAposAttr )) ) {
                throw new org.antlr.runtime.FailedPredicateException(this.input, "ESCAPE_APOS", " this.inAposAttr ");
            }
            this.match("''"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "ESCAPE_APOS",

    // $ANTLR start ESCAPE_QUOT
    mESCAPE_QUOT: function()  {
        try {
            var _type = this.ESCAPE_QUOT;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:209:13: ({...}? => '\"\"' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:209:15: {...}? => '\"\"'
            if ( !(( this.inQuotAttr )) ) {
                throw new org.antlr.runtime.FailedPredicateException(this.input, "ESCAPE_QUOT", " this.inQuotAttr ");
            }
            this.match("\"\""); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "ESCAPE_QUOT",

    // $ANTLR start ESCAPE_LBRACKET
    mESCAPE_LBRACKET: function()  {
        try {
            var _type = this.ESCAPE_LBRACKET;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:212:2: ({...}? => '{{' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:212:4: {...}? => '{{'
            if ( !(( !this.inElem || this.inAposAttr || this.inQuotAttr )) ) {
                throw new org.antlr.runtime.FailedPredicateException(this.input, "ESCAPE_LBRACKET", " !this.inElem || this.inAposAttr || this.inQuotAttr ");
            }
            this.match("{{"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "ESCAPE_LBRACKET",

    // $ANTLR start ESCAPE_RBRACKET
    mESCAPE_RBRACKET: function()  {
        try {
            var _type = this.ESCAPE_RBRACKET;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:216:2: ({...}? => '}}' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:216:4: {...}? => '}}'
            if ( !(( !this.inElem || this.inAposAttr || this.inQuotAttr )) ) {
                throw new org.antlr.runtime.FailedPredicateException(this.input, "ESCAPE_RBRACKET", " !this.inElem || this.inAposAttr || this.inQuotAttr ");
            }
            this.match("}}"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "ESCAPE_RBRACKET",

    // $ANTLR start LBRACKET
    mLBRACKET: function()  {
        try {
            var _type = this.LBRACKET;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:219:10: ({...}? => '{' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:219:12: {...}? => '{'
            if ( !(( !this.inElem || this.inAposAttr || this.inQuotAttr )) ) {
                throw new org.antlr.runtime.FailedPredicateException(this.input, "LBRACKET", " !this.inElem || this.inAposAttr || this.inQuotAttr ");
            }
            this.match('{'); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "LBRACKET",

    // $ANTLR start RBRACKET
    mRBRACKET: function()  {
        try {
            var _type = this.RBRACKET;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:220:10: ({...}? => '}' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:220:12: {...}? => '}'
            if ( !(( !this.inElem || this.inAposAttr || this.inQuotAttr )) ) {
                throw new org.antlr.runtime.FailedPredicateException(this.input, "RBRACKET", " !this.inElem || this.inAposAttr || this.inQuotAttr ");
            }
            this.match('}'); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "RBRACKET",

    // $ANTLR start SMALLER
    mSMALLER: function()  {
        try {
            var _type = this.SMALLER;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:221:9: ( '<' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:221:11: '<'
            this.match('<'); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "SMALLER",

    // $ANTLR start CLOSE_TAG
    mCLOSE_TAG: function()  {
        try {
            var _type = this.CLOSE_TAG;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:222:11: ({...}? => '</' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:222:13: {...}? => '</'
            if ( !(( !this.inElem )) ) {
                throw new org.antlr.runtime.FailedPredicateException(this.input, "CLOSE_TAG", " !this.inElem ");
            }
            this.match("</"); 

             this.inElem = true; 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "CLOSE_TAG",

    // $ANTLR start CDATA_START
    mCDATA_START: function()  {
        try {
            var _type = this.CDATA_START;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:224:13: ( '<![CDATA[' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:224:15: '<![CDATA['
            this.match("<![CDATA["); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "CDATA_START",

    // $ANTLR start CDATA_END
    mCDATA_END: function()  {
        try {
            var _type = this.CDATA_END;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:225:12: ( ']]>' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:225:14: ']]>'
            this.match("]]>"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "CDATA_END",

    // $ANTLR start L_CDataSection
    mL_CDataSection: function()  {
        try {
            var _type = this.L_CDataSection;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:229:3: ({...}? => CDATA_START ( options {greedy=false; } : ( . )* ) CDATA_END )
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:229:5: {...}? => CDATA_START ( options {greedy=false; } : ( . )* ) CDATA_END
            if ( !(( !this.inElem )) ) {
                throw new org.antlr.runtime.FailedPredicateException(this.input, "L_CDataSection", " !this.inElem ");
            }
            this.mCDATA_START(); 
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:229:38: ( options {greedy=false; } : ( . )* )
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:229:65: ( . )*
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:229:65: ( . )*
            loop6:
            do {
                var alt6=2;
                var LA6_0 = this.input.LA(1);

                if ( (LA6_0==']') ) {
                    var LA6_1 = this.input.LA(2);

                    if ( (LA6_1==']') ) {
                        var LA6_3 = this.input.LA(3);

                        if ( (LA6_3=='>') ) {
                            alt6=2;
                        }
                        else if ( ((LA6_3>='\u0000' && LA6_3<='=')||(LA6_3>='?' && LA6_3<='\uFFFF')) ) {
                            alt6=1;
                        }


                    }
                    else if ( ((LA6_1>='\u0000' && LA6_1<='\\')||(LA6_1>='^' && LA6_1<='\uFFFF')) ) {
                        alt6=1;
                    }


                }
                else if ( ((LA6_0>='\u0000' && LA6_0<='\\')||(LA6_0>='^' && LA6_0<='\uFFFF')) ) {
                    alt6=1;
                }


                switch (alt6) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:229:65: .
                    this.matchAny(); 


                    break;

                default :
                    break loop6;
                }
            } while (true);




            this.mCDATA_END(); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "L_CDataSection",

    // $ANTLR start L_PredefinedEntityRef
    mL_PredefinedEntityRef: function()  {
        try {
            var _type = this.L_PredefinedEntityRef;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:237:2: ({...}? => '&' ( 'lt' | 'gt' | 'apos' | 'quot' | 'amp' ) ';' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:237:4: {...}? => '&' ( 'lt' | 'gt' | 'apos' | 'quot' | 'amp' ) ';'
            if ( !(( !this.inElem || this.inAposAttr || this.inQuotAttr )) ) {
                throw new org.antlr.runtime.FailedPredicateException(this.input, "L_PredefinedEntityRef", " !this.inElem || this.inAposAttr || this.inQuotAttr ");
            }
            this.match('&'); 
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:237:67: ( 'lt' | 'gt' | 'apos' | 'quot' | 'amp' )
            var alt7=5;
            switch ( this.input.LA(1) ) {
            case 'l':
                alt7=1;
                break;
            case 'g':
                alt7=2;
                break;
            case 'a':
                var LA7_3 = this.input.LA(2);

                if ( (LA7_3=='p') ) {
                    alt7=3;
                }
                else if ( (LA7_3=='m') ) {
                    alt7=5;
                }
                else {
                    var nvae =
                        new org.antlr.runtime.NoViableAltException("", 7, 3, this.input);

                    throw nvae;
                }
                break;
            case 'q':
                alt7=4;
                break;
            default:
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 7, 0, this.input);

                throw nvae;
            }

            switch (alt7) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:237:68: 'lt'
                    this.match("lt"); 



                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:237:75: 'gt'
                    this.match("gt"); 



                    break;
                case 3 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:237:82: 'apos'
                    this.match("apos"); 



                    break;
                case 4 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:237:91: 'quot'
                    this.match("quot"); 



                    break;
                case 5 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:237:100: 'amp'
                    this.match("amp"); 



                    break;

            }

            this.match(';'); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "L_PredefinedEntityRef",

    // $ANTLR start L_CharRef
    mL_CharRef: function()  {
        try {
            var _type = this.L_CharRef;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:242:2: ({...}? => '&#' ( '0' .. '9' )+ ';' | '&#x' ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )+ ';' )
            var alt10=2;
            var LA10_0 = this.input.LA(1);

            if ( (LA10_0=='&') ) {
                var LA10_1 = this.input.LA(2);

                if ( (LA10_1=='#') ) {
                    var LA10_2 = this.input.LA(3);

                    if ( (LA10_2=='x') ) {
                        alt10=2;
                    }
                    else if ( ((LA10_2>='0' && LA10_2<='9')) && (( !this.inElem || this.inAposAttr || this.inQuotAttr ))) {
                        alt10=1;
                    }
                    else {
                        var nvae =
                            new org.antlr.runtime.NoViableAltException("", 10, 2, this.input);

                        throw nvae;
                    }
                }
                else {
                    var nvae =
                        new org.antlr.runtime.NoViableAltException("", 10, 1, this.input);

                    throw nvae;
                }
            }
            else {
                var nvae =
                    new org.antlr.runtime.NoViableAltException("", 10, 0, this.input);

                throw nvae;
            }
            switch (alt10) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:242:4: {...}? => '&#' ( '0' .. '9' )+ ';'
                    if ( !(( !this.inElem || this.inAposAttr || this.inQuotAttr )) ) {
                        throw new org.antlr.runtime.FailedPredicateException(this.input, "L_CharRef", " !this.inElem || this.inAposAttr || this.inQuotAttr ");
                    }
                    this.match("&#"); 

                    // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:242:68: ( '0' .. '9' )+
                    var cnt8=0;
                    loop8:
                    do {
                        var alt8=2;
                        var LA8_0 = this.input.LA(1);

                        if ( ((LA8_0>='0' && LA8_0<='9')) ) {
                            alt8=1;
                        }


                        switch (alt8) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:242:69: '0' .. '9'
                            this.matchRange('0','9'); 


                            break;

                        default :
                            if ( cnt8 >= 1 ) {
                                break loop8;
                            }
                                var eee = new org.antlr.runtime.EarlyExitException(8, this.input);
                                throw eee;
                        }
                        cnt8++;
                    } while (true);

                    this.match(';'); 


                    break;
                case 2 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:242:86: '&#x' ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )+ ';'
                    this.match("&#x"); 

                    // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:242:92: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )+
                    var cnt9=0;
                    loop9:
                    do {
                        var alt9=2;
                        var LA9_0 = this.input.LA(1);

                        if ( ((LA9_0>='0' && LA9_0<='9')||(LA9_0>='A' && LA9_0<='F')||(LA9_0>='a' && LA9_0<='f')) ) {
                            alt9=1;
                        }


                        switch (alt9) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:
                            if ( (this.input.LA(1)>='0' && this.input.LA(1)<='9')||(this.input.LA(1)>='A' && this.input.LA(1)<='F')||(this.input.LA(1)>='a' && this.input.LA(1)<='f') ) {
                                this.input.consume();

                            }
                            else {
                                var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
                                this.recover(mse);
                                throw mse;}



                            break;

                        default :
                            if ( cnt9 >= 1 ) {
                                break loop9;
                            }
                                var eee = new org.antlr.runtime.EarlyExitException(9, this.input);
                                throw eee;
                        }
                        cnt9++;
                    } while (true);

                    this.match(';'); 


                    break;

            }
            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "L_CharRef",

    // $ANTLR start L_DirCommentConstructor
    mL_DirCommentConstructor: function()  {
        try {
            var _type = this.L_DirCommentConstructor;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:246:2: ({...}? => '<!--' ( options {greedy=false; } : ( . )* ) '-->' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:246:4: {...}? => '<!--' ( options {greedy=false; } : ( . )* ) '-->'
            if ( !(( !this.inElem )) ) {
                throw new org.antlr.runtime.FailedPredicateException(this.input, "L_DirCommentConstructor", " !this.inElem ");
            }
            this.match("<!--"); 

            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:246:32: ( options {greedy=false; } : ( . )* )
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:246:59: ( . )*
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:246:59: ( . )*
            loop11:
            do {
                var alt11=2;
                var LA11_0 = this.input.LA(1);

                if ( (LA11_0=='-') ) {
                    var LA11_1 = this.input.LA(2);

                    if ( (LA11_1=='-') ) {
                        var LA11_3 = this.input.LA(3);

                        if ( (LA11_3=='>') ) {
                            alt11=2;
                        }
                        else if ( ((LA11_3>='\u0000' && LA11_3<='=')||(LA11_3>='?' && LA11_3<='\uFFFF')) ) {
                            alt11=1;
                        }


                    }
                    else if ( ((LA11_1>='\u0000' && LA11_1<=',')||(LA11_1>='.' && LA11_1<='\uFFFF')) ) {
                        alt11=1;
                    }


                }
                else if ( ((LA11_0>='\u0000' && LA11_0<=',')||(LA11_0>='.' && LA11_0<='\uFFFF')) ) {
                    alt11=1;
                }


                switch (alt11) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:246:59: .
                    this.matchAny(); 


                    break;

                default :
                    break loop11;
                }
            } while (true);




            this.match("-->"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "L_DirCommentConstructor",

    // $ANTLR start L_DirPIConstructor
    mL_DirPIConstructor: function()  {
        try {
            var _type = this.L_DirPIConstructor;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:249:2: ({...}? => '<?' ( SU )? NCNameUnprotected ( SU ( options {greedy=false; } : ( . )* ) )? '?>' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:249:4: {...}? => '<?' ( SU )? NCNameUnprotected ( SU ( options {greedy=false; } : ( . )* ) )? '?>'
            if ( !(( !this.inElem )) ) {
                throw new org.antlr.runtime.FailedPredicateException(this.input, "L_DirPIConstructor", " !this.inElem ");
            }
            this.match("<?"); 

            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:250:8: ( SU )?
            var alt12=2;
            var LA12_0 = this.input.LA(1);

            if ( ((LA12_0>='\t' && LA12_0<='\n')||LA12_0=='\r'||LA12_0==' ') ) {
                alt12=1;
            }
            switch (alt12) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:250:8: SU
                    this.mSU(); 


                    break;

            }

            this.mNCNameUnprotected(); 
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:250:30: ( SU ( options {greedy=false; } : ( . )* ) )?
            var alt14=2;
            var LA14_0 = this.input.LA(1);

            if ( ((LA14_0>='\t' && LA14_0<='\n')||LA14_0=='\r'||LA14_0==' ') ) {
                alt14=1;
            }
            switch (alt14) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:250:31: SU ( options {greedy=false; } : ( . )* )
                    this.mSU(); 
                    // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:250:34: ( options {greedy=false; } : ( . )* )
                    // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:250:61: ( . )*
                    // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:250:61: ( . )*
                    loop13:
                    do {
                        var alt13=2;
                        var LA13_0 = this.input.LA(1);

                        if ( (LA13_0=='?') ) {
                            var LA13_1 = this.input.LA(2);

                            if ( (LA13_1=='>') ) {
                                alt13=2;
                            }
                            else if ( ((LA13_1>='\u0000' && LA13_1<='=')||(LA13_1>='?' && LA13_1<='\uFFFF')) ) {
                                alt13=1;
                            }


                        }
                        else if ( ((LA13_0>='\u0000' && LA13_0<='>')||(LA13_0>='@' && LA13_0<='\uFFFF')) ) {
                            alt13=1;
                        }


                        switch (alt13) {
                        case 1 :
                            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:250:61: .
                            this.matchAny(); 


                            break;

                        default :
                            break loop13;
                        }
                    } while (true);






                    break;

            }

            this.match("?>"); 




            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "L_DirPIConstructor",

    // $ANTLR start SU
    mSU: function()  {
        try {
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:254:2: ( ( ' ' | '\\t' | '\\n' | '\\r' )+ )
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:254:4: ( ' ' | '\\t' | '\\n' | '\\r' )+
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:254:4: ( ' ' | '\\t' | '\\n' | '\\r' )+
            var cnt15=0;
            loop15:
            do {
                var alt15=2;
                var LA15_0 = this.input.LA(1);

                if ( ((LA15_0>='\t' && LA15_0<='\n')||LA15_0=='\r'||LA15_0==' ') ) {
                    alt15=1;
                }


                switch (alt15) {
                case 1 :
                    // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:
                    if ( (this.input.LA(1)>='\t' && this.input.LA(1)<='\n')||this.input.LA(1)=='\r'||this.input.LA(1)==' ' ) {
                        this.input.consume();

                    }
                    else {
                        var mse = new org.antlr.runtime.MismatchedSetException(null,this.input);
                        this.recover(mse);
                        throw mse;}



                    break;

                default :
                    if ( cnt15 >= 1 ) {
                        break loop15;
                    }
                        var eee = new org.antlr.runtime.EarlyExitException(15, this.input);
                        throw eee;
                }
                cnt15++;
            } while (true);




        }
        finally {
        }
    },
    // $ANTLR end "SU",

    // $ANTLR start COLON
    mCOLON: function()  {
        try {
            var _type = this.COLON;
            var _channel = org.antlr.runtime.BaseRecognizer.DEFAULT_TOKEN_CHANNEL;
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:257:7: ( ':' )
            // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:257:9: ':'
            this.match(':'); 



            this.state.type = _type;
            this.state.channel = _channel;
        }
        finally {
        }
    },
    // $ANTLR end "COLON",

    mTokens: function() {
        // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:8: ( QUOT | APOS | L_QuotAttrContentChar | L_AposAttrContentChar | L_ElementContentChar | GREATER | EMPTY_CLOSE_TAG | S | L_NCName | EQUAL | ESCAPE_APOS | ESCAPE_QUOT | ESCAPE_LBRACKET | ESCAPE_RBRACKET | LBRACKET | RBRACKET | SMALLER | CLOSE_TAG | CDATA_START | CDATA_END | L_CDataSection | L_PredefinedEntityRef | L_CharRef | L_DirCommentConstructor | L_DirPIConstructor | COLON )
        var alt16=26;
        alt16 = this.dfa16.predict(this.input);
        switch (alt16) {
            case 1 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:10: QUOT
                this.mQUOT(); 


                break;
            case 2 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:15: APOS
                this.mAPOS(); 


                break;
            case 3 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:20: L_QuotAttrContentChar
                this.mL_QuotAttrContentChar(); 


                break;
            case 4 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:42: L_AposAttrContentChar
                this.mL_AposAttrContentChar(); 


                break;
            case 5 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:64: L_ElementContentChar
                this.mL_ElementContentChar(); 


                break;
            case 6 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:85: GREATER
                this.mGREATER(); 


                break;
            case 7 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:93: EMPTY_CLOSE_TAG
                this.mEMPTY_CLOSE_TAG(); 


                break;
            case 8 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:109: S
                this.mS(); 


                break;
            case 9 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:111: L_NCName
                this.mL_NCName(); 


                break;
            case 10 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:120: EQUAL
                this.mEQUAL(); 


                break;
            case 11 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:126: ESCAPE_APOS
                this.mESCAPE_APOS(); 


                break;
            case 12 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:138: ESCAPE_QUOT
                this.mESCAPE_QUOT(); 


                break;
            case 13 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:150: ESCAPE_LBRACKET
                this.mESCAPE_LBRACKET(); 


                break;
            case 14 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:166: ESCAPE_RBRACKET
                this.mESCAPE_RBRACKET(); 


                break;
            case 15 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:182: LBRACKET
                this.mLBRACKET(); 


                break;
            case 16 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:191: RBRACKET
                this.mRBRACKET(); 


                break;
            case 17 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:200: SMALLER
                this.mSMALLER(); 


                break;
            case 18 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:208: CLOSE_TAG
                this.mCLOSE_TAG(); 


                break;
            case 19 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:218: CDATA_START
                this.mCDATA_START(); 


                break;
            case 20 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:230: CDATA_END
                this.mCDATA_END(); 


                break;
            case 21 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:240: L_CDataSection
                this.mL_CDataSection(); 


                break;
            case 22 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:255: L_PredefinedEntityRef
                this.mL_PredefinedEntityRef(); 


                break;
            case 23 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:277: L_CharRef
                this.mL_CharRef(); 


                break;
            case 24 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:287: L_DirCommentConstructor
                this.mL_DirCommentConstructor(); 


                break;
            case 25 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:311: L_DirPIConstructor
                this.mL_DirPIConstructor(); 


                break;
            case 26 :
                // /Users/wcandillon/28msec/xquery.js/xquery/XMLLexer.g:1:330: COLON
                this.mCOLON(); 


                break;

        }

    }

}, true); // important to pass true to overwrite default implementations

org.antlr.lang.augmentObject(XMLLexer, {
    DFA16_eotS:
        "\u0001\uffff\u0001\u0010\u0001\u0013\u0001\u0014\u0001\u0016\u0001"+
    "\u0017\u0001\u0018\u0001\u001a\u0001\u0016\u0001\u001d\u0001\u001f\u0001"+
    "\u0023\u0001\u0024\u0001\uffff\u0001\u0016\u0001\u0027\u0002\uffff\u0001"+
    "\u0029\u0002\uffff\u0001\u002e\u0003\uffff\u0001\u0018\u0001\uffff\u0001"+
    "\u0016\u0016\uffff\u0001\u0039\u000d\uffff\u0001\u0041\u0002\uffff",
    DFA16_eofS:
        "\u0043\uffff",
    DFA16_minS:
        "\u0009\u0009\u0001\u007b\u0001\u007d\u0001\u0021\u0001\u0009\u0001"+
    "\u0023\u0002\u0009\u0001\u0000\u0001\uffff\u0001\u0009\u0002\u0000\u0001"+
    "\u0009\u0003\u0000\u0001\u0009\u0001\u0000\u0001\u0009\u0005\uffff\u0001"+
    "\u002d\u0002\uffff\u0001\u0000\u0002\uffff\u0001\u0000\u0001\uffff\u0001"+
    "\u0000\u0004\uffff\u0001\u0000\u0003\uffff\u0001\u0009\u0001\u0043\u0005"+
    "\uffff\u0001\u0000\u0001\u0044\u0001\uffff\u0001\u0041\u0001\u0054\u0001"+
    "\u0041\u0001\u005b\u0001\u0000\u0002\uffff",
    DFA16_maxS:
        "\u0009\ufffd\u0001\u007b\u0001\u007d\u0001\u003f\u0001\ufffd\u0001"+
    "\u0071\u0002\ufffd\u0001\u0000\u0001\uffff\u0001\ufffd\u0002\u0000\u0001"+
    "\ufffd\u0003\u0000\u0001\ufffd\u0001\u0000\u0001\ufffd\u0005\uffff\u0001"+
    "\u005b\u0002\uffff\u0001\u0000\u0002\uffff\u0001\u0000\u0001\uffff\u0001"+
    "\u0000\u0004\uffff\u0001\u0000\u0003\uffff\u0001\ufffd\u0001\u0043\u0005"+
    "\uffff\u0001\u0000\u0001\u0044\u0001\uffff\u0001\u0041\u0001\u0054\u0001"+
    "\u0041\u0001\u005b\u0001\uffff\u0002\uffff",
    DFA16_acceptS:
        "\u0011\uffff\u0001\u0005\u000a\uffff\u0001\u000d\u0001\u000f\u0001"+
    "\u000e\u0001\u0010\u0001\u0012\u0001\uffff\u0001\u0019\u0001\u0011\u0001"+
    "\uffff\u0001\u0017\u0001\u0016\u0001\uffff\u0001\u0001\u0001\uffff\u0001"+
    "\u0002\u0001\u0003\u0001\u0004\u0001\u0006\u0001\uffff\u0001\u0008\u0001"+
    "\u0009\u0001\u000a\u0002\uffff\u0001\u0018\u0001\u001a\u0001\u000c\u0001"+
    "\u000b\u0001\u0007\u0002\uffff\u0001\u0014\u0005\uffff\u0001\u0013\u0001"+
    "\u0015",
    DFA16_specialS:
        "\u0001\u0000\u0001\u001f\u0001\u0022\u0001\u0004\u0001\u000d\u0001"+
    "\u001e\u0001\u0015\u0001\u0002\u0001\u000b\u0001\u0021\u0001\u0005\u0001"+
    "\u0011\u0001\u001b\u0001\u0020\u0001\u000c\u0001\u001a\u0001\u0009\u0001"+
    "\uffff\u0001\u0010\u0001\u000a\u0001\u001d\u0001\u0016\u0001\u000f\u0001"+
    "\u0018\u0001\u0019\u0001\u0003\u0001\u0017\u0001\u0008\u0005\uffff\u0001"+
    "\u0012\u0002\uffff\u0001\u000e\u0002\uffff\u0001\u0006\u0001\uffff\u0001"+
    "\u0007\u0004\uffff\u0001\u001c\u0003\uffff\u0001\u0013\u0006\uffff\u0001"+
    "\u0014\u0006\uffff\u0001\u0001\u0002\uffff}>",
    DFA16_transitionS: [
            "\u0002\u0005\u0002\uffff\u0001\u0005\u0012\uffff\u0001\u0005"+
            "\u0001\u000e\u0001\u0001\u0003\u000e\u0001\u000d\u0001\u0002"+
            "\u0007\u000e\u0001\u0004\u000a\u000e\u0001\u000c\u0001\u000e"+
            "\u0001\u000b\u0001\u0007\u0001\u0003\u0002\u000e\u001a\u0006"+
            "\u0002\u000e\u0001\u0008\u0001\u000e\u0001\u0006\u0001\u000e"+
            "\u001a\u0006\u0001\u0009\u0001\u000e\u0001\u000a\ud782\u000e"+
            "\u0800\uffff\u1ffe\u000e",
            "\u0002\u0011\u0002\uffff\u0001\u0011\u0012\uffff\u0002\u0011"+
            "\u0001\u000f\u0003\u0011\u0001\uffff\u0015\u0011\u0001\uffff"+
            "\u003e\u0011\u0001\uffff\u0001\u0011\u0001\uffff\ud782\u0011"+
            "\u0800\uffff\u1ffe\u0011",
            "\u0002\u0011\u0002\uffff\u0001\u0011\u0012\uffff\u0006\u0011"+
            "\u0001\uffff\u0001\u0012\u0014\u0011\u0001\uffff\u003e\u0011"+
            "\u0001\uffff\u0001\u0011\u0001\uffff\ud782\u0011\u0800\uffff"+
            "\u1ffe\u0011",
            "\u0002\u000e\u0002\uffff\u0001\u000e\u0012\uffff\u0002\u000e"+
            "\u0001\u0011\u0003\u000e\u0001\uffff\u0001\u0011\u0014\u000e"+
            "\u0001\uffff\u003e\u000e\u0001\uffff\u0001\u000e\u0001\uffff"+
            "\ud782\u000e\u0800\uffff\u1ffe\u000e",
            "\u0002\u000e\u0002\uffff\u0001\u000e\u0012\uffff\u0002\u000e"+
            "\u0001\u0011\u0003\u000e\u0001\uffff\u0001\u0011\u0014\u000e"+
            "\u0001\uffff\u0001\u000e\u0001\u0015\u003c\u000e\u0001\uffff"+
            "\u0001\u000e\u0001\uffff\ud782\u000e\u0800\uffff\u1ffe\u000e",
            "\u0002\u0005\u0002\uffff\u0001\u0005\u0012\uffff\u0001\u0005"+
            "\u0001\u000e\u0001\u0011\u0003\u000e\u0001\uffff\u0001\u0011"+
            "\u0014\u000e\u0001\uffff\u003e\u000e\u0001\uffff\u0001\u000e"+
            "\u0001\uffff\ud782\u000e\u0800\uffff\u1ffe\u000e",
            "\u0002\u000e\u0002\uffff\u0001\u000e\u0012\uffff\u0002\u000e"+
            "\u0001\u0011\u0003\u000e\u0001\uffff\u0001\u0011\u0005\u000e"+
            "\u0002\u0019\u0001\u000e\u000a\u0019\u0002\u000e\u0001\uffff"+
            "\u0004\u000e\u001a\u0019\u0004\u000e\u0001\u0019\u0001\u000e"+
            "\u001a\u0019\u0001\uffff\u0001\u000e\u0001\uffff\ud782\u000e"+
            "\u0800\uffff\u1ffe\u000e",
            "\u0002\u000e\u0002\uffff\u0001\u000e\u0012\uffff\u0002\u000e"+
            "\u0001\u0011\u0003\u000e\u0001\uffff\u0001\u0011\u0014\u000e"+
            "\u0001\uffff\u003e\u000e\u0001\uffff\u0001\u000e\u0001\uffff"+
            "\ud782\u000e\u0800\uffff\u1ffe\u000e",
            "\u0002\u000e\u0002\uffff\u0001\u000e\u0012\uffff\u0002\u000e"+
            "\u0001\u0011\u0003\u000e\u0001\uffff\u0001\u0011\u0014\u000e"+
            "\u0001\uffff\u0020\u000e\u0001\u001b\u001d\u000e\u0001\uffff"+
            "\u0001\u000e\u0001\uffff\ud782\u000e\u0800\uffff\u1ffe\u000e",
            "\u0001\u001c",
            "\u0001\u001e",
            "\u0001\u0021\u000d\uffff\u0001\u0020\u000f\uffff\u0001\u0022",
            "\u0002\u000e\u0002\uffff\u0001\u000e\u0012\uffff\u0002\u000e"+
            "\u0001\u0011\u0003\u000e\u0001\uffff\u0001\u0011\u0014\u000e"+
            "\u0001\uffff\u003e\u000e\u0001\uffff\u0001\u000e\u0001\uffff"+
            "\ud782\u000e\u0800\uffff\u1ffe\u000e",
            "\u0001\u0025\u003d\uffff\u0001\u0026\u0005\uffff\u0001\u0026"+
            "\u0004\uffff\u0001\u0026\u0004\uffff\u0001\u0026",
            "\u0002\u000e\u0002\uffff\u0001\u000e\u0012\uffff\u0002\u000e"+
            "\u0001\u0011\u0003\u000e\u0001\uffff\u0001\u0011\u0014\u000e"+
            "\u0001\uffff\u003e\u000e\u0001\uffff\u0001\u000e\u0001\uffff"+
            "\ud782\u000e\u0800\uffff\u1ffe\u000e",
            "\u0002\u0011\u0002\uffff\u0001\u0011\u0012\uffff\u0006\u0011"+
            "\u0001\uffff\u0015\u0011\u0001\uffff\u003e\u0011\u0001\uffff"+
            "\u0001\u0011\u0001\uffff\ud782\u0011\u0800\uffff\u1ffe\u0011",
            "\u0001\uffff",
            "",
            "\u0002\u0011\u0002\uffff\u0001\u0011\u0012\uffff\u0006\u0011"+
            "\u0001\uffff\u0015\u0011\u0001\uffff\u003e\u0011\u0001\uffff"+
            "\u0001\u0011\u0001\uffff\ud782\u0011\u0800\uffff\u1ffe\u0011",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0002\u000e\u0002\uffff\u0001\u000e\u0012\uffff\u0002\u000e"+
            "\u0001\u0011\u0003\u000e\u0001\uffff\u0001\u0011\u0014\u000e"+
            "\u0001\uffff\u003e\u000e\u0001\uffff\u0001\u000e\u0001\uffff"+
            "\ud782\u000e\u0800\uffff\u1ffe\u000e",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0001\uffff",
            "\u0002\u000e\u0002\uffff\u0001\u000e\u0012\uffff\u0002\u000e"+
            "\u0001\u0011\u0003\u000e\u0001\uffff\u0001\u0011\u0005\u000e"+
            "\u0002\u0019\u0001\u000e\u000a\u0019\u0002\u000e\u0001\uffff"+
            "\u0004\u000e\u001a\u0019\u0004\u000e\u0001\u0019\u0001\u000e"+
            "\u001a\u0019\u0001\uffff\u0001\u000e\u0001\uffff\ud782\u000e"+
            "\u0800\uffff\u1ffe\u000e",
            "\u0001\uffff",
            "\u0002\u000e\u0002\uffff\u0001\u000e\u0012\uffff\u0002\u000e"+
            "\u0001\u0011\u0003\u000e\u0001\uffff\u0001\u0011\u0014\u000e"+
            "\u0001\uffff\u0001\u000e\u0001\u0032\u003c\u000e\u0001\uffff"+
            "\u0001\u000e\u0001\uffff\ud782\u000e\u0800\uffff\u1ffe\u000e",
            "",
            "",
            "",
            "",
            "",
            "\u0001\u0034\u002d\uffff\u0001\u0033",
            "",
            "",
            "\u0001\uffff",
            "",
            "",
            "\u0001\uffff",
            "",
            "\u0001\uffff",
            "",
            "",
            "",
            "",
            "\u0001\uffff",
            "",
            "",
            "",
            "\u0002\u000e\u0002\uffff\u0001\u000e\u0012\uffff\u0002\u000e"+
            "\u0001\u0011\u0003\u000e\u0001\uffff\u0001\u0011\u0014\u000e"+
            "\u0001\uffff\u003e\u000e\u0001\uffff\u0001\u000e\u0001\uffff"+
            "\ud782\u000e\u0800\uffff\u1ffe\u000e",
            "\u0001\u003a",
            "",
            "",
            "",
            "",
            "",
            "\u0001\uffff",
            "\u0001\u003c",
            "",
            "\u0001\u003d",
            "\u0001\u003e",
            "\u0001\u003f",
            "\u0001\u0040",
            "\u0000\u0042",
            "",
            ""
    ]
});

org.antlr.lang.augmentObject(XMLLexer, {
    DFA16_eot:
        org.antlr.runtime.DFA.unpackEncodedString(XMLLexer.DFA16_eotS),
    DFA16_eof:
        org.antlr.runtime.DFA.unpackEncodedString(XMLLexer.DFA16_eofS),
    DFA16_min:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XMLLexer.DFA16_minS),
    DFA16_max:
        org.antlr.runtime.DFA.unpackEncodedStringToUnsignedChars(XMLLexer.DFA16_maxS),
    DFA16_accept:
        org.antlr.runtime.DFA.unpackEncodedString(XMLLexer.DFA16_acceptS),
    DFA16_special:
        org.antlr.runtime.DFA.unpackEncodedString(XMLLexer.DFA16_specialS),
    DFA16_transition: (function() {
        var a = [],
            i,
            numStates = XMLLexer.DFA16_transitionS.length;
        for (i=0; i<numStates; i++) {
            a.push(org.antlr.runtime.DFA.unpackEncodedString(XMLLexer.DFA16_transitionS[i]));
        }
        return a;
    })()
});

XMLLexer.DFA16 = function(recognizer) {
    this.recognizer = recognizer;
    this.decisionNumber = 16;
    this.eot = XMLLexer.DFA16_eot;
    this.eof = XMLLexer.DFA16_eof;
    this.min = XMLLexer.DFA16_min;
    this.max = XMLLexer.DFA16_max;
    this.accept = XMLLexer.DFA16_accept;
    this.special = XMLLexer.DFA16_special;
    this.transition = XMLLexer.DFA16_transition;
};

org.antlr.lang.extend(XMLLexer.DFA16, org.antlr.runtime.DFA, {
    getDescription: function() {
        return "1:1: Tokens : ( QUOT | APOS | L_QuotAttrContentChar | L_AposAttrContentChar | L_ElementContentChar | GREATER | EMPTY_CLOSE_TAG | S | L_NCName | EQUAL | ESCAPE_APOS | ESCAPE_QUOT | ESCAPE_LBRACKET | ESCAPE_RBRACKET | LBRACKET | RBRACKET | SMALLER | CLOSE_TAG | CDATA_START | CDATA_END | L_CDataSection | L_PredefinedEntityRef | L_CharRef | L_DirCommentConstructor | L_DirPIConstructor | COLON );";
    },
    specialStateTransition: function(s, input) {
        var _s = s;
        var retval = (function(s, input) {
            switch ( s ) {
                        case 0 : 
                            var LA16_0 = input.LA(1);

                             
                            var index16_0 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA16_0=='\"') && ((( this.inQuotAttr )||( this.inElem || this.inQuotAttr )||( !this.inElem )))) {s = 1;}

                            else if ( (LA16_0=='\'') && ((( this.inElem || this.inAposAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 2;}

                            else if ( (LA16_0=='>') && ((( this.inElem )||( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 3;}

                            else if ( (LA16_0=='/') && ((( this.inElem )||( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 4;}

                            else if ( ((LA16_0>='\t' && LA16_0<='\n')||LA16_0=='\r'||LA16_0==' ') && ((( this.inElem )||( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 5;}

                            else if ( ((LA16_0>='A' && LA16_0<='Z')||LA16_0=='_'||(LA16_0>='a' && LA16_0<='z')) && ((( this.inElem )||( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 6;}

                            else if ( (LA16_0=='=') && ((( this.inElem  )||( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 7;}

                            else if ( (LA16_0==']') ) {s = 8;}

                            else if ( (LA16_0=='{') && (( !this.inElem || this.inAposAttr || this.inQuotAttr ))) {s = 9;}

                            else if ( (LA16_0=='}') && (( !this.inElem || this.inAposAttr || this.inQuotAttr ))) {s = 10;}

                            else if ( (LA16_0=='<') ) {s = 11;}

                            else if ( (LA16_0==':') ) {s = 12;}

                            else if ( (LA16_0=='&') ) {s = 13;}

                            else if ( (LA16_0=='!'||(LA16_0>='#' && LA16_0<='%')||(LA16_0>='(' && LA16_0<='.')||(LA16_0>='0' && LA16_0<='9')||LA16_0==';'||(LA16_0>='?' && LA16_0<='@')||(LA16_0>='[' && LA16_0<='\\')||LA16_0=='^'||LA16_0=='`'||LA16_0=='|'||(LA16_0>='~' && LA16_0<='\uD7FF')||(LA16_0>='\uE000' && LA16_0<='\uFFFD')) && ((( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 14;}

                             
                            input.seek(index16_0);
                            if ( s>=0 ) return s;
                            break;
                        case 1 : 
                            var LA16_64 = input.LA(1);

                             
                            var index16_64 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((LA16_64>='\u0000' && LA16_64<='\uFFFF')) && (( !this.inElem ))) {s = 66;}

                            else s = 65;

                             
                            input.seek(index16_64);
                            if ( s>=0 ) return s;
                            break;
                        case 2 : 
                            var LA16_7 = input.LA(1);

                             
                            var index16_7 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((LA16_7>='\t' && LA16_7<='\n')||LA16_7=='\r'||(LA16_7>=' ' && LA16_7<='!')||(LA16_7>='#' && LA16_7<='%')||(LA16_7>='(' && LA16_7<=';')||(LA16_7>='=' && LA16_7<='z')||LA16_7=='|'||(LA16_7>='~' && LA16_7<='\uD7FF')||(LA16_7>='\uE000' && LA16_7<='\uFFFD')) && ((( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 14;}

                            else if ( (LA16_7=='\"'||LA16_7=='\'') && (( !this.inElem ))) {s = 17;}

                            else s = 26;

                             
                            input.seek(index16_7);
                            if ( s>=0 ) return s;
                            break;
                        case 3 : 
                            var LA16_25 = input.LA(1);

                             
                            var index16_25 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((LA16_25>='-' && LA16_25<='.')||(LA16_25>='0' && LA16_25<='9')||(LA16_25>='A' && LA16_25<='Z')||LA16_25=='_'||(LA16_25>='a' && LA16_25<='z')) && ((( this.inElem )||( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 25;}

                            else if ( (LA16_25=='\"'||LA16_25=='\'') && (( !this.inElem ))) {s = 17;}

                            else if ( ((LA16_25>='\t' && LA16_25<='\n')||LA16_25=='\r'||(LA16_25>=' ' && LA16_25<='!')||(LA16_25>='#' && LA16_25<='%')||(LA16_25>='(' && LA16_25<=',')||LA16_25=='/'||(LA16_25>=':' && LA16_25<=';')||(LA16_25>='=' && LA16_25<='@')||(LA16_25>='[' && LA16_25<='^')||LA16_25=='`'||LA16_25=='|'||(LA16_25>='~' && LA16_25<='\uD7FF')||(LA16_25>='\uE000' && LA16_25<='\uFFFD')) && ((( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 14;}

                            else s = 24;

                             
                            input.seek(index16_25);
                            if ( s>=0 ) return s;
                            break;
                        case 4 : 
                            var LA16_3 = input.LA(1);

                             
                            var index16_3 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((LA16_3>='\t' && LA16_3<='\n')||LA16_3=='\r'||(LA16_3>=' ' && LA16_3<='!')||(LA16_3>='#' && LA16_3<='%')||(LA16_3>='(' && LA16_3<=';')||(LA16_3>='=' && LA16_3<='z')||LA16_3=='|'||(LA16_3>='~' && LA16_3<='\uD7FF')||(LA16_3>='\uE000' && LA16_3<='\uFFFD')) && ((( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 14;}

                            else if ( (LA16_3=='\"'||LA16_3=='\'') && (( !this.inElem ))) {s = 17;}

                            else s = 20;

                             
                            input.seek(index16_3);
                            if ( s>=0 ) return s;
                            break;
                        case 5 : 
                            var LA16_10 = input.LA(1);

                             
                            var index16_10 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA16_10=='}') && (( !this.inElem || this.inAposAttr || this.inQuotAttr ))) {s = 30;}

                            else s = 31;

                             
                            input.seek(index16_10);
                            if ( s>=0 ) return s;
                            break;
                        case 6 : 
                            var LA16_39 = input.LA(1);

                             
                            var index16_39 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (( !this.inElem )) ) {s = 17;}

                            else if ( (( this.inQuotAttr )) ) {s = 54;}

                             
                            input.seek(index16_39);
                            if ( s>=0 ) return s;
                            break;
                        case 7 : 
                            var LA16_41 = input.LA(1);

                             
                            var index16_41 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (( !this.inElem )) ) {s = 17;}

                            else if ( (( this.inAposAttr )) ) {s = 55;}

                             
                            input.seek(index16_41);
                            if ( s>=0 ) return s;
                            break;
                        case 8 : 
                            var LA16_27 = input.LA(1);

                             
                            var index16_27 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA16_27=='>') ) {s = 50;}

                            else if ( ((LA16_27>='\t' && LA16_27<='\n')||LA16_27=='\r'||(LA16_27>=' ' && LA16_27<='!')||(LA16_27>='#' && LA16_27<='%')||(LA16_27>='(' && LA16_27<=';')||LA16_27=='='||(LA16_27>='?' && LA16_27<='z')||LA16_27=='|'||(LA16_27>='~' && LA16_27<='\uD7FF')||(LA16_27>='\uE000' && LA16_27<='\uFFFD')) && ((( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 14;}

                            else if ( (LA16_27=='\"'||LA16_27=='\'') && (( !this.inElem ))) {s = 17;}

                            else s = 22;

                             
                            input.seek(index16_27);
                            if ( s>=0 ) return s;
                            break;
                        case 9 : 
                            var LA16_16 = input.LA(1);

                             
                            var index16_16 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (( this.inElem || this.inQuotAttr )) ) {s = 40;}

                            else if ( (( !this.inElem )) ) {s = 17;}

                             
                            input.seek(index16_16);
                            if ( s>=0 ) return s;
                            break;
                        case 10 : 
                            var LA16_19 = input.LA(1);

                             
                            var index16_19 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (( this.inElem || this.inAposAttr )) ) {s = 42;}

                            else if ( (( !this.inElem )) ) {s = 17;}

                             
                            input.seek(index16_19);
                            if ( s>=0 ) return s;
                            break;
                        case 11 : 
                            var LA16_8 = input.LA(1);

                             
                            var index16_8 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA16_8==']') ) {s = 27;}

                            else if ( ((LA16_8>='\t' && LA16_8<='\n')||LA16_8=='\r'||(LA16_8>=' ' && LA16_8<='!')||(LA16_8>='#' && LA16_8<='%')||(LA16_8>='(' && LA16_8<=';')||(LA16_8>='=' && LA16_8<='\\')||(LA16_8>='^' && LA16_8<='z')||LA16_8=='|'||(LA16_8>='~' && LA16_8<='\uD7FF')||(LA16_8>='\uE000' && LA16_8<='\uFFFD')) && ((( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 14;}

                            else if ( (LA16_8=='\"'||LA16_8=='\'') && (( !this.inElem ))) {s = 17;}

                            else s = 22;

                             
                            input.seek(index16_8);
                            if ( s>=0 ) return s;
                            break;
                        case 12 : 
                            var LA16_14 = input.LA(1);

                             
                            var index16_14 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((LA16_14>='\t' && LA16_14<='\n')||LA16_14=='\r'||(LA16_14>=' ' && LA16_14<='!')||(LA16_14>='#' && LA16_14<='%')||(LA16_14>='(' && LA16_14<=';')||(LA16_14>='=' && LA16_14<='z')||LA16_14=='|'||(LA16_14>='~' && LA16_14<='\uD7FF')||(LA16_14>='\uE000' && LA16_14<='\uFFFD')) && ((( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 14;}

                            else if ( (LA16_14=='\"'||LA16_14=='\'') && (( !this.inElem ))) {s = 17;}

                            else s = 22;

                             
                            input.seek(index16_14);
                            if ( s>=0 ) return s;
                            break;
                        case 13 : 
                            var LA16_4 = input.LA(1);

                             
                            var index16_4 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA16_4=='>') && ((( this.inElem )||( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 21;}

                            else if ( ((LA16_4>='\t' && LA16_4<='\n')||LA16_4=='\r'||(LA16_4>=' ' && LA16_4<='!')||(LA16_4>='#' && LA16_4<='%')||(LA16_4>='(' && LA16_4<=';')||LA16_4=='='||(LA16_4>='?' && LA16_4<='z')||LA16_4=='|'||(LA16_4>='~' && LA16_4<='\uD7FF')||(LA16_4>='\uE000' && LA16_4<='\uFFFD')) && ((( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 14;}

                            else if ( (LA16_4=='\"'||LA16_4=='\'') && (( !this.inElem ))) {s = 17;}

                            else s = 22;

                             
                            input.seek(index16_4);
                            if ( s>=0 ) return s;
                            break;
                        case 14 : 
                            var LA16_36 = input.LA(1);

                             
                            var index16_36 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (( this.inQuotAttr )) ) {s = 43;}

                            else if ( (( this.inAposAttr )) ) {s = 44;}

                            else if ( (( !this.inElem )) ) {s = 17;}

                            else if ( (true) ) {s = 53;}

                             
                            input.seek(index16_36);
                            if ( s>=0 ) return s;
                            break;
                        case 15 : 
                            var LA16_22 = input.LA(1);

                             
                            var index16_22 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (( this.inQuotAttr )) ) {s = 43;}

                            else if ( (( this.inAposAttr )) ) {s = 44;}

                            else if ( (( !this.inElem )) ) {s = 17;}

                             
                            input.seek(index16_22);
                            if ( s>=0 ) return s;
                            break;
                        case 16 : 
                            var LA16_18 = input.LA(1);

                             
                            var index16_18 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((LA16_18>='\t' && LA16_18<='\n')||LA16_18=='\r'||(LA16_18>=' ' && LA16_18<='%')||(LA16_18>='\'' && LA16_18<=';')||(LA16_18>='=' && LA16_18<='z')||LA16_18=='|'||(LA16_18>='~' && LA16_18<='\uD7FF')||(LA16_18>='\uE000' && LA16_18<='\uFFFD')) && (( !this.inElem ))) {s = 17;}

                            else s = 41;

                             
                            input.seek(index16_18);
                            if ( s>=0 ) return s;
                            break;
                        case 17 : 
                            var LA16_11 = input.LA(1);

                             
                            var index16_11 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA16_11=='/') && (( !this.inElem ))) {s = 32;}

                            else if ( (LA16_11=='!') ) {s = 33;}

                            else if ( (LA16_11=='?') && (( !this.inElem ))) {s = 34;}

                            else s = 35;

                             
                            input.seek(index16_11);
                            if ( s>=0 ) return s;
                            break;
                        case 18 : 
                            var LA16_33 = input.LA(1);

                             
                            var index16_33 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA16_33=='[') ) {s = 51;}

                            else if ( (LA16_33=='-') && (( !this.inElem ))) {s = 52;}

                             
                            input.seek(index16_33);
                            if ( s>=0 ) return s;
                            break;
                        case 19 : 
                            var LA16_50 = input.LA(1);

                             
                            var index16_50 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((LA16_50>='\t' && LA16_50<='\n')||LA16_50=='\r'||(LA16_50>=' ' && LA16_50<='!')||(LA16_50>='#' && LA16_50<='%')||(LA16_50>='(' && LA16_50<=';')||(LA16_50>='=' && LA16_50<='z')||LA16_50=='|'||(LA16_50>='~' && LA16_50<='\uD7FF')||(LA16_50>='\uE000' && LA16_50<='\uFFFD')) && ((( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 14;}

                            else if ( (LA16_50=='\"'||LA16_50=='\'') && (( !this.inElem ))) {s = 17;}

                            else s = 57;

                             
                            input.seek(index16_50);
                            if ( s>=0 ) return s;
                            break;
                        case 20 : 
                            var LA16_57 = input.LA(1);

                             
                            var index16_57 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (( this.inQuotAttr )) ) {s = 43;}

                            else if ( (( this.inAposAttr )) ) {s = 44;}

                            else if ( (( !this.inElem )) ) {s = 17;}

                            else if ( (true) ) {s = 59;}

                             
                            input.seek(index16_57);
                            if ( s>=0 ) return s;
                            break;
                        case 21 : 
                            var LA16_6 = input.LA(1);

                             
                            var index16_6 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((LA16_6>='-' && LA16_6<='.')||(LA16_6>='0' && LA16_6<='9')||(LA16_6>='A' && LA16_6<='Z')||LA16_6=='_'||(LA16_6>='a' && LA16_6<='z')) && ((( this.inElem )||( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 25;}

                            else if ( (LA16_6=='\"'||LA16_6=='\'') && (( !this.inElem ))) {s = 17;}

                            else if ( ((LA16_6>='\t' && LA16_6<='\n')||LA16_6=='\r'||(LA16_6>=' ' && LA16_6<='!')||(LA16_6>='#' && LA16_6<='%')||(LA16_6>='(' && LA16_6<=',')||LA16_6=='/'||(LA16_6>=':' && LA16_6<=';')||(LA16_6>='=' && LA16_6<='@')||(LA16_6>='[' && LA16_6<='^')||LA16_6=='`'||LA16_6=='|'||(LA16_6>='~' && LA16_6<='\uD7FF')||(LA16_6>='\uE000' && LA16_6<='\uFFFD')) && ((( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 14;}

                            else s = 24;

                             
                            input.seek(index16_6);
                            if ( s>=0 ) return s;
                            break;
                        case 22 : 
                            var LA16_21 = input.LA(1);

                             
                            var index16_21 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((LA16_21>='\t' && LA16_21<='\n')||LA16_21=='\r'||(LA16_21>=' ' && LA16_21<='!')||(LA16_21>='#' && LA16_21<='%')||(LA16_21>='(' && LA16_21<=';')||(LA16_21>='=' && LA16_21<='z')||LA16_21=='|'||(LA16_21>='~' && LA16_21<='\uD7FF')||(LA16_21>='\uE000' && LA16_21<='\uFFFD')) && ((( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 14;}

                            else if ( (LA16_21=='\"'||LA16_21=='\'') && (( !this.inElem ))) {s = 17;}

                            else s = 46;

                             
                            input.seek(index16_21);
                            if ( s>=0 ) return s;
                            break;
                        case 23 : 
                            var LA16_26 = input.LA(1);

                             
                            var index16_26 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (( this.inQuotAttr )) ) {s = 43;}

                            else if ( (( this.inAposAttr )) ) {s = 44;}

                            else if ( (( !this.inElem )) ) {s = 17;}

                            else if ( (( this.inElem  )) ) {s = 49;}

                             
                            input.seek(index16_26);
                            if ( s>=0 ) return s;
                            break;
                        case 24 : 
                            var LA16_23 = input.LA(1);

                             
                            var index16_23 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (( this.inQuotAttr )) ) {s = 43;}

                            else if ( (( this.inAposAttr )) ) {s = 44;}

                            else if ( (( !this.inElem )) ) {s = 17;}

                            else if ( (( this.inElem )) ) {s = 47;}

                             
                            input.seek(index16_23);
                            if ( s>=0 ) return s;
                            break;
                        case 25 : 
                            var LA16_24 = input.LA(1);

                             
                            var index16_24 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (( this.inQuotAttr )) ) {s = 43;}

                            else if ( (( this.inAposAttr )) ) {s = 44;}

                            else if ( (( !this.inElem )) ) {s = 17;}

                            else if ( (( this.inElem )) ) {s = 48;}

                             
                            input.seek(index16_24);
                            if ( s>=0 ) return s;
                            break;
                        case 26 : 
                            var LA16_15 = input.LA(1);

                             
                            var index16_15 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((LA16_15>='\t' && LA16_15<='\n')||LA16_15=='\r'||(LA16_15>=' ' && LA16_15<='%')||(LA16_15>='\'' && LA16_15<=';')||(LA16_15>='=' && LA16_15<='z')||LA16_15=='|'||(LA16_15>='~' && LA16_15<='\uD7FF')||(LA16_15>='\uE000' && LA16_15<='\uFFFD')) && (( !this.inElem ))) {s = 17;}

                            else s = 39;

                             
                            input.seek(index16_15);
                            if ( s>=0 ) return s;
                            break;
                        case 27 : 
                            var LA16_12 = input.LA(1);

                             
                            var index16_12 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((LA16_12>='\t' && LA16_12<='\n')||LA16_12=='\r'||(LA16_12>=' ' && LA16_12<='!')||(LA16_12>='#' && LA16_12<='%')||(LA16_12>='(' && LA16_12<=';')||(LA16_12>='=' && LA16_12<='z')||LA16_12=='|'||(LA16_12>='~' && LA16_12<='\uD7FF')||(LA16_12>='\uE000' && LA16_12<='\uFFFD')) && ((( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 14;}

                            else if ( (LA16_12=='\"'||LA16_12=='\'') && (( !this.inElem ))) {s = 17;}

                            else s = 36;

                             
                            input.seek(index16_12);
                            if ( s>=0 ) return s;
                            break;
                        case 28 : 
                            var LA16_46 = input.LA(1);

                             
                            var index16_46 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (( this.inQuotAttr )) ) {s = 43;}

                            else if ( (( this.inAposAttr )) ) {s = 44;}

                            else if ( (( !this.inElem )) ) {s = 17;}

                            else if ( (( this.inElem )) ) {s = 56;}

                             
                            input.seek(index16_46);
                            if ( s>=0 ) return s;
                            break;
                        case 29 : 
                            var LA16_20 = input.LA(1);

                             
                            var index16_20 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (( this.inQuotAttr )) ) {s = 43;}

                            else if ( (( this.inAposAttr )) ) {s = 44;}

                            else if ( (( !this.inElem )) ) {s = 17;}

                            else if ( (( this.inElem )) ) {s = 45;}

                             
                            input.seek(index16_20);
                            if ( s>=0 ) return s;
                            break;
                        case 30 : 
                            var LA16_5 = input.LA(1);

                             
                            var index16_5 = input.index();
                            input.rewind();
                            s = -1;
                            if ( ((LA16_5>='\t' && LA16_5<='\n')||LA16_5=='\r'||LA16_5==' ') && ((( this.inElem )||( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 5;}

                            else if ( (LA16_5=='\"'||LA16_5=='\'') && (( !this.inElem ))) {s = 17;}

                            else if ( (LA16_5=='!'||(LA16_5>='#' && LA16_5<='%')||(LA16_5>='(' && LA16_5<=';')||(LA16_5>='=' && LA16_5<='z')||LA16_5=='|'||(LA16_5>='~' && LA16_5<='\uD7FF')||(LA16_5>='\uE000' && LA16_5<='\uFFFD')) && ((( this.inQuotAttr )||( this.inAposAttr )||( !this.inElem )))) {s = 14;}

                            else s = 23;

                             
                            input.seek(index16_5);
                            if ( s>=0 ) return s;
                            break;
                        case 31 : 
                            var LA16_1 = input.LA(1);

                             
                            var index16_1 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA16_1=='\"') && ((( this.inQuotAttr )||( !this.inElem )))) {s = 15;}

                            else if ( ((LA16_1>='\t' && LA16_1<='\n')||LA16_1=='\r'||(LA16_1>=' ' && LA16_1<='!')||(LA16_1>='#' && LA16_1<='%')||(LA16_1>='\'' && LA16_1<=';')||(LA16_1>='=' && LA16_1<='z')||LA16_1=='|'||(LA16_1>='~' && LA16_1<='\uD7FF')||(LA16_1>='\uE000' && LA16_1<='\uFFFD')) && (( !this.inElem ))) {s = 17;}

                            else s = 16;

                             
                            input.seek(index16_1);
                            if ( s>=0 ) return s;
                            break;
                        case 32 : 
                            var LA16_13 = input.LA(1);

                             
                            var index16_13 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA16_13=='#') ) {s = 37;}

                            else if ( (LA16_13=='a'||LA16_13=='g'||LA16_13=='l'||LA16_13=='q') && (( !this.inElem || this.inAposAttr || this.inQuotAttr ))) {s = 38;}

                             
                            input.seek(index16_13);
                            if ( s>=0 ) return s;
                            break;
                        case 33 : 
                            var LA16_9 = input.LA(1);

                             
                            var index16_9 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA16_9=='{') && (( !this.inElem || this.inAposAttr || this.inQuotAttr ))) {s = 28;}

                            else s = 29;

                             
                            input.seek(index16_9);
                            if ( s>=0 ) return s;
                            break;
                        case 34 : 
                            var LA16_2 = input.LA(1);

                             
                            var index16_2 = input.index();
                            input.rewind();
                            s = -1;
                            if ( (LA16_2=='\'') && ((( this.inAposAttr )||( !this.inElem )))) {s = 18;}

                            else if ( ((LA16_2>='\t' && LA16_2<='\n')||LA16_2=='\r'||(LA16_2>=' ' && LA16_2<='%')||(LA16_2>='(' && LA16_2<=';')||(LA16_2>='=' && LA16_2<='z')||LA16_2=='|'||(LA16_2>='~' && LA16_2<='\uD7FF')||(LA16_2>='\uE000' && LA16_2<='\uFFFD')) && (( !this.inElem ))) {s = 17;}

                            else s = 19;

                             
                            input.seek(index16_2);
                            if ( s>=0 ) return s;
                            break;
            }
        }).call(this.recognizer, s, input);
        if (!org.antlr.lang.isUndefined(retval)) {
            return retval;
        }
        var nvae =
            new org.antlr.runtime.NoViableAltException(this.getDescription(), 16, _s, input);
        this.error(nvae);
        throw nvae;
    },
    dummy: null
});
 
})();
exports.XMLLexer = XMLLexer; });
define('ace/mode/xquery/XQDTParser', ['require', 'exports', 'module' , 'ace/mode/xquery/antlr3-all', 'ace/mode/xquery/XQuerySemanticHighlighter'], function(require, exports, module) {

var org =  require("./antlr3-all").org;
var XQuerySemanticHighlighter = require("./XQuerySemanticHighlighter").XQuerySemanticHighlighter;

var XQDTParser = exports.XQDTParser = function(input, state)
{
  this.highlighter = new XQuerySemanticHighlighter();
  var that = this;

  input.getTokenSource().addComment = function(start, stop) { 
    var comments = input.getTokenSource().comments;
    for(var i in comments)
    { 
      var c = comments[i];
      that.highlighter.addToken(c.start, c.stop, "comment");
    }
    input.getTokenSource().comments = [];
    that.highlighter.addToken(start, stop, "comment")
  };
  XQDTParser.superclass.constructor.call(this, input, state);
};

org.antlr.lang.extend(XQDTParser, org.antlr.runtime.Parser, {

});

});
define('ace/mode/xquery/XQuerySemanticHighlighter', ['require', 'exports', 'module' , 'ace/mode/xquery/Position'], function(require, exports, module) {
  
  var Position = require("./Position").Position;
  var XQuerySemanticHighlighter = exports.XQuerySemanticHighlighter = function() {
    this.tokenizer = null;
    this.plain = null;
    this.source = [];
    this.lines = [];

    this.getTokens = function() {
      var resultLines  = new Array(this.source.length);
      var resultStates = new Array(this.source.length);
      var previousState = "start";
      var i = 0;
      for(i in this.source){
        var lineTokens = [];
        var tokens = [];
        if(this.lines[i]) {
          tokens = this.lines[i].sort(function(a, b){ return a.position.getOffset() - b.position.getOffset();  });
        }
        var sourceLine = this.source[i];
        var tokenizedLine = "";
        var cursor = 0;
        var j = 0;
        for(j in tokens)
        {
          var token = tokens[j];
          var position = token.position;
          if(position.getOffset() > cursor) {
            var value = sourceLine.substring(cursor, position.getOffset());
            tokenizedLine += value;
            lineTokens.push({
              type: "text",
              value: value
            });
          }
          cursor = position.getOffset() + position.getLength();
          value = sourceLine.substring(position.getOffset(), cursor);
          tokenizedLine += value;
          lineTokens.push({
            type: token.type,
            value: value 
          });
        }
        
        var nextState = "start";
        if(lineTokens.length > 0) {
          lineTokens[lineTokens.length - 1].type;
        }
        nextState = (nextState != "comment" && nextState != "string" && nextState != "cdata" && nextState != "tag") ? "start" : nextState;
        
        if(cursor < (sourceLine.length )) {
          value = sourceLine.substring(cursor);
          lineTokens.push({
             type: "text",
             value: value
          });
          tokenizedLine += value; 
        }
        //Check if the tokenized line is equal to the original one:
        if(sourceLine == tokenizedLine) {
          resultLines[i] = lineTokens;
          resultStates[i] = nextState;
          //result[i] = { line: sourceLine, startState: previousState, tokens: { tokens: lineTokens, state: nextState } };
        } else {
          //console.log("sourceLine: " + sourceLine);
          //console.log("tokenizedLine: " + tokenizedLine);
          resultLines[i] = [{ type: "text", value: sourceLine }];
          resultStates[i] = nextState;
          //result[i] = { tokens: [ { type: "text", value: sourceLine } ], state: nextState };
        }

        if(resultLines[i].length === 1 && resultLines[i][0].type === "text" && this.tokenizer instanceof Object) {
          var prev = resultStates[i - 1] ?  resultStates[i - 1] : "start";
          var result = this.tokenizer.getLineTokens(resultLines[i][0].value, prev);
          resultLines[i] = result.tokens;
          resultStates[i] = result.state;
        }
      }
      return {states: resultStates, lines: resultLines};
    };

    this.addToken = function(start, stop, type) {
      var before = this.plain.substring(0, start);
      var startLine = this.plain.substring(0, start).split("\n").length;
      startLine = startLine == 0 ? 0 : startLine - 1;
      
      var offset = before.lastIndexOf("\n");
      offset = offset == -1 ? start : start - before.lastIndexOf("\n") - 1;

      var cursor = start;

      var text = this.plain.substring(start, stop);

      var currentLine = startLine;
      for(var i in text)
      {
        var c = text[i];
        if(c == "\n") {
          var s = i;
          s = s < stop ? s : stop; 
          this.addPosition(new Position(currentLine, offset, s), type);
          currentLine++;
          offset = 0;
          cursor = i;
        } 
      };
      this.addPosition(new Position(currentLine, offset, stop - cursor + 1), type); 
    };
    
    this.addPosition = function(position, type)
    {
      var line = position.getLine();
      if(!this.lines[line]) {
        this.lines[line] = [];
      }
      this.lines[line].push({
        type: type,
        position: position
      });
    };

    this.setSource = function(source)
    {
      this.plain  = source.data;
      this.source = this.plain.split("\n");
    };
      //console.log("Line: " + token.getLine());
      //console.log(token.getText());
      //console.log(type);
  };
});
define('ace/mode/xquery/Position', ['require', 'exports', 'module' ], function(require, exports, module) {
  var Position = exports.Position = function(line, offset, length)
  {
    this.line = line;
    this.offset = offset;
    this.length = length;
    
    this.getLine = function()
    {
      return this.line;
    };

    this.getOffset = function()
    {
      return this.offset;
    };

    this.getLength = function()
    {
      return this.length;
    };
  };

});

define('ace/tokenizer', ['require', 'exports', 'module' ], function(require, exports, module) {


/**
 * class Tokenizer
 *
 * This class takes a set of highlighting rules, and creates a tokenizer out of them. For more information, see [the wiki on extending highlighters](https://github.com/ajaxorg/ace/wiki/Creating-or-Extending-an-Edit-Mode#wiki-extendingTheHighlighter).
 *
 **/

/**
 * new Tokenizer(rules, flag)
 * - rules (Object): The highlighting rules
 * - flag (String): Any additional regular expression flags to pass (like "i" for case insensitive)
 *
 * Constructs a new tokenizer based on the given rules and flags.
 *
 **/
var Tokenizer = function(rules, flag) {
    flag = flag ? "g" + flag : "g";
    this.rules = rules;

    this.regExps = {};
    this.matchMappings = {};
    for ( var key in this.rules) {
        var rule = this.rules[key];
        var state = rule;
        var ruleRegExps = [];
        var matchTotal = 0;
        var mapping = this.matchMappings[key] = {};

        for ( var i = 0; i < state.length; i++) {

            if (state[i].regex instanceof RegExp)
                state[i].regex = state[i].regex.toString().slice(1, -1);

            // Count number of matching groups. 2 extra groups from the full match
            // And the catch-all on the end (used to force a match);
            var matchcount = new RegExp("(?:(" + state[i].regex + ")|(.))").exec("a").length - 2;

            // Replace any backreferences and offset appropriately.
            var adjustedregex = state[i].regex.replace(/\\([0-9]+)/g, function (match, digit) {
                return "\\" + (parseInt(digit, 10) + matchTotal + 1);
            });

            if (matchcount > 1 && state[i].token.length !== matchcount-1)
                throw new Error("For " + state[i].regex + " the matching groups and length of the token array don't match (rule #" + i + " of state " + key + ")");

            mapping[matchTotal] = {
                rule: i,
                len: matchcount
            };
            matchTotal += matchcount;

            ruleRegExps.push(adjustedregex);
        }

        this.regExps[key] = new RegExp("(?:(" + ruleRegExps.join(")|(") + ")|(.))", flag);
    }
};

(function() {

    /**
    * Tokenizer.getLineTokens() -> Object
    *
    * Returns an object containing two properties: `tokens`, which contains all the tokens; and `state`, the current state.
    **/
    this.getLineTokens = function(line, startState) {
        var currentState = startState || "start";
        var state = this.rules[currentState];
        var mapping = this.matchMappings[currentState];
        var re = this.regExps[currentState];
        re.lastIndex = 0;

        var match, tokens = [];

        var lastIndex = 0;

        var token = {
            type: null,
            value: ""
        };

        while (match = re.exec(line)) {
            var type = "text";
            var rule = null;
            var value = [match[0]];

            for (var i = 0; i < match.length-2; i++) {
                if (match[i + 1] === undefined)
                    continue;

                rule = state[mapping[i].rule];

                if (mapping[i].len > 1)
                    value = match.slice(i+2, i+1+mapping[i].len);

                // compute token type
                if (typeof rule.token == "function")
                    type = rule.token.apply(this, value);
                else
                    type = rule.token;

                if (rule.next) {
                    currentState = rule.next;
                    state = this.rules[currentState];
                    mapping = this.matchMappings[currentState];
                    lastIndex = re.lastIndex;

                    re = this.regExps[currentState];

                    if (re === undefined) {
                         throw new Error("You indicated a state of " + rule.next + " to go to, but it doesn't exist!");
                    }

                    re.lastIndex = lastIndex;
                }
                break;
            }

            if (value[0]) {
                if (typeof type == "string") {
                    value = [value.join("")];
                    type = [type];
                }
                for (var i = 0; i < value.length; i++) {
                    if (!value[i])
                        continue;

                    if ((!rule || rule.merge || type[i] === "text") && token.type === type[i]) {
                        token.value += value[i];
                    } else {
                        if (token.type)
                            tokens.push(token);

                        token = {
                            type: type[i],
                            value: value[i]
                        };
                    }
                }
            }

            if (lastIndex == line.length)
                break;

            lastIndex = re.lastIndex;
        }

        if (token.type)
            tokens.push(token);

        return {
            tokens : tokens,
            state : currentState
        };
    };

}).call(Tokenizer.prototype);

exports.Tokenizer = Tokenizer;
});
define('ace/mode/xquery_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/oop', 'ace/mode/text_highlight_rules'], function(require, exports, module) {


var oop = require("../lib/oop");
var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;

var XQueryHighlightRules = function() {

    var keywordMapper = this.createKeywordMapper({
        keyword: "after|ancestor|ancestor-or-self|and|as|ascending|attribute|before|case|cast|castable|child|collation|comment|copy|count|declare|default|delete|descendant|descendant-or-self|descending|div|document|document-node|element|else|empty|empty-sequence|end|eq|every|except|first|following|following-sibling|for|function|ge|group|gt|idiv|if|import|insert|instance|intersect|into|is|item|last|le|let|lt|mod|modify|module|namespace|namespace-node|ne|node|only|or|order|ordered|parent|preceding|preceding-sibling|processing-instruction|rename|replace|return|satisfies|schema-attribute|schema-element|self|some|stable|start|switch|text|to|treat|try|typeswitch|union|unordered|validate|where|with|xquery|contains|paragraphs|sentences|times|words|by|collectionreturn|variable|version|option|when|encoding|toswitch|catch|tumbling|sliding|window|at|using|stemming|collection|schema|while|on|nodes|index|external|then|in|updating|value|of|containsbreak|loop|continue|exit|returning|append|json|position"
    }, "identifier");

    // regexp must not have capturing parentheses
    // regexps are ordered -> the first match is used

    this.$rules = {
        start : [ {
            token : "text",
            regex : "<\\!\\[CDATA\\[",
            next : "cdata"
        }, {
            token : "xml_pe",
            regex : "<\\?.*?\\?>"
        }, {
            token : "comment",
            regex : "<\\!--",
            next : "comment"
    }, {
      token : "comment",
      regex : "\\(:",
      next : "comment"
        }, {
            token : "text", // opening tag
            regex : "<\\/?",
            next : "tag"
        }, {
            token : "constant", // number
            regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
    }, {
            token : "variable", // variable
            regex : "\\$[a-zA-Z_][a-zA-Z0-9_\\-:]*\\b"
    }, {
      token: "string",
      regex : '".*?"'
    }, {
      token: "string",
      regex : "'.*?'"
        }, {
            token : "text",
            regex : "\\s+"
        }, {
            token: "support.function",
            regex: "\\w[\\w+_\\-:]+(?=\\()"
        }, {
      token : keywordMapper,
      regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
    }, {
            token: "keyword.operator",
            regex: "\\*|=|<|>|\\-|\\+"
        }, {
            token: "lparen",
            regex: "[[({]"
        }, {
            token: "rparen",
            regex: "[\\])}]"
        } ],

        tag : [ {
            token : "text",
            regex : ">",
            next : "start"
        }, {
            token : "meta.tag",
            regex : "[-_a-zA-Z0-9:]+"
        }, {
            token : "text",
            regex : "\\s+"
        }, {
            token : "string",
            regex : '".*?"'
        }, {
            token : "string",
            regex : "'.*?'"
        } ],

        cdata : [ {
            token : "comment",
            regex : "\\]\\]>",
            next : "start"
        }, {
            token : "comment",
            regex : "\\s+"
        }, {
            token : "comment",
            regex : "(?:[^\\]]|\\](?!\\]>))+"
        } ],

        comment : [ {
            token : "comment",
            regex : ".*?-->",
            next : "start"
        }, {
      token: "comment",
      regex : ".*:\\)",
      next : "start"
        }, {
            token : "comment",
            regex : ".+"
    } ]
    };
};

oop.inherits(XQueryHighlightRules, TextHighlightRules);

exports.XQueryHighlightRules = XQueryHighlightRules;
});

define('ace/mode/text_highlight_rules', ['require', 'exports', 'module' , 'ace/lib/lang'], function(require, exports, module) {


var lang = require("../lib/lang");

var TextHighlightRules = function() {

    // regexp must not have capturing parentheses
    // regexps are ordered -> the first match is used

    this.$rules = {
        "start" : [{
            token : "empty_line",
            regex : '^$'
        }, {
            token : "text",
            regex : ".+"
        }]
    };
};

(function() {

    this.addRules = function(rules, prefix) {
        for (var key in rules) {
            var state = rules[key];
            for (var i=0; i<state.length; i++) {
                var rule = state[i];
                if (rule.next) {
                    rule.next = prefix + rule.next;
                }
            }
            this.$rules[prefix + key] = state;
        }
    };

    this.getRules = function() {
        return this.$rules;
    };

    this.embedRules = function (HighlightRules, prefix, escapeRules, states) {
        var embedRules = new HighlightRules().getRules();
        if (states) {
            for (var i = 0; i < states.length; i++) {
                states[i] = prefix + states[i];
            }
        } else {
            states = [];
            for (var key in embedRules) {
                states.push(prefix + key);
            }
        }
        this.addRules(embedRules, prefix);

        for (var i = 0; i < states.length; i++) {
            Array.prototype.unshift.apply(this.$rules[states[i]], lang.deepCopy(escapeRules));
        }

        if (!this.$embeds) {
            this.$embeds = [];
        }
        this.$embeds.push(prefix);
    }

    this.getEmbeds = function() {
        return this.$embeds;
    }

    this.createKeywordMapper = function(map, defaultToken, ignoreCase, splitChar) {
        var keywords = Object.create(null);
        Object.keys(map).forEach(function(className) {
            var list = map[className].split(splitChar || "|");
            for (var i = list.length; i--; )
                keywords[list[i]] = className;
        });
        map = null;
        return ignoreCase
            ? function(value) {return keywords[value.toLowerCase()] || defaultToken }
            : function(value) {return keywords[value] || defaultToken };
    }

}).call(TextHighlightRules.prototype);

exports.TextHighlightRules = TextHighlightRules;
});
