docs: private void compress()
      {
          //compress
          ListIterator<OnLineStatistics> listIter = windows.listIterator();
          double lastSizeSeen = -Double.MAX_VALUE;
          int lastSizeCount = 0;
          
          while(listIter.hasNext())
          {
              OnLineStatistics window = listIter.next();
              double n = window.getSumOfWeights();
              if(n == lastSizeSeen)
              {
                  if(++lastSizeCount > M)//compress, can only occur if there is a previous
                  {
                      listIter.previous();
                      window.add(listIter.previous());
                      listIter.remove();//remove the preivous
                      if(listIter.hasNext())
                          listIter.next();//back to where we were, which has been modified
                      //so nowe we must be looking at a new range since we just promoted a window
                      lastSizeSeen = window.getSumOfWeights();
                      lastSizeCount = 1;
                  }
              }
              else
              {
                  lastSizeSeen = n;
                  lastSizeCount = 1;
              }
          }
      }