

##TEnumConstantExpression - superseded by GExpressionTrait
Must Be TQualifiedName

#TEnumTypeMember - x
Uses Group GEmptyElementExtensibility, Max 1 - x
Element: Name, Required, Type: TSimpleIdentifier - x
Element:Value, Optional, Type: xs:long - x

## TFunction - x
Element: Name, Required, Type: TSimpleIdentifier - x
Element: Documentation, Optional, Type: TDocumentation - x
Leement: Parameter, Optional, Type: TFunctionParameter - x
Element: DefiningExpression, Optional, Type: TCommandText - x
Element: ReturnType, Optional, Type: TFunctionReturnType - x

## TFunctionImportParameter - x
Uses Group GEmptyElementExtensibility Max 1 - x
Uses Group TFunctionImportParameterAttributes - x

## TFunctionImportReturnType - x
Element: EntitySet, Optional, Type: TOperand - x
Element: EntitySetAttribute, Optional, Type: TSimpleIdentifier - x
Element: Type, Optional, Type: TFunctionImportParameterAndReturnType - x

## TFunctionParameter - x
element: CollectionType, Optional, Type: TCollectionType - x
Element: ReferenceType, Optional, Type: TReferenceType - x
Element: RowType, Optional, Type: TRowType - x
Condition:: at most 1 of the last 3 elements may have a value at any given time.
Element: Name, Required, Type: TSimpleIdentifier - x
Elenent: Type, Optional, Type: TWrappedFunctionType - x
Uses Group: TFacetAttributes - x

## TFunctionReferenceExpression - x
Element: Parameter, optional, Min 1, - x
Type:TFunctionReferenceExpression\Parameter
Element: Function, Required, Type: TQualifiedName - x

###TFunctionReferenceExpression\Parameter - x
Comment: <-- Parameter is used to complete function signature: type only.
-->
Element: CollectionType, optional, Type: TCollectionType - x
Element: ReferenceType, Optional, Type: TReferenceType - x
Element: RowType, Optional, Type: TRowType - x
Condition: at most one of the last 3 elements may have value at any given time. - x
Element: Type, Optional, Type: TWrappedFunctionType - x

## TFunctionReturnType (wtf?)
Element: CollectionType, optional, Type: TCollectionType
Element: ReferenceType, Optional, Type: TReferenceType
Element: RowType, Optional, Type: TRowType
Condition: at most one of the last 3 elements may have value at any given time.
Element: Type, Optional, Type: TWrappedFunctionType

## TIfExpression - x
Comment: <-- Test, IfTrue, IfFalse -->
Uses Group: GExpression, Min:3, Max 3. - x

## TNavigationProperty - x
uses group: GEmptyElementExtensibility - x
Element:Name, Required, Type: TSimpleIdentifier - x
Element: Relationship, Required, Type: TQualifiedName - x
element: ToRole, Required, TSimpleIdentifier - x
element: FromRole, Required, TSimpleIdentifier - x
element: GetterAccess, Optional, Type: TAccess - x
element: SetterAccess, Optional, Type: TAccess - x

## TOnAction - x
Uses Group: GEmptyElementExtensibility - x
Element: Action, Required, Type: TAction - x

## TOperand - x
uses group: GExpression, Max:1 - x
Uses Group: GInlineExpressions - x

## TParameterReferenceExpression - x
Element: Name, Required, Type: TSimpleIdentifier - x

## TProperty - x
Element: CollectionType, optional, Type: TCollectionType - x
Element: ReferenceType, optional, Type: TReferenceType - x
Element: RowType, optional, Type: TRowType - x
Condition: at most 1 of the last 3 may have value at any given time - x
Element:Name, Required, Type: TSimpleIdentifier - x
Element:Type, Optional, Type: TWrappedFunctionType - x
Uses Group: TFacetAttributes - x

## TPropertyRef - x
Element: Name, Required, Type: TSimpleIdentifier - x

