private ArgInfo<Arg> @Nullable [] isApplicable() {
      int notOptionals = 0;
      for (int i = 0; i < paramLength; i++) {
        if (!params[i].isOptional()) notOptionals++;
      }
      if (isApplicableInternal(0, 0, notOptionals)) {
        for (int i = 0; i < map.length; i++) {
          if (map[i] == null) map[i] = ArgInfo.empty();
        }
        return map;
      }
      else {
        return null;
      }
    }
private ArgInfo<Arg> @Nullable [] isApplicable()