We need to forbid the caller from misusing Method's or constructor's, the constructor doesn't receive
any parameters, so nothing to check here.
There is nothing a quality control in the center.
All of them would already through a null pointer exception.
So throwing our own exception would be redundant.
Same can be said for removing checkout.
We don't need to check for a legal argument exceptions, but these methods are vulnerable to being called
at a bad time.
For example, if a cart object doesn't have any items, then it's not in a legal state to call or remove
or check out.
You can't remove items if there aren't any and you can't check out an empty cart.
So what we'll do is say if items that is empty.
Throw a new illegal state exception.
Cannot remove items from an empty cart.
We can do the same thing for the check out action if items that is empty.
There were new illegal state exception.
Cannot check out an empty cart.
As far as I know, that's all the quality control that we need to apply and both methods are going to
forbid the caller from misusing them.