/** Factory method to create the model-specific parameters schema. */ public final P createParametersSchema() { // special case, because ModelBuilderSchema is the top of the tree and is parameterized // differently if (ModelBuilderSchema.class == this.getClass()) { return (P) new ModelParametersSchemaV3(); } try { Class<? extends ModelParametersSchemaV3> parameters_class = ReflectionUtils.findActualClassParameter(this.getClass(), 2); return (P) parameters_class.newInstance(); } catch (Exception e) { throw H2O.fail( "Caught exception trying to instantiate a builder instance for ModelBuilderSchema: " + this + ": " + e, e); } }