code: protected Map<Integer, Class<?>> prepareOptionalGenericTypeMap(Method executeMethod) {
          final Parameter[] parameters = executeMethod.getParameters();
          if (parameters.length == 0) {
              return Collections.emptyMap();
          }
          final Map<Integer, Class<?>> optionalGenericTypeMap = new LinkedHashMap<Integer, Class<?>>(4);
          int index = 0;
          for (Parameter parameter : parameters) {
              if (isOptionalParameterType(parameter.getType())) {
                  final Type paramedType = parameter.getParameterizedType();
                  final Class<?> genericType = DfReflectionUtil.getGenericFirstClass(paramedType);
                  checkExecuteMethodOptionalParameter(executeMethod, paramedType, genericType);
                  optionalGenericTypeMap.put(index, genericType);
              }
              ++index;
          }
          return Collections.unmodifiableMap(optionalGenericTypeMap);
      }
docs: =====================