PointQuadTree extends QuadTree<Vector3, V> { @Override public List<V> getValues() { final List<V> arr = new ArrayList<V>(); this.traverse(this.root, new Func<V>() { @Override public void call(PointQuadTree<V> quadTree, Node<V> node) { arr.add(node.getData().getValue()); } }); return arr; } PointQuadTree(float minX, float minZ, float maxX, float maxZ);  PointQuadTree(Vector3 startPoint,Vector3 endPoint); @SuppressWarnings({ "unchecked", "rawtypes" }) @Override void set(Vector3 k, V v); @Override V get(Vector3 k, V defaultValue); @Override Node<V> find(Node<V> node, Vector3 vector3); @Override V remove(Vector3 k); @SuppressWarnings("unchecked") @Override List<PointData<V>> getKeyValues(); @Override List<Vector3> getKeys(); @Override List<V> getValues(); void traverse(Node<V> node, Func<V> func); List<PointData<V>> searchIntersect(final double xmin, final double ymin, final double xmax,
			final double ymax); List<PointData<V>> searchWithin(final float xmin, final float zmin, final float xmax, final float zmax); List<PointData<V>> searchWithin(Vector3 point, float radius); PointQuadTree<V> clone();  }
@Test public void testGetValues() { List<String> values = getTree().getValues(); Collections.sort(values); String valueString = values.toString(); assertEquals("Sorted values should be [Bar, Baz, Bing, Bong, Foo]", "[Bar, Baz, Bing, Bong, Foo]", valueString); }