Consecutive calls of  getUserFolder() and getAppFolder() will return the first created service.

Objects created within the Closure passed into registerService() will be stored and reused.

From my point of view is will be sufficient to move the code pieces of $root->get() and $root->newFolder() into the getUserFolder() and getAppFolder() methods