docs: public boolean setPointAt(int index, double x, double y, boolean canonize) {
  		final int count = getPointCount();
  		int idx = index;
  		if (idx < 0) {
  			idx = count + idx;
  		}
  		if (idx < 0) {
  			throw new IndexOutOfBoundsException(idx + "<0"); //$NON-NLS-1$
  		}
  		if (idx >= count) {
  			throw new IndexOutOfBoundsException(idx + ">=" + count); //$NON-NLS-1$
  		}
  		final PointFusionValidator validator = getPointFusionValidator();
  		final int idx1 = idx * 2;
  		final int idx2 = idx1 + 1;
  		if (!validator.isSame(x, y, this.pointCoordinates[idx1], this.pointCoordinates[idx2])) {
  			this.pointCoordinates[idx1] = x;
  			this.pointCoordinates[idx2] = y;
  
  			if (canonize) {
  				canonize(idx);
  			}
  
  			fireShapeChanged();
  			fireElementChanged();
  			return true;
  		}
  		return false;
  	}