code: private void unwindPath(PathPointer unique_path, int unique_depth,
                            int path_index) {
      final float one_fraction = unique_path.get(path_index).one_fraction;
      final float zero_fraction = unique_path.get(path_index).zero_fraction;
      float next_one_portion = unique_path.get(unique_depth).pweight;
  
      for (int i = unique_depth - 1; i >= 0; --i) {
        if (one_fraction != 0) {
          final float tmp = unique_path.get(i).pweight;
          unique_path.get(i).pweight = next_one_portion * (unique_depth + 1)
                  / ((i + 1) * one_fraction);
          next_one_portion = tmp - unique_path.get(i).pweight * zero_fraction * (unique_depth - i)
                  / (float) (unique_depth + 1);
        } else {
          unique_path.get(i).pweight = (unique_path.get(i).pweight * (unique_depth + 1))
                  / (zero_fraction * (unique_depth - i));
        }
      }
  
      for (int i = path_index; i < unique_depth; ++i) {
        unique_path.get(i).feature_index = unique_path.get(i+1).feature_index;
        unique_path.get(i).zero_fraction = unique_path.get(i+1).zero_fraction;
        unique_path.get(i).one_fraction = unique_path.get(i+1).one_fraction;
      }
    }
docs: undo a previous extension of the decision path