code: function(environment, options, context, asObject) {
        this.environment = environment;
        this.options = options || {};
  
        Handlebars.log(Handlebars.logger.DEBUG, this.environment.disassemble() + "\n\n");
  
        this.name = this.environment.name;
        this.isChild = !!context;
        this.context = context || {
          programs: [],
          aliases: { }
        };
  
        this.preamble();
  
        this.stackSlot = 0;
        this.stackVars = [];
        this.registers = { list: [] };
        this.compileStack = [];
  
        this.compileChildren(environment, options);
  
        var opcodes = environment.opcodes, opcode;
  
        this.i = 0;
  
        for(l=opcodes.length; this.i<l; this.i++) {
          opcode = opcodes[this.i];
  
          if(opcode.opcode === 'DECLARE') {
            this[opcode.name] = opcode.value;
          } else {
            this[opcode.opcode].apply(this, opcode.args);
          }
        }
  
        return this.createFunctionContext(asObject);
      }
docs: END PUBLIC API