/** check state for changed variables and update temp results if necessary * */
 @Override
 protected boolean requiresRecalculation() {
   boolean requiresRecalculation = false;
   for (TreeLikelihood b : treelikelihood) {
     requiresRecalculation |= b.requiresRecalculation();
   }
   return requiresRecalculation;
 }
 public Double call() throws Exception {
   try {
     logPByThread[threadNr] = likelihood.calculateLogP();
   } catch (Exception e) {
     System.err.println("Something went wrong in thread " + threadNr);
     e.printStackTrace();
     System.exit(0);
   }
   return logPByThread[threadNr];
 }