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

Package Model as ModelPackage <<Rectangle>>{
Class "<<interface>>\nReadOnlyAddressBook" as ReadOnlyAddressBook
Class "<<interface>>\nReadOnlyUserPrefs" as ReadOnlyUserPrefs
Class "<<interface>>\nModel" as Model
Class AddressBook
Class ModelManager
Class UserPrefs

Class UniqueCompanyList
Class Company
Class Email
Class Name
Class Phone
Class ApplicationStatus
Class Deadline
Class Priority
Class RecruiterName
Class Role
Class Priority
Class Remark

Class I #FFFFFF
}

Class HiddenOutside #FFFFFF
HiddenOutside ..> Model

AddressBook .up.|> ReadOnlyAddressBook

ModelManager .up.|> Model
Model .right.> ReadOnlyUserPrefs
Model .left.> ReadOnlyAddressBook
ModelManager -left-> "1" AddressBook
ModelManager -right-> "1" UserPrefs
UserPrefs .up.|> ReadOnlyUserPrefs

AddressBook *--> "1" UniqueCompanyList
UniqueCompanyList --> "~* all" Company
Company *--> Email
Company *--> Name
Company *--> Phone
Company *--> ApplicationStatus
Company *--> Deadline
Company *--> RecruiterName
Company *--> Role
Company *--> Priority
Company *--> Remark

Company -[hidden]up--> I
UniqueCompanyList -[hidden]right-> I

Name -[hidden]right-> Phone

ModelManager --> "~* filtered" Company
@enduml
