@Test
public void shouldHaveCorrectEqualsWithEffects() throws Exception {
First<String, String> av1 = new AutoValue_First<>("hi", ImmutableSet.of("hello", "there"));
First<String, String> f1 = First.first("hi", effects("hello", "there"));
First<String, String> f2 = First.first("hi", effects("there", "hello"));
First<String, String> f3 = First.first("hi", ImmutableSet.of("hello", "there"));
First<String, String> av2 =
new AutoValue_First<>("hi", ImmutableSet.of("hello", "there", "you"));
First<String, String> g1 = First.first("hi", effects("hello", "there", "you"));
First<String, String> g2 = First.first("hi", ImmutableSet.of("hello", "there", "you"));
First<String, String> av3 = new AutoValue_First<>("hi", ImmutableSet.<String>of());
First<String, String> h1 = First.first("hi");
First<String, String> h2 = First.first("hi", ImmutableSet.<String>of());
First<String, String> h3 = First.first("hi", effects());
First<String, String> i1 = First.first("hey", effects("hello", "there"));
First<String, String> j1 = First.first("hey", effects("hello", "there", "you"));
First<String, String> k1 = First.first("hey");
First<String, String> k2 = First.first("hey", effects());
new EqualsTester()
.addEqualityGroup(av1, f1, f2, f3)
.addEqualityGroup(av2, g1, g2)
.addEqualityGroup(av3, h1, h2, h3)
.addEqualityGroup(i1)
.addEqualityGroup(j1)
.addEqualityGroup(k1, k2)
.testEquals();
}