private void fireCurrentModel(long state, Model currentModel) {
    for (MarkovChainListener listener : listeners) {
      listener.currentState(state, currentModel);
    }

    for (MarkovChainDelegate delegate : delegates) {
      delegate.currentState(state);
    }
  }
  private void fireFinished(long chainLength) {

    for (MarkovChainListener listener : listeners) {
      listener.finished(chainLength);
    }

    for (MarkovChainDelegate delegate : delegates) {
      delegate.finished(chainLength);
    }
  }
 private void fireEndCurrentIteration(long state) {
   for (MarkovChainDelegate delegate : delegates) {
     delegate.currentStateEnd(state);
   }
 }