code: private TreeNodeVisitor walkCorruptedPath(TreeLearner model, DataPoint dp, int j, Random rand)
      {
          TreeNodeVisitor curNode = model.getTreeNodeVisitor();
          while(!curNode.isLeaf())
          {
              int path = curNode.getPath(dp);
              int numChild = curNode.childrenCount();
              if(curNode.featuresUsed().contains(j))//corrupt the feature!
              {
                  //this gets us a random OTHER path, wont be the same b/c we would need to wrap around 1 farther
                  path = (path + rand.nextInt(numChild)) % numChild;
              }
              
              if(curNode.isPathDisabled(path))
                  break;
              else
                  curNode = curNode.getChild(path);
          }
          return curNode;
      }
docs: walks the tree down to a leaf node, adding corruption for a specific feature
  @param model the tree model to walk
  @param dp the data point to push down the tree
  @param j the feature index to corrupt
  @param rand source of randomness
  @return the leaf node