public abstract FileLock lock(long position, long size, boolean shared) throws IOException;
public final FileLock lock() throws IOException { return lock(0, Long.MAX_VALUE, false); }
  public abstract FileLock lock(long position, long size, boolean shared)    throws IOException;