class OrCondition<S, D> extends AbstractCondition<S, D> implements Serializable {
    private static final long serialVersionUID = 0;
    private final Condition<S, D> a;
    private final Condition<S, D> b;

    OrCondition(Condition<S, D> a, Condition<S, D> b) {
      this.a = a;
      this.b = b;
    }

    public boolean applies(MappingContext<S, D> context) {
      return a.applies(context) || b.applies(context);
    }

    @Override
    public boolean equals(Object other) {<FILL_FUNCTION_BODY>}

    @Override
    public int hashCode() {
      return 37 * (a.hashCode() ^ b.hashCode());
    }

    @Override
    public String toString() {
      return String.format("or(%s, %s)", a, b);
    }
  }

      return other instanceof OrCondition && ((OrCondition<?, ?>) other).a.equals(a)
          && ((OrCondition<?, ?>) other).b.equals(b);
    
<no_super_class>