content: package com.airbnb.epoxy;
  
  import java.util.List;
  
  /**
   * A small wrapper around {@link com.airbnb.epoxy.EpoxyController} that lets you set a list of
   * models directly.
   */
  public class SimpleEpoxyController extends EpoxyController {
    private List<? extends EpoxyModel<?>> currentModels;
    private boolean insideSetModels;
  
    /**
     * Set the models to add to this controller. Clears any previous models and adds this new list
     * .
     */
    public void setModels(List<? extends EpoxyModel<?>> models) {
      currentModels = models;
      insideSetModels = true;
      requestModelBuild();
      insideSetModels = false;
    }
  
    @Override
    public final void requestModelBuild() {
      if (!insideSetModels) {
        throw new IllegalEpoxyUsage(
            "You cannot call `requestModelBuild` directly. Call `setModels` instead.");
      }
      super.requestModelBuild();
    }
  
    @Override
    protected final void buildModels() {
      if (!isBuildingModels()) {
        throw new IllegalEpoxyUsage(
            "You cannot call `buildModels` directly. Call `setModels` instead.");
      }
      add(currentModels);
    }
  }
  