package se.chalmers.cs.gf.Core.Absyn; // Java Package generated by the BNF Converter.

public class Case {
  public final Pattern pattern_;
  public final Exp exp_1, exp_2;

  public Case(Pattern p1, Exp p2, Exp p3) { pattern_ = p1; exp_1 = p2; exp_2 = p3; }

  public <R,A> R accept(se.chalmers.cs.gf.Core.Absyn.Case.Visitor<R,A> v, A arg) { return v.visit(this, arg); }

  public boolean equals(Object o) {
    if (this == o) return true;
    if (o instanceof se.chalmers.cs.gf.Core.Absyn.Case) {
      se.chalmers.cs.gf.Core.Absyn.Case x = (se.chalmers.cs.gf.Core.Absyn.Case)o;
      return this.pattern_.equals(x.pattern_) && this.exp_1.equals(x.exp_1) && this.exp_2.equals(x.exp_2);
    }
    return false;
  }

  public int hashCode() {
    return 37*(37*(this.pattern_.hashCode())+this.exp_1.hashCode())+this.exp_2.hashCode();
  }

  public interface Visitor <R,A> {
    public R visit(se.chalmers.cs.gf.Core.Absyn.Case p, A arg);

  }

}