code: @Override
      public void storeUpdate(INDArray array, int iterationNumber, int epochNumber) {
          try {
              if (accumulator.get() == null) {
                  // we don't want accumulator to be attached to workspaces
                  try (MemoryWorkspace workspace = Nd4j.getMemoryManager().scopeOutOfWorkspaces()) {
                      accumulator.set(Nd4j.create(array.shape(), array.ordering()));
                  }
              }
  
              // accumulate gradients updates in residental array
              accumulator.get().addi(array);
  
              if (isDebug)
                  log.info("thread {} locking at Register", Thread.currentThread().getId());
  
              // block until ParallelWrapper sends us message about number of threads in this cycle
              if (!bypassMode.get())
                  while (!registered.get()) {
                      ThreadUtils.uncheckedSleep(1);
                      if (throwable.isTriggered())
                          throw new RuntimeException(throwable.get());
                  }
  
              if (isDebug)
                  log.info("thread {} unlocking at Register", Thread.currentThread().getId());
  
              // propagate changes & modify accumulator
              handler.broadcastUpdates(accumulator.get(), iterationNumber, epochNumber);
  
              // we're blocking here, untill all done broadcasting updates
              synchronize(currentConsumers.get());
          } catch (Exception e) {
              throwable.setIfFirst(e);
              throw new RuntimeException(e);
          }
      }
docs: This method accepts updates suitable for StepFunction, and accumulates/propagates it across all workers
  
  @param array