code: function(args, fn, type) {
      this.args = args;
      this.fn = fn;
      this.type = type;
  
      this.id = prefix + _code_node_id_count++;
  }
docs: Normally, when reduce a production, will new a LazyCode object
  
  TODO fast way to indicate ancestor-descendant relationship