/// <inheritdoc />
        public override void Run(TextWriter log)
        {
            var biology101Course    = new SimpleCourse("Biology 101", "Introduction to biology", 30.45d);
            var math101Course       = new SimpleCourse("Math 101", "Introduction to math", 30.45d);
            var psychology101Course = new SimpleCourse("Psychology 101", "Introduction to psychology", 30.45d);

            var myEnrolledCourses = new[]
            {
                new ExamModule(biology101Course),
                new ExamModule(
                    new SupportModule(math101Course)
                    ),
                new ExamModule(
                    new SupportModule(
                        new SpecialAssistanceModule(psychology101Course)
                        )
                    ),
            };

            log.WriteLine($"My enrolled courses:");
            foreach (var course in myEnrolledCourses)
            {
                log.WriteLine($"- {course.Name}:");
                log.WriteLine($"   Price: EUR {course.Price:N}");
                log.WriteLine($"   Description: {course.Description}");
            }
        }
        /// <inheritdoc />
        public override void Run(TextWriter log)
        {
            var accounts = new Account[]
            {
                new Account(
                    AccountType.Student,
                    new Person(19851110, "Yves", "Schelpe"),
                    "*****@*****.**",
                    (cT, a) =>
                {
                    log.WriteLine($"- '{a.Id}' received task '{cT.Description}' due on '{cT.DueDate:d}'.");
                }
                    )
            };

            var course = new SimpleCourse("Biology 101", "Introduction to biology", 35d);

            course.TaskManager.AddObserver(accounts[0]);

            course.TaskManager.AddTask("Paper on the eye", DateTime.Now.AddDays(7));
        }