@Override
  public void onBackPressed() {
    if (!editedReference.isEqual(reference) || rulesChanged()) {
      AlertDialog dialog =
          new AlertDialog.Builder(this)
              .setMessage("Save changes?")
              .setPositiveButton(
                  "Save",
                  new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                      if (validateName()) {
                        saveChanges();
                        Navigate.back(AutoPlaylistEditActivity.this);
                      }
                    }
                  })
              .setNegativeButton(
                  "Discard",
                  new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                      Navigate.back(AutoPlaylistEditActivity.this);
                    }
                  })
              .setNeutralButton("Cancel", null)
              .show();

      Themes.themeAlertDialog(dialog);
    } else {
      super.onBackPressed();
    }
  }
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_instance_no_miniplayer);

    reference = getIntent().getParcelableExtra(PLAYLIST_EXTRA);
    if (reference == null) {
      reference = AutoPlaylist.EMPTY;
    }

    if (savedInstanceState != null) {
      editedReference = savedInstanceState.getParcelable(EDITED_HEADER);
      editedRules = savedInstanceState.getParcelableArrayList(EDITED_RULES);
    }

    if (editedReference == null || editedRules == null) {
      editedReference = new AutoPlaylist(reference);
      editedRules = new ArrayList<>(reference.getRules().length);
      Collections.addAll(editedRules, editedReference.getRules());
    }

    if (getSupportActionBar() != null) {
      if (reference == null) {
        getSupportActionBar().setTitle(R.string.playlist_auto_new);
      } else {
        getSupportActionBar().setTitle(reference.getPlaylistName());
      }
      getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_done_24dp);
    }

    adapter =
        new HeterogeneousAdapter()
            .addSection(new RuleHeaderSingleton(editedReference))
            .addSection(new RuleSection(editedRules, this));

    RecyclerView list = (RecyclerView) findViewById(R.id.list);
    list.setAdapter(adapter);
    list.setLayoutManager(new LinearLayoutManager(this));
    list.addItemDecoration(new BackgroundDecoration(Themes.getBackgroundElevated()));
    list.addItemDecoration(new DividerDecoration(this));
  }
 @Override
 public void onSaveInstanceState(Bundle outState) {
   super.onSaveInstanceState(outState);
   outState.putParcelable(EDITED_HEADER, editedReference);
   outState.putParcelableArrayList(EDITED_RULES, editedRules);
 }