/// <summary>
 /// Creates a generic parameter constraint from a generic parameter constraint metadata row.
 /// </summary>
 /// <param name="parentModule">The module that contains the constraint.</param>
 /// <param name="token">The token to initialize the constraint for.</param>
 /// <param name="row">The metadata table row to base the constraint on.</param>
 public SerializedGenericParameterConstraint(SerializedModuleDefinition parentModule, MetadataToken token,
                                             GenericParameterConstraintRow row)
     : base(token)
 {
     _parentModule = parentModule ?? throw new ArgumentNullException(nameof(parentModule));
     _row          = row;
 }
        private void AddGenericParameterConstraint(MetadataToken ownerToken,
                                                   GenericParameterConstraint constraint)
        {
            if (constraint is null)
            {
                return;
            }

            var table = Metadata.TablesStream.GetTable <GenericParameterConstraintRow>(TableIndex.GenericParamConstraint);

            var row = new GenericParameterConstraintRow(
                ownerToken.Rid,
                GetTypeDefOrRefIndex(constraint.Constraint));

            var token = table.Add(row);

            AddCustomAttributes(token, constraint);
        }