function createFrame(enclosingEnvironment) {
        var bindings = {};
        const newFrame = {
            bind: function (name, value) {
                bindings[name] = value;
            },
            lookup: function (name) {
                var value;
                if(bindings.hasOwnProperty(name)) {
                    value = bindings[name];
                } else if (enclosingEnvironment) {
                    value = enclosingEnvironment.lookup(name);
                }
                return value;
            },
            timestamp: enclosingEnvironment ? enclosingEnvironment.timestamp : null,
            async: enclosingEnvironment ? enclosingEnvironment.async : false,
            isParallelCall: enclosingEnvironment ? enclosingEnvironment.isParallelCall : false,
            global: enclosingEnvironment ? enclosingEnvironment.global : {
                ancestry: [ null ]
            }
        };

        if (enclosingEnvironment) {
            var framePushCallback = enclosingEnvironment.lookup(Symbol.for('jsonata.__createFrame_push'));
            if(framePushCallback) {
                framePushCallback(enclosingEnvironment, newFrame);
            }
        }
       

        return newFrame
    }
Create frame
@param {Object} enclosingEnvironment - Enclosing environment
@returns {{bind: bind, lookup: lookup}} Created frame