public final @NotNull Self cached() {
    IdentityHashMap<Object, Object> cache = new IdentityHashMap<>();
    return intercept(traversal -> traversal.cached(cache));
  }
public final @NotNull Self cached()