@Override
    public void visitFieldInsn(final int opcode, final String owner,
            final String name, final String desc) {
        mv.visitFieldInsn(opcode, owner, name, desc);
        if (constructor) {
            char c = desc.charAt(0);
            boolean longOrDouble = c == 'J' || c == 'D';
            switch (opcode) {
            case GETSTATIC:
                pushValue(OTHER);
                if (longOrDouble) {
                    pushValue(OTHER);
                }
                break;
            case PUTSTATIC:
                popValue();
                if (longOrDouble) {
                    popValue();
                }
                break;
            case PUTFIELD:
                popValue();
                if (longOrDouble) {
                    popValue();
                    popValue();
                }
                break;
            // case GETFIELD:
            default:
                if (longOrDouble) {
                    pushValue(OTHER);
                }
            }
        }
    }