/**
  * This readjust procedure can be called to readjust the size of storage of states of a character
  * for nodes.
  */
 public CharacterHistory adjustSize(Tree tree) {
   if (tree.getNumNodeSpaces() == this.getNumNodes()) return this;
   else {
     ContinuousHistory soc =
         new ContinuousHistory(
             tree.getTaxa(), tree.getNumNodeSpaces(), (ContinuousData) getParentData());
     soc.setItemsAs(this);
     soc.setParentData(getParentData());
     soc.setParentCharacter(getParentCharacter());
     ((CharacterStates) soc).setExplanation(getExplanation());
     return soc;
   }
 }
 /*..........................................ContinuousHistory................*/
 public CharacterHistory clone(CharacterHistory s) {
   ContinuousHistory snew;
   if ((s == null) || (s.getNumNodes() != numNodes) || (!(s instanceof ContinuousHistory)))
     snew = new ContinuousHistory(getTaxa(), numNodes, (ContinuousData) data);
   else {
     snew = (ContinuousHistory) s;
     snew.data = data;
   }
   snew.setItemsAs(this);
   for (int i = 0; i < numNodes; i++) {
     for (int im = 0; im < getNumItems(); im++) snew.setState(i, im, getState(i, im));
   }
   snew.characterNumber = characterNumber;
   if (observedStates != null)
     snew.setObservedStates((CharacterDistribution) observedStates.getAdjustableClone());
   snew.setExplanation(getExplanation());
   return snew;
 }