// ** This class was generated with DemFGen (vers:09/27/2009)

package gen;

import edu.neu.ccs.demeterf.control.Fields;
import edu.neu.ccs.demeterf.lib.ident;
import edu.neu.ccs.demeterf.lib.verbatim;
import edu.neu.ccs.demeterf.lib.*;
import edu.neu.ccs.demeterf.lib.*;
import edu.neu.ccs.demeterf.*;
import edu.neu.ccs.demeterf.lib.*;



/** Creates a Static version of the TU class for a specific CD */
public abstract class StaticTU<_X_> extends edu.neu.ccs.demeterf.FC{
   public _X_ combine(byte _h_){ return combine(); }
   public _X_ combine(short _h_){ return combine(); }
   public _X_ combine(int _h_){ return combine(); }
   public _X_ combine(long _h_){ return combine(); }
   public _X_ combine(float _h_){ return combine(); }
   public _X_ combine(double _h_){ return combine(); }
   public _X_ combine(char _h_){ return combine(); }
   public _X_ combine(boolean _h_){ return combine(); }
   public _X_ combine(String _h_){ return combine(); }
   public _X_ combine(ident _h_){ return combine(); }
   public _X_ combine(verbatim _h_){ return combine(); }

   public abstract _X_ fold(_X_ a, _X_ b);
   public abstract _X_ combine();
   public _X_ combine(Ifz _h_, _X_ cnd, _X_ thn, _X_ els){
      return fold(cnd,fold(thn,els));
   }
   public _X_ combine(Def _h_, _X_ id, _X_ e, _X_ body){
      return fold(id,fold(e,body));
   }
   public _X_ combine(Bin _h_, _X_ op, _X_ left, _X_ right){
      return fold(op,fold(left,right));
   }
   public _X_ combine(Var _h_, _X_ id){
      return id;
   }
   public _X_ combine(Num _h_, _X_ val){
      return val;
   }
   public _X_ combine(Sub _h_){
      return combine();
   }
   public _X_ combine(ExtEnv _h_, _X_ id, _X_ v, _X_ rest){
      return fold(id,fold(v,rest));
   }
   public _X_ combine(EmptyEnv _h_){
      return combine();
   }
   public _X_ combine(error _h_){
      return combine();
   }
   public _X_ combine(Minus _h_){
      return combine();
   }
   public _X_ combine(Push _h_, _X_ i){
      return i;
   }
   public _X_ combine(Pop _h_){
      return combine();
   }
   public _X_ combine(Define _h_){
      return combine();
   }
   public _X_ combine(Undef _h_){
      return combine();
   }
   public _X_ combine(Load _h_, _X_ i){
      return i;
   }
   public _X_ combine(Label _h_, _X_ id){
      return id;
   }
   public _X_ combine(Jmp _h_, _X_ id){
      return id;
   }
   public _X_ combine(IfNZ _h_, _X_ id){
      return id;
   }
   public _X_ combine(OpCons _h_, _X_ first, _X_ rest){
      return fold(first,rest);
   }
   public _X_ combine(OpEmpty _h_){
      return combine();
   }
   public _X_ combine(ExecStack _h_){
      return combine();
   }
   public _X_ combine(CodeEntry _h_, _X_ label, _X_ pc){
      return fold(label,pc);
   }

}