class TraceAndReverseFlow {

  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (!(o instanceof TraceAndReverseFlow)) {
      return false;
    }
    TraceAndReverseFlow that = (TraceAndReverseFlow) o;
    return _trace.equals(that._trace)
        && Objects.equals(_reverseFlow, that._reverseFlow)
        && _newFirewallSessions.equals(that._newFirewallSessions);
  }

  public  TraceAndReverseFlow(
      @Nonnull Trace trace,
      @Nullable Flow reverseFlow,
      @Nonnull Iterable<FirewallSessionTraceInfo> newFirewallSessions);

}