/// <summary>Visit a literal.</summary>
        /// <param name="literal">Literal to be visited.</param>
        protected override void VisitLiteral(Literal literal)
        {
            if (literal.Value == null)
            {
                VisitNullLiteral(literal.ValueType);
            }
            else
            {
                string valueString;
                switch (literal.ValueType.FullName)
                {
                    default:
                        if (literal.Value is EntityId)
                        {
                            valueString = String.Format("<{0}>", literal.Value);
                        }
                        else
                        {
                            valueString = String.Format("\"{0}\"", literal.Value);
                        }

                        break;
                    case "System.Byte":
                    case "System.SByte":
                    case "System.Int16":
                    case "System.UInt16":
                    case "System.Int32":
                    case "System.UInt32":
                    case "System.Int64":
                    case "System.UInt64":
                        valueString = literal.Value.ToString();
                        break;
                    case "System.Char":
                    case "System.String":
                        valueString = String.Format("\"{0}\"^^xsd:string", literal.Value);
                        break;
                    case "System.Single":
                    case "System.Double":
                    case "System.Decimal":
                        valueString = String.Format(CultureInfo.InvariantCulture, "{0}", literal.Value);
                        break;
                    case "System.DateTime":
                        valueString = String.Format(CultureInfo.InvariantCulture, "\"{0}\"^^xsd:dateTime", literal.Value);
                        break;
                    case "System.Uri":
                        valueString = String.Format("<{0}>", literal.Value);
                        break;
                }

                _commandText.Append(valueString);
            }
        }
 /// <summary>Visit a literal.</summary>
 /// <param name="literal">Literal to be visited.</param>
 protected abstract void VisitLiteral(Literal literal);