hollow/src/main/java/com/netflix/hollow/api/producer/AbstractHollowProducer.java
public void initializeDataModel(HollowSchema... schemas) {
        Objects.requireNonNull(schemas);
        if (schemas.length == 0) {
            throw new IllegalArgumentException("classes is empty");
        }

        long start = currentTimeMillis();
        HollowWriteStateCreator.populateStateEngineWithTypeWriteStates(getWriteEngine(), Arrays.asList(schemas));
        listeners.listeners().fireProducerInit(currentTimeMillis() - start);

        isInitialized = true;
    }
public void initializeDataModel(HollowSchema... schemas) {
        Objects.requireNonNull(schemas);
        if (schemas.length == 0) {
            throw new IllegalArgumentException("classes is empty");
        }

        long start = currentTimeMillis();
        HollowWriteStateCreator.populateStateEngineWithTypeWriteStates(getWriteEngine(), Arrays.asList(schemas));
        listeners.listeners().fireProducerInit(currentTimeMillis() - start);

        isInitialized = true;
    }
Initializes the producer data model for the given schemas.
<p>
Data model initialization is required prior to {@link #restore(long, HollowConsumer.BlobRetriever) restoring}
the producer.
This ensures that restoration can correctly compare the producer's current data model
with the data model of the restored data state and manage any differences in those models
(such as not restoring state for any types in the restoring data model not present in the
producer's current data model).
<p>
After initialization a data model initialization event will be emitted
to all registered data model initialization listeners
{@link com.netflix.hollow.api.producer.listener.DataModelInitializationListener listeners}.

@param schemas the data model classes
@throws IllegalArgumentException if {@code schemas} is empty
@see #restore(long, HollowConsumer.BlobRetriever)