public Object[] list() {
        ArrayList<Object> ret = new ArrayList<Object>();
        while (true) {
            if (off >= blob.length)
                break;
            int t = uint8();
            if (t == T_END)
                break;
            else if (t == T_INT)
                ret.add(int32());
            else if (t == T_STR)
                ret.add(string());
            else if (t == T_COORD)
                ret.add(coord());
            else if (t == T_COLOR)
                ret.add(color());
        }
        return (ret.toArray());
    }