code: public void changeFile(File file) throws FileNotFoundException {
          if (isTailing()) {
              throw new IllegalStateException("Cannot Change FileTailer.file while current instance is tailing");
          } else {
              if (file == null) {
                  throw new NullPointerException("changeFile(File argument) cannot be null");
              } else if (!file.exists()) {
                  throw new FileNotFoundException("File does not exist: " + file.getAbsolutePath());
              }
              this.file = file;
          }
      }
docs: Attempts to change the file that is being tailed by <code>this</code> Note that if
  <code>this</code> is currently tailing then an exception is thrown
  
  @param file File to change
  @throws NullPointerException If the <code>file</code> argument is <code>null</code>
  @throws IllegalStateException Thrown when <code>this</code> is in a running state (i.e.
  tailing)
  @throws FileNotFoundException Thrown when <code>file</code> argument does not exist