@Override
    public boolean canPlay() {
        if (AllZone.getStack().isSplitSecondOnStack()) return false;

        final Card c = getSourceCard();
        if (c.isFaceDown() && isIntrinsic())    // Intrinsic abilities can't be activated by face down cards
            return false;
        if (c.hasKeyword("CARDNAME's activated abilities can't be activated.")) return false;

        CardList pithing = AllZoneUtil.getPlayerCardsInPlay(AllZone.getHumanPlayer());
        pithing.addAll(AllZoneUtil.getPlayerCardsInPlay(AllZone.getComputerPlayer()));
        pithing = pithing.getName("Pithing Needle");
        pithing = pithing.filter(new CardListFilter() {
            public boolean addCard(Card crd) {
                return crd.getSVar("PithingTarget").equals(c.getName());
            }
        });

        if (pithing.size() != 0) return false;

        if (!(getRestrictions().canPlay(c, this)))
            return false;

        return Cost_Payment.canPayAdditionalCosts(payCosts, this);
    }