static void initializeRecoverLeaseMethod(String className) {
    try {
      leaseRecoverableClazz = Class.forName(className);
      recoverLeaseMethod = leaseRecoverableClazz.getMethod("recoverLease", Path.class);
      LOG.debug("set recoverLeaseMethod to " + className + ".recoverLease()");
    } catch (ClassNotFoundException e) {
      LOG.debug(
        "LeaseRecoverable interface not in the classpath, this means Hadoop 3.3.5 or below.");
      try {
        recoverLeaseMethod = DistributedFileSystem.class.getMethod("recoverLease", Path.class);
      } catch (NoSuchMethodException ex) {
        LOG.error("Cannot find recoverLease method in DistributedFileSystem class. "
          + "It should never happen. Abort.", ex);
        throw new RuntimeException(ex);
      }
    } catch (NoSuchMethodException e) {
      LOG.error("Cannot find recoverLease method in LeaseRecoverable class. "
        + "It should never happen. Abort.", e);
      throw new RuntimeException(e);
    }
  }
Initialize reflection classes and methods. If LeaseRecoverable class is not found, look for
DistributedFilSystem#recoverLease method.
hbase-asyncfs/src/main/java/org/apache/hadoop/hbase/util/RecoverLeaseFSUtils.java