private void waitUntilInitialValueIsPulled(String key) {
    int waitingTime = 0;
    synchronized (mutex.get(key)) {
      while (coRepository.exists(key) == false) {
        try {
          waitingTime += 100;

          if (waitingTime > timeoutInMillis) {
            throw new TimeoutException(
                "Waited so long or key does`t exist on OriginalRepository. Key is " + key);
          }

          mutex.get(key).wait(100);
        } catch (InterruptedException e) {
        }
      }
    }
  }
 private void wakeUpAllThreadsWatingForCompletingPull(Object key) {
   synchronized (mutex.get(key)) {
     mutex.get(key).notifyAll();
   }
 }