class ListenerModelHandler implements
        ListenerAssist {

    @NonNull T addAndGetModel(@NonNull DownloadTask task, @Nullable BreakpointInfo info) {
        T model = creator.create(task.getId());
        synchronized (this) {
            if (singleTaskModel == null) {
                singleTaskModel = model;
            } else {
                modelList.put(task.getId(), model);
            }

            if (info != null) {
                model.onInfoValid(info);
            }
        }

        return model;
    }

      ListenerModelHandler(ModelCreator<T> creator);

}