PredPrec implements Prec { @Override public boolean equals(final Object obj) { if (this == obj) { return true; } else if (obj instanceof PredPrec) { final PredPrec that = (PredPrec) obj; return this.predToNegMap.keySet().equals(that.predToNegMap.keySet()); } else { return false; } } private  PredPrec(final Iterable<Expr<BoolType>> preds); static PredPrec of(final Iterable<Expr<BoolType>> preds); static PredPrec of(); static PredPrec of(final Expr<BoolType> pred); Set<Expr<BoolType>> getPreds(); Expr<BoolType> negate(final Expr<BoolType> pred); PredPrec join(final PredPrec other); @Override String toString(); @Override boolean equals(final Object obj); @Override int hashCode();  }
@Test public void testEquals() { final PredPrec p0 = PredPrec.of(); final PredPrec p1 = PredPrec.of(Collections.singleton(pred)); final PredPrec p2 = PredPrec.of(Collections.singleton(pred)); Assert.assertNotEquals(p0, p1); Assert.assertNotEquals(p0, p2); Assert.assertEquals(p1, p2); }