Q. Why do CorporateDatabase and Store both have borrowRentable() and returnRentable()?
A. Store::borrowRentable() only deals with updating the store's own inventory.
CustomerDatabase::borrowRentable() deals with parsing streams, calling the store to update the store's inventory, as well as creating a new Transaction object and calling the Customer to update itself. You can see the differences below.
When CorporateDatabase is loading transactions, it will look something like this:
switch (first_char_we_found_on_the_stream) {