/**
   * ******************************************** to undo this move we must put the cards back IN
   * THE ORDER they were extracted.
   */
  public boolean undo(Solitaire theGame) {
    // VALIDATE:
    if ((discardsCard == null) || (drawnCard == null)) return false;

    // EXECUTE:
    if (!wasDiscardsEmpty) {
      discards.add(justDrawn.get());
    }
    discards.add(discardsCard);
    justDrawn.add(drawnCard);

    theGame.updateScore(-2);
    return true;
  }
  /** Do the MatchDiscardsAndJustDrawnMove. */
  public boolean doMove(Solitaire theGame) {
    // VALIDATE:
    if (valid(theGame) == false) {
      return false;
    }

    // EXECUTE:
    discardsCard = discards.get();
    drawnCard = justDrawn.get();

    // these cards are no longer selected.
    discardsCard.setSelected(false);
    drawnCard.setSelected(false);

    wasDiscardsEmpty = discards.empty();
    if (!wasDiscardsEmpty) {
      justDrawn.add(discards.get());
    }

    theGame.updateScore(+2);
    return true;
  }