code: @SuppressWarnings({"unchecked", "rawtypes"})
      private static Properties initProperties(String configPath, Properties configProperties) {
          Map<String, String> systemProperties = ConfigUtils.filterWithPrefix(HTTL_KEY_PREFIX, (Map) System.getProperties(), false);
          Map<String, String> systemEnv = ConfigUtils.filterWithPrefix(HTTL_KEY_PREFIX, System.getenv(), true);
          Properties properties = ConfigUtils.mergeProperties(HTTL_DEFAULT_PROPERTIES, configPath, configProperties, systemProperties, systemEnv);
          String[] modes = StringUtils.splitByComma(properties.getProperty(MODES_KEY));
          if (CollectionUtils.isNotEmpty(modes)) {
              Object[] configs = new Object[modes.length + 5];
              configs[0] = HTTL_DEFAULT_PROPERTIES;
              for (int i = 0; i < modes.length; i++) {
                  configs[i + 1] = HTTL_PREFIX + modes[i] + PROPERTIES_SUFFIX;
              }
              configs[modes.length + 1] = configPath;
              configs[modes.length + 2] = configProperties;
              configs[modes.length + 3] = systemProperties;
              configs[modes.length + 4] = systemEnv;
              properties = ConfigUtils.mergeProperties(configs);
          }
          properties.setProperty(ENGINE_NAME, configPath);
          return properties;
      }
docs: /*
  Mode and System Configuration
  
  @author Li Ding (oldratlee AT gmail DOT com)