code: public static <T> List<TerminationCondition> shouldContinue(PopulationData<T> data,
                                                                  TerminationCondition... conditions)
      {
          // If the thread has been interrupted, we should abort and return whatever
          // result we currently have.
          if (Thread.currentThread().isInterrupted())
          {
              return Collections.emptyList();
          }
          // Otherwise check the termination conditions for the evolution.
          List<TerminationCondition> satisfiedConditions = new LinkedList<TerminationCondition>();
          for (TerminationCondition condition : conditions)
          {
              if (condition.shouldTerminate(data))
              {
                  satisfiedConditions.add(condition);
              }
          }
          return satisfiedConditions.isEmpty() ? null : satisfiedConditions;
      }
docs: Given data about the current population and a set of termination conditions, determines
  whether or not the evolution should continue.
  @param data The current state of the population.
  @param conditions One or more termination conditions.  The evolution should not continue if
  any of these is satisfied.
  @param <T> The type of entity that is being evolved.
  @return A list of satisfied termination conditions if the evolution has reached some
  pre-specified state, an empty list if the evolution should stop because of a thread
  interruption, or null if the evolution should continue.