@startuml
!include style.puml
skinparam arrowThickness 1.1
skinparam arrowColor MODEL_COLOR
skinparam classBackgroundColor MODEL_COLOR

Package Model <<Rectangle>>{
Interface ReadOnlyInventoryBook <<Interface>>
Interface ReadOnlyDeliveryBook <<Interface>>
Interface Models <<Interface>>
Interface Model <<Interface>>
Interface ObservableList <<Interface>>
Class InventoryBook
Class DeliveryBook
Class DeliveryModel
Class InventoryModel
Class ReadOnlyInventoryBook
Class ReadOnlyDeliveryBook
Class Models
Class ModelManagers
Class UserPrefs
Class ReadOnlyUserPrefs
Class DeliveryModelManager
Class InventoryModelManager
Class ItemComparator
Class UniqueItemList
Class UniqueDeliveryList

Class HiddenOutside #FFFFFF
HiddenOutside ..> Models

DeliveryBook .up.|> ReadOnlyDeliveryBook
InventoryBook .up.|> ReadOnlyInventoryBook

ModelManagers .up.|> Models
ModelManagers o--> "1" InventoryModel
ModelManagers o--> "1" DeliveryModel
InventoryModel o--> "1" InventoryModelManager
DeliveryModel o--> "1" DeliveryModelManager
InventoryModel .up.|>Model
DeliveryModel .up.|>Model
InventoryModel .up.|>ObservableList
DeliveryModel .up.|>ObservableList
InventoryModelManager o--> "1" InventoryBook
DeliveryModelManager o--> "1" DeliveryBook
InventoryModelManager o--> "1" UserPrefs
DeliveryModelManager o--> "1" UserPrefs
UserPrefs .up.|> ReadOnlyUserPrefs

InventoryModel o-right-> "1" ItemComparator

InventoryModelManager -->"1" Item : filtered and sorted list
DeliveryModelManager -->"1" Delivery : filtered list

InventoryBook o--> "1" UniqueItemList
DeliveryBook o--> "1" UniqueDeliveryList
@enduml