#TPropertyReferenceExpression - x
Uses Group: GExpression, Min: 1, Max: 1 - x
Element: Property, Required, Type: TSimpleIdentifier - x

## TPropertyValue - x
Uses Group: GExpression, Min: 1, Max: 1 - x
Uses Group: GInlineExpressions - x
Element: Property, Required, Type: TSimpleIdentifier - x

## TRecordExpression - x
Element: PropertyValue, Optional, Type: TPropertyValue - x
Element: Type, Optional, Type: TUnwrappedFunctionType - x

## TReferenceType - x
Uses Group: GEmptyElementExtensibility, Min:0, Max: 1 - x
Element: Type, Required, Type: TUnwrappedFunctionType - x

## TReferentialConstraintRoleElement - x
element: PropertyRef, Min: 1, Type: TPropertyRef - x
Element: Role, Required, Type: TSimpleIdentifier - x

## TRowType - superseded?
Element: Property, Optional, Type: TProperty

## TSchema - x
Uses Group: GSchemaBodyElements - x
Element: Namespace, Required, Type: TNamespaceName - x
Element: NamespaceUri, Optional, Type: xs:anyURL - x
element: Alias, Optional, Type: TSimpleIdentifier - x

## TTypeAnnotation - x
Element: PropertyValue, Optional, Type: TPropertyValue - x
element: Term, Required, Type: TQualifiedName - x
Element: Qualifier, Optional, Type: TSimpleIdentifier - x
Uses Group: GInlineExpressions - x

## TTypeAssertExpression - x
Element: CollectionType, optional, Type: TCollectionType - x
Element: ReferenceType, optional, Type: TReferenceType - x
Element: RowType, optional, Type: TRowType - x
Condition: at most 1 of the last 3 may have value at any given time - x
Element: Operand, Required, Type: TOperand - x
element: Type, Optional, Type: TWrappedFunctionType - x
Uses Group: TFacetAttributes - x

## TTypeRef - x
Uses Group: GEmptyElementExtensibility - x
Uses Group: TFacetAttributes - x
Element: Type, Required, Type: TUnwrappedFunctionType - x

## TTypeTestExpression - x
Element: CollectionType, optional, Type: TCollectionType - x
Element: ReferenceType, optional, Type: TReferenceType - x
Element: RowType, optional, Type: TRowType - x
Condition: only 1 of the last 3 may have value at any given time - x
Element: Operand, Optional, Type: TOperand - x
Condition: if none of the first 3 are set, Operand must be set. - x
Element: Type, optional, Type:TWrappedFunctionType - x
Uses Group: TWrappedFunctionType - x

## TUsing - x
Uses Group: GEmptyElementExtensibility - x
Element Namespace, Optional, Type: TNamespaceName - x
Element: NamespaceUri, Optional, Type: cs:anyURI - x
Comment: Namespace and NamespaceUri cannot be specified at the same time. - x
Element: Alias, Required, Type: TSimpleIdentifier - x

##TValueAnnotation - x
Uses Group: GExpression, Min:1,Max:1 - x
USes Group: GInlineExpressions - x
Element: Term, Required, Type: TQualifiedName - x
Element: Qualifier, optional, Type: TSimpleIdentifier - x

## TValueTerm - x
Element: Documentation, Optional, Type: TDocumentation - x
Element: CollectionType, Optional, Type: TCollectionType - x
Element: ReferenceType, Optional, Type: TReferenceType - x
Element: RowType, Optional, Type: TRowType - x
Condition: at most 1 of the last 4 may have value at any given time - x
Element: Name, Required, Type: TSimpleIdentifier - x
Element, Type, Optional, Type: TWrappedFunctionType - x
Uses Group: TFacetAttributes - x

## TValueTermReferenceExpression - x
Uses Group: GExpression, Min:1,Max:1 - x
Element Term, Required, Type: TQualifiedName - x
element: Qualifier, Optional, TSimpleIdentifier - x

##TXMLORTextType is deliberately empty

