// Path: dart-sample/module1-navigation/src/main/java/com/f2prateek/dart/model/ComplexParcelable.java
// public class ComplexParcelable implements Parcelable {
// 
//   SimpleParcelable parcelable;
// 
//   public ComplexParcelable(SimpleParcelable parcelable) {
//     this.parcelable = parcelable;
//   }
// 
//   public static ComplexParcelable random() {
//     return new ComplexParcelable(SimpleParcelable.random());
//   }
// 
//   protected ComplexParcelable(Parcel in) {
//     parcelable = (SimpleParcelable) in.readValue(SimpleParcelable.class.getClassLoader());
//   }
// 
//   @Override
//   public int describeContents() {
//     return 0;
//   }
// 
//   @Override
//   public void writeToParcel(Parcel dest, int flags) {
//     dest.writeValue(parcelable);
//   }
// 
//   @SuppressWarnings("unused")
//   public static final Parcelable.Creator<ComplexParcelable> CREATOR =
//       new Parcelable.Creator<ComplexParcelable>() {
//         @Override
//         public ComplexParcelable createFromParcel(Parcel in) {
//           return new ComplexParcelable(in);
//         }
// 
//         @Override
//         public ComplexParcelable[] newArray(int size) {
//           return new ComplexParcelable[size];
//         }
//       };
// 
//   @Override public String toString() {
//     return "A parcelable with another parcelable.\n" + parcelable;
//   }
// }
// 
// Path: dart-sample/module1-navigation/src/main/java/com/f2prateek/dart/model/StringParcel.java
// @Parcel
// public class StringParcel {
// 
//   String name;
// 
//   @ParcelConstructor
//   public StringParcel(String name) {
//     this.name = name;
//   }
// 
//   public String getName() {
//     return name;
//   }
// }


import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.SparseArray;
import butterknife.ButterKnife;
import butterknife.OnClick;
import com.f2prateek.dart.model.ComplexParcelable;
import com.f2prateek.dart.model.StringParcel;
import java.util.ArrayList;
import java.util.List;
        .extraInt(4)
        .extraListParcelable(parcelList)
        .extraParcel(parcel1)
        .extraParcelable(ComplexParcelable.random())
        .extraSparseArrayParcelable(parcelSparseArray)
        .extraString("a string")
        .build();

    startActivity(intent);
  }

  // Launch Navigation Activity residing in the navigation module
  @OnClick(R.id.navigateToModule1Activity)
  public void onNavigationActivityCTAClick() {
    StringParcel parcel1 = new StringParcel("Andy");
    StringParcel parcel2 = new StringParcel("Tony");

    List<StringParcel> parcelList = new ArrayList<>();
    parcelList.add(parcel1);
    parcelList.add(parcel2);

    SparseArray<StringParcel> parcelSparseArray = new SparseArray<>();
    parcelSparseArray.put(0, parcel1);
    parcelSparseArray.put(2, parcel2);

    Intent intent = HensonNavigator.gotoModule1Activity(this)
        .defaultKeyExtra("defaultKeyExtra")
        .extraInt(4)
        .extraListParcelable(parcelList)
        .extraParcel(parcel1)
// Path: dart-sample/module1-navigation/src/main/java/com/f2prateek/dart/model/ComplexParcelable.java
// public class ComplexParcelable implements Parcelable {
// 
//   SimpleParcelable parcelable;
// 
//   public ComplexParcelable(SimpleParcelable parcelable) {
//     this.parcelable = parcelable;
//   }
// 
//   public static ComplexParcelable random() {
//     return new ComplexParcelable(SimpleParcelable.random());
//   }
// 
//   protected ComplexParcelable(Parcel in) {
//     parcelable = (SimpleParcelable) in.readValue(SimpleParcelable.class.getClassLoader());
//   }
// 
//   @Override
//   public int describeContents() {
//     return 0;
//   }
// 
//   @Override
//   public void writeToParcel(Parcel dest, int flags) {
//     dest.writeValue(parcelable);
//   }
// 
//   @SuppressWarnings("unused")
//   public static final Parcelable.Creator<ComplexParcelable> CREATOR =
//       new Parcelable.Creator<ComplexParcelable>() {
//         @Override
//         public ComplexParcelable createFromParcel(Parcel in) {
//           return new ComplexParcelable(in);
//         }
// 
//         @Override
//         public ComplexParcelable[] newArray(int size) {
//           return new ComplexParcelable[size];
//         }
//       };
// 
//   @Override public String toString() {
//     return "A parcelable with another parcelable.\n" + parcelable;
//   }
// }
// 
// Path: dart-sample/module1-navigation/src/main/java/com/f2prateek/dart/model/StringParcel.java
// @Parcel
// public class StringParcel {
// 
//   String name;
// 
//   @ParcelConstructor
//   public StringParcel(String name) {
//     this.name = name;
//   }
// 
//   public String getName() {
//     return name;
//   }
// }


// Path: dart-sample/app/src/main/java/com/f2prateek/dart/example/MainActivity.java
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.SparseArray;
import butterknife.ButterKnife;
import butterknife.OnClick;
import com.f2prateek.dart.model.ComplexParcelable;
import com.f2prateek.dart.model.StringParcel;
import java.util.ArrayList;
import java.util.List;

        .extraInt(4)
        .extraListParcelable(parcelList)
        .extraParcel(parcel1)
        .extraParcelable(ComplexParcelable.random())
        .extraSparseArrayParcelable(parcelSparseArray)
        .extraString("a string")
        .build();

    startActivity(intent);
  }

  // Launch Navigation Activity residing in the navigation module
  @OnClick(R.id.navigateToModule1Activity)
  public void onNavigationActivityCTAClick() {
    StringParcel parcel1 = new StringParcel("Andy");
    StringParcel parcel2 = new StringParcel("Tony");

    List<StringParcel> parcelList = new ArrayList<>();
    parcelList.add(parcel1);
    parcelList.add(parcel2);

    SparseArray<StringParcel> parcelSparseArray = new SparseArray<>();
    parcelSparseArray.put(0, parcel1);
    parcelSparseArray.put(2, parcel2);

    Intent intent = HensonNavigator.gotoModule1Activity(this)
        .defaultKeyExtra("defaultKeyExtra")
        .extraInt(4)
        .extraListParcelable(parcelList)
        .extraParcel(parcel1)
        .extraParcelable(ComplexParcelable.random())