protected void preExecute(){
  clearFromCursor();
  if (cursor >= 0 && cursor <= selections.size()) {
    ISelection selection=selectionProvider.getSelection();
    selections.add(cursor,selection);
  }
}

protected void preExecute ( ) { clearFromCursor ( ) ; if ( cursor >= 0 && cursor <= selections . size ( ) ) { ISelection selection = selectionProvider . getSelection ( ) ; selections . add ( cursor , selection ) ; } }
snapshots the current selection and push it into stack , and clear all cached selections from the current position on .
