private void ImportGenericConstraints()

in src/Refasmer/Importer/ImportLogic.cs [376:396]


    private void ImportGenericConstraints( EntityHandle entityHandle, GenericParameterHandleCollection srcParams )
    {
        var srcConstraints = new List<Tuple<GenericParameterHandle, GenericParameterConstraintHandle>>();

        foreach (var srcParamHandle in srcParams)
        {
            var srcParam = _reader.GetGenericParameter(srcParamHandle);
            var dstParamHandle = _builder.AddGenericParameter(entityHandle, srcParam.Attributes,
                ImportValue(srcParam.Name), srcParam.Index);
            _genericParameterCache.Add(srcParamHandle, dstParamHandle);
            srcConstraints.AddRange(srcParam.GetConstraints().Select(x => Tuple.Create(dstParamHandle, x)));

            Trace?.Invoke($"Imported generic parameter {_reader.ToString(srcParam)} -> {RowId(dstParamHandle)}");
        }

        foreach (var (dstParam, srcConstraintHandle) in srcConstraints)
            ImportEntity(srcConstraintHandle, _genericParameterConstraintCache,
                _reader.GetGenericParameterConstraint,
                src => _builder.AddGenericParameterConstraint(dstParam, Import(src.Type)),
                _reader.ToString, IsNil);
    }