public override void WriteEndObject(XamlMarkupExtensionWriter writer)
 {
     if (writer.nodes.Count == 0)
     {
         throw new InvalidOperationException(System.Xaml.SR.Get("XamlMarkupExtensionWriterInputInvalid"));
     }
     if (writer.nodes.Pop().NodeType != XamlNodeType.StartObject)
     {
         throw new InvalidOperationException(System.Xaml.SR.Get("XamlMarkupExtensionWriterInputInvalid"));
     }
     writer.sb.Append("}");
     if (writer.nodes.Count == 0)
     {
         writer.currentState = XamlMarkupExtensionWriter.Start.State;
     }
     else
     {
         XamlMarkupExtensionWriter.Node node2 = writer.nodes.Peek();
         if (node2.NodeType != XamlNodeType.StartMember)
         {
             throw new InvalidOperationException(System.Xaml.SR.Get("XamlMarkupExtensionWriterInputInvalid"));
         }
         if (node2.XamlProperty == XamlLanguage.PositionalParameters)
         {
             writer.currentState = XamlMarkupExtensionWriter.InPositionalParametersAfterValue.State;
         }
         else
         {
             writer.currentState = XamlMarkupExtensionWriter.InMemberAfterValueOrEndObject.State;
         }
     }
 }
 public override void WriteEndMember(XamlMarkupExtensionWriter writer)
 {
     XamlMarkupExtensionWriter.Node node = writer.nodes.Pop();
     if ((node.NodeType != XamlNodeType.StartMember) || (node.XamlProperty != XamlLanguage.PositionalParameters))
     {
         throw new InvalidOperationException(System.Xaml.SR.Get("XamlMarkupExtensionWriterInputInvalid"));
     }
     writer.currentState = XamlMarkupExtensionWriter.InObjectAfterMember.State;
 }
            public override void WriteStartObject(XamlMarkupExtensionWriter writer, XamlType type)
            {
                writer.Reset();
                string prefix = writer.LookupPrefix(type);

                writer.sb.Append("{");
                base.WritePrefix(writer, prefix);
                writer.sb.Append(XamlXmlWriter.GetTypeName(type));
                XamlMarkupExtensionWriter.Node item = new XamlMarkupExtensionWriter.Node {
                    NodeType = XamlNodeType.StartObject,
                    XamlType = type
                };
                writer.nodes.Push(item);
                writer.currentState = XamlMarkupExtensionWriter.InObjectBeforeMember.State;
            }
 protected void UpdateStack(XamlMarkupExtensionWriter writer, XamlMember property)
 {
     if (writer.nodes.Count == 0)
     {
         throw new InvalidOperationException(System.Xaml.SR.Get("XamlMarkupExtensionWriterInputInvalid"));
     }
     XamlMarkupExtensionWriter.Node objectNode = writer.nodes.Peek();
     if (objectNode.NodeType != XamlNodeType.StartObject)
     {
         throw new InvalidOperationException(System.Xaml.SR.Get("XamlMarkupExtensionWriterInputInvalid"));
     }
     writer.CheckMemberForUniqueness(objectNode, property);
     XamlMarkupExtensionWriter.Node item = new XamlMarkupExtensionWriter.Node {
         NodeType     = XamlNodeType.StartMember,
         XamlType     = objectNode.XamlType,
         XamlProperty = property
     };
     writer.nodes.Push(item);
 }
 public override void WriteStartObject(XamlMarkupExtensionWriter writer, XamlType type)
 {
     writer.Reset();
     string prefix = writer.LookupPrefix(type);
     writer.sb.Append("{");
     base.WritePrefix(writer, prefix);
     writer.sb.Append(XamlXmlWriter.GetTypeName(type));
     XamlMarkupExtensionWriter.Node item = new XamlMarkupExtensionWriter.Node {
         NodeType = XamlNodeType.StartObject,
         XamlType = type
     };
     writer.nodes.Push(item);
     writer.currentState = XamlMarkupExtensionWriter.InObjectBeforeMember.State;
 }
 protected void UpdateStack(XamlMarkupExtensionWriter writer, XamlMember property)
 {
     if (writer.nodes.Count == 0)
     {
         throw new InvalidOperationException(System.Xaml.SR.Get("XamlMarkupExtensionWriterInputInvalid"));
     }
     XamlMarkupExtensionWriter.Node objectNode = writer.nodes.Peek();
     if (objectNode.NodeType != XamlNodeType.StartObject)
     {
         throw new InvalidOperationException(System.Xaml.SR.Get("XamlMarkupExtensionWriterInputInvalid"));
     }
     writer.CheckMemberForUniqueness(objectNode, property);
     XamlMarkupExtensionWriter.Node item = new XamlMarkupExtensionWriter.Node {
         NodeType = XamlNodeType.StartMember,
         XamlType = objectNode.XamlType,
         XamlProperty = property
     };
     writer.nodes.Push(item);
 }