void AddConstraints(DefaultUnresolvedTypeParameter tp, IKVM.Reflection.Type g) { if (g.GenericParameterAttributes.HasFlag (GenericParameterAttributes.Contravariant)) { tp.Variance = VarianceModifier.Contravariant; } else if (g.GenericParameterAttributes.HasFlag (GenericParameterAttributes.Covariant)) { tp.Variance = VarianceModifier.Covariant; } tp.HasReferenceTypeConstraint = g.GenericParameterAttributes.HasFlag (GenericParameterAttributes.ReferenceTypeConstraint); tp.HasValueTypeConstraint = g.GenericParameterAttributes.HasFlag (GenericParameterAttributes.NotNullableValueTypeConstraint); tp.HasDefaultConstructorConstraint = g.GenericParameterAttributes.HasFlag (GenericParameterAttributes.DefaultConstructorConstraint); foreach (var constraint in g.GetGenericParameterConstraints ()) { tp.Constraints.Add(ReadTypeReference(constraint)); } }