// Path: src/main/java/org/apache/commons/io/input/TailerListener2.java
// public interface TailerListener2 {
// 
//     /**
//      * The tailer will call this method during construction,
//      * giving the listener a method of stopping the tailer.
//      * @param tailer the tailer.
//      */
//     void init(Tailer2 tailer);
// 
//     /**
//      * This method is called if the tailed file is not found.
//      * <p>
//      * <b>Note:</b> this is called from the tailer thread.
//      */
//     void fileNotFound();
// 
//     /**
//      * Called if a file rotation is detected.
//      *
//      * This method is called before the file is reopened, and fileNotFound may
//      * be called if the new file has not yet been created.
//      * <p>
//      * <b>Note:</b> this is called from the tailer thread.
//      */
//     void fileRotated();
// 
//     /**
//      * Handles a line from a Tailer.
//      * <p>
//      * <b>Note:</b> this is called from the tailer thread.
//      * @param line the line.
//      */
//     void handle(String line);
// 
//     /**
//      * Handles an Exception .
//      * <p>
//      * <b>Note:</b> this is called from the tailer thread.
//      * @param ex the exception.
//      */
//     void handle(Exception ex);
// 
// }


import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import org.apache.commons.io.input.TailerListener2;
package com.github.davidmoten.logan;



public class TailerNonFollowing implements Runnable {

    private volatile boolean keepGoing = true;
    private final File file;
// Path: src/main/java/org/apache/commons/io/input/TailerListener2.java
// public interface TailerListener2 {
// 
//     /**
//      * The tailer will call this method during construction,
//      * giving the listener a method of stopping the tailer.
//      * @param tailer the tailer.
//      */
//     void init(Tailer2 tailer);
// 
//     /**
//      * This method is called if the tailed file is not found.
//      * <p>
//      * <b>Note:</b> this is called from the tailer thread.
//      */
//     void fileNotFound();
// 
//     /**
//      * Called if a file rotation is detected.
//      *
//      * This method is called before the file is reopened, and fileNotFound may
//      * be called if the new file has not yet been created.
//      * <p>
//      * <b>Note:</b> this is called from the tailer thread.
//      */
//     void fileRotated();
// 
//     /**
//      * Handles a line from a Tailer.
//      * <p>
//      * <b>Note:</b> this is called from the tailer thread.
//      * @param line the line.
//      */
//     void handle(String line);
// 
//     /**
//      * Handles an Exception .
//      * <p>
//      * <b>Note:</b> this is called from the tailer thread.
//      * @param ex the exception.
//      */
//     void handle(Exception ex);
// 
// }


// Path: src/main/java/com/github/davidmoten/logan/TailerNonFollowing.java
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import org.apache.commons.io.input.TailerListener2;

package com.github.davidmoten.logan;



public class TailerNonFollowing implements Runnable {

    private volatile boolean keepGoing = true;
    private final File file;
    private final TailerListener2 listener;