@Override
    Object look(DspState vd, InfoMode vm, Object vr) {
        InfoResidue0 info = (InfoResidue0) vr;
        LookResidue0 look = new LookResidue0();
        int acc = 0;
        int dim;
        int maxstage = 0;
        look.info = info;
        look.map = vm.mapping;

        look.parts = info.partitions;
        look.fullbooks = vd.fullbooks;
        look.phrasebook = vd.fullbooks[info.groupbook];

        dim = look.phrasebook.dim;

        look.partbooks = new int[look.parts][];

        for (int j = 0; j < look.parts; j++) {
            int i = info.secondstages[j];
            int stages = Util.ilog(i);
            if (stages != 0) {
                if (stages > maxstage) {
                    maxstage = stages;
                }
                look.partbooks[j] = new int[stages];
                for (int k = 0; k < stages; k++) {
                    if ((i & (1 << k)) != 0) {
                        look.partbooks[j][k] = info.booklist[acc++];
                    }
                }
            }
        }

        look.partvals = (int) Math.rint(Math.pow(look.parts, dim));
        look.stages = maxstage;
        look.decodemap = new int[look.partvals][];
        for (int j = 0; j < look.partvals; j++) {
            int val = j;
            int mult = look.partvals / look.parts;
            look.decodemap[j] = new int[dim];

            for (int k = 0; k < dim; k++) {
                int deco = val / mult;
                val -= deco * mult;
                mult /= look.parts;
                look.decodemap[j][k] = deco;
            }
        }
        return (look);
    }