code: private void distSplit(ArrayList<DistanceSet> pointSet, ArrayList<DistanceSet> newPointSet, E newPoint, int maxScale) {
          double fmax = getCoverRadius(maxScale);
          ArrayList<DistanceSet> newSet = new ArrayList<>();
          for (int i = 0; i < pointSet.size(); i++) {
              DistanceSet n = pointSet.get(i);
              double newDist = distance.d(newPoint, n.getObject());
              if (newDist <= fmax) {
                  pointSet.get(i).dist.add(newDist);
                  newPointSet.add(n);
              } else {
                  newSet.add(n);
              }
          }
  
          pointSet.clear();
          pointSet.addAll(newSet);
      }
docs: Moves all the points in pointSet covered by (the ball of) newPoint
  into newPointSet, based on the given scale/level.
  
  @param pointSet the supplied set of instances from which
  all points covered by newPoint will be removed.
  @param newPointSet the set in which all points covered by
  newPoint will be put into.
  @param newPoint the given new point.
  @param maxScale the scale based on which distances are
  judged (radius of cover ball is calculated).