public void AddAssumption(WolframAlphaAssumption Assumption, [System.Runtime.InteropServices.OptionalAttribute, System.Runtime.InteropServices.DefaultParameterValueAttribute(false)]      // ERROR: Optional parameters aren't supported in C#
                           bool CheckForDuplicates)
 {
     if (CheckForDuplicates == true && WA_Assumption.Contains("&substitution=" + HttpUtility.UrlEncode(Assumption.Word)))
     {
         return;
     }
     WA_Assumption += "&assumption=" + HttpUtility.UrlEncode(Assumption.Word);
 }
    public WolframAlphaValidationResult ValidateQuery(XmlDocument Response)
    {
        System.Threading.Thread.Sleep(1);

        XmlNode MainNode = Response.SelectNodes("/validatequeryresult")[0];

        WA_ValidationResult              = new WolframAlphaValidationResult();
        WA_ValidationResult.Success      = MainNode.Attributes["success"].Value.toBool();
        WA_ValidationResult.ErrorOccured = MainNode.Attributes["error"].Value.toBool();
        WA_ValidationResult.Timing       = MainNode.Attributes["timing"].Value.toDouble();
        WA_ValidationResult.ParseData    = MainNode.SelectNodes("parsedata")[0].InnerText;
        WA_ValidationResult.Assumptions  = new List <WolframAlphaAssumption>();


        foreach (XmlNode Node in MainNode.SelectNodes("assumptions"))
        {
            System.Threading.Thread.Sleep(1);

            WolframAlphaAssumption Assumption = new WolframAlphaAssumption();

            Assumption.Word = Node.SelectNodes("word")[0].InnerText;

            XmlNode SubNode = Node.SelectNodes("categories")[0];


            foreach (XmlNode ContentNode in SubNode.SelectNodes("category"))
            {
                System.Threading.Thread.Sleep(1);

                Assumption.Categories.Add(ContentNode.InnerText);
            }

            WA_ValidationResult.Assumptions.Add(Assumption);
        }

        return(WA_ValidationResult);
    }
	public WolframAlphaValidationResult ValidateQuery(XmlDocument Response)
	{
		System.Threading.Thread.Sleep(1);

		XmlNode MainNode = Response.SelectNodes("/validatequeryresult")[0];

		WA_ValidationResult = new WolframAlphaValidationResult();		
		WA_ValidationResult.Success = MainNode.Attributes["success"].Value.toBool();
		WA_ValidationResult.ErrorOccured = MainNode.Attributes["error"].Value.toBool();
		WA_ValidationResult.Timing = MainNode.Attributes["timing"].Value.toDouble();		
		WA_ValidationResult.ParseData = MainNode.SelectNodes("parsedata")[0].InnerText;
		WA_ValidationResult.Assumptions = new List<WolframAlphaAssumption>();


		foreach (XmlNode Node in MainNode.SelectNodes("assumptions")) {
			System.Threading.Thread.Sleep(1);

			WolframAlphaAssumption Assumption = new WolframAlphaAssumption();

			Assumption.Word = Node.SelectNodes("word")[0].InnerText;

			XmlNode SubNode = Node.SelectNodes("categories")[0];


			foreach (XmlNode ContentNode in SubNode.SelectNodes("category")) {
				System.Threading.Thread.Sleep(1);

				Assumption.Categories.Add(ContentNode.InnerText);

			}

			WA_ValidationResult.Assumptions.Add(Assumption);

		}

		return WA_ValidationResult;

	}
	public void AddAssumption(WolframAlphaAssumption Assumption, [System.Runtime.InteropServices.OptionalAttribute, System.Runtime.InteropServices.DefaultParameterValueAttribute(false)]  // ERROR: Optional parameters aren't supported in C#
bool CheckForDuplicates)
	{
		if (CheckForDuplicates == true && WA_Assumption.Contains("&substitution=" + HttpUtility.UrlEncode(Assumption.Word))) {
			return;
		}
		WA_Assumption += "&assumption=" + HttpUtility.UrlEncode(Assumption.Word);
	}