class Files {

    public static Path move(final Path source,
                            final Path target,
                            final CopyOption... options)
            throws UnsupportedOperationException, FileAlreadyExistsException, DirectoryNotEmptyException,
            AtomicMoveNotSupportedException, IOException, SecurityException {
        checkNotNull("source",
                     source);
        checkNotNull("target",
                     target);

        final FileSystemProvider provider = providerOf(source);
        if (providerOf(target) == provider) {
            provider.move(source,
                          target,
                          options);
            return target;
        }
        throw new UnsupportedOperationException("can't move from different providers");
    }

    private  Files();

}