It depends. Will something like this be possible? Can a card overlap more than 2 cards above it?
You'll probably need to introduce levels or layers, instead of relying on z-index.
Say, the king here is on level 0, ten is on level 1, and seven of spades is on level 3:
Then you could process cards in a For Each ordered loop, from the bottom level, picking up cards that overlap it and are on (Self.level+1), and add them to the CoveredBy list.