lojix/wam_prolog/src/main/com/thesett/aima/logic/fol/wam/machine/WAMResolvingJavaMachine.java
protected int deref(int a)
    {
        // tag, value <- STORE[a]
        int addr = a;
        int tmp = data.get(a);
        derefTag = (byte) (tmp >>> TSHIFT);
        derefVal = tmp & AMASK;

        // while tag = REF and value != a
        while ((derefTag == WAMInstruction.REF))
        {
            // tag, value <- STORE[a]
            addr = derefVal;
            tmp = data.get(derefVal);
            derefTag = (byte) (tmp >>> TSHIFT);
            tmp = tmp & AMASK;

            // Break on free var.
            if (derefVal == tmp)
            {
                break;
            }

            derefVal = tmp;
        }

        return addr;
    }
protected int deref(int a)
    {
        // tag, value <- STORE[a]
        int addr = a;
        int tmp = data.get(a);
        derefTag = (byte) (tmp >>> TSHIFT);
        derefVal = tmp & AMASK;

        // while tag = REF and value != a
        while ((derefTag == WAMInstruction.REF))
        {
            // tag, value <- STORE[a]
            addr = derefVal;
            tmp = data.get(derefVal);
            derefTag = (byte) (tmp >>> TSHIFT);
            tmp = tmp & AMASK;

            // Break on free var.
            if (derefVal == tmp)
            {
                break;
            }

            derefVal = tmp;
        }

        return addr;
    }
{@inheritDoc}