public static Object[] decodeValues(String str) throws DecodeException {
        Object[] res;
        int i=0;
        int beginning = i;
        while (str.charAt(i) != '>') {
            i++;
        }
        String[] types = str.substring(beginning, i).split(":");
        
        i++;
        beginning = i;
        if (str.charAt(i) == '<') {
            i++;
            while (i < str.length()) {
                i++;
            }
            String[] tab = str.substring(beginning+1, i).split(":");
            res = new Object[tab.length];
            for (int x=0; x<tab.length; x++) {
                switch(types[x]) {
                case "int":
                    res[x] = Integer.valueOf(tab[x]);
                    break;
                case "dbl":
                    res[x] = Double.valueOf(tab[x]);
                    break;
                case "str":
                    res[x] = tab[x];
                    break;
                case "chr":
                    res[x] = tab[x].charAt(0);
                    break;
                case "nul":
                    res[x] = null;
                    break;
                }
            }
        } else {
            res = null;
            throw new DecodeException();
        }
        return res;
    }