private void Process(
            Command itree,
            HashSet<md.TypeUsage> referencedTypes,
            HashSet<md.EntitySet> referencedEntitySets,
            HashSet<md.EntityType> freeFloatingEntityConstructorTypes,
            Dictionary<md.EntitySetBase, DiscriminatorMapInfo> discriminatorMaps,
            RelPropertyHelper relPropertyHelper)
        {
            PlanCompiler.Assert(null != itree, "null itree?");

            m_stringType = itree.StringType;
            m_intType = itree.IntegerType;
            m_relPropertyHelper = relPropertyHelper;

            ProcessEntitySets(referencedEntitySets, freeFloatingEntityConstructorTypes);
            ProcessDiscriminatorMaps(discriminatorMaps);
            ProcessTypes(referencedTypes);
        }
 private PreProcessor(PlanCompiler planCompilerState)
     : base(planCompilerState)
 {
     m_relPropertyHelper = new RelPropertyHelper(m_command.MetadataWorkspace, m_command.ReferencedRelProperties);
 }
 // <summary>
 // Process Driver
 // </summary>
 // <param name="referencedTypes"> structured types referenced in the query </param>
 // <param name="referencedEntitySets"> entitysets referenced in the query </param>
 // <param name="freeFloatingEntityConstructorTypes"> entity types that have "free-floating" entity constructors </param>
 // <param name="discriminatorMaps"> information on optimized discriminator patterns for entity sets </param>
 // <param name="relPropertyHelper"> helper for rel properties </param>
 // <param name="typesNeedingNullSentinel"> which types need a null sentinel </param>
 internal static void Process(
     Command itree,
     HashSet<md.TypeUsage> referencedTypes,
     HashSet<md.EntitySet> referencedEntitySets,
     HashSet<md.EntityType> freeFloatingEntityConstructorTypes,
     Dictionary<md.EntitySetBase, DiscriminatorMapInfo> discriminatorMaps,
     RelPropertyHelper relPropertyHelper,
     HashSet<string> typesNeedingNullSentinel,
     out StructuredTypeInfo structuredTypeInfo)
 {
     structuredTypeInfo = new StructuredTypeInfo(typesNeedingNullSentinel);
     structuredTypeInfo.Process(
         itree, referencedTypes, referencedEntitySets, freeFloatingEntityConstructorTypes, discriminatorMaps, relPropertyHelper);
 }