anchor.diff:        assert(_semantics != null || parent is! RenderObject);
         final _SemanticsFragment fragment = _getSemanticsFragment(mergeIntoParent: _semantics?.parent?.isPartOfNodeMerging ?? false);
         assert(fragment is _InterestingSemanticsFragment);
  -      final SemanticsNode node = fragment.compile(parentSemantics: _semantics?.parent).single;
  +      final SemanticsNode node = fragment.compile().single;
         assert(node != null);
         assert(!node.isInvisible);
         assert(node == _semantics);
  
positive.code:       children.addAll(child.compile(
          geometry: createSemanticsGeometryForChild(geometry),
          currentSemantics: _children.length > 1 ? null : node,
          parentSemantics: node,
        ));
      }
      yield* finalizeSemanticsNode(node, children);
    }
  
    SemanticsNode establishSemanticsNode(_SemanticsGeometry geometry, SemanticsNode currentSemantics, SemanticsNode parentSemantics);
    Iterable<SemanticsNode> finalizeSemanticsNode(SemanticsNode node, List<SemanticsNode> children);
    _SemanticsGeometry createSemanticsGeometryForChild(_SemanticsGeometry geometry);
  }
  
negative.code:       yield* child.compile(
          geometry: new _SemanticsGeometry.copy(geometry),
          currentSemantics: null,
        );
      }
    }
  