public boolean repositionNodes() { List<NodeModel> movedNodes = new ArrayList<NodeModel>(); for (int i = 0; i < length; i++) { Octant leaf = leaves[i]; if (leaf != null) { int l = leaf.nodesLength; NodeModel[] nodes = leaf.nodes; for (int j = 0; j < l; j++) { NodeModel node = nodes[j]; if (node != null) { if (!node.isInOctreeLeaf(leaf)) { removeNode(node); movedNodes.add(node); } } } } } if (!movedNodes.isEmpty()) { for (NodeModel node : movedNodes) { addNode(node); } return true; } return false; }