code: private void findParameters(int iterations, double correctionConstant) {
          LOG.info("Performing max " + iterations + " iterations.");
  
          double prevLL = 0.0;
          for (int i = 1; i <= iterations; i++) {
              LOG.debug("Iteration " + i);
              double currLL = nextIteration(correctionConstant); // Core
  
              if (i > 1) {
                  if (prevLL > currLL) {
                      LOG.error("Model Diverging: log likelihood decreased");
                      break;
                  }
                  if (currLL - prevLL < LLThreshold) {
                      break;
                  }
              }
              prevLL = currLL;
          }
  
          // kill a bunch of these big objects now that we don't need them
          observedExpects = null;
          modelExpects = null;
          numTimesEventsSeen = null;
          trainingDataFeatNameIndices = null;
      }
docs: /* Estimate and return the model parameters.