/// <summary>Confirms that a parameter type matches.</summary>
        public void CompareParameterTypes(int parameter)
        {
            CodeType    parameterType = Option.Parameters[parameter].Type;
            IExpression value         = OrderedParameters[parameter]?.Value;

            if (value == null)
            {
                return;
            }
            DocRange errorRange = OrderedParameters[parameter].ExpressionRange;

            if (parameterType is PortableLambdaType && value is PortableLambdaType portableType && portableType.LambdaKind == LambdaKind.Anonymous)
            {
                if (parameterType.CodeTypeParameterInvalid(value.Type()))
                {
                    // The parameter type does not match.
                    string msg = string.Format("Expected a value of type {0}.", Option.Parameters[parameter].Type.GetName());
                    Error(msg, errorRange);
                }
                else if (value.Type() != null && parameterType == null && value.Type().IsConstant())
                {
                    string msg = string.Format($"The type '{value.Type().Name}' cannot be used here.");
                    Error(msg, errorRange);
                }
            }
        }