package CSU670_Plugin.gen;
import edu.neu.ccs.demeter.dj.*;
import edu.neu.ccs.demeter.aplib.cd.ClassDefVisitor;
import edu.neu.ccs.demeter.aplib.cd.ClassDef;
import java.io.*;
import java.util.*;
import edu.neu.ccs.demeter.*;
public abstract class StrategyCombination extends Strategy {
  protected Strategy first;
  public Strategy get_first() { return first; }
  public void set_first(Strategy new_first) { first = new_first; }
  protected Strategy_Commalist rest;
  public Strategy_Commalist get_rest() { return rest; }
  public void set_rest(Strategy_Commalist new_rest) { rest = new_rest; }
  public StrategyCombination() { super(); }
  public StrategyCombination(Strategy first, Strategy_Commalist rest) {
    super();
    set_first(first);
    set_rest(rest);
  }
  void universal_trv0_bef(UniversalVisitor _v_) {
    super.universal_trv0_bef(_v_);
    ((UniversalVisitor) _v_).before(this);
  }

  void universal_trv0_aft(UniversalVisitor _v_) {
    ((UniversalVisitor) _v_).after(this);
    super.universal_trv0_aft(_v_);
  }

  void universal_trv0(UniversalVisitor _v_) {
    ((UniversalVisitor) _v_).before_first(this, first);
    first.universal_trv0(_v_);
    ((UniversalVisitor) _v_).after_first(this, first);
    ((UniversalVisitor) _v_).before_rest(this, rest);
    rest.universal_trv0(_v_);
    ((UniversalVisitor) _v_).after_rest(this, rest);
    super.universal_trv0(_v_);
  }

}
