Well, to be honest I don't understand 100% either. The clearSpellAbility() is a small part of our problem, but the extra method I put in Card.java (which just clears the spellAbilities, not the manaAbilities) should fix most of them.
I
think the main problem right now is that after the manapool update, mana abilities are actual mana abilities now (they used to be merely keywords). So in the case of cards like
Gemhide Sliver, if it were to leave play, other slivers would still have the "add mana of any color" ability (before, we would just remove the keywords when it would leave play, now it's hard to determine what mana abilities where added by the
Gemhide Sliver).
Maybe we could split up the manaAbilities between
Intrinsic and
Extrinsic somehow, so whenever
Gemhide Sliver would leave play, it would clear all Extrinsic manaAbilities.