code: public static List<String> validateInputParam(Map<String, Object> input, String taskName, WorkflowDef workflow) {
          ArrayList<String> errorList = new ArrayList<>();
  
          for (Entry<String, Object> e : input.entrySet()) {
              Object value = e.getValue();
              if (value instanceof String) {
                  errorList.addAll(extractParamPathComponentsFromString(e.getKey(), value.toString(), taskName, workflow));
              } else if (value instanceof Map) {
                  //recursive call
                  errorList.addAll( validateInputParam((Map<String, Object>) value, taskName, workflow));
              } else if (value instanceof List) {
                  errorList.addAll(extractListInputParam(e.getKey(), (List<?>) value, taskName, workflow));
              } else {
                  e.setValue(value);
              }
          }
          return errorList;
      }
docs: Validates inputParam and returns a list of errors if input is not valid.
  @param input {@link Map} of inputParameters
  @param taskName TaskName of inputParameters
  @param workflow WorkflowDef
  @return {@link List} of error strings.