code: @Override
      public int isCompatible(Class<?> target, Object actual) {
          int superCompat = super.isCompatible(target, actual);
          if (superCompat >= 0 && superCompat < 3) {
              return superCompat;
          }
  
          Class<?> actualClass = actual.getClass();
          if (actualClass == Types.UNDEFINED.getClass() || actualClass == Types.NULL.getClass()) {
              return 3;
          }
  
          if (JSFunction.class.isAssignableFrom(actualClass)) {
              if (isSingleAbstractMethod(target) != null) {
                  return 3;
              }
          }
  
          return -1;
      }
docs: ----------------------------------------------------------------------