public static List<Properties> extractFromPropertiesAsListOfProperties(String prefix, Properties properties) {
        final String prefixDot = prefix + ".";
        final int prefixDotLength = prefixDot.length();

        final Map<Integer,Properties> ordered = new TreeMap<>();
        final Map<String, Properties> rest = new TreeMap<>();

        Enumeration<?> names = properties.propertyNames();
        while (names.hasMoreElements()) {
            final String key = (String) names.nextElement();
            if (!propMatchesPrefix(prefixDot, key)) {
                continue;
            }
            final String propertyKey = key.substring(prefixDotLength);
            if (PROPERTY_COMBINE_POLICY_SUFFIX.equals(propertyKey)) {
                continue;
            }
            final int firstDotIndex = propertyKey.indexOf('.');
            final String entryName = getKeyBefore(propertyKey, firstDotIndex);
            final String entryPropertyKey = getKeyAfter(propertyKey, firstDotIndex);
            final String entryPropertyValue = properties.getProperty(key);
            try {
                final int entryIndex = Integer.parseInt(entryName);
                final Properties entry = ordered.get(entryIndex);
                if (entry == null) {
                    ordered.put(entryIndex, newProperties(entryPropertyKey, entryPropertyValue));
                } else {
                    entry.put(entryPropertyKey, entryPropertyValue);
                }
            } catch (NumberFormatException ignored) {
                final Properties entry = rest.get(entryName);
                if (entry == null) {
                    rest.put(entryName, newProperties(entryPropertyKey, entryPropertyValue));
                } else {
                    entry.put(entryPropertyKey, entryPropertyValue);
                }
            }
        }
        final List<Properties> all = new ArrayList<>(ordered.values());
        all.addAll(rest.values());
        return all.isEmpty() ? null : all;
    }
Extract from given properties a list of string values. The prefix is used to determine the subset of the
given properties from which the list should be extracted, the rest is used as a numeric index. If the rest
is not numeric, the order is not determined (all those props are appended to the end of the list)

NOTE: If suffix/index is "._combine"  it is ignored!
This is reserved for combine policy tweaking.

@param prefix for selecting the properties from which the list should be extracted
@param properties properties from which to extract from
@return parsed list or null if no element with prefixes exists
src/main/java/io/fabric8/maven/docker/util/EnvUtil.java