docs: public boolean insert(int newIndex) {
          // Ignore objects which do not belong in this quad tree
          INDArray point = data.slice(newIndex);
          if (!boundary.containsPoint(point))
              return false;
  
          cumSize++;
          double mult1 = (double) (cumSize - 1) / (double) cumSize;
          double mult2 = 1.0 / (double) cumSize;
  
          centerOfMass.muli(mult1);
          centerOfMass.addi(point.mul(mult2));
  
          // If there is space in this quad tree and it is a leaf, add the object here
          if (isLeaf() && size < QT_NODE_CAPACITY) {
              index[size] = newIndex;
              size++;
              return true;
          }
  
          //duplicate point
          if (size > 0) {
              for (int i = 0; i < size; i++) {
                  INDArray compPoint = data.slice(index[i]);
                  if (point.getDouble(0) == compPoint.getDouble(0) && point.getDouble(1) == compPoint.getDouble(1))
                      return true;
              }
          }
  
  
  
          // If this Node has already been subdivided just add the elements to the
          // appropriate cell
          if (!isLeaf()) {
              QuadTree index = findIndex(point);
              index.insert(newIndex);
              return true;
          }
  
          if (isLeaf())
              subDivide();
  
          boolean ret = insertIntoOneOf(newIndex);
  
  
  
          return ret;
      }