public Schema addSchema(final int version, final int subVersion, final BiFunction<Integer, Schema, Schema> factory) { final int key = DataFixUtils.makeKey(version, subVersion); final Schema parent = schemas.isEmpty() ? null : schemas.get(DataFixerUpper.getLowestSchemaSameVersion(schemas, key - 1)); final Schema schema = factory.apply(DataFixUtils.makeKey(version, subVersion), parent); addSchema(schema); return schema; }