code: function ExecutionContext(options) {
      EventEmitter.call(this);
  
      this.stringVars = {};
      this.numberVars = {};
      this.pointers = {};
      this.gosubs = [];
      this.private = {
          rnd_seed: Math.random(),
          sprites: [],
          data: []
      };
      this.constants = require('./constants');
      this.running = false;
      options = options || {};
      this.options = options;
  
      if (typeof options.delay === 'undefined') options.delay = false;
  
      // Copy all functions as constants
      for (var k in functions) {
          if (!functions.hasOwnProperty(k)) continue;
          this.constants[k] = functions[k];
      }
  
      // Stop multiple contexts conflicting with constants
      this.constants = pUtil.shallowClone(this.constants);
  }
docs: An object that provides modification and reading of the current execution
  context, as well as the ability to execute an AST in the context
  
  @param {Object?} options Options for execution
  @constructor