6.1 Request XML Schema

For ease of implementation, the full XML schema for request XML is provided in the following code:

 <?xml version="1.0" encoding="utf-8"?>
 <xs:schema id="clientquery" targetNamespace="http://schemas.microsoft.com/sharepoint/clientquery/2009" elementFormDefault="qualified" xmlns:mstns="http://schemas.microsoft.com/sharepoint/clientquery/2009" xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <xs:simpleType name="GuidType">
     <xs:restriction base="xs:string">
       <xs:pattern value="\{[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\}"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="ObjectPathIdType">
     <xs:restriction base="mstns:IdType"/>
   </xs:simpleType>
   <xs:simpleType name="IdType">
     <xs:restriction base="xs:integer"/>
   </xs:simpleType>
   <xs:simpleType name="ActionIdType">
     <xs:restriction base="mstns:IdType"/>
   </xs:simpleType>
   <xs:simpleType name="TypeIdGuidType">
     <xs:restriction base="mstns:GuidType"/>
   </xs:simpleType>
   <xs:simpleType name="TypeFunctionTypeType">
     <xs:restriction base="xs:string">
       <xs:enumeration value="Boolean"/>
       <xs:enumeration value="Byte"/>
       <xs:enumeration value="SByte"/>
       <xs:enumeration value="Char"/>
       <xs:enumeration value="Int16"/>
       <xs:enumeration value="UInt16"/>
       <xs:enumeration value="Int32"/>
       <xs:enumeration value="UInt32"/>
       <xs:enumeration value="Int64"/>
       <xs:enumeration value="UInt64"/>
       <xs:enumeration value="DateTime"/>
       <xs:enumeration value="Single"/>
       <xs:enumeration value="Double"/>
       <xs:enumeration value="Decimal"/>
       <xs:enumeration value="TimeSpan"/>
       <xs:enumeration value="String"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="PropertyNameType">
     <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="StaticPropertyNameType">
     <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="MethodNameType">
     <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="StaticMethodNameType">
     <xs:restriction base="xs:string"/>
   </xs:simpleType>
   <xs:simpleType name="MethodParameterTypeType">
     <xs:restriction base="xs:string">
       <xs:enumeration value="Null"/>
       <xs:enumeration value="Boolean"/>
       <xs:enumeration value="Char"/>
       <xs:enumeration value="Byte"/>
       <xs:enumeration value="SByte"/>
       <xs:enumeration value="Int16"/>
       <xs:enumeration value="UInt16"/>
       <xs:enumeration value="Int32"/>
       <xs:enumeration value="UInt32"/>
       <xs:enumeration value="Int64"/>
       <xs:enumeration value="UInt64"/>
       <xs:enumeration value="DateTime"/>
       <xs:enumeration value="Single"/>
       <xs:enumeration value="Double"/>
       <xs:enumeration value="Decimal"/>
       <xs:enumeration value="TimeSpan"/>
       <xs:enumeration value="Guid"/>
       <xs:enumeration value="String"/>
       <xs:enumeration value="Base64Binary"/>
       <xs:enumeration value="Dictionary"/>
       <xs:enumeration value="Array"/>
       <xs:enumeration value="Enum"/>
       <xs:enumeration value="Number"/>
       <xs:enumeration value="Unspecified"/>
       <xs:enumeration value="Binary"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:complexType name="MethodParameterType" mixed="true">
     <xs:sequence>
       <xs:element name="Property" minOccurs="0" maxOccurs="unbounded">
         <xs:complexType>
           <xs:complexContent>
             <xs:extension base="mstns:MethodParameterType">
               <xs:attribute name="Name" type="mstns:PropertyNameType" use="required"/>
             </xs:extension>
           </xs:complexContent>
         </xs:complexType>
       </xs:element>
       <xs:element name="Object" type="mstns:MethodParameterType" minOccurs="0" maxOccurs="unbounded"/>
       <xs:element name="Include" minOccurs="0" maxOccurs="1">
         <xs:complexType>
           <xs:attribute name="href" use="required" type="xs:string"/>
         </xs:complexType>
       </xs:element>
     </xs:sequence>
     <xs:attribute name="ObjectPathId" type="mstns:ObjectPathIdType" use="optional"/>
     <xs:attribute name="TypeId" type="mstns:TypeIdGuidType" use="optional"/>
     <xs:attribute name="Type" type="mstns:MethodParameterTypeType" use="optional"/>
   </xs:complexType>
   <xs:complexType name="MethodParameterNullType">
     <xs:attribute name="Type" type="xs:string" use="required" fixed="Null"/>
   </xs:complexType>
   <xs:complexType name="MethodParameterBooleanType">
     <xs:simpleContent>
       <xs:extension base="xs:boolean">
         <xs:attribute name="Type" type="xs:string" use="required" fixed="Boolean"/>
       </xs:extension>
     </xs:simpleContent>
   </xs:complexType>
   <xs:complexType name="MethodParameterCharType">
     <xs:simpleContent>
       <xs:extension base="xs:string">
         <xs:attribute name="Type" type="xs:string" use="required" fixed="Char"/>
       </xs:extension>
     </xs:simpleContent>
   </xs:complexType>
   <xs:complexType name="MethodParameterByteType">
     <xs:simpleContent>
       <xs:extension base="xs:unsignedByte">
         <xs:attribute name="Type" type="xs:string" use="required" fixed="Byte"/>
       </xs:extension>
     </xs:simpleContent>
   </xs:complexType>
   <xs:complexType name="MethodParameterSByteType">
     <xs:simpleContent>
       <xs:extension base="xs:byte">
         <xs:attribute name="Type" type="xs:string" use="required" fixed="SByte"/>
       </xs:extension>
     </xs:simpleContent>
   </xs:complexType>
   <xs:complexType name="MethodParameterInt16Type">
     <xs:simpleContent>
       <xs:extension base="xs:short">
         <xs:attribute name="Type" type="xs:string" use="required" fixed="Int16"/>
       </xs:extension>
     </xs:simpleContent>
   </xs:complexType>
   <xs:complexType name="MethodParameterUInt16Type">
     <xs:simpleContent>
       <xs:extension base="xs:unsignedShort">
         <xs:attribute name="Type" type="xs:string" use="required" fixed="UInt16"/>
       </xs:extension>
     </xs:simpleContent>
   </xs:complexType>
   <xs:complexType name="MethodParameterInt32Type">
     <xs:simpleContent>
       <xs:extension base="xs:int">
         <xs:attribute name="Type" type="xs:string" use="required" fixed="Int32"/>
       </xs:extension>
     </xs:simpleContent>
   </xs:complexType>
   <xs:complexType name="MethodParameterUInt32Type">
     <xs:simpleContent>
       <xs:extension base="xs:unsignedInt">
         <xs:attribute name="Type" type="xs:string" use="required" fixed="UInt32"/>
       </xs:extension>
     </xs:simpleContent>
   </xs:complexType>
   <xs:complexType name="MethodParameterInt64Type">
     <xs:simpleContent>
       <xs:extension base="xs:long">
         <xs:attribute name="Type" type="xs:string" use="required" fixed="Int64"/>
       </xs:extension>
     </xs:simpleContent>
   </xs:complexType>
   <xs:complexType name="MethodParameterUInt64Type">
     <xs:simpleContent>
       <xs:extension base="xs:unsignedLong">
         <xs:attribute name="Type" type="xs:string" use="required" fixed="UInt64"/>
       </xs:extension>
     </xs:simpleContent>
   </xs:complexType>
   <xs:complexType name="MethodParameterSingleType">
     <xs:simpleContent>
       <xs:extension base="xs:float">
         <xs:attribute name="Type" type="xs:string" use="required" fixed="Single"/>
       </xs:extension>
     </xs:simpleContent>
   </xs:complexType>
   <xs:complexType name="MethodParameterDoubleType">
     <xs:simpleContent>
       <xs:extension base="xs:double">
         <xs:attribute name="Type" type="xs:string" use="required" fixed="Double"/>
       </xs:extension>
     </xs:simpleContent>
   </xs:complexType>
   <xs:complexType name="MethodParameterDecimalType">
     <xs:simpleContent>
       <xs:extension base="xs:decimal">
         <xs:attribute name="Type" type="xs:string" use="required" fixed="Decimal"/>
       </xs:extension>
     </xs:simpleContent>
   </xs:complexType>
   <xs:complexType name="MethodParameterTimeSpanType">
     <xs:simpleContent>
       <xs:extension base="xs:duration">
         <xs:attribute name="Type" type="xs:string" use="required" fixed="TimeSpan"/>
       </xs:extension>
     </xs:simpleContent>
   </xs:complexType>
   <xs:complexType name="MethodParameterDateTimeType">
     <xs:simpleContent>
       <xs:extension base="xs:dateTime">
         <xs:attribute name="Type" type="xs:string" use="required" fixed="DateTime"/>
       </xs:extension>
     </xs:simpleContent>
   </xs:complexType>
   <xs:complexType name="MethodParameterGuidType">
     <xs:simpleContent>
       <xs:extension base="mstns:GuidType">
         <xs:attribute name="Type" type="xs:string" use="required" fixed="Guid"/>
       </xs:extension>
     </xs:simpleContent>
   </xs:complexType>
   <xs:complexType name="MethodParameterStringType">
     <xs:simpleContent>
       <xs:extension base="xs:string">
         <xs:attribute name="Type" type="xs:string" use="required" fixed="String"/>
       </xs:extension>
     </xs:simpleContent>
   </xs:complexType>
   <xs:complexType name="MethodParameterByteArrayType">
     <xs:simpleContent>
       <xs:extension base="xs:base64Binary">
         <xs:attribute name="Type" type="xs:string" use="required" fixed="Base64Binary"/>
       </xs:extension>
     </xs:simpleContent>
   </xs:complexType>
   <xs:complexType name="MethodParameterDictionaryType">
     <xs:sequence>
       <xs:element name="Property" minOccurs="0" maxOccurs="unbounded">
         <xs:complexType>
           <xs:complexContent>
             <xs:extension base="mstns:MethodParameterType">
               <xs:attribute name="Name" type="xs:string" use="required"/>
             </xs:extension>
           </xs:complexContent>
         </xs:complexType>
       </xs:element>
     </xs:sequence>
     <xs:attribute name="Type" type="xs:string" use="required" fixed="Dictionary"/>
   </xs:complexType>
   <xs:complexType name="MethodParameterNumberType">
     <xs:simpleContent>
       <xs:extension base="xs:decimal">
         <xs:attribute name="Type" type="xs:string" use="required" fixed="Number"/>
       </xs:extension>
     </xs:simpleContent>
   </xs:complexType>
   <xs:complexType name="MethodParameterObjectPathType">
     <xs:attribute name="ObjectPathId" type="mstns:ObjectPathIdType" use="required"/>
   </xs:complexType>
   <xs:complexType name="MethodParameterBinaryType">
     <xs:sequence>
       <xs:element name="Include" minOccurs="1" maxOccurs="1">
         <xs:complexType>
           <xs:attribute name="href" use="required" type="xs:string"/>
         </xs:complexType>
       </xs:element>
     </xs:sequence>
   </xs:complexType>
   <xs:complexType name="MethodParameterValueObjectType">
     <xs:sequence>
       <xs:element name="Property" minOccurs="0" maxOccurs="unbounded">
         <xs:complexType>
           <xs:complexContent>
             <xs:extension base="mstns:MethodParameterType">
               <xs:attribute name="Name" type="xs:string" use="required"/>
             </xs:extension>
           </xs:complexContent>
         </xs:complexType>
       </xs:element>
     </xs:sequence>
     <xs:attribute name="TypeId" type="mstns:TypeIdGuidType" use="required"/>
   </xs:complexType>
   <xs:complexType name="MethodParameterArrayType">
     <xs:sequence>
       <xs:element name="Object" minOccurs="0" maxOccurs="unbounded" type="mstns:MethodParameterType"/>
     </xs:sequence>
     <xs:attribute name="Type" type="xs:string" use="required" fixed="Array"/>
   </xs:complexType>
   <xs:complexType name="MethodParameterEnumType">
     <xs:simpleContent>
       <xs:extension base="xs:integer">
         <xs:attribute name="Type" type="xs:string" use="required" fixed="Enum"/>
       </xs:extension>
     </xs:simpleContent>
   </xs:complexType>
   <xs:complexType name="MethodParameterUnspecifiedType">
     <xs:simpleContent>
       <xs:extension base="xs:string">
         <xs:attribute name="Type" type="xs:string" use="required" fixed="Unspecified"/>
       </xs:extension>
     </xs:simpleContent>
   </xs:complexType>
   <xs:simpleType name="VersionStringType">
     <xs:restriction base="xs:string">
       <xs:pattern value="[0-9]{1,8}\.[0-9]{1,8}\.[0-9]{1,8}\.[0-9]{1,8}"/>
     </xs:restriction>
   </xs:simpleType>
   <xs:complexType name="RequestType">
     <xs:sequence>
       <xs:element name="Actions" type="mstns:ActionsType"/>
       <xs:element name="ObjectPaths" type="mstns:ObjectPathsType"/>
     </xs:sequence>
     <xs:attribute name="AddExpandoFieldTypeSuffix" type="xs:boolean" use="optional"/>
     <xs:attribute name="SchemaVersion" type="mstns:VersionStringType" use="required"/>
     <xs:attribute name="LibraryVersion" type="mstns:VersionStringType" use="required"/>
     <xs:attribute name="ApplicationName" use="optional">
       <xs:simpleType>
         <xs:restriction base="xs:string">
           <xs:maxLength value="128"/>
         </xs:restriction>
       </xs:simpleType>
     </xs:attribute>
   </xs:complexType>
   <xs:complexType name="ObjectPathsType">
     <xs:sequence>
       <xs:choice minOccurs="0" maxOccurs="unbounded">
         <xs:element name="Property" type="mstns:ObjectPathPropertyType"/>
         <xs:element name="StaticProperty" type="mstns:ObjectPathStaticPropertyType"/>
         <xs:element name="Method" type="mstns:ObjectPathMethodType"/>
         <xs:element name="StaticMethod" type="mstns:ObjectPathStaticMethodType"/>
         <xs:element name="Constructor" type="mstns:ObjectPathConstructorType"/>
         <xs:element name="Identity" type="mstns:ObjectPathObjectIdentityNameType"/>
       </xs:choice>
     </xs:sequence>
   </xs:complexType>
   <xs:complexType name="ObjectPathPropertyType">
     <xs:attribute name="Id" type="mstns:ObjectPathIdType" use="required"/>
     <xs:attribute name="ParentId" type="mstns:ObjectPathIdType" use="required"/>
     <xs:attribute name="Name" type="mstns:PropertyNameType" use="required"/>
   </xs:complexType>
   <xs:complexType name="ObjectPathStaticPropertyType">
     <xs:attribute name="Id" type="mstns:ObjectPathIdType" use="required"/>
     <xs:attribute name="TypeId" type="mstns:TypeIdGuidType" use="required"/>
     <xs:attribute name="Name" type="mstns:StaticPropertyNameType" use="required"/>
   </xs:complexType>
   <xs:complexType name="ObjectPathMethodType">
     <xs:sequence>
       <xs:element name="Parameters" minOccurs="0">
         <xs:complexType>
           <xs:sequence>
             <xs:element name="Parameter" type="mstns:MethodParameterType" minOccurs="0" maxOccurs="unbounded"/>
           </xs:sequence>
         </xs:complexType>
       </xs:element>
     </xs:sequence>
     <xs:attribute name="Id" type="mstns:ObjectPathIdType" use="required"/>
     <xs:attribute name="ParentId" type="mstns:ObjectPathIdType" use="required"/>
     <xs:attribute name="Name" type="mstns:MethodNameType" use="required"/>
   </xs:complexType>
   <xs:complexType name="ObjectPathStaticMethodType">
     <xs:sequence>
       <xs:element name="Parameters" minOccurs="0">
         <xs:complexType>
           <xs:sequence>
             <xs:element name="Parameter" type="mstns:MethodParameterType" minOccurs="0" maxOccurs="unbounded"/>
           </xs:sequence>
         </xs:complexType>
       </xs:element>
     </xs:sequence>
     <xs:attribute name="Id" type="mstns:ObjectPathIdType" use="required"/>
     <xs:attribute name="TypeId" type="mstns:TypeIdGuidType" use="required"/>
     <xs:attribute name="Name" type="mstns:StaticMethodNameType" use="required"/>
   </xs:complexType>
   <xs:complexType name="ObjectPathConstructorType">
     <xs:sequence>
       <xs:element name="Parameters" minOccurs="0">
         <xs:complexType>
           <xs:sequence>
             <xs:element name="Parameter" type="mstns:MethodParameterType" minOccurs="0" maxOccurs="unbounded"/>
           </xs:sequence>
         </xs:complexType>
       </xs:element>
     </xs:sequence>
     <xs:attribute name="Id" type="mstns:ObjectPathIdType" use="required"/>
     <xs:attribute name="TypeId" type="mstns:TypeIdGuidType" use="required"/>
   </xs:complexType>
   <xs:complexType name="ObjectPathObjectIdentityNameType">
     <xs:attribute name="Id" type="mstns:ObjectPathIdType" use="required"/>
     <xs:attribute name="Name" type="xs:string" use="required"/>
   </xs:complexType>
   <xs:complexType name="ActionsType">
     <xs:sequence>
       <xs:choice minOccurs="0" maxOccurs="unbounded">
         <xs:element name="SetProperty" type="mstns:ActionSetPropertyType"/>
         <xs:element name="SetStaticProperty" type="mstns:ActionSetStaticPropertyType"/>
         <xs:element name="Method" type="mstns:ActionInvokeMethodType"/>
         <xs:element name="StaticMethod" type="mstns:ActionInvokeStaticMethodType"/>
         <xs:element name="ObjectPath" type="mstns:ActionInstantiateObjectPathType"/>
         <xs:element name="ObjectIdentityQuery" type="mstns:ActionObjectIdentityQueryType"/>
         <xs:element name="Query" type="mstns:ActionQueryType"/>
         <xs:element name="ExceptionHandlingScope" type="mstns:ExceptionHandlingScopeType"/>
         <xs:element name="ExceptionHandlingScopeSimple" type="mstns:ExceptionHandlingScopeSimpleType"/>
         <xs:element name="ConditionalScope" type="mstns:ConditionalScopeType"/>
       </xs:choice>
     </xs:sequence>
   </xs:complexType>
   <xs:group name="ActionGroup">
     <xs:choice>
       <xs:element name="SetProperty" type="mstns:ActionSetPropertyType"/>
       <xs:element name="SetStaticProperty" type="mstns:ActionSetStaticPropertyType"/>
       <xs:element name="Method" type="mstns:ActionInvokeMethodType"/>
       <xs:element name="StaticMethod" type="mstns:ActionInvokeStaticMethodType"/>
       <xs:element name="ObjectPath" type="mstns:ActionInstantiateObjectPathType"/>
       <xs:element name="ObjectIdentityQuery" type="mstns:ActionObjectIdentityQueryType"/>
       <xs:element name="Query" type="mstns:ActionQueryType"/>
       <xs:element name="ExceptionHandlingScope" type="mstns:ExceptionHandlingScopeType"/>
       <xs:element name="ExceptionHandlingScopeSimple" type="mstns:ExceptionHandlingScopeSimpleType"/>
       <xs:element name="ConditionalScope" type="mstns:ConditionalScopeType"/>
     </xs:choice>
   </xs:group>
   <xs:complexType name="ActionSetPropertyType">
     <xs:sequence>
       <xs:element name="Parameter" type="mstns:MethodParameterType"/>
     </xs:sequence>
     <xs:attribute name="Id" type="mstns:ActionIdType" use="required"/>
     <xs:attribute name="ObjectPathId" type="mstns:ObjectPathIdType" use="required"/>
     <xs:attribute name="Name" type="mstns:PropertyNameType" use="required"/>
   </xs:complexType>
   <xs:complexType name="ActionSetStaticPropertyType">
     <xs:sequence>
       <xs:element name="Parameter" type="mstns:MethodParameterType"/>
     </xs:sequence>
     <xs:attribute name="Id" type="mstns:ActionIdType" use="required"/>
     <xs:attribute name="TypeId" type="mstns:TypeIdGuidType" use="required"/>
     <xs:attribute name="Name" type="mstns:StaticPropertyNameType" use="required"/>
   </xs:complexType>
   <xs:complexType name="ActionInvokeMethodType">
     <xs:sequence>
       <xs:element name="Parameters" minOccurs="0">
         <xs:complexType>
           <xs:sequence>
             <xs:element name="Parameter" type="mstns:MethodParameterType" minOccurs="0" maxOccurs="unbounded"/>
           </xs:sequence>
         </xs:complexType>
       </xs:element>
     </xs:sequence>
     <xs:attribute name="Id" type="mstns:ActionIdType" use="required"/>
     <xs:attribute name="ObjectPathId" type="mstns:ObjectPathIdType" use="required"/>
     <xs:attribute name="Name" type="mstns:MethodNameType" use="required"/>
     <xs:attribute name="Version" type="xs:string" use="optional"/>
   </xs:complexType>
   <xs:complexType name="ActionInvokeStaticMethodType">
     <xs:sequence>
       <xs:element name="Parameters" minOccurs="0">
         <xs:complexType>
           <xs:sequence>
             <xs:element name="Parameter" type="mstns:MethodParameterType" minOccurs="0" maxOccurs="unbounded"/>
           </xs:sequence>
         </xs:complexType>
       </xs:element>
     </xs:sequence>
     <xs:attribute name="Id" type="mstns:ActionIdType" use="required"/>
     <xs:attribute name="TypeId" type="mstns:TypeIdGuidType" use="required"/>
     <xs:attribute name="Name" type="mstns:StaticMethodNameType" use="required"/>
   </xs:complexType>
   <xs:complexType name="ActionInstantiateObjectPathType">
     <xs:attribute name="Id" type="mstns:ActionIdType" use="required"/>
     <xs:attribute name="ObjectPathId" type="mstns:ObjectPathIdType" use="required"/>
   </xs:complexType>
   <xs:complexType name="ActionObjectIdentityQueryType">
     <xs:attribute name="Id" type="mstns:ActionIdType" use="required"/>
     <xs:attribute name="ObjectPathId" type="mstns:ObjectPathIdType" use="required"/>
   </xs:complexType>
   <xs:complexType name="ActionQueryType">
     <xs:sequence>
       <xs:element name="Query" type="mstns:QueryType"/>
       <xs:element name="ChildItemQuery" type="mstns:ChildItemQueryType" minOccurs="0"/>
     </xs:sequence>
     <xs:attribute name="Id" type="mstns:ActionIdType" use="required"/>
     <xs:attribute name="ObjectPathId" type="mstns:ObjectPathIdType" use="required"/>
   </xs:complexType>
   <xs:complexType name="QueryType">
     <xs:sequence>
       <xs:element name="Properties">
         <xs:complexType>
           <xs:sequence>
             <xs:element name="Property" type="mstns:QueryPropertyType" minOccurs="0" maxOccurs="unbounded"/>
           </xs:sequence>
         </xs:complexType>
       </xs:element>
     </xs:sequence>
     <xs:attribute name="SelectAllProperties" type="xs:boolean" use="optional"/>
   </xs:complexType>
   <xs:complexType name="ChildItemQueryType">
     <xs:complexContent>
       <xs:extension base="mstns:QueryType">
         <xs:sequence>
           <xs:element name="QueryableExpression" type="mstns:ExpressionQueryableExpressionType" minOccurs="0"/>
         </xs:sequence>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="QueryPropertyType">
     <xs:sequence>
       <xs:element name="Query" type="mstns:QueryType" minOccurs="0"/>
       <xs:element name="ChildItemQuery" type="mstns:ChildItemQueryType" minOccurs="0"/>
     </xs:sequence>
     <xs:attribute name="Name" type="mstns:PropertyNameType" use="required"/>
     <xs:attribute name="ScalarProperty" type="xs:boolean" use="optional"/>
     <xs:attribute name="SelectAll" type="xs:boolean" use="optional"/>
   </xs:complexType>
   <xs:complexType name="ExceptionHandlingScopeSimpleType">
     <xs:sequence>
       <xs:choice minOccurs="0" maxOccurs="unbounded">
         <xs:element name="SetProperty" type="mstns:ActionSetPropertyType"/>
         <xs:element name="SetStaticProperty" type="mstns:ActionSetStaticPropertyType"/>
         <xs:element name="Method" type="mstns:ActionInvokeMethodType"/>
         <xs:element name="StaticMethod" type="mstns:ActionInvokeStaticMethodType"/>
         <xs:element name="ObjectPath" type="mstns:ActionInstantiateObjectPathType"/>
         <xs:element name="ObjectIdentityQuery" type="mstns:ActionObjectIdentityQueryType"/>
         <xs:element name="Query" type="mstns:ActionQueryType"/>
         <xs:element name="ExceptionHandlingScope" type="mstns:ExceptionHandlingScopeType"/>
         <xs:element name="ExceptionHandlingScopeSimple" type="mstns:ExceptionHandlingScopeSimpleType"/>
         <xs:element name="ConditionalScope" type="mstns:ConditionalScopeType"/>
       </xs:choice>
     </xs:sequence>
     <xs:attribute name="Id" type="mstns:ActionIdType" use="required"/>
   </xs:complexType>
   <xs:complexType name="ExceptionHandlingScopeType">
     <xs:sequence>
       <xs:element name="TryScope">
         <xs:complexType>
           <xs:sequence>
             <xs:choice minOccurs="0" maxOccurs="unbounded">
               <xs:element name="SetProperty" type="mstns:ActionSetPropertyType"/>
               <xs:element name="SetStaticProperty" type="mstns:ActionSetStaticPropertyType"/>
               <xs:element name="Method" type="mstns:ActionInvokeMethodType"/>
               <xs:element name="StaticMethod" type="mstns:ActionInvokeStaticMethodType"/>
               <xs:element name="ObjectPath" type="mstns:ActionInstantiateObjectPathType"/>
               <xs:element name="ObjectIdentityQuery" type="mstns:ActionObjectIdentityQueryType"/>
               <xs:element name="Query" type="mstns:ActionQueryType"/>
               <xs:element name="ExceptionHandlingScope" type="mstns:ExceptionHandlingScopeType"/>
               <xs:element name="ExceptionHandlingScopeSimple" type="mstns:ExceptionHandlingScopeSimpleType"/>
               <xs:element name="ConditionalScope" type="mstns:ConditionalScopeType"/>
             </xs:choice>
           </xs:sequence>
           <xs:attribute name="Id" type="mstns:IdType" use="required"/>
         </xs:complexType>
       </xs:element>
       <xs:element name="CatchScope" minOccurs="0">
         <xs:complexType>
           <xs:sequence>
             <xs:choice minOccurs="0" maxOccurs="unbounded">
               <xs:element name="SetProperty" type="mstns:ActionSetPropertyType"/>
               <xs:element name="SetStaticProperty" type="mstns:ActionSetStaticPropertyType"/>
               <xs:element name="Method" type="mstns:ActionInvokeMethodType"/>
               <xs:element name="StaticMethod" type="mstns:ActionInvokeStaticMethodType"/>
               <xs:element name="ObjectPath" type="mstns:ActionInstantiateObjectPathType"/>
               <xs:element name="ObjectIdentityQuery" type="mstns:ActionObjectIdentityQueryType"/>
               <xs:element name="Query" type="mstns:ActionQueryType"/>
               <xs:element name="ExceptionHandlingScope" type="mstns:ExceptionHandlingScopeType"/>
               <xs:element name="ExceptionHandlingScopeSimple" type="mstns:ExceptionHandlingScopeSimpleType"/>
               <xs:element name="ConditionalScope" type="mstns:ConditionalScopeType"/>
             </xs:choice>
           </xs:sequence>
           <xs:attribute name="Id" type="mstns:IdType" use="required"/>
         </xs:complexType>
       </xs:element>
       <xs:element name="FinallyScope" minOccurs="0">
         <xs:complexType>
           <xs:sequence>
             <xs:choice minOccurs="0" maxOccurs="unbounded">
               <xs:element name="SetProperty" type="mstns:ActionSetPropertyType"/>
               <xs:element name="SetStaticProperty" type="mstns:ActionSetStaticPropertyType"/>
               <xs:element name="Method" type="mstns:ActionInvokeMethodType"/>
               <xs:element name="StaticMethod" type="mstns:ActionInvokeStaticMethodType"/>
               <xs:element name="ObjectPath" type="mstns:ActionInstantiateObjectPathType"/>
               <xs:element name="ObjectIdentityQuery" type="mstns:ActionObjectIdentityQueryType"/>
               <xs:element name="Query" type="mstns:ActionQueryType"/>
               <xs:element name="ExceptionHandlingScope" type="mstns:ExceptionHandlingScopeType"/>
               <xs:element name="ExceptionHandlingScopeSimple" type="mstns:ExceptionHandlingScopeSimpleType"/>
               <xs:element name="ConditionalScope" type="mstns:ConditionalScopeType"/>
             </xs:choice>
           </xs:sequence>
           <xs:attribute name="Id" type="mstns:IdType" use="required"/>
         </xs:complexType>
       </xs:element>
     </xs:sequence>
     <xs:attribute name="Id" type="mstns:ActionIdType" use="required"/>
   </xs:complexType>
   <xs:complexType name="ConditionalScopeType">
     <xs:sequence>
       <xs:element name="Test">
         <xs:complexType>
           <xs:all>
             <xs:element name="Body" type="mstns:ExpressionType"/>
           </xs:all>
         </xs:complexType>
       </xs:element>
       <xs:element name="IfTrueScope" minOccurs="0">
         <xs:complexType>
           <xs:sequence>
             <xs:choice minOccurs="0" maxOccurs="unbounded">
               <xs:element name="SetProperty" type="mstns:ActionSetPropertyType"/>
               <xs:element name="SetStaticProperty" type="mstns:ActionSetStaticPropertyType"/>
               <xs:element name="Method" type="mstns:ActionInvokeMethodType"/>
               <xs:element name="StaticMethod" type="mstns:ActionInvokeStaticMethodType"/>
               <xs:element name="ObjectPath" type="mstns:ActionInstantiateObjectPathType"/>
               <xs:element name="ObjectIdentityQuery" type="mstns:ActionObjectIdentityQueryType"/>
               <xs:element name="Query" type="mstns:ActionQueryType"/>
               <xs:element name="ExceptionHandlingScope" type="mstns:ExceptionHandlingScopeType"/>
               <xs:element name="ExceptionHandlingScopeSimple" type="mstns:ExceptionHandlingScopeSimpleType"/>
               <xs:element name="ConditionalScope" type="mstns:ConditionalScopeType"/>
             </xs:choice>
           </xs:sequence>
           <xs:attribute name="Id" type="mstns:IdType" use="required"/>
         </xs:complexType>
       </xs:element>
       <xs:element name="IfFalseScope" minOccurs="0">
         <xs:complexType>
           <xs:sequence>
             <xs:choice minOccurs="0" maxOccurs="unbounded">
               <xs:element name="SetProperty" type="mstns:ActionSetPropertyType"/>
               <xs:element name="SetStaticProperty" type="mstns:ActionSetStaticPropertyType"/>
               <xs:element name="Method" type="mstns:ActionInvokeMethodType"/>
               <xs:element name="StaticMethod" type="mstns:ActionInvokeStaticMethodType"/>
               <xs:element name="ObjectPath" type="mstns:ActionInstantiateObjectPathType"/>
               <xs:element name="ObjectIdentityQuery" type="mstns:ActionObjectIdentityQueryType"/>
               <xs:element name="Query" type="mstns:ActionQueryType"/>
               <xs:element name="ExceptionHandlingScope" type="mstns:ExceptionHandlingScopeType"/>
               <xs:element name="ExceptionHandlingScopeSimple" type="mstns:ExceptionHandlingScopeSimpleType"/>
               <xs:element name="ConditionalScope" type="mstns:ConditionalScopeType"/>
             </xs:choice>
           </xs:sequence>
           <xs:attribute name="Id" type="mstns:IdType" use="required"/>
         </xs:complexType>
       </xs:element>
     </xs:sequence>
     <xs:attribute name="Id" type="mstns:ActionIdType" use="required"/>
   </xs:complexType>
   <xs:complexType name="ExpressionType">
     <xs:sequence>
       <xs:choice>
         <xs:element name="GT" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="LT" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="EQ" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="NE" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="GE" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="LE" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="AND" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="OR" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="NOT" type="mstns:ExpressionType"/>
         <xs:element name="ExpressionMethod" type="mstns:ExpressionMethodExpressionType"/>
         <xs:element name="ExpressionStaticMethod" type="mstns:ExpressionStaticMethodExpressionType"/>
         <xs:element name="ExpressionProperty" type="mstns:ExpressionPropertyExpressionType"/>
         <xs:element name="ExpressionStaticProperty" type="mstns:ExpressionStaticPropertyExpressionType"/>
         <xs:element name="ExpressionParameter" type="mstns:ExpressionParameterExpressionType"/>
         <xs:element name="ExpressionConvert" type="mstns:ExpressionConvertExpressionType"/>
         <xs:element name="ExpressionTypeIs" type="mstns:ExpressionTypeIsExpressionType"/>
         <xs:element name="ExpressionConstant" type="mstns:MethodParameterType"/>
       </xs:choice>
     </xs:sequence>
   </xs:complexType>
   <xs:group name="ExpressionGroup">
     <xs:choice>
       <xs:element name="GT" type="mstns:ExpressionLeftRightOperandExpressionType"/>
       <xs:element name="LT" type="mstns:ExpressionLeftRightOperandExpressionType"/>
       <xs:element name="EQ" type="mstns:ExpressionLeftRightOperandExpressionType"/>
       <xs:element name="NE" type="mstns:ExpressionLeftRightOperandExpressionType"/>
       <xs:element name="GE" type="mstns:ExpressionLeftRightOperandExpressionType"/>
       <xs:element name="LE" type="mstns:ExpressionLeftRightOperandExpressionType"/>
       <xs:element name="AND" type="mstns:ExpressionLeftRightOperandExpressionType"/>
       <xs:element name="OR" type="mstns:ExpressionLeftRightOperandExpressionType"/>
       <xs:element name="NOT" type="mstns:ExpressionType"/>
       <xs:element name="ExpressionMethod" type="mstns:ExpressionMethodExpressionType"/>
       <xs:element name="ExpressionStaticMethod" type="mstns:ExpressionStaticMethodExpressionType"/>
       <xs:element name="ExpressionProperty" type="mstns:ExpressionPropertyExpressionType"/>
       <xs:element name="ExpressionStaticProperty" type="mstns:ExpressionStaticPropertyExpressionType"/>
       <xs:element name="ExpressionParameter" type="mstns:ExpressionParameterExpressionType"/>
       <xs:element name="ExpressionConvert" type="mstns:ExpressionConvertExpressionType"/>
       <xs:element name="ExpressionTypeIs" type="mstns:ExpressionTypeIsExpressionType"/>
       <xs:element name="ExpressionConstant" type="mstns:MethodParameterType"/>
     </xs:choice>
   </xs:group>
   <xs:complexType name="ExpressionLeftRightOperandExpressionType">
     <xs:sequence>
       <xs:choice>
         <xs:element name="GT" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="LT" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="EQ" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="NE" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="GE" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="LE" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="AND" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="OR" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="NOT" type="mstns:ExpressionType"/>
         <xs:element name="ExpressionMethod" type="mstns:ExpressionMethodExpressionType"/>
         <xs:element name="ExpressionStaticMethod" type="mstns:ExpressionStaticMethodExpressionType"/>
         <xs:element name="ExpressionProperty" type="mstns:ExpressionPropertyExpressionType"/>
         <xs:element name="ExpressionStaticProperty" type="mstns:ExpressionStaticPropertyExpressionType"/>
         <xs:element name="ExpressionParameter" type="mstns:ExpressionParameterExpressionType"/>
         <xs:element name="ExpressionConvert" type="mstns:ExpressionConvertExpressionType"/>
         <xs:element name="ExpressionTypeIs" type="mstns:ExpressionTypeIsExpressionType"/>
         <xs:element name="ExpressionConstant" type="mstns:MethodParameterType"/>
       </xs:choice>
       <xs:choice>
         <xs:element name="GT" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="LT" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="EQ" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="NE" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="GE" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="LE" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="AND" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="OR" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="NOT" type="mstns:ExpressionType"/>
         <xs:element name="ExpressionMethod" type="mstns:ExpressionMethodExpressionType"/>
         <xs:element name="ExpressionStaticMethod" type="mstns:ExpressionStaticMethodExpressionType"/>
         <xs:element name="ExpressionProperty" type="mstns:ExpressionPropertyExpressionType"/>
         <xs:element name="ExpressionStaticProperty" type="mstns:ExpressionStaticPropertyExpressionType"/>
         <xs:element name="ExpressionParameter" type="mstns:ExpressionParameterExpressionType"/>
         <xs:element name="ExpressionConvert" type="mstns:ExpressionConvertExpressionType"/>
         <xs:element name="ExpressionTypeIs" type="mstns:ExpressionTypeIsExpressionType"/>
         <xs:element name="ExpressionConstant" type="mstns:MethodParameterType"/>
       </xs:choice>
     </xs:sequence>
   </xs:complexType>
   <xs:complexType name="ExpressionPropertyExpressionType">
     <xs:sequence>
       <xs:choice>
         <xs:element name="GT" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="LT" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="EQ" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="NE" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="GE" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="LE" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="AND" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="OR" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="NOT" type="mstns:ExpressionType"/>
         <xs:element name="ExpressionMethod" type="mstns:ExpressionMethodExpressionType"/>
         <xs:element name="ExpressionStaticMethod" type="mstns:ExpressionStaticMethodExpressionType"/>
         <xs:element name="ExpressionProperty" type="mstns:ExpressionPropertyExpressionType"/>
         <xs:element name="ExpressionStaticProperty" type="mstns:ExpressionStaticPropertyExpressionType"/>
         <xs:element name="ExpressionParameter" type="mstns:ExpressionParameterExpressionType"/>
         <xs:element name="ExpressionConvert" type="mstns:ExpressionConvertExpressionType"/>
         <xs:element name="ExpressionConstant" type="mstns:MethodParameterType"/>
       </xs:choice>
     </xs:sequence>
     <xs:attribute name="Name" type="mstns:PropertyNameType" use="required"/>
   </xs:complexType>
   <xs:complexType name="ExpressionStaticPropertyExpressionType">
     <xs:sequence/>
     <xs:attribute name="Name" type="mstns:StaticPropertyNameType" use="required"/>
     <xs:attribute name="TypeId" type="mstns:TypeIdGuidType" use="required"/>
   </xs:complexType>
   <xs:complexType name="ExpressionMethodExpressionType">
     <xs:sequence>
       <xs:choice>
         <xs:element name="GT" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="LT" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="EQ" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="NE" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="GE" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="LE" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="AND" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="OR" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="NOT" type="mstns:ExpressionType"/>
         <xs:element name="ExpressionMethod" type="mstns:ExpressionMethodExpressionType"/>
         <xs:element name="ExpressionStaticMethod" type="mstns:ExpressionStaticMethodExpressionType"/>
         <xs:element name="ExpressionProperty" type="mstns:ExpressionPropertyExpressionType"/>
         <xs:element name="ExpressionStaticProperty" type="mstns:ExpressionStaticPropertyExpressionType"/>
         <xs:element name="ExpressionParameter" type="mstns:ExpressionParameterExpressionType"/>
         <xs:element name="ExpressionConvert" type="mstns:ExpressionConvertExpressionType"/>
         <xs:element name="ExpressionConstant" type="mstns:MethodParameterType"/>
       </xs:choice>
       <xs:element name="Parameters" minOccurs="0">
         <xs:complexType>
           <xs:sequence>
             <xs:choice minOccurs="0" maxOccurs="unbounded">
               <xs:element name="GT" type="mstns:ExpressionLeftRightOperandExpressionType"/>
               <xs:element name="LT" type="mstns:ExpressionLeftRightOperandExpressionType"/>
               <xs:element name="EQ" type="mstns:ExpressionLeftRightOperandExpressionType"/>
               <xs:element name="NE" type="mstns:ExpressionLeftRightOperandExpressionType"/>
               <xs:element name="GE" type="mstns:ExpressionLeftRightOperandExpressionType"/>
               <xs:element name="LE" type="mstns:ExpressionLeftRightOperandExpressionType"/>
               <xs:element name="AND" type="mstns:ExpressionLeftRightOperandExpressionType"/>
               <xs:element name="OR" type="mstns:ExpressionLeftRightOperandExpressionType"/>
               <xs:element name="NOT" type="mstns:ExpressionType"/>
               <xs:element name="ExpressionMethod" type="mstns:ExpressionMethodExpressionType"/>
               <xs:element name="ExpressionStaticMethod" type="mstns:ExpressionStaticMethodExpressionType"/>
               <xs:element name="ExpressionProperty" type="mstns:ExpressionPropertyExpressionType"/>
               <xs:element name="ExpressionStaticProperty" type="mstns:ExpressionStaticPropertyExpressionType"/>
               <xs:element name="ExpressionParameter" type="mstns:ExpressionParameterExpressionType"/>
               <xs:element name="ExpressionConvert" type="mstns:ExpressionConvertExpressionType"/>
               <xs:element name="ExpressionTypeIs" type="mstns:ExpressionTypeIsExpressionType"/>
               <xs:element name="ExpressionConstant" type="mstns:MethodParameterType"/>
             </xs:choice>
           </xs:sequence>
         </xs:complexType>
       </xs:element>
     </xs:sequence>
     <xs:attribute name="Name" type="mstns:MethodNameType" use="required"/>
   </xs:complexType>
   <xs:complexType name="ExpressionStaticMethodExpressionType">
     <xs:sequence>
       <xs:element name="Parameters" minOccurs="0">
         <xs:complexType>
           <xs:sequence>
             <xs:choice minOccurs="0" maxOccurs="unbounded">
               <xs:element name="GT" type="mstns:ExpressionLeftRightOperandExpressionType"/>
               <xs:element name="LT" type="mstns:ExpressionLeftRightOperandExpressionType"/>
               <xs:element name="EQ" type="mstns:ExpressionLeftRightOperandExpressionType"/>
               <xs:element name="NE" type="mstns:ExpressionLeftRightOperandExpressionType"/>
               <xs:element name="GE" type="mstns:ExpressionLeftRightOperandExpressionType"/>
               <xs:element name="LE" type="mstns:ExpressionLeftRightOperandExpressionType"/>
               <xs:element name="AND" type="mstns:ExpressionLeftRightOperandExpressionType"/>
               <xs:element name="OR" type="mstns:ExpressionLeftRightOperandExpressionType"/>
               <xs:element name="NOT" type="mstns:ExpressionType"/>
               <xs:element name="ExpressionMethod" type="mstns:ExpressionMethodExpressionType"/>
               <xs:element name="ExpressionStaticMethod" type="mstns:ExpressionStaticMethodExpressionType"/>
               <xs:element name="ExpressionProperty" type="mstns:ExpressionPropertyExpressionType"/>
               <xs:element name="ExpressionStaticProperty" type="mstns:ExpressionStaticPropertyExpressionType"/>
               <xs:element name="ExpressionParameter" type="mstns:ExpressionParameterExpressionType"/>
               <xs:element name="ExpressionConvert" type="mstns:ExpressionConvertExpressionType"/>
               <xs:element name="ExpressionTypeIs" type="mstns:ExpressionTypeIsExpressionType"/>
               <xs:element name="ExpressionConstant" type="mstns:MethodParameterType"/>
             </xs:choice>
           </xs:sequence>
         </xs:complexType>
       </xs:element>
     </xs:sequence>
     <xs:attribute name="Name" type="mstns:StaticMethodNameType" use="required"/>
     <xs:attribute name="TypeId" type="mstns:TypeIdGuidType" use="required"/>
   </xs:complexType>
   <xs:complexType name="ExpressionConvertExpressionType">
     <xs:sequence>
       <xs:choice>
         <xs:element name="GT" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="LT" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="EQ" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="NE" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="GE" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="LE" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="AND" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="OR" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="NOT" type="mstns:ExpressionType"/>
         <xs:element name="ExpressionMethod" type="mstns:ExpressionMethodExpressionType"/>
         <xs:element name="ExpressionStaticMethod" type="mstns:ExpressionStaticMethodExpressionType"/>
         <xs:element name="ExpressionProperty" type="mstns:ExpressionPropertyExpressionType"/>
         <xs:element name="ExpressionStaticProperty" type="mstns:ExpressionStaticPropertyExpressionType"/>
         <xs:element name="ExpressionParameter" type="mstns:ExpressionParameterExpressionType"/>
         <xs:element name="ExpressionConvert" type="mstns:ExpressionConvertExpressionType"/>
         <xs:element name="ExpressionTypeIs" type="mstns:ExpressionTypeIsExpressionType"/>
         <xs:element name="ExpressionConstant" type="mstns:MethodParameterType"/>
       </xs:choice>
     </xs:sequence>
     <xs:attribute name="Type" use="optional">
       <xs:simpleType>
         <xs:restriction base="xs:string">
           <xs:enumeration value="Boolean"/>
           <xs:enumeration value="Byte"/>
           <xs:enumeration value="SByte"/>
           <xs:enumeration value="Char"/>
           <xs:enumeration value="Int16"/>
           <xs:enumeration value="UInt16"/>
           <xs:enumeration value="Int32"/>
           <xs:enumeration value="UInt32"/>
           <xs:enumeration value="Int64"/>
           <xs:enumeration value="UInt64"/>
           <xs:enumeration value="DateTime"/>
           <xs:enumeration value="Single"/>
           <xs:enumeration value="Double"/>
           <xs:enumeration value="Decimal"/>
           <xs:enumeration value="TimeSpan"/>
           <xs:enumeration value="String"/>
         </xs:restriction>
       </xs:simpleType>
     </xs:attribute>
     <xs:attribute name="TypeId" use="optional" type="mstns:TypeIdGuidType"/>
   </xs:complexType>
   <xs:complexType name="ExpressionTypeIsExpressionType">
     <xs:sequence>
       <xs:choice>
         <xs:element name="GT" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="LT" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="EQ" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="NE" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="GE" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="LE" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="AND" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="OR" type="mstns:ExpressionLeftRightOperandExpressionType"/>
         <xs:element name="NOT" type="mstns:ExpressionType"/>
         <xs:element name="ExpressionMethod" type="mstns:ExpressionMethodExpressionType"/>
         <xs:element name="ExpressionStaticMethod" type="mstns:ExpressionStaticMethodExpressionType"/>
         <xs:element name="ExpressionProperty" type="mstns:ExpressionPropertyExpressionType"/>
         <xs:element name="ExpressionStaticProperty" type="mstns:ExpressionStaticPropertyExpressionType"/>
         <xs:element name="ExpressionParameter" type="mstns:ExpressionParameterExpressionType"/>
         <xs:element name="ExpressionConvert" type="mstns:ExpressionConvertExpressionType"/>
         <xs:element name="ExpressionTypeIs" type="mstns:ExpressionTypeIsExpressionType"/>
         <xs:element name="ExpressionConstant" type="mstns:MethodParameterType"/>
       </xs:choice>
     </xs:sequence>
     <xs:attribute name="Type" use="optional" type="mstns:TypeFunctionTypeType"/>
     <xs:attribute name="TypeId" use="optional" type="mstns:TypeIdGuidType"/>
   </xs:complexType>
   <xs:complexType name="ExpressionParameterExpressionType">
     <xs:attribute name="Name" type="xs:string" use="required"/>
   </xs:complexType>
   <xs:group name="ExpressionQueryableExpressionGroup">
     <xs:choice>
       <xs:element name="Take" type="mstns:ExpressionQueryableTakeType"/>
       <xs:element name="OfType" type="mstns:ExpressionQueryableOfTypeType"/>
       <xs:element name="Where" type="mstns:ExpressionQueryableWhereType"/>
       <xs:element name="OrderBy" type="mstns:ExpressionQueryableWhereType"/>
       <xs:element name="OrderByDescending" type="mstns:ExpressionQueryableWhereType"/>
       <xs:element name="ThenBy" type="mstns:ExpressionQueryableWhereType"/>
       <xs:element name="ThenByDescending" type="mstns:ExpressionQueryableWhereType"/>
       <xs:element name="QueryableObject">
         <xs:complexType/>
       </xs:element>
     </xs:choice>
   </xs:group>
   <xs:complexType name="ExpressionQueryableExpressionType">
     <xs:sequence>
       <xs:choice>
         <xs:element name="Take" type="mstns:ExpressionQueryableTakeType"/>
         <xs:element name="OfType" type="mstns:ExpressionQueryableOfTypeType"/>
         <xs:element name="Where" type="mstns:ExpressionQueryableWhereType"/>
         <xs:element name="OrderBy" type="mstns:ExpressionQueryableWhereType"/>
         <xs:element name="OrderByDescending" type="mstns:ExpressionQueryableWhereType"/>
         <xs:element name="ThenBy" type="mstns:ExpressionQueryableWhereType"/>
         <xs:element name="ThenByDescending" type="mstns:ExpressionQueryableWhereType"/>
         <xs:element name="QueryableObject">
           <xs:complexType/>
         </xs:element>
       </xs:choice>
     </xs:sequence>
   </xs:complexType>
   <xs:complexType name="ExpressionQueryableTakeType">
     <xs:sequence>
       <xs:choice>
         <xs:element name="Take" type="mstns:ExpressionQueryableTakeType"/>
         <xs:element name="OfType" type="mstns:ExpressionQueryableOfTypeType"/>
         <xs:element name="Where" type="mstns:ExpressionQueryableWhereType"/>
         <xs:element name="OrderBy" type="mstns:ExpressionQueryableWhereType"/>
         <xs:element name="OrderByDescending" type="mstns:ExpressionQueryableWhereType"/>
         <xs:element name="ThenBy" type="mstns:ExpressionQueryableWhereType"/>
         <xs:element name="ThenByDescending" type="mstns:ExpressionQueryableWhereType"/>
         <xs:element name="QueryableObject">
           <xs:complexType/>
         </xs:element>
       </xs:choice>
     </xs:sequence>
     <xs:attribute name="Count" type="xs:nonNegativeInteger"/>
   </xs:complexType>
   <xs:complexType name="ExpressionQueryableOfTypeType">
     <xs:sequence>
       <xs:choice>
         <xs:element name="Take" type="mstns:ExpressionQueryableTakeType"/>
         <xs:element name="OfType" type="mstns:ExpressionQueryableOfTypeType"/>
         <xs:element name="Where" type="mstns:ExpressionQueryableWhereType"/>
         <xs:element name="OrderBy" type="mstns:ExpressionQueryableWhereType"/>
         <xs:element name="OrderByDescending" type="mstns:ExpressionQueryableWhereType"/>
         <xs:element name="ThenBy" type="mstns:ExpressionQueryableWhereType"/>
         <xs:element name="ThenByDescending" type="mstns:ExpressionQueryableWhereType"/>
         <xs:element name="QueryableObject">
           <xs:complexType/>
         </xs:element>
       </xs:choice>
     </xs:sequence>
     <xs:attribute name="Type" type="mstns:TypeFunctionTypeType" use="optional"/>
     <xs:attribute name="TypeId" type="mstns:TypeIdGuidType" use="optional"/>
   </xs:complexType>
   <xs:complexType name="ExpressionQueryableWhereType">
     <xs:sequence>
       <xs:element name="Test">
         <xs:complexType>
           <xs:all>
             <xs:element name="Body" type="mstns:ExpressionType"/>
             <xs:element name="Parameters">
               <xs:complexType>
                 <xs:sequence>
                   <xs:element name="Parameter">
                     <xs:complexType>
                       <xs:attribute name="Name" type="xs:string"/>
                     </xs:complexType>
                   </xs:element>
                 </xs:sequence>
               </xs:complexType>
             </xs:element>
           </xs:all>
         </xs:complexType>
       </xs:element>
       <xs:element name="Object" type="mstns:ExpressionQueryableExpressionType"/>
     </xs:sequence>
   </xs:complexType>
   <xs:element name="Request" type="mstns:RequestType"/>
 </xs:schema>