import edu.neu.ccs.demeter.*;
class Player {
  protected Name name;
  public Name get_name() { return name; }
  public void set_name(Name new_name) { name = new_name; }
  protected NegOp negop;
  public NegOp get_negop() { return negop; }
  public void set_negop(NegOp new_negop) { negop = new_negop; }
  protected float gainLoss;
  public float get_gainLoss() { return gainLoss; }
  public void set_gainLoss(float new_gainLoss) { gainLoss = new_gainLoss; }
  public Player() { super(); }
  public Player(Name name, NegOp negop, float gainLoss) {
    super();
    set_name(name);
    set_negop(negop);
    set_gainLoss(gainLoss);
  }
  public static Player parse(java.io.Reader in) throws ParseException { return new Parser(in)._Player(); }
  public static Player parse(java.io.InputStream in) throws ParseException { return new Parser(in)._Player(); }
  public static Player parse(String s) {
    try { return parse(new java.io.StringReader(s)); }
    catch (ParseException e) {
      throw new RuntimeException(e.toString());
    }
  }
  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_) {
    universal_trv0_bef(_v_);
    ((UniversalVisitor) _v_).before_name(this, name);
    name.universal_trv0(_v_);
    ((UniversalVisitor) _v_).after_name(this, name);
    if (negop != null) {
      ((UniversalVisitor) _v_).before_negop(this, negop);
      negop.universal_trv0(_v_);
      ((UniversalVisitor) _v_).after_negop(this, negop);
    }
    ((UniversalVisitor) _v_).before_gainLoss(this, gainLoss);
    ((UniversalVisitor) _v_).after_gainLoss(this, gainLoss);
    universal_trv0_aft(_v_);
  }

}