anchor.diff:        case _PostAnchorField.ActionNumber:
           return wrappedNode.actionNumber;
         case _PostAnchorField.BuilderOptions:
  -        return serializer._assetIdToId[wrappedNode.builderOptionsId];
  +        return serializer.findAssetIndex(wrappedNode.builderOptionsId,
  +            from: wrappedNode.id, field: 'builderOptions');
         case _PostAnchorField.PreviousInputsDigest:
           return _serializeDigest(wrappedNode.previousInputsDigest);
         case _PostAnchorField.PrimaryInput:
           return wrappedNode.primaryInput != null
  -            ? serializer._assetIdToId[wrappedNode.primaryInput]
  +            ? serializer.findAssetIndex(wrappedNode.primaryInput,
  +                from: wrappedNode.id, field: 'primaryInput')
               : null;
         default:
           throw RangeError.index(index, this);
  
positive.code:         return globNode.glob.pattern;
        case _GlobField.Results:
          return globNode.results
              .map((id) => serializer._assetIdToId[id])
              .toList(growable: false);
        default:
          throw RangeError.index(index, this);
  
negative.code:     switch (fieldId) {
        case _GeneratedField.PrimaryInput:
          return generatedNode.primaryInput != null
              ? serializer.findAssetIndex(generatedNode.primaryInput,
                  from: generatedNode.id, field: 'primaryInput')
              : null;
        case _GeneratedField.WasOutput:
          return _serializeBool(generatedNode.wasOutput);
  