'Deeply examine a value in memory for its references
Args:
- value: value to examine (Int)
Returns:
- list of tuple of (value(Int), type(String), next_value(Int))'

@memoized
def examine_mem_reference(self, value, depth=5):

    result = []
    if (depth <= 0):
        depth = 4294967295
    (v, t, vn) = self.examine_mem_value(value)
    while (vn is not None):
        if (len(result) > depth):
            (_v, _t, _vn) = result[(-1)]
            result[(-1)] = (_v, _t, '-->    ...')
            break
        result += [(v, t, vn)]
        if ((v == vn) or (to_int(v) == to_int(vn))):
            break
        if (to_int(vn) is None):
            break
        if (to_int(vn) in [to_int(v) for (v, _, _) in result]):
            break
        (v, t, vn) = self.examine_mem_value(to_int(vn))
    return result
