this.color.setBlue(true);
// An opponent chooses one
this.getSpellAbility().getModes().setModeChooser(TargetController.OPPONENT);
// You draw three cards at the beginning of the next turn's upkeep;
this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(3)), false));
// or you search your library for a card, put that card into your hand, then shuffle your library.
Mode mode = new Mode();
Effect effect = new SearchLibraryPutInHandEffect(new TargetCardInLibrary(), false, true);
//effect.setText("you search your library for a card, put that card into your hand, then shuffle your library");
mode.getEffects().add(effect);