If there is platform-specific code it should be placed in subdirectories to separate specific code from the generic code. (eg. place all neutrino-specific code in ./nto/, linux-specific in ./linux)
The platform-specific directory can be subdivided even further if there is a need to separate code on an architecture-by-architecture basis.
The subdivision beyond the platform level is not yet supported
Each point in the tree can have a test directory. This will hold any code that is required to perform a test of the functionality contained in the code at that level. Directories that contain no code can still have a test directory, but the code contained in that directory will test some general functionality. This is because there is nothing specific to test at that level.
Examples: