@Override
  public AccessPathStore<V> leastUpperBound(AccessPathStore<V> other) {
    ImmutableMap.Builder<AccessPath, V> resultHeap = ImmutableMap.builder();
    for (AccessPath aPath : intersection(heap().keySet(), other.heap().keySet())) {
      resultHeap.put(aPath, heap().get(aPath).leastUpperBound(other.heap().get(aPath)));
    }
    return AccessPathStore.create(resultHeap.buildOrThrow());
  }
@Test
  public void leastUpperBoundEmpty() {
    assertThat(newStore().leastUpperBound(newStore())).isEqualTo(newStore());
  }