3 4 5 or 33 44 can be played while cardToHand() returns Illegal. There may be some logical errors in compareTo() in Hand.java
There were some logic problems in Card.compareTo() because of its complex logic flow. The bug has been well fixed by combining compareTo() and isSameCatogory() and defining the return type as boolean.