B:BD[
4.759605] → [
6.1223:1394]
∅:D[
6.1394] → [
5.113391:113421]
∅:D[
7.5912] → [
5.113391:113421]
∅:D[
8.62720] → [
5.113391:113421]
B:BD[
5.113391] → [
5.113391:113421]
B:BD[
5.113421] → [
9.132710:132796]
∅:D[
7.5997] → [
4.759767:759848]
∅:D[
8.62804] → [
4.759767:759848]
∅:D[
10.64035] → [
4.759767:759848]
∅:D[
5.113502] → [
4.759767:759848]
∅:D[
9.132796] → [
4.759767:759848]
B:BD[
4.759767] → [
4.759767:759848]
B:BD[
4.759848] → [
11.32111:32131]
B:BD[
11.32131] → [
2.19089:19278]
∅:D[
2.19278] → [
5.113593:113643]
∅:D[
9.132907] → [
5.113593:113643]
B:BD[
5.113593] → [
5.113593:113643]
B:BD[
5.113643] → [
12.0:79]
        for name in iter_adjacent(
            txn,
            txn.graph(channel),
            current.inode_vertex(),
            flag0,
            flag1,
        )? {
            let name = name?;
            let name_dest = txn.find_block(txn.graph(channel), name.dest()).unwrap();
            name_buf.clear();
            debug!("getting contents {:?}", name);
            changes
                .get_contents(
                    |h| txn.get_external(&h).unwrap().map(|x| x.into()),
                    *name_dest,
                    &mut name_buf,
                )
                .map_err(FsErrorC::Changestore)?;
            let FileMetadata { basename, .. } = FileMetadata::read(&name_buf);
            if basename == c {
                let age = txn
                    .get_changeset(txn.changes(&channel), &name.dest().change)
                    .unwrap();
                if let Some((ref mut next, ref mut next_age)) = next {
                    ambiguous = true;
                    if age < *next_age {
                        *next = name_dest;
                        *next_age = age;
        'outer: loop {
            for name in iter_adjacent(
                txn,
                txn.graph(channel),
                current.inode_vertex(),
                flag0,
                flag1,
            )? {
                let name = name?;
                let name_dest = txn.find_block(txn.graph(channel), name.dest()).unwrap();
                if name_dest.start == name_dest.end {
                    // non-null root, just continue.
                    current = iter_adjacent(txn, txn.graph(channel), *name_dest, flag0, flag1)?
                        .next()
                        .unwrap()?
                        .dest();
                    break 'outer
                }
                name_buf.clear();
                debug!("getting contents {:?}", name);
                changes
                    .get_contents(
                        |h| txn.get_external(&h).unwrap().map(|x| x.into()),
                        *name_dest,
                        &mut name_buf,
                    )
                    .map_err(FsErrorC::Changestore)?;
                let FileMetadata { basename, .. } = FileMetadata::read(&name_buf);
                if basename == c {
                    let age = txn
                        .get_changeset(txn.changes(&channel), &name.dest().change)
                        .unwrap();
                    if let Some((ref mut next, ref mut next_age)) = next {
                        ambiguous = true;
                        if age < *next_age {
                            *next = name_dest;
                            *next_age = age;
                        }
                    } else {
                        next = Some((name_dest, age));