docs: private void addSamples(int[] curClass, int curDim, int samples, List<DataPoint> dataPoints, int[] dim)
      {
          if(curDim < dimensions.length-1)
              for(int i = 0; i < dimensions[curDim+1]; i++ )
              {
                  int[] nextDim = Arrays.copyOf(dim, dim.length);
                  nextDim[curDim+1] = i;
                  addSamples(curClass, curDim+1, samples, dataPoints, nextDim);
              }
          else//Add data points!
          {
              for(int i = 0; i < samples; i++)
              {
                  DenseVector dv = new DenseVector(dim.length);
                  for(int j = 0; j < dim.length; j++)
                      dv.set(j, dim[j]+noiseSource.invCdf(rand.nextDouble()));
                  dataPoints.add(new DataPoint(dv, new int[]{ curClass[0] }, catDataInfo));
              }
              curClass[0]++;
          }
      }