code: private ImmutableMap<String, String> getLimiterStopMetadata() {
      WorkUnit workUnit = this.taskState.getWorkunit();
      Properties properties = workUnit.getProperties();
  
      String metadataKeyList = properties.getProperty(LimiterConfigurationKeys.LIMITER_REPORT_KEY_LIST, LimiterConfigurationKeys.DEFAULT_LIMITER_REPORT_KEY_LIST);
      List<String> keyList = Splitter.on(',').omitEmptyStrings().trimResults()
              .splitToList(metadataKeyList);
  
      if (keyList.isEmpty())
        return ImmutableMap.of();
  
        Set<String> names = properties.stringPropertyNames();
        TreeMap<String, String> orderedProperties = new TreeMap<>();
  
        for (String name : names) {
          orderedProperties.put(name, properties.getProperty(name));
        }
  
        ImmutableMap.Builder builder = ImmutableMap.<String, String>builder();
        for (String oldKey : keyList) {
          builder.putAll(orderedProperties.subMap(oldKey, oldKey + Character.MAX_VALUE));
        }
        builder.put(LIMITER_STOP_CAUSE_KEY, LIMITER_STOP_CAUSE_VALUE);
        return builder.build();
    }
docs: Compose meta data when limiter fails to acquire permit
  The meta data key list is passed from source layer
  A prefix matching is used because some work unit {@link org.apache.gobblin.source.workunit.MultiWorkUnit} have packing strategy, which
  can append additional string after the key name
  
  @return String map representing all the meta data need to report. Return null if no meta data was found.