@Override
  public void saveStaging(Staging staging) {
    String filename = ".gitlet/objects/staging";

    try (OutputStream file = new FileOutputStream(filename);
        OutputStream buffer = new BufferedOutputStream(file);
        ObjectOutput output = new ObjectOutputStream(buffer); ) {
      output.writeObject(staging.getFilesToAdd());
      output.writeObject(staging.getFilesToRm());
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
  @SuppressWarnings("unchecked")
  @Override
  public Staging recoverStaging() {

    // String objDir = ".gitlet/objects/staging";
    // File d = new File(objDir);
    // if(!d.exists()){
    // throw new IllegalArgumentException("Gitlet not initialized!");
    // }

    String filename = ".gitlet/objects/staging";
    Staging recovered = null;

    File f = new File(filename);
    if (f.exists()) {
      try (InputStream file = new FileInputStream(filename);
          InputStream buffer = new BufferedInputStream(file);
          ObjectInput input = new ObjectInputStream(buffer); ) {

        List<String> filesToAdd = (List<String>) input.readObject();
        List<String> filesToRm = (List<String>) input.readObject();

        recovered = new Staging();
        recovered.setFilesToAdd(filesToAdd);
        recovered.setFilesToRm(filesToRm);
      } catch (ClassNotFoundException ex) {
        fLogger.log(Level.SEVERE, "Cannot perform input. Class not found.", ex);

      } catch (IOException ex) {
        fLogger.log(Level.SEVERE, "Cannot perform input.", ex);
      }

      return recovered;

    } else {
      System.out.println("Staging object not found!");
      return null;
    }
  }