How does Java do without using an array of ints, or Valhalla? In other words, what's the cost of Java's forced indirection?
What happens if you use
pool := make([]Tree, 0, 256)
instead of var pool []Tree
in the Go so it doesn't waste time growing tiny slices?