* enters the battlefield, -> enters,
* {this} enters the battlefield -> {this} enters
* EntersBattlefieldAbility
* , it enters
* enters the battlefield under your control -> you control enters
* rework some trigger phrase logic
* fix tests
* Apply fix for ZONE_CHANGE_GROUP events making tokens controlled by different players
* Add test
* Remove unused import
* Fix implementation
* Rewrite to use ZONE_CHANGE_BATCH
* Fix OPPONENT case
* Add default case
* refactor to avoid using stream as local variable and use ZoneChangeEvents in filters
* Fix typo
* Replace "([a-zA-Z]+).getManaCostsToPay().getX()" with CardUtil.getSourceCostsTag(game, $1, "X", 0)
Fix Disrupting Shoal
* Change final card .getX() calls
* Condense all ManacostVariableValue enum values into "instance"
* Further removal of getX, Display X symbol for non-mana X cards
* Fix test
* Fully remove ManaCosts.getX
* Replace all different X dynamic values with GetXValue
* Remove individual cards checking getAmount for X values (leaving cost reduction that does not use X)
* Add null check for game object inside getSourceCostsTagsMap
* fix build errors
* fix Vicious Betrayal
* text fix
* Implement Time Reaper, start rework
* Create DamagedPlayerControlsTargetAdjuster, convert Aberrant to use it
* Always add targets for EachOpponentPermanentTargetsAdjuster
* Improve target name, finish Time Reaper
* Convert some cards
* Improve documentation, more cards
* More cards, fix cards that needed to use owner instead of controller
* Fix unfinished AlelaCunningConqueror changes
* more cards
* All remaining cards
* Fix target type
* Remove outdated attempt at TargetController.SOURCE_EFFECT_TARGET_POINTER
* Finish removal of SOURCE_EFFECT_TARGET_POINTER
* Change targetAdjuster blueprint target to be set inside setTargetAdjuster, add error checking
* Always add Target Adjuster after Target
* Add comment
* Fix TolarianContemptTest to skip opponent with no valid targets
* Forgot to git add the new abstract GenericTargetAdjuster
* Test now possible after merge, fix missed ChangeOfPlans adjuster order
* Text and optional-ness fixes
* Always set target pointer
* EtrataDeadlyFugitive
* refactor: remove need for Zone.BATTLEFIELD for DealsDamageToAPlayerAllTriggeredAbility with opponent restriction
* ExposeTheCulprit
* HideInPlainSight
* VannifarEvolvedEnigma
* Fix for not turning manifested non-permanents face-up, per 701.34g
* Add comment on Etrata's unusual behavior
* game.processAction() instead of game.getState().processAction(game)
* add simpler method name and docs
* find/replace to new method
* remove old method
* deprecate applyEffects
* Start on Ian Malcolm, Chaotician, missing key effects
* fox ANY clause in DrawNthCardTriggeredAbility
* Get exile effect working
* Start using Evelyn, the Covetous code
* align exile effect
* align player clause
* align card type clause
* align counter check clause
* align mana clause
* add ownership clause
* remove redundant comments
* fix redundant mana clause description
* fix counter clause in mana cost effect
* fix active clause in mana effect
* use MageObjectReference to associate exiled cards with an Ian Malcolm instance
* optimize imports
* Start tests, failing currently
* fix test and add blink test
* fix signature of constructor
* fix order of super() call in checkTrigger
* clarify hash maps in watcher
* use correct AsThoughEffect
* document header of checkExile
* generalize modal and double faced cards for LKI fetch
* remove land played event for watcher
* Use custom MageIdentifier to filter usedMap