docs: private List<TaskConfig> parseConfig(Map<String, Object> config) {
          List<TaskConfig> result = new ArrayList<TaskConfig>();
          String[] tagList = null;
          if (config.containsKey(TAG_LIST_KEY)) {
  
              tagList = (String[]) config.get(TAG_LIST_KEY);
              ArrayList<String> validList = new ArrayList<String>();
              ArrayList<String> invalidList = new ArrayList<String>();
              validateTags(tagList, validList, invalidList);
              if (invalidList.size() > 0) {
                  //If contain special characters, check failed
                  Tr.warning(tc, "TAGS_FILTERING_WARNING", Arrays.toString(invalidList.toArray(new String[invalidList.size()])));
              }
              tagList = validList.toArray(new String[validList.size()]);
          }
  
          int maxFieldLength = (Integer) config.get(MAX_FIELD_KEY);
          int maxEvents = 0;
          //Events Throttling - maxEvents
          if (config.containsKey(MAX_EVENTS_KEY)) {
              //Check if maxEvents is in the integer range 0-2147483647
              try {
  
                  maxEvents = Integer.parseInt(config.get(MAX_EVENTS_KEY).toString());
                  if (maxEvents < 0) {
                      maxEvents = 0;
                  }
  
              } catch (Exception e) {//Any other casting exception will result in the following out-of-range warning
                  Tr.warning(tc, "MAXEVENTS_OUTOFRANGE_WARNING", config.get(MAX_EVENTS_KEY));
                  maxEvents = 0;
  
              }
  
          }
  
          if (config.containsKey(SOURCE_LIST_KEY)) {
              String[] sourceList = (String[]) config.get(SOURCE_LIST_KEY);
              if (sourceList != null) {
                  for (String source : sourceList) {
                      if (!getSourceName(source.trim()).isEmpty()) {
                          TaskConfig.Builder builder;
                          if (getSourceName(source.trim()).equals(CollectorConstants.AUDIT_LOG_SOURCE)) {
                              builder = new TaskConfig.Builder(getSourceName(source.trim()), CollectorConstants.SERVER);
                          } else {
                              builder = new TaskConfig.Builder(getSourceName(source.trim()), CollectorConstants.MEMORY);
                          }
                          builder.enabled(true);
                          builder.tags(tagList);
                          builder.maxEvents(maxEvents);
                          builder.maxFieldLength(maxFieldLength);
                          result.add(builder.build());
                      }
                  }
              }
          }
  
          return result;
      }