NamespaceBehaviour operates on NamespaceStorageNodes, but are implemented very separately – and therefore having NamespaceStorageNode as an inner class ties the two together more than it should.
Split out NamespaceStorageNode and StorageNodeType to a topl-level NamespaceStorage and NamespaceStorage.StorageType. Also move OnDemandSchemaTreeStorageNode into a top-level class, OnDemandSchemaTreeStorage.