@startuml
'https://plantuml.com/sequence-diagram

[-> ":StorageManager": loadPlan()
activate ":StorageManager"

":StorageManager" -> "dir:File" **: new File(directory)
activate "dir:File"
"dir:File" --> ":StorageManager": dir
deactivate "dir:File"

alt !dir.exists()
    ":StorageManager" -> "dir:File": mkdirs()
    activate "dir:File"
    "dir:File" --> ":StorageManager"
    deactivate "dir:File"
end

":StorageManager" -> "planFile:File" **: new File(dir, planName + ".txt")
activate "planFile:File"
"planFile:File" --> ":StorageManager": planFile
deactivate "planFile:File"

":StorageManager" -> "courses:CourseList" **: new CourseList(planName)
activate "courses:CourseList"
"courses:CourseList" --> ":StorageManager": courses
deactivate "courses:CourseList"

":StorageManager" -> ":Files": readString(planFile.toPath())
activate ":Files"
":Files" --> ":StorageManager": data
deactivate ":Files"

loop String line : data
    alt !line.trim().isEmpty()
        ":StorageManager" -> "courses:CourseList": add(Parser.parseCourse(line))
        activate "courses:CourseList"
        "courses:CourseList" --> ":StorageManager"
        deactivate "courses:CourseList"
    end
end

[<-- ":StorageManager" : courses
deactivate ":StorageManager"

@enduml