// Path: Android/lib-Myna/src/main/java/biz/k11i/xgboost/util/FVec.java
// public interface FVec extends Serializable {
//     /**
//      * Gets index-th value.
//      *
//      * @param index index
//      * @return value
//      */
//     double fvalue(int index);
// 
//     class Transformer {
//         private Transformer() {
//             // do nothing
//         }
// 
//         /**
//          * Builds FVec from dense vector.
//          *
//          * @param values         float values
//          * @param treatsZeroAsNA treat zero as N/A if true
//          * @return FVec
//          */
//         public static FVec fromArray(float[] values, boolean treatsZeroAsNA) {
//             return new FVecArrayImpl.FVecFloatArrayImpl(values, treatsZeroAsNA);
//         }
// 
//         /**
//          * Builds FVec from dense vector.
//          *
//          * @param values         double values
//          * @param treatsZeroAsNA treat zero as N/A if true
//          * @return FVec
//          */
//         public static FVec fromArray(double[] values, boolean treatsZeroAsNA) {
//             return new FVecArrayImpl.FVecDoubleArrayImpl(values, treatsZeroAsNA);
//         }
// 
//         /**
//          * Builds FVec from map.
//          *
//          * @param map map containing non-zero values
//          * @return FVec
//          */
//         public static FVec fromMap(Map<Integer, ? extends Number> map) {
//             return new FVecMapImpl(map);
//         }
//     }
// }


import biz.k11i.xgboost.tree.RegTree;
import biz.k11i.xgboost.util.FVec;
import biz.k11i.xgboost.util.ModelReader;
import java.io.IOException;
import java.io.Serializable;
        if (mparam.num_trees != 0) {
            tree_info = reader.readIntArray(mparam.num_trees);
        }

        if (mparam.num_pbuffer != 0 && with_pbuffer) {
            reader.skip(4 * mparam.predBufferSize());
            reader.skip(4 * mparam.predBufferSize());
        }

        _groupTrees = new RegTree[mparam.num_output_group][];
        for (int i = 0; i < mparam.num_output_group; i++) {
            int treeCount = 0;
            for (int j = 0; j < tree_info.length; j++) {
                if (tree_info[j] == i) {
                    treeCount++;
                }
            }

            _groupTrees[i] = new RegTree[treeCount];
            treeCount = 0;

            for (int j = 0; j < tree_info.length; j++) {
                if (tree_info[j] == i) {
                    _groupTrees[i][treeCount++] = trees[j];
                }
            }
        }
    }

    @Override
// Path: Android/lib-Myna/src/main/java/biz/k11i/xgboost/util/FVec.java
// public interface FVec extends Serializable {
//     /**
//      * Gets index-th value.
//      *
//      * @param index index
//      * @return value
//      */
//     double fvalue(int index);
// 
//     class Transformer {
//         private Transformer() {
//             // do nothing
//         }
// 
//         /**
//          * Builds FVec from dense vector.
//          *
//          * @param values         float values
//          * @param treatsZeroAsNA treat zero as N/A if true
//          * @return FVec
//          */
//         public static FVec fromArray(float[] values, boolean treatsZeroAsNA) {
//             return new FVecArrayImpl.FVecFloatArrayImpl(values, treatsZeroAsNA);
//         }
// 
//         /**
//          * Builds FVec from dense vector.
//          *
//          * @param values         double values
//          * @param treatsZeroAsNA treat zero as N/A if true
//          * @return FVec
//          */
//         public static FVec fromArray(double[] values, boolean treatsZeroAsNA) {
//             return new FVecArrayImpl.FVecDoubleArrayImpl(values, treatsZeroAsNA);
//         }
// 
//         /**
//          * Builds FVec from map.
//          *
//          * @param map map containing non-zero values
//          * @return FVec
//          */
//         public static FVec fromMap(Map<Integer, ? extends Number> map) {
//             return new FVecMapImpl(map);
//         }
//     }
// }


// Path: Android/lib-Myna/src/main/java/biz/k11i/xgboost/gbm/GBTree.java
import biz.k11i.xgboost.tree.RegTree;
import biz.k11i.xgboost.util.FVec;
import biz.k11i.xgboost.util.ModelReader;
import java.io.IOException;
import java.io.Serializable;

        if (mparam.num_trees != 0) {
            tree_info = reader.readIntArray(mparam.num_trees);
        }

        if (mparam.num_pbuffer != 0 && with_pbuffer) {
            reader.skip(4 * mparam.predBufferSize());
            reader.skip(4 * mparam.predBufferSize());
        }

        _groupTrees = new RegTree[mparam.num_output_group][];
        for (int i = 0; i < mparam.num_output_group; i++) {
            int treeCount = 0;
            for (int j = 0; j < tree_info.length; j++) {
                if (tree_info[j] == i) {
                    treeCount++;
                }
            }

            _groupTrees[i] = new RegTree[treeCount];
            treeCount = 0;

            for (int j = 0; j < tree_info.length; j++) {
                if (tree_info[j] == i) {
                    _groupTrees[i][treeCount++] = trees[j];
                }
            }
        }
    }

    @Override
    public double[] predict(FVec feat, int ntree_limit) {