FWIW, this stuff should go in the static initializer of the class.

We should also use an interface to bridge the two together, that is the NativeFSAccess should extend the abstract FSAccess class and implement the abstract virtual methods that are defined.  That way at runtime we are only dispatching through the abstract method rather than through reflection.