anchor.diff:  
           // track registration
           if unregistered then
  -            familyChanges.Add { FamilyChangeType = ComponentRemovedFromMember; MemberId = memberId; ParentIdOpt = entityId }
  +            familyChanges.Add { FamilyChangeType = ComponentRemovedFromMember; MemberId = memberId; AncestorIdOpt = entityId }
   
           // unregister correlation
           if unregistered && not isolated then
  
positive.code:             | Some system -> system.IndexMember memberId
              | None -> failwith ("Could not find expected system '" + Unchecked.defaultof<'c>.TypeName + "'.")
  
          member this.AddMember<'c when 'c : struct and 'c :> 'c Component> parentIdOpt =
              match this.TryIndexSystem<'c, SystemFamilial<'c, 'w>> () with
              | Some system -> system.AddMember parentIdOpt
              | None -> failwith ("Could not find expected system '" + Unchecked.defaultof<'c>.TypeName + "'.")
  
          member this.RemoveMember<'c when 'c : struct and 'c :> 'c Component> parentIdOpt =
              match this.TryIndexSystem<'c, SystemFamilial<'c, 'w>> () with
              | Some system -> system.RemoveMember parentIdOpt
              | None -> failwith ("Could not find expected system '" + Unchecked.defaultof<'c>.TypeName + "'.")
  
          member this.QualifyFamilial<'c when 'c : struct and 'c :> 'c Component> memberId entityId =
  
negative.code: type [<NoEquality; NoComparison; Struct>] FamilyChange =
      { FamilyChangeType : FamilyChangeType
        MemberId : Guid
        AncestorIdOpt : Guid }
  
  /// An Ecs system that stores components in a family tree.
  type SystemFamilial<'c, 'w when 'c : struct and 'c :> 'c Component> (isolated, buffered, ecs : 'w Ecs) =
  