code: package com.quui.tm2;
  
  import java.util.List;
  
  /**
   * A model is created for data of type D and info of type I.
   * @param <D> The data type
   * @param <I> The info type
   * @author Fabian Steeg (fsteeg)
   */
  public interface Model<D extends Comparable<D>, I extends Comparable<I>> {
      /**
       * @param data The data input for this model
       * @param info The info associated with the data
       * @return The model created for the given data and the associated info
       */
      Model<D, I> train(List<Annotation<D>> data, List<Annotation<I>> info);
  }
  