internal static IEnumerable <EdmType> GetTypeAndSubtypesOf(
     EdmType type,
     MetadataWorkspace workspace,
     bool includeAbstractTypes)
 {
     return(MetadataHelper.GetTypeAndSubtypesOf(type, workspace.GetItemCollection(DataSpace.CSpace), includeAbstractTypes));
 }
        internal static Set <EdmMember> GetConcurrencyMembersForTypeHierarchy(
            EntityTypeBase superType,
            EdmItemCollection edmItemCollection)
        {
            Set <EdmMember> set = new Set <EdmMember>();

            foreach (StructuralType structuralType in MetadataHelper.GetTypeAndSubtypesOf((EdmType)superType, (ItemCollection)edmItemCollection, true))
            {
                foreach (EdmMember member in structuralType.Members)
                {
                    if (MetadataHelper.GetConcurrencyMode(member) == ConcurrencyMode.Fixed)
                    {
                        set.Add(member);
                    }
                }
            }
            return(set);
        }
 internal static IEnumerable <EdmType> GetTypeAndSubtypesOf(
     EdmType type,
     ItemCollection itemCollection,
     bool includeAbstractTypes)
 {
     if (Helper.IsRefType((GlobalItem)type))
     {
         type = (EdmType)((RefType)type).ElementType;
     }
     if (includeAbstractTypes || !type.Abstract)
     {
         yield return(type);
     }
     foreach (EdmType edmType in MetadataHelper.GetTypeAndSubtypesOf <EntityType>(type, itemCollection, includeAbstractTypes))
     {
         yield return(edmType);
     }
     foreach (EdmType edmType in MetadataHelper.GetTypeAndSubtypesOf <ComplexType>(type, itemCollection, includeAbstractTypes))
     {
         yield return(edmType);
     }
 }