return $this->duedate;
    }
    function getTags()
    {
        return $this->tags;
    }
}
// Runtime Environment
function enumerateProject(Project $project)
{
    print "{$project->getTitle()}({$project->getSummary()}): \n";
    foreach ($project->getToDos() as $eachToDo) {
        if ($eachToDo instanceof Project) {
            print "sub:";
            enumerateProject($eachToDo);
        } else {
            print "{$eachToDo->getTitle()}\n";
        }
    }
}
$project = new Project("Get Groceries", "grocery list", null, array());
$meatProject = new Project("Meat Time", "meat list", null, array());
$project->addToDo(new SimpleToDo("Milk", null, array()));
$project->addToDo($meatProject);
$meatProject->addToDo(new SimpleToDo("Beef", null, array()));
$chicken = new Project("Chicken", "", null, array());
$meatProject->addToDo($chicken);
$chicken->addToDo(new SimpleToDo("Fried Chicken", null, array()));
$chicken->addToDo(new SimpleToDo("Grilled Chicken", null, array()));
$project->addToDo(new SimpleToDo("Water", null, array()));
enumerateProject($project);