Source: https://codex.cs.yale.edu/avi/os-book/OS9/java-dir/4.pdf