package aspectEditor.aspectEditorUtils;
import java.util.jar.JarFile;
import java.util.*;
import java.io.*;
import edu.neu.ccs.demeter.aplib.*;
import edu.neu.ccs.demeter.*;
abstract class ClassGlobSpec {
  public ClassGlobSpec() {
    super();
  }
  boolean match(Object v, NameMapI N) {
    __V_ClassGlobSpec_match v0 = new __V_ClassGlobSpec_match();
    v0.set_v(v);
    v0.set_N(N);
    v0.start();
    __trav_match(v0);
    v0.finish();
    return v0.get_return_val();
  }
  Collection map(SymbolicNameMapI N) {
    __V_ClassGlobSpec_map v0 = new __V_ClassGlobSpec_map();
    v0.set_N(N);
    v0.start();
    __trav_map(v0);
    v0.finish();
    return v0.get_return_val();
  }
  Collection addStrings(Collection c) {
    __V_ClassGlobSpec_addStrings v0 = new __V_ClassGlobSpec_addStrings();
    v0.set_c(c);
    v0.start();
    __trav_addStrings(v0);
    v0.finish();
    return v0.get_return_val();
  }
  Collection getStrings() { return addStrings(new ArrayList()); }
  GlobSpec toGlobSpec() {
    __V_ClassGlobSpec_toGlobSpec v0 = new __V_ClassGlobSpec_toGlobSpec();
    v0.start();
    allGlobs(v0);
    v0.finish();
    return v0.get_return_val();
  }
  abstract Enumeration elements() ;
  public boolean equals(Object obj) {
    return toString().equals(obj.toString());
  }
  public int hashCode() {
    return toString().hashCode();
  }
  ClassGlobSpec deepCopy() {
    CopyVisitor c = new CopyVisitor(getClass());
    universal_trv0(c);
    return (ClassGlobSpec) c.get_copy();
  }
  void universal_trv0_bef(UniversalVisitor _v_) {
    ((UniversalVisitor) _v_).before(this);
  }

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

  void universal_trv0(UniversalVisitor _v_) {  }

  void __trav_buildDict_NameMap_trv_bef(__V_NameMap_buildDict __v0) {
    ((__V_NameMap_buildDict) __v0).before(this);
  }

  void __trav_buildDict_NameMap_trv_aft(__V_NameMap_buildDict __v0) {  }

  void __trav_buildDict_NameMap_trv(__V_NameMap_buildDict __v0) {  }

  public void allGlobs(GlobVisitor v) {
    allGlobs_ClassGlobSpec_trv(v);
  }

  void allGlobs_ClassGlobSpec_trv_bef(GlobVisitor v) {
    ((GlobVisitor) v).before(this);
  }

  void allGlobs_ClassGlobSpec_trv_aft(GlobVisitor v) {
    ((UniversalVisitor) v).after(this);
  }

  void allGlobs_ClassGlobSpec_trv(GlobVisitor v) {  }

  public void __trav_match(__V_ClassGlobSpec_match __v0) {
    java.util.BitSet startSet = new java.util.BitSet();
    startSet.set(0);
    __trav_match_ClassGlobSpec_trv(startSet, __v0);
  }

  void __trav_match_ClassGlobSpec_trv_bef(__V_ClassGlobSpec_match __v0) {  }

  void __trav_match_ClassGlobSpec_trv_aft(__V_ClassGlobSpec_match __v0) {  }

  void __trav_match_ClassGlobSpec_trv(java.util.BitSet nodes, __V_ClassGlobSpec_match __v0) {  }

  public void __trav_map(__V_ClassGlobSpec_map __v0) {
    __trav_map_ClassGlobSpec_trv(__v0);
  }

  void __trav_map_ClassGlobSpec_trv_bef(__V_ClassGlobSpec_map __v0) {  }

  void __trav_map_ClassGlobSpec_trv_aft(__V_ClassGlobSpec_map __v0) {  }

  void __trav_map_ClassGlobSpec_trv(__V_ClassGlobSpec_map __v0) {  }

  public void __trav_addStrings(__V_ClassGlobSpec_addStrings __v0) {
    __trav_addStrings_ClassGlobSpec_trv(__v0);
  }

  void __trav_addStrings_ClassGlobSpec_trv_bef(__V_ClassGlobSpec_addStrings __v0) {  }

  void __trav_addStrings_ClassGlobSpec_trv_aft(__V_ClassGlobSpec_addStrings __v0) {  }

  void __trav_addStrings_ClassGlobSpec_trv(__V_ClassGlobSpec_addStrings __v0) {  }

}
