class SimpleFileSystemProvider implements FileSystemProvider {

    @Override
    public void move(final Path source,
                     final Path target,
                     final CopyOption... options)
            throws DirectoryNotEmptyException, AtomicMoveNotSupportedException, IOException, SecurityException {
        checkNotNull("source",
                     source);
        checkNotNull("target",
                     target);
        checkCondition("source must exist",
                       source.toFile().exists());

        checkFileExistsThenThrow(target);

        if (source.toFile().isDirectory() && source.toFile().list().length > 0) {
            throw new DirectoryNotEmptyException(source.toString());
        }

        try {
            if (source.toFile().isDirectory()) {
                FileUtils.moveDirectory(source.toFile(),
                                        target.toFile());
            } else {
                FileUtils.moveFile(source.toFile(),
                                   target.toFile());
            }
        } catch (java.io.IOException ex) {
            throw new IOException(ex);
        }
    }

    public  SimpleFileSystemProvider();
    protected  SimpleFileSystemProvider(final File[] roots,
                                       final OSType osType);

}