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

package Storage{

package "UserPrefs Storage" #F4F6F6{
Interface UserPrefsStorage <<Interface>>
Class JsonUserPrefsStorage
}

Interface Storage <<Interface>>
Class StorageManager

package "AddressBook Storage" #F4F6F6{
Interface AddressBookStorage <<Interface>>
Class JsonAddressBookStorage
Class JsonSerializableAddressBook
Class JsonAdaptedPerson
Class JsonAdaptedTag
Class JsonAdaptedLesson
Class JsonAdaptedHomework
}

}

Class HiddenOutside #FFFFFF
HiddenOutside ..> Storage

StorageManager .up.|> Storage
StorageManager -up-> "1" UserPrefsStorage
StorageManager -up-> "1" AddressBookStorage

Storage -left-|> UserPrefsStorage
Storage -right-|> AddressBookStorage

JsonUserPrefsStorage .up.|> UserPrefsStorage
JsonAddressBookStorage .up.|> AddressBookStorage
JsonAddressBookStorage ..> JsonSerializableAddressBook
JsonSerializableAddressBook --> "*" JsonAdaptedPerson
JsonAdaptedPerson --> "*" JsonAdaptedTag
JsonAdaptedPerson --> "*" JsonAdaptedLesson
JsonAdaptedLesson --> "*" JsonAdaptedHomework

@enduml
