public void BufferDefinitions(DynamicActivityXamlReader parent)
            {
                XamlReader    reader = parent.innerReader.ReadSubtree();
                IXamlLineInfo innerReaderLineInfo = parent.innerReaderLineInfo;

                reader.Read();
                this.outerNodes.Writer.WriteStartMember(parent.activityReplacementXamlType.GetMember("Properties"), innerReaderLineInfo);
                this.outerNodes.Writer.WriteGetObject(innerReaderLineInfo);
                this.outerNodes.Writer.WriteStartMember(XamlLanguage.Items, innerReaderLineInfo);
                bool flag = reader.Read();

                while (flag)
                {
                    if ((reader.NodeType == XamlNodeType.StartObject) && (reader.Type == XamlLanguage.Property))
                    {
                        ActivityPropertyHolder holder = new ActivityPropertyHolder(parent, reader.ReadSubtree());
                        this.PropertyHolders.Add(holder.Name, holder);
                        this.outerNodes.Writer.WriteValue(holder, innerReaderLineInfo);
                    }
                    else
                    {
                        this.outerNodes.Writer.WriteNode(reader, innerReaderLineInfo);
                        flag = reader.Read();
                    }
                }
                this.outerNodes.Writer.WriteEndObject(innerReaderLineInfo);
                this.outerNodes.Writer.WriteEndMember(innerReaderLineInfo);
                reader.Close();
                this.alreadyBufferedDefinitions = true;
                this.FlushValueHolders(parent);
            }
            public void FlushTo(XamlNodeQueue targetNodeQueue, DynamicActivityXamlReader parent)
            {
                this.FlushValueHolders(parent);
                XamlReader    reader     = this.outerNodes.Reader;
                IXamlLineInfo readerInfo = parent.hasLineInfo ? (reader as IXamlLineInfo) : null;

                while (reader.Read())
                {
                    if (reader.NodeType == XamlNodeType.Value)
                    {
                        ActivityPropertyHolder holder = reader.Value as ActivityPropertyHolder;
                        if (holder != null)
                        {
                            holder.CopyTo(targetNodeQueue, readerInfo);
                            continue;
                        }
                    }
                    targetNodeQueue.Writer.WriteNode(reader, readerInfo);
                }
            }
 public void BufferDefinitions(DynamicActivityXamlReader parent)
 {
     XamlReader reader = parent.innerReader.ReadSubtree();
     IXamlLineInfo innerReaderLineInfo = parent.innerReaderLineInfo;
     reader.Read();
     this.outerNodes.Writer.WriteStartMember(parent.activityReplacementXamlType.GetMember("Properties"), innerReaderLineInfo);
     this.outerNodes.Writer.WriteGetObject(innerReaderLineInfo);
     this.outerNodes.Writer.WriteStartMember(XamlLanguage.Items, innerReaderLineInfo);
     bool flag = reader.Read();
     while (flag)
     {
         if ((reader.NodeType == XamlNodeType.StartObject) && (reader.Type == XamlLanguage.Property))
         {
             ActivityPropertyHolder holder = new ActivityPropertyHolder(parent, reader.ReadSubtree());
             this.PropertyHolders.Add(holder.Name, holder);
             this.outerNodes.Writer.WriteValue(holder, innerReaderLineInfo);
         }
         else
         {
             this.outerNodes.Writer.WriteNode(reader, innerReaderLineInfo);
             flag = reader.Read();
         }
     }
     this.outerNodes.Writer.WriteEndObject(innerReaderLineInfo);
     this.outerNodes.Writer.WriteEndMember(innerReaderLineInfo);
     reader.Close();
     this.alreadyBufferedDefinitions = true;
     this.FlushValueHolders(parent);
 }
            // Called inside of an x:Members--read up to </x:Members>, buffering definitions
            public void BufferDefinitions(DynamicActivityXamlReader parent)
            {
                XamlReader subReader = parent.innerReader.ReadSubtree();
                IXamlLineInfo readerLineInfo = parent.innerReaderLineInfo;

                // 1) swap out the start member with <DynamicActivity.Properties>
                subReader.Read();
                Fx.Assert(subReader.NodeType == XamlNodeType.StartMember && subReader.Member == XamlLanguage.Members,
                    "Should be inside of x:Members before calling BufferDefinitions");
                this.outerNodes.Writer.WriteStartMember(parent.activityReplacementXamlType.GetMember("Properties"), readerLineInfo);

                // x:Members directive has no following GetObject, but Properties does since it's not a directive
                this.outerNodes.Writer.WriteGetObject(readerLineInfo);
                this.outerNodes.Writer.WriteStartMember(XamlLanguage.Items, readerLineInfo);

                // 2) process the subnodes and store them in either ActivityPropertyHolders,
                // or exigent nodes in the outer node list
                bool continueReading = subReader.Read();
                while (continueReading)
                {
                    if (subReader.NodeType == XamlNodeType.StartObject
                        && subReader.Type == XamlLanguage.Property)
                    {
                        // we found an x:Property. Store it in an ActivityPropertyHolder
                        ActivityPropertyHolder newProperty = new ActivityPropertyHolder(parent, subReader.ReadSubtree());
                        this.PropertyHolders.Add(newProperty.Name, newProperty);

                        // and stash away a proxy node to map later
                        this.outerNodes.Writer.WriteValue(newProperty, readerLineInfo);

                        // ActivityPropertyHolder consumed the subtree, so we don't need to pump a Read() in this path
                    }
                    else
                    {
                        // it's not an x:Property. Store it in our extra node list
                        this.outerNodes.Writer.WriteNode(subReader, readerLineInfo);
                        continueReading = subReader.Read();
                    }
                }

                // close the GetObject added above. Note that we are doing EndObject/EndMember after the last node (EndMember) 
                // rather than inserting EndMember/EndObject before the last EndMember since all EndMembers are interchangable from a state perspective
                this.outerNodes.Writer.WriteEndObject(readerLineInfo);
                this.outerNodes.Writer.WriteEndMember(readerLineInfo);
                subReader.Close();

                this.alreadyBufferedDefinitions = true;
                FlushValueHolders();
            }