class RotatingFileOutputStreamSupplier implements Supplier<OutputStream>, Closeable {

    public static List<File> getAllArchives( FileSystemAbstraction fileSystem,  File outputFile )
    {
        ArrayList<File> ret = new ArrayList<>();
        int i = 1;
        while ( true )
        {
            File file = archivedOutputFile( outputFile, i );
            if ( !fileSystem.fileExists( file ) )
            {
                break;
            }
            ret.add( file );
            i++;
        }
        return ret;
    }

    public  RotatingFileOutputStreamSupplier( FileSystemAbstraction fileSystem, File outputFile,
            long rotationThresholdBytes, long rotationDelay, int maxArchives, Executor rotationExecutor );
    public  RotatingFileOutputStreamSupplier( FileSystemAbstraction fileSystem, File outputFile,
            long rotationThresholdBytes, long rotationDelay, int maxArchives, Executor rotationExecutor,
            RotationListener rotationListener );
      RotatingFileOutputStreamSupplier( LongSupplier currentTimeSupplier, FileSystemAbstraction fileSystem,
            File outputFile, long rotationThresholdBytes, long rotationDelay, int maxArchives,
            Executor rotationExecutor, RotationListener rotationListener );

}