// ** This file was generated with DemFGen (vers:05/23/2010)

package edu.neu.ccs.demeterf.demfgen.classes;

import edu.neu.ccs.demeterf.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.demfgen.*;
import edu.neu.ccs.demeterf.demfgen.dgp.DGPFunc;
import edu.neu.ccs.demeterf.demfgen.traversals.Travs;
import edu.neu.ccs.demeterf.demfgen.pcdgp.PCDGPFunc;
import edu.neu.ccs.demeterf.dispatch.*;
import edu.neu.ccs.demeterf.*;
import edu.neu.ccs.demeterf.demfgen.ClassHier.InhrtPair;
import edu.neu.ccs.demeterf.demfgen.DemFGenMain;
import java.io.*;
import java.io.FileInputStream;
import edu.neu.ccs.demeterf.util.Util;
import edu.neu.ccs.demeterf.util.CLI;



/** 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(CDFile _h_, _X_ incl, _X_ dgpuse, _X_ pkg, _X_ look, _X_ imports, _X_ types){
      return fold(incl,fold(dgpuse,fold(pkg,fold(look,fold(imports,types)))));
   }
   public _X_ combine(Include _h_, _X_ gen, _X_ file){
      return fold(gen,file);
   }
   public _X_ combine(IncludeCons _h_, _X_ first, _X_ rest){
      return fold(first,rest);
   }
   public _X_ combine(IncludeEmpty _h_){
      return combine();
   }
   public _X_ combine(DGPUse _h_, _X_ pkg){
      return pkg;
   }
   public _X_ combine(NoDGPUse _h_){
      return combine();
   }
   public _X_ combine(Package _h_, _X_ pkg){
      return pkg;
   }
   public _X_ combine(NoPackage _h_){
      return combine();
   }
   public _X_ combine(LookAhead _h_, _X_ n){
      return n;
   }
   public _X_ combine(NoLook _h_){
      return combine();
   }
   public _X_ combine(Import _h_, _X_ pkg){
      return pkg;
   }
   public _X_ combine(NEPkgList _h_, _X_ id, _X_ rest){
      return fold(id,rest);
   }
   public _X_ combine(PkgCons _h_, _X_ id, _X_ rest){
      return fold(id,rest);
   }
   public _X_ combine(PkgStar _h_){
      return combine();
   }
   public _X_ combine(PkgEmpty _h_){
      return combine();
   }
   public _X_ combine(ImportCons _h_, _X_ first, _X_ rest){
      return fold(first,rest);
   }
   public _X_ combine(ImportEmpty _h_){
      return combine();
   }
   public _X_ combine(IntfcDef _h_, _X_ gen, _X_ name, _X_ tparams, _X_ subtypes){
      return fold(gen,fold(name,fold(tparams,subtypes)));
   }
   public _X_ combine(ClassDef _h_, _X_ gen, _X_ name, _X_ tparams, _X_ subtypes, _X_ fields, _X_ ext){
      return fold(gen,fold(name,fold(tparams,fold(subtypes,fold(fields,ext)))));
   }
   public _X_ combine(NoGen _h_){
      return combine();
   }
   public _X_ combine(NoParse _h_){
      return combine();
   }
   public _X_ combine(Extern _h_){
      return combine();
   }
   public _X_ combine(YesGen _h_){
      return combine();
   }
   public _X_ combine(DefParams _h_, _X_ types){
      return types;
   }
   public _X_ combine(EmptyDefParams _h_){
      return combine();
   }
   public _X_ combine(NameDef _h_, _X_ id, _X_ bnd){
      return fold(id,bnd);
   }
   public _X_ combine(ClassBound _h_, _X_ bound){
      return bound;
   }
   public _X_ combine(NoBound _h_){
      return combine();
   }
   public _X_ combine(NoImpl _h_){
      return combine();
   }
   public _X_ combine(IntfImpl _h_, _X_ intf){
      return intf;
   }
   public _X_ combine(NENameList _h_, _X_ first, _X_ rest){
      return fold(first,rest);
   }
   public _X_ combine(NameCons _h_, _X_ first, _X_ rest){
      return fold(first,rest);
   }
   public _X_ combine(NameEmpty _h_){
      return combine();
   }
   public _X_ combine(TypeUse _h_, _X_ name, _X_ tparams){
      return fold(name,tparams);
   }
   public _X_ combine(UseParams _h_, _X_ types){
      return types;
   }
   public _X_ combine(EmptyUseParams _h_){
      return combine();
   }
   public _X_ combine(NETypeUseList _h_, _X_ first, _X_ rest){
      return fold(first,rest);
   }
   public _X_ combine(TypeUseCons _h_, _X_ first, _X_ rest){
      return fold(first,rest);
   }
   public _X_ combine(TypeUseEmpty _h_){
      return combine();
   }
   public _X_ combine(Field _h_, _X_ name, _X_ type){
      return fold(name,type);
   }
   public _X_ combine(AddSpace _h_){
      return combine();
   }
   public _X_ combine(AddTab _h_){
      return combine();
   }
   public _X_ combine(AddLine _h_){
      return combine();
   }
   public _X_ combine(AddReturn _h_){
      return combine();
   }
   public _X_ combine(Plus _h_){
      return combine();
   }
   public _X_ combine(Minus _h_){
      return combine();
   }
   public _X_ combine(AddToken _h_, _X_ str){
      return str;
   }
   public _X_ combine(TheEOF _h_){
      return combine();
   }
   public _X_ combine(RealToken _h_, _X_ str){
      return str;
   }
   public _X_ combine(EmptyToken _h_){
      return combine();
   }
   public _X_ combine(TypeDefCons _h_, _X_ first, _X_ rest){
      return fold(first,rest);
   }
   public _X_ combine(TypeDefEmpty _h_){
      return combine();
   }
   public _X_ combine(FieldCons _h_, _X_ first, _X_ rest){
      return fold(first,rest);
   }
   public _X_ combine(FieldEmpty _h_){
      return combine();
   }
   public _X_ combine(NESubtypeList _h_, _X_ first, _X_ rest){
      return fold(first,rest);
   }
   public _X_ combine(SubtypeCons _h_, _X_ first, _X_ rest){
      return fold(first,rest);
   }
   public _X_ combine(SubtypeEmpty _h_){
      return combine();
   }
   public _X_ combine(BehFile _h_, _X_ incl, _X_ behs){
      return fold(incl,behs);
   }
   public _X_ combine(BehDefCons _h_, _X_ first, _X_ rest){
      return fold(first,rest);
   }
   public _X_ combine(BehDefEmpty _h_){
      return combine();
   }
   public _X_ combine(BehDef _h_, _X_ name, _X_ body){
      return fold(name,body);
   }
   public _X_ combine(TE _h_){
      return combine();
   }
   public _X_ combine(RTParseException _h_){
      return combine();
   }
   public _X_ combine(RTFileNotFound _h_){
      return combine();
   }
   public _X_ combine(DummyDGP _h_, _X_ behavior){
      return behavior;
   }
   public _X_ combine(DummyTrav _h_, _X_ dfgl, _X_ tdl, _X_ dgpl, _X_ otdl, _X_ flds){
      return fold(dfgl,fold(tdl,fold(dgpl,fold(otdl,flds))));
   }
   public _X_ combine(RED _h_){
      return combine();
   }
   public _X_ combine(BLACK _h_){
      return combine();
   }

   public _X_ combine(Empty _h_){
      return combine();
   }
   public _X_ combine(Cons _h_, _X_ first, _X_ rest){
      return fold(first,rest);
   }
   public _X_ combine(None _h_){
      return combine();
   }
   public _X_ combine(Some _h_, _X_ just){
      return just;
   }


}