public final boolean getAndClear(final long id64) {
        if (size == 0) {
            return false;
        }
        final int id = shrinkId(id64);
        final int[] a = faid;
        int offset = p2size;
        int n = 0;

        while (offset > 0) {
            final int nn = n + offset;
            if (nn < size && a[nn] <= id) {
                n = nn;
            }
            offset >>= 1;
        }
        if (a[n] == id && (fapos[n] & 0x80000000) == 0) {
            aboffset = startPos(n);
            aboffsetEnd = fapos[n];
            fapos[n] |= 0x80000000; // mark deleted
            delbytes += aboffsetEnd - aboffset;
            delcount++;
            return true;
        }
        return false;
    }
Set the internal reader (aboffset, aboffsetEnd) to the body data for the given id
<p>
If a node is not found in an empty cache, this is usually an edge-effect
(data-file does not exist or neighboured data-files of differnt age),
but is can as well be a symptom of a node-identity breaking bug.
<p>
Current implementation always returns false for not-found, however, for
regression testing, at least for the case that is most likely a bug
(node found but marked as deleted = ready for garbage collection
= already consumed) the RunException should be re-enabled

@return true if id was found
main/src/main/java/cgeo/geocaching/brouter/codec/MicroCache.java