// Path: library/src/main/java/drebin/core/Binder.java
// public interface Binder<V extends View, VH extends ViewHost<V>, M, BE extends BinderEnvironment> {
//   /**
//    * @return an enclosing {@link ViewFactory} for a {@link View}. The {@link ViewFactory}
//    * knows how to create a view.
//    */
//   ViewFactory<V> getViewFactory();
// 
//   /**
//    * @param view a root view created in the {@link ViewFactory}
//    * @return an enclosing {@link ViewHost} class.
//    * <p>
//    * The ViewHost would be the place to use injectors like ButterKnife or perform any decoration
//    * on the view.
//    */
//   VH createViewHost(V view);
// 
//   /**
//    * Displays the data from the model into the view.
//    *
//    * @param model
//    * @param viewHost
//    * @param environment
//    */
//   void bind(M model, VH viewHost, BE environment);
// 
//   /**
//    * Cleans up anything done in the {@link #bind(Object, ViewHost, BinderEnvironment)} method.
//    *
//    * @param viewHost
//    * @param environment
//    */
//   void unbind(VH viewHost, BE environment);
// }
// 
// Path: library/src/main/java/drebin/core/BinderEnvironment.java
// public interface BinderEnvironment {
//   /**
//    * Empty implementation of a {@link BinderEnvironment}. Useful when you don't have
//    * external input.
//    */
//   enum EmptyEnvironment implements BinderEnvironment {
//     INSTANCE;
//   }
// }
// 
// Path: library/src/main/java/drebin/core/ViewFactory.java
// public interface ViewFactory<V extends View> {
//   V create(Context context, ViewGroup parent);
// 
//   /**
//    * Convenience class for creating a view based on a layout resource
//    */
//   class INFLATE {
//     public static <V extends View> ViewFactory<V> fromLayout(@LayoutRes final int resId) {
//       return new ViewFactory<V>() {
//         @Override public V create(final Context context, final ViewGroup parent) {
//           return (V) LayoutInflater.from(context).inflate(resId, parent, false);
//         }
//       };
//     }
//   }
// }
// 
// Path: library/src/main/java/drebin/core/ViewHost.java
// public class ViewHost<V extends View> {
//   public final V rootView;
// 
//   public ViewHost(V view) {
//     this.rootView = view;
//   }
// }


import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import drebin.core.Binder;
import drebin.core.BinderEnvironment;
import drebin.core.ViewFactory;
import drebin.core.ViewHost;
package drebin.testing;



public class TestBinder implements Binder<View, ViewHost<View>, TestModel, BinderEnvironment> {
  @Override public ViewFactory<View> getViewFactory() {
// Path: library/src/main/java/drebin/core/Binder.java
// public interface Binder<V extends View, VH extends ViewHost<V>, M, BE extends BinderEnvironment> {
//   /**
//    * @return an enclosing {@link ViewFactory} for a {@link View}. The {@link ViewFactory}
//    * knows how to create a view.
//    */
//   ViewFactory<V> getViewFactory();
// 
//   /**
//    * @param view a root view created in the {@link ViewFactory}
//    * @return an enclosing {@link ViewHost} class.
//    * <p>
//    * The ViewHost would be the place to use injectors like ButterKnife or perform any decoration
//    * on the view.
//    */
//   VH createViewHost(V view);
// 
//   /**
//    * Displays the data from the model into the view.
//    *
//    * @param model
//    * @param viewHost
//    * @param environment
//    */
//   void bind(M model, VH viewHost, BE environment);
// 
//   /**
//    * Cleans up anything done in the {@link #bind(Object, ViewHost, BinderEnvironment)} method.
//    *
//    * @param viewHost
//    * @param environment
//    */
//   void unbind(VH viewHost, BE environment);
// }
// 
// Path: library/src/main/java/drebin/core/BinderEnvironment.java
// public interface BinderEnvironment {
//   /**
//    * Empty implementation of a {@link BinderEnvironment}. Useful when you don't have
//    * external input.
//    */
//   enum EmptyEnvironment implements BinderEnvironment {
//     INSTANCE;
//   }
// }
// 
// Path: library/src/main/java/drebin/core/ViewFactory.java
// public interface ViewFactory<V extends View> {
//   V create(Context context, ViewGroup parent);
// 
//   /**
//    * Convenience class for creating a view based on a layout resource
//    */
//   class INFLATE {
//     public static <V extends View> ViewFactory<V> fromLayout(@LayoutRes final int resId) {
//       return new ViewFactory<V>() {
//         @Override public V create(final Context context, final ViewGroup parent) {
//           return (V) LayoutInflater.from(context).inflate(resId, parent, false);
//         }
//       };
//     }
//   }
// }
// 
// Path: library/src/main/java/drebin/core/ViewHost.java
// public class ViewHost<V extends View> {
//   public final V rootView;
// 
//   public ViewHost(V view) {
//     this.rootView = view;
//   }
// }


// Path: library/src/test/java/drebin/testing/TestBinder.java
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import drebin.core.Binder;
import drebin.core.BinderEnvironment;
import drebin.core.ViewFactory;
import drebin.core.ViewHost;

package drebin.testing;



public class TestBinder implements Binder<View, ViewHost<View>, TestModel, BinderEnvironment> {
  @Override public ViewFactory<View> getViewFactory() {
    return new ViewFactory<View>() {