Here are some of the features to note as you examine this class definition. Note how the list data field is initialized in the constructor for the card pile class. A constructor should always ensure for a class that all of the data fields are properly initialized.
Note that when values are removed from the list they are simply type Object, and must be cast back to class Card before they can be used.
Notice once again the syntax used to access static data fields within a class, in this case the width of a card is obtained using the syntax Card.width.