@Override
public boolean canMoveFrom(Pile other) {
if (other.isEmpty()) {
return false;
}
Rank otherRank = other.topCard().rank;
Suit otherSuit = other.topCard().suit;
if (isEmpty()) {
return otherRank == Rank.ACE;
}
Rank thisRank = topCard().rank;
Suit thisSuit = topCard().suit;
return otherSuit == thisSuit
&& otherRank.value == thisRank.value + 1;
}