/// <exclude />
        public static bool TryGetDescriptors(XElement fieldReferenceElement, out DataTypeDescriptor typeDescriptor, out DataFieldDescriptor fieldDescriptor)
        {
            typeDescriptor  = null;
            fieldDescriptor = null;

            if (fieldReferenceElement.Name != _fieldReferenceElementName)
            {
                throw new InvalidOperationException(string.Format("Unexpected element name '{0}'. Expected '{1}'",
                                                                  fieldReferenceElement.Name, _fieldReferenceElementName));
            }

            string typeManagerName = fieldReferenceElement.Attribute(_fieldReferenceTypeAttributeName).Value;
            string fieldName       = fieldReferenceElement.Attribute(_fieldReferenceFieldAttributeName).Value;

            Type t = TypeManager.TryGetType(typeManagerName);

            if (t == null)
            {
                return(false);
            }

            typeDescriptor = DynamicTypeManager.GetDataTypeDescriptor(t.GetImmutableTypeId());
            if (typeDescriptor == null)
            {
                return(false);
            }

            if (fieldName == "DataSourceId")
            {
                fieldDescriptor = new DataFieldDescriptor(Guid.Empty, "DataSourceId", StoreFieldType.LargeString, typeof(string));
                return(true);
            }

            fieldDescriptor = typeDescriptor.Fields.Where(f => f.Name == fieldName).FirstOrDefault();
            if (fieldDescriptor == null)
            {
                return(false);
            }

            return(true);
        }