private void removePoint(GeoPoint oldPoint) { // remove dependent algorithms (e.g. segments) from update sets of // objects further up (e.g. polygon) the tree ArrayList algoList = oldPoint.getAlgorithmList(); for (int k = 0; k < algoList.size(); k++) { AlgoElement algo = (AlgoElement) algoList.get(k); for (int j = 0; j < input.length; j++) input[j].removeFromUpdateSets(algo); } // remove old point oldPoint.setParentAlgorithm(null); // remove dependent segment algorithm that are part of this polygon // to make sure we don't remove the polygon as well for (int k = 0; k < algoList.size(); k++) { AlgoElement algo = (AlgoElement) algoList.get(k); // make sure we don't remove the polygon as well if (algo instanceof AlgoJoinPointsSegment && ((AlgoJoinPointsSegment) algo).getPoly() == poly) { } else { algo.remove(); } } algoList.clear(); // remove point oldPoint.doRemove(); }