@Override
  protected boolean doShouldApply(File toDir) {
    // if the file is optional in may not exist
    // If file is critical, we can restore it.
    if (isOptional() && !isCritical()) {
      return getSource(toDir).exists();
    }
    return true;
  }
@Override
  protected boolean doShouldApply(File toDir)