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

Interface Storage <<Interface>>
Interface UserPrefsStorage <<Interface>>
Interface TaskmasterStorage <<Interface>>

Class StorageManager
Class JsonUserPrefsStorage
Class JsonTaskmasterStorage
Class JsonSerializableTaskmaster
Class JsonSerializableSessionList
Class JsonSerializableSession

StorageManager .left.|> Storage
StorageManager o-right-> UserPrefsStorage
StorageManager o--> TaskmasterStorage

JsonUserPrefsStorage .left.|> UserPrefsStorage
JsonTaskmasterStorage .left.|> TaskmasterStorage
JsonTaskmasterStorage .right.> JsonSerializableTaskmasterStorage
JsonSerializableTaskmasterStorage .down.> JsonSerializableStudent
JsonSerializableStudent .right.> JsonAdaptedTag

JsonTaskmasterStorage .-down.> JsonSerializableSessionList
JsonSerializableSessionList .right.> JsonSerializableSession
JsonSerializableSession .right.> JsonAdaptedStudentRecord
@enduml
