@@ -0,0 +1,1533 @@
+package cz.hobrasoft.pdfmu;%0D%0A%0D%0Aimport java.util.Arrays;%0D%0Aimport java.util.List;%0D%0Aimport java.util.SortedMap;%0D%0Aimport java.util.TreeMap;%0D%0Aimport java.util.regex.Matcher;%0D%0A%0D%0A/**%0D%0A *%0D%0A * @author %3Ca href=%22mailto:filip.bartek@hobrasoft.cz%22%3EFilip Bartek%3C/a%3E%0D%0A */%0D%0Apublic class PdfmuUtils %7B%0D%0A%0D%0A    /**%0D%0A     * Converts an array of keys and an array of values to a %7B@link SortedMap%7D.%0D%0A     *%0D%0A     * @param %3CK%3E the type of keys.%0D%0A     * @param %3CV%3E the type of values.%0D%0A     * @param keys the array of keys. Only the keys that have a matching value%0D%0A     * are used.%0D%0A     * @param values the array of values. Only the values that have a matching%0D%0A     * key are used.%0D%0A     * @return a %7B@link SortedMap%7D that contains a key-value pair for each index%0D%0A     * in keys and values.%0D%0A     */%0D%0A    public static %3CK, V%3E SortedMap%3CK, V%3E sortedMap(K%5B%5D keys, V%5B%5D values) %7B%0D%0A        SortedMap%3CK, V%3E result = new TreeMap%3C%3E();%0D%0A        int n = Math.min(keys.length, values.length);%0D%0A        for (int i = 0; i %3C n; ++i) %7B%0D%0A            result.put(keys%5Bi%5D, values%5Bi%5D);%0D%0A        %7D%0D%0A        return result;%0D%0A    %7D%0D%0A%0D%0A    public static SortedMap%3CString, String%3E getMatcherGroups(Matcher m, String%5B%5D names) %7B%0D%0A        return getMatcherGroups(m, Arrays.asList(names));%0D%0A    %7D%0D%0A%0D%0A    public static SortedMap%3CString, String%3E getMatcherGroups(Matcher m, List%3CString%3E names) %7B%0D%0A        SortedMap%3CString, String%3E result = new TreeMap%3C%3E();%0D%0A        for (String name : names) %7B%0D%0A            result.put(name, m.group(name));%0D%0A        %7D%0D%0A        return result;%0D%0A    %7D%0D%0A%7D%0D%0A

Add PdfmuUtils with some static methods