private static bool IsBound(this ITypeParameter typeParameter, ISubstitution substitution)
        {
            if (!substitution.Domain.Contains(typeParameter))
            {
                return(false);
            }
            if (substitution.IsId())
            {
                return(false);
            }
            var targetType          = substitution[typeParameter];
            var targetTypeParameter = targetType.GetTypeElement <ITypeParameter>();

            if (targetTypeParameter == null)
            {
                return(true);
            }
            var o1 = typeParameter.Owner;
            var o2 = targetTypeParameter.Owner;

            return(!o1.Equals(o2));
        }