so I found this blog post and a few articles on spatial hashes and it makes sense to me, but what exactly is going on in this section of the code?
private ArrayList Keys(Vector3 v) {
int o = cellSize / 2;
ArrayList keys = new ArrayList();
keys.Add(Key(new Vector3(v.x-o, v.y-0, v.z-o)));
keys.Add(Key(new Vector3(v.x-o, v.y-0, v.z-0)));
keys.Add(Key(new Vector3(v.x-o, v.y-0, v.z+o)));
keys.Add(Key(new Vector3(v.x-0, v.y-0, v.z-o)));
keys.Add(Key(new Vector3(v.x-0, v.y-0, v.z-0)));
keys.Add(Key(new Vector3(v.x-0, v.y-0, v.z+o)));
keys.Add(Key(new Vector3(v.x+o, v.y-0, v.z-o)));
keys.Add(Key(new Vector3(v.x+o, v.y-0, v.z-o)));
keys.Add(Key(new Vector3(v.x+o, v.y-0, v.z-0)));
keys.Add(Key(new Vector3(v.x-o, v.y-o, v.z-o)));
keys.Add(Key(new Vector3(v.x-o, v.y-o, v.z-0)));
keys.Add(Key(new Vector3(v.x-o, v.y-o, v.z+o)));
keys.Add(Key(new Vector3(v.x-0, v.y-o, v.z-o)));
keys.Add(Key(new Vector3(v.x-0, v.y-o, v.z-0)));
keys.Add(Key(new Vector3(v.x-0, v.y-o, v.z+o)));
keys.Add(Key(new Vector3(v.x+o, v.y-o, v.z-o)));
keys.Add(Key(new Vector3(v.x+o, v.y-o, v.z-o)));
keys.Add(Key(new Vector3(v.x+o, v.y-o, v.z-0)));
keys.Add(Key(new Vector3(v.x-o, v.y+o, v.z-o)));
keys.Add(Key(new Vector3(v.x-o, v.y+o, v.z-0)));
keys.Add(Key(new Vector3(v.x-o, v.y+o, v.z+o)));
keys.Add(Key(new Vector3(v.x-0, v.y+o, v.z-o)));
keys.Add(Key(new Vector3(v.x-0, v.y+o, v.z-0)));
keys.Add(Key(new Vector3(v.x-0, v.y+o, v.z+o)));
keys.Add(Key(new Vector3(v.x+o, v.y+o, v.z-o)));
keys.Add(Key(new Vector3(v.x+o, v.y+o, v.z-o)));
keys.Add(Key(new Vector3(v.x+o, v.y+o, v.z-0)));
return keys;
}