public void assertWorkingScoreFromScratch(Score workingScore, Object completedAction) {
   ScoreDirectorFactory assertionScoreDirectorFactory =
       scoreDirectorFactory.getAssertionScoreDirectorFactory();
   if (assertionScoreDirectorFactory == null) {
     assertionScoreDirectorFactory = scoreDirectorFactory;
   }
   ScoreDirector uncorruptedScoreDirector = assertionScoreDirectorFactory.buildScoreDirector();
   uncorruptedScoreDirector.setWorkingSolution(workingSolution);
   Score uncorruptedScore = uncorruptedScoreDirector.calculateScore();
   if (!workingScore.equals(uncorruptedScore)) {
     String scoreCorruptionAnalysis = buildScoreCorruptionAnalysis(uncorruptedScoreDirector);
     uncorruptedScoreDirector.dispose();
     throw new IllegalStateException(
         "Score corruption: the workingScore ("
             + workingScore
             + ") is not the uncorruptedScore ("
             + uncorruptedScore
             + ") after completedAction ("
             + completedAction
             + "):\n"
             + scoreCorruptionAnalysis);
   } else {
     uncorruptedScoreDirector.dispose();
   }
 }