class SynchronizedRegionFlowPair {
  private static final Logger logger = LoggerFactory.getLogger(SynchronizedRegionFlowPair.class);
  // Information about the transactional region
  public CriticalSection tn;
  public boolean inside;

  SynchronizedRegionFlowPair(CriticalSection tn, boolean inside) {
    this.tn = tn;
    this.inside = inside;
  }

  SynchronizedRegionFlowPair(SynchronizedRegionFlowPair tfp) {
    this.tn = tfp.tn;
    this.inside = tfp.inside;
  }

  public void copy(SynchronizedRegionFlowPair tfp) {
    tfp.tn = this.tn;
    tfp.inside = this.inside;
  }

  public SynchronizedRegionFlowPair clone() {
    return new SynchronizedRegionFlowPair(tn, inside);
  }

  public boolean equals(Object other) {
    // logger.debug(".");
    if (other instanceof SynchronizedRegionFlowPair) {
      SynchronizedRegionFlowPair tfp = (SynchronizedRegionFlowPair) other;
      if (this.tn.IDNum == tfp.tn.IDNum) {
        return true;
      }
    }
    return false;
  }

  public String toString() {<FILL_FUNCTION_BODY>}
}

    return "[" + (inside ? "in," : "out,") + tn.toString() + "]";
  
<no_super_class>