@Override
	public final int compareTo(final Path o) {
		if (this == o) {
			return 0;
		}
		final int m = getNameCount();
		final int n = o.getNameCount();
		final int min = m > n ? n : m;
		for (int i = 0; i < min; i++) {
			final String mS = getComponentAt(i);
			final String nS = o.getComponentAt(i);
			final int c = mS.compareTo(nS);
			if (c != 0) {
				return c;
			}
		}
		throw new IllegalStateException();
	}