https://univebook.com/product/data-structures-and-abstractions-with-java-4th-edition-pdf/