public ForComputation forComputation(String computation) {
    return new ForComputation(computation);
  }
@Test
  public void testMultipleFamilies() throws Exception {
    TestStateTag tag = new TestStateTag("tag1");

    WindmillStateCache.ForKey keyCache =
        cache.forComputation("comp1").forKey(computationKey("comp1", "key1", SHARDING_KEY), 0L, 0L);
    WindmillStateCache.ForKeyAndFamily family1 = keyCache.forFamily("family1");
    WindmillStateCache.ForKeyAndFamily family2 = keyCache.forFamily("family2");

    TestState state1 = new TestState("g1");
    family1.put(StateNamespaces.global(), tag, state1, 2);
    assertEquals(Optional.of(state1), family1.get(StateNamespaces.global(), tag));
    family1.persist();

    TestState state2 = new TestState("g2");
    family2.put(StateNamespaces.global(), tag, state2, 2);
    family2.persist();
    assertEquals(Optional.of(state2), family2.get(StateNamespaces.global(), tag));

    keyCache =
        cache.forComputation("comp1").forKey(computationKey("comp1", "key1", SHARDING_KEY), 0L, 1L);
    family1 = keyCache.forFamily("family1");
    family2 = keyCache.forFamily("family2");
    WindmillStateCache.ForKeyAndFamily family3 = keyCache.forFamily("family3");
    assertEquals(Optional.of(state1), family1.get(StateNamespaces.global(), tag));
    assertEquals(Optional.of(state2), family2.get(StateNamespaces.global(), tag));
    assertEquals(Optional.empty(), family3.get(StateNamespaces.global(), tag));
  }