Time to shuffle some cards.

Your task is to add implementation to the CardsShufflerWithDifferentNeighborsBySuit class. More details about implementation details you can find there.

We think, the code should be well tested to have stable code all the time, and find bugs before they go to the production. So, in addition to solve this small coding task, you also should provide your way of testing code.

Also, we are confident that we should not implement everything that we are asked blindly. If anything is unclear or confusing you can come and ask or clarify or even update some requirements or data structures if it would have more benefits. So, feel free to gather additional facts, or offer new ideas.

Once you finish working on this problem, please create patch of your changes and share it with us.

Good luck, have fun.