@Override
  public void forEach(@NotNull Consumer<? super E> action) {
    Object[] snapshot = get();
    for (Object element : snapshot) {
      //noinspection unchecked
      action.accept((E)element);
    }
  }
@Override
  public void forEach(@NotNull Consumer<? super E> action)