internal bool HasTypeConstraint(string typeName)
 {
     if (_operator == ExpressionType.And)
     {
         return(_left.HasTypeConstraint(typeName) || _right.HasTypeConstraint(typeName));
     }
     else if (this.Function != null && this.Function.FunctionName == ODataLiteral.IsOf)
     {
         return(this.Function.Arguments.Last().HasTypeConstraint(typeName));
     }
     else if (this.Value != null)
     {
         return(this.Value is Type && (this.Value as Type).Name == typeName);
     }
     else
     {
         return(false);
     }
 }