Curious why this uses `Stack` (extends `Vector` and has `synchronized` on every method) over a simple `ArrayList`?