public boolean isType(Card card) {
            switch (this) {
                case land:
                    return card.isLand();
                case creature:
                    return card.isCreature();
                case creatureNonToken:
                    return card.isCreature() && !card.isToken();
                case other:
                    return !card.isLand() && !card.isCreature();
                default:
                    throw new RuntimeException("Unhandled type: " + this);
            }
        }