anchor.diff:              let startingMana = { red=0; green=numCott; redgreen=0; colorless=0; other=0 }
   
               // Start playing with this hand
  -            TakeAction (new GameState (library, hand, [], [],
  -                                       startingMana, noMana, 0, false))
  +            TakeAction (new GameState (library, hand, [], [], startingMana, 0, false))
   
           else
               // Can we do the special mulligan?
  
positive.code:                battlefield: Card list,  // Cards in play
                 graveyard: Card list,
                 mana: ManaAmount,
                 pendingCosts: ManaAmount,
                 stormCount: int,
                 playedLand: bool) =
  
  
negative.code:     // Now play our mana-gain cards.
  
      // Manamorphose first since it allows us to draw and makes redgreen mana.
      else if gs.Hand |> HasCard Manamorphose && CanPay (Cost Manamorphose) gs.Mana then
          log "Playing Manamorphose, no net mana gain (but redgreen is more useful)."
          let newHand = RemoveOneCard gs.Hand Manamorphose
          let newLibrary, drawn = Draw 1 gs.Library
          gs.Hand <-  List.append newHand drawn
          gs.Library <- newLibrary
  
          // Pay first, then reap the bounty.
          match gs.Mana - Cost Manamorphose with
          | None -> raise (new InvalidOperationException "We already asserted that we can pay for Manamorphose.")
          | Some result ->
              gs.Mana <- result + OneMana RedGreen + OneMana RedGreen
  
          gs.Graveyard <- Manamorphose :: gs.Graveyard
          gs.StormCount <- gs.StormCount + 1
          TakeAction gs
  
      // TinderWall next because it costs scarcer green mana.
      else if gs.Hand |> HasCard TinderWall && CanPay (Cost TinderWall) gs.Mana then
          log "Playing TinderWall and popping for 2 red mana."
          gs.Hand <- RemoveOneCard gs.Hand TinderWall
  
          // Pay first, then reap the bounty.
          match gs.Mana - Cost TinderWall with
          | None -> raise (new InvalidOperationException "We already asserted that we can pay for TinderWall.")
          | Some result ->
              gs.Mana <- result + twoRedMana
  
          gs.Graveyard <- TinderWall :: gs.Graveyard
          gs.StormCount <- gs.StormCount + 1
          TakeAction gs
  
      // RiteOfFlame is the cheapest red mana source.
      else if gs.Hand |> HasCard RiteOfFlame && CanPay (Cost RiteOfFlame) gs.Mana then
  
          // Bonus red mana for each copy of this card in the graveyard.
          let bonusMana =
  