Creating a new Navigator

You can replace Navigator with a custom implementation provided that it supports the current external interfaces.

Your replacement implementation must satisfy the following: