@Override
    public TrainerProvenance getProvenance() {
        return new TrainerProvenanceImpl(this);
    }
@Test
    public void loadProtobufModel() throws IOException, URISyntaxException {
        Path path = Paths.get(TestCARTJointRegressionTrainer.class.getResource("joint-cart-reg-431.tribuo").toURI());
        try (InputStream fis = Files.newInputStream(path)) {
            ModelProto proto = ModelProto.parseFrom(fis);
            @SuppressWarnings("unchecked")
            SparseModel<Regressor> deserModel = (SparseModel<Regressor>) Model.deserialize(proto);

            assertEquals("4.3.1", deserModel.getProvenance().getTribuoVersion());

            Pair<Dataset<Regressor>, Dataset<Regressor>> p = RegressionDataGenerator.threeDimDenseTrainTest(1.0, false);

            List<Prediction<Regressor>> deserOutput = deserModel.predict(p.getB());

            CARTJointRegressionTrainer trainer = new CARTJointRegressionTrainer();
            TreeModel<Regressor> model = trainer.train(p.getA());
            List<Prediction<Regressor>> output = model.predict(p.getB());

            assertEquals(deserOutput.size(), p.getB().size());
            assertTrue(Helpers.predictionListDistributionEquals(deserOutput, output));
        }
    }