docs: public int whichPath(DataPoint data)
      {
          int paths = getNumberOfPaths();
          if(paths < 0)
              return paths;//Not trained
          else if(paths == 1)//ONLY one option, entropy was zero
              return 0;
          else if(splittingAttribute < catAttributes.length)//Same for classification and regression
              return data.getCategoricalValue(splittingAttribute);
          //else, is Numerical attribute - but regression or classification?
          int numerAttribute = splittingAttribute - catAttributes.length;
          double val = data.getNumericalValues().get(numerAttribute);
          if(Double.isNaN(val))
              return -1;//missing
          
          if (results != null)//Categorical!
          {
              int pos = Collections.binarySearch(boundries, val);
              pos = pos < 0 ? -pos-1 : pos;
              return owners.get(pos);
          }
          else//Regression! It is trained, it would have been grabed at the top if not
          {
              if(regressionResults.length == 1)
                  return 0;
              else if(val <= regressionResults[2])
                  return 0;
              else
                  return 1;
          }
      }