@Override
    public boolean canPlay() {
        Card source = getSourceCard();
        if (AllZone.getStack().isSplitSecondOnStack() || source.isUnCastable()) return false;

        Player turn = AllZone.getPhase().getPlayerTurn();

        if (source.getName().equals("Serra Avenger")) {
            if (turn.equals(source.getController()) && turn.getTurn() <= 3)
                return false;
        } else if (source.getName().equals("Blizzard")) {
            CardList lands = AllZoneUtil.getPlayerLandsInPlay(source.getController());
            lands = lands.getType("Snow");
            if (lands.size() == 0) return false;
        }

        // Flash handled by super.canPlay
        return super.canPlay();
    }