@Override
    public boolean performTest(Map<String, Object> runParams) {
        if (mapParams.containsKey("SourceType")) {
            SpellAbility sa = (SpellAbility) runParams.get("SourceSA");
            if (mapParams.get("SourceType").equalsIgnoreCase("spell")) {
                if (!sa.isSpell()) {
                    return false;
                }
            } else if (mapParams.get("SourceType").equalsIgnoreCase("ability")) {
                if (!sa.isAbility()) {
                    return false;
                }
            }
        }
        if (mapParams.containsKey("ValidSource")) {
            if (!matchesValid(((SpellAbility) runParams.get("SourceSA")).getSourceCard(), mapParams.get("ValidSource").split(","), hostCard)) {
                return false;
            }
        }
        if (mapParams.containsKey("ValidTarget")) {
            if (!matchesValid(runParams.get("Target"), mapParams.get("ValidTarget").split(","), hostCard)) {
                return false;
            }
        }

        return true;
    }