pmunin
3/14/2017 - 5:32 AM

Direct Graph Markup Language (DGML) utils

Direct Graph Markup Language (DGML) utils

rem

set MainFileName=dgml
set classGenerationParameters=/namespace:DgmlUtils /enableLinqDataSet

rem /n:DgmlUtils /dataset /enableLinqDataSet /enableDataBinding
set VSTOOLS=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\VsDevCmd.bat

rem set VSTOOLS="%VS140COMNTOOLS%\VsDevCmd.bat"
set schemaUrl=http://schemas.microsoft.com/vs/2009/dgml/dgml.xsd


set currentFld=%~0\..\
echo %currentFld%
call "%VSTOOLS%"
cd %currentFld%
powershell -command "& { (New-Object Net.WebClient).DownloadFile('%schemaUrl%', '%MainFileName%.xsd') }"

rem xsd %MainFileName%.xsd /classes /n:DgmlUtils /dataset /enableLinqDataSet /enableDataBinding
xsd %MainFileName%.xsd /classes %classGenerationParameters%
pause
<?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="http://schemas.microsoft.com/vs/2009/dgml" elementFormDefault="qualified" xmlns="http://schemas.microsoft.com/vs/2009/dgml" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vs="http://schemas.microsoft.com/Visual-Studio-Intellisense">
  <!-- Attributes that apply to all graph objects -->
  <xs:attributeGroup name="CommonAttributes">
    <xs:attribute name="Label" type="xs:string" >
      <xs:annotation>
        <xs:documentation>The human readable label on the node</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="Visibility" type="VisibilityEnum" >
      <xs:annotation>
        <xs:documentation>The visibility of the node.  A node can be visible, hidden or collapsed.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="Background" type="xs:string" >
      <xs:annotation>
        <xs:documentation>Background color of the object</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="FontSize" type="xs:double" >
      <xs:annotation>
        <xs:documentation>Controls size of the label</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="FontFamily" type="xs:string" >
      <xs:annotation>
        <xs:documentation>Controls the type of font</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="FontStyle" type="FontStyleEnum" >
      <xs:annotation>
        <xs:documentation>Controls the style of font</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="FontWeight" type="FontWeightEnum" >
      <xs:annotation>
        <xs:documentation>Controls the weight of font</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="Stroke" type="xs:string" >
      <xs:annotation>
        <xs:documentation>The color of the outline pen</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="StrokeThickness" type="xs:string" >
      <xs:annotation>
        <xs:documentation>The thickness of the outline pen</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="StrokeDashArray" type="xs:string" >
      <xs:annotation>
        <xs:documentation>The dash style of the outline pen, for example the value '2,2' gives a link that has evenly sized dashes</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <!-- Attributes that apply to Nodes -->
  <xs:attributeGroup name="CategorizableNodeProperties">
    <xs:attribute name="Icon" type="xs:string" >
      <xs:annotation>
        <xs:documentation>Path to an icon for the node</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="Shape" type="xs:string" >
      <xs:annotation>
        <xs:documentation>Shape of the node</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="Style" type="xs:string" >
      <xs:annotation>
        <xs:documentation>Style for the node</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="HorizontalAlignment" type="HorizontalAlignmentEnum" >
      <xs:annotation>
        <xs:documentation>Controls how the icon and label are aligned</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="VerticalAlignment" type="VerticalAlignmentEnum" >
      <xs:annotation>
        <xs:documentation>Controls how the icon and label are aligned</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="MinWidth" type="xs:double" >
      <xs:annotation>
        <xs:documentation>The minimum width of the node, default is 50</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="MaxWidth" type="xs:double" >
      <xs:annotation>
        <xs:documentation>The maximum width of the node, this makes it possible to create multiline text labels</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="NodeRadius" type="xs:double" >
      <xs:annotation>
        <xs:documentation>The corner radius on the nodes, default is 15</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <!-- Attributes that apply to links -->
  <xs:attributeGroup name="CategorizableLinkProperties">
  </xs:attributeGroup>

  <xs:element name="DirectedGraph">
    <xs:annotation>
      <xs:documentation>
        A DirectedGraph document contains nodes and links, where each link has a source and target node.
        Nodes and links can also contain categories and properties that provide more information about them.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Nodes" minOccurs="0" maxOccurs="1" >
          <xs:annotation>
            <xs:documentation>The collection of nodes in the graph</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Node" minOccurs="0" maxOccurs="unbounded" >
                <xs:annotation>
                  <xs:documentation>A node in the graph</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Category" minOccurs="0" maxOccurs="unbounded">
                      <xs:annotation>
                        <xs:documentation>If you have more than one category on a node the second and subsequent categories are written as child elements.</xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:attribute name="Ref" type="xs:string" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="Id" type="xs:string" use="required" >
                    <xs:annotation>
                      <xs:documentation>The unique identifier of the node</xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                  <xs:attribute name="Category" type="xs:string" >
                    <xs:annotation>
                      <xs:documentation>The category that further describes the object.  You can have multiple categories defined as child elements.</xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                  <xs:attributeGroup ref="CategorizableNodeProperties" />
                  <xs:attribute name="Description" type="xs:string" >
                    <xs:annotation>
                      <xs:documentation>A description of the node which will show in the tooltip</xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                  <xs:attribute name="Group" type="GroupEnum" >
                    <xs:annotation>
                      <xs:documentation>This attribute indicates that the node is to be displayed as a group with all children.  The group can be expanded or collapsed.</xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                  <xs:attribute name="IsVertical" type="ClrBoolean">
                    <xs:annotation>
                      <xs:documentation>A flag indicating whether to layout the icon and label vertically</xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                  <xs:attribute name="Reference" type="xs:string" >
                    <xs:annotation>
                      <xs:documentation>A link to an external DGML document</xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                  <xs:attributeGroup ref="CommonAttributes" />
                  <xs:attributeGroup ref="CodeSchemaAttributes" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="Links" minOccurs="0" maxOccurs="1">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Link" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Category" minOccurs="0" maxOccurs="unbounded">
                      <xs:annotation>
                        <xs:documentation>If you have more than one category on a link the second and subsequent categories are written as child elements.</xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:attribute name="Ref" type="xs:string" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attributeGroup ref="CommonAttributes" />
                  <xs:attribute name="Source" type="xs:string" use="required" >
                    <xs:annotation>
                      <xs:documentation>The source node of the directed link.  If this node is not defined then one will be created on the fly.</xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                  <xs:attribute name="Target" type="xs:string" use="required" >
                    <xs:annotation>
                      <xs:documentation>The target node of the directed link.  If this node is not defined then one will be created on the fly.</xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                  <xs:attribute name="Category" type="xs:string" >
                    <xs:annotation>
                      <xs:documentation>The category that further describes the object.  You can have multiple categories defined as child elements.</xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                  <xs:attributeGroup ref="CategorizableLinkProperties" />
                  <xs:attributeGroup ref="GroupingAttributes" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="Categories" minOccurs="0" maxOccurs="1">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Category" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:sequence></xs:sequence>
                  <xs:attribute name="Id" type="xs:string" >
                    <xs:annotation>
                      <xs:documentation>The unique identifier of the category</xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                  <xs:attribute name="BasedOn" type="xs:string" >
                    <xs:annotation>
                      <xs:documentation>Categories support inheritance so that graph objects can share properties of inherited categories</xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                  <xs:attributeGroup ref="CommonAttributes" />
                  <xs:attributeGroup ref="CategorizableNodeProperties" />
                  <xs:attributeGroup ref="CategorizableLinkProperties" />
                  <xs:attribute name="CanLinkedNodesBeDataDriven" type="xs:string" />
                  <xs:attribute name="CanBeDataDriven" type="xs:string" />
                  <xs:attribute name="DefaultAction" type="xs:string" />
                  <xs:attribute name="IncomingActionLabel" type="xs:string" />
                  <xs:attribute name="IsProviderRoot" type="ClrBoolean" />
                  <xs:attribute name="IsContainment" type="ClrBoolean" />
                  <xs:attribute name="IsTag" type="ClrBoolean" />
                  <xs:attribute name="NavigationActionLabel" type="xs:string" />
                  <xs:attribute name="OutgoingActionLabel" type="xs:string" />
                  <xs:attribute name="SourceCategory" type="xs:string" />
                  <xs:attribute name="TargetCategory" type="xs:string" />
                  <xs:attribute name="Details" type="xs:string" />
                  <xs:attribute name="InboundName" type="xs:string" />
                  <xs:attribute name="OutboundName" type="xs:string" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="Properties" minOccurs="0" maxOccurs="1">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Property" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:sequence></xs:sequence>
                  <xs:attribute name="Id" type="xs:string" >
                    <xs:annotation>
                      <xs:documentation>The unique identifier of the property</xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                  <xs:attribute name="IsReference" type="ClrBoolean" >
                    <xs:annotation>
                      <xs:documentation>The property is a reference property</xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                  <xs:attribute name="Label" type="xs:string" >
                    <xs:annotation>
                      <xs:documentation>The human readable label for the property</xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                  <xs:attribute name="DataType" type="xs:string">
                    <xs:annotation>
                      <xs:documentation>The CLR data type of the property</xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                  <xs:attribute name="Description" type="xs:string" >
                    <xs:annotation>
                      <xs:documentation>A human readable description of the property</xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                  <xs:attribute name="Group" type="xs:string">
                    <xs:annotation>
                      <xs:documentation>The group label for properties when grouped in the property window</xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                  <xs:attribute name="ReferenceTemplate" type="xs:string" >
                    <xs:annotation>
                      <xs:documentation>The string format for resolving the full path of a reference property</xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="QualifiedNames" minOccurs="0" maxOccurs="1">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" name="Name">
                <xs:complexType>
                  <xs:attribute name="Id" type="xs:string" use="required" />
                  <xs:attribute name="Label" type="xs:string" use="required" />
                  <xs:attribute name="ValueType" type="xs:string" use="required" />
                  <xs:attribute name="Formatter" type="xs:string" use="optional" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="IdentifierAliases" minOccurs="0" maxOccurs="1">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" name="Alias">
                <xs:complexType>
                  <xs:attribute name="n" type="xs:unsignedByte" use="required" />
                  <xs:attribute name="Uri" type="xs:string" use="optional" />
                  <xs:attribute name="Id" type="xs:string" use="optional" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="Styles" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>The conditional styles </xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Style" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                  <xs:documentation>A conditional style can apply UI settings to a matching set of nodes or links based on a conditional expression</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Condition" minOccurs="0" maxOccurs="1">
                      <xs:annotation>
                        <xs:documentation>The condition element contains the conditoinal expression </xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:attribute name="Expression" >
                          <xs:annotation>
                            <xs:documentation>
                              The conditional expression will be executed against the target type of the style if must return a boolean.
                              If it returns true then the setters will apply to the matching graph objects.
                              The expression can access properties on the graph objects and static methods of the .NET Math, String and Color classes.
                              For example, the expression 'LinesOfCode > 10' will match all nodes that have a LinesOfCode property with a value greater than 10.
                            </xs:documentation>
                          </xs:annotation>
                        </xs:attribute>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="Setter" minOccurs="0" maxOccurs="unbounded" vs:snippet="yes">
                      <xs:annotation>
                        <xs:documentation>A setter can set a UI property of the matching graph objects</xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:attribute name="Property" type="PropertyType" use="required" >
                          <xs:annotation>
                            <xs:documentation>The UI property being set</xs:documentation>
                          </xs:annotation>
                        </xs:attribute>
                        <xs:attribute name="Value" use="optional" vs:snippet="yes" >
                          <xs:annotation>
                            <xs:documentation>The value of the property being set.  This property is mutually exclusive to the Expression attribute</xs:documentation>
                          </xs:annotation>
                        </xs:attribute>
                        <xs:attribute name="Expression" use="optional" >
                          <xs:annotation>
                            <xs:documentation>
                              The setter Expression attribute is mutually exclusive to the Value attribute and allows a simple expression
                              to be calulated for the property being set.  For example the expression 'Math.Max(9,Math.Sqrt(LinesOfCode))'
                              calculates a number based on the LinesOfCode property equal to the square root of that property, and returns
                              no less than 9.  This result could then be assigned to the FontSize property to achieve node sizing based on code size.
                            </xs:documentation>
                          </xs:annotation>
                        </xs:attribute>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="TargetType" type="TargetTypeEnum" use="required" >
                    <xs:annotation>
                      <xs:documentation>The target type of the conditional style, this controls what type of objects the conditional expressions will be applied to</xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                  <xs:attribute name="IsEnabled" type="ClrBoolean">
                    <xs:annotation>
                      <xs:documentation>Whether the style is currently enabled (checked in the Graph Legend)</xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                  <xs:attribute name="GroupLabel" type="xs:string" use="required">
                    <xs:annotation>
                      <xs:documentation>Label to show on the Legend</xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                  <xs:attribute name="ValueLabel" type="xs:string" use="required">
                    <xs:annotation>
                      <xs:documentation>Label to use in the style picker dialogs</xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                  <xs:attribute name="ToolTip" type="xs:string">
                    <xs:annotation>
                      <xs:documentation>A tooltip to explain what this style represents</xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="Paths" minOccurs="0" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>The set of special paths used in the DGML document</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Path" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                  <xs:documentation>
                    A special path defines a common location that many graph objects can refer to.
                    For example you might see something like $(SolutionDir) in the DGML document which will be defined
                    as the location of the solution from which the DGML data was derrived.
                  </xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <xs:attribute name="Id" type="xs:string" use="required" >
                    <xs:annotation>
                      <xs:documentation>The unique id of the common path</xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                  <xs:attribute name="Value" type="xs:string" use="required"  >
                    <xs:annotation>
                      <xs:documentation>
                        The default value of the common path if it is not already defined in the hosting process.
                        Normally the hosting process will define these common paths, then re-wire the data when it is loaded.
                        For example, $(SolutionDir) will be re-written to the path of the currently loaded solution in Visual Studio.
                        These common paths help make DGML documents more portable.
                      </xs:documentation>
                    </xs:annotation>
                  </xs:attribute>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
      <xs:attribute name="Title" type="xs:string" >
        <xs:annotation>
          <xs:documentation>The title of the graph</xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="Background" type="xs:string" >
        <xs:annotation>
          <xs:documentation>The background color for the entire graph</xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="BackgroundImage" type="xs:string" >
        <xs:annotation>
          <xs:documentation>A background image for the graph</xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="GraphDirection" type="GraphDirectionEnum">
        <xs:annotation>
          <xs:documentation>The direction for the graph layout</xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="Layout" type="LayoutEnum">
        <xs:annotation>
          <xs:documentation>The type of graph layout</xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="ButterflyMode" type="ClrBoolean">
        <xs:annotation>
          <xs:documentation>Whether graph is in butterfly mode or not</xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="NeighborhoodDistance" type="xs:integer">
        <xs:annotation>
          <xs:documentation>The neighborhood distance</xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="ZoomLevel" type="ZoomLevel">
        <xs:annotation>
          <xs:documentation>The zoom level to show graph initially as a floating point number where 1 means 100%, or the word "Fit" to fit the graph to the current window size</xs:documentation>
        </xs:annotation>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="ClrBoolean">
    <xs:restriction base="xs:string">
      <xs:enumeration value="True" />
      <xs:enumeration value="False" />
      <xs:enumeration value="true" />
      <xs:enumeration value="false" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="TargetTypeEnum">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Node" />
      <xs:enumeration value="Link" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="PropertyType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="ArrowHeadSize" />
      <xs:enumeration value="ArrowHeadWidth" />
      <xs:enumeration value="Background" />
      <xs:enumeration value="FontFamily" />
      <xs:enumeration value="FontSize" />
      <xs:enumeration value="FontStyle" />
      <xs:enumeration value="FontWeight" />
      <xs:enumeration value="Foreground" />
      <xs:enumeration value="HorizontalAlignment" />
      <xs:enumeration value="Icon" />
      <xs:enumeration value="Image" />
      <xs:enumeration value="MinWidth" />
      <xs:enumeration value="MaxWidth" />
      <xs:enumeration value="NodeRadius" />      
      <xs:enumeration value="SelectedStroke" />
      <xs:enumeration value="ShadowDepth" />
      <xs:enumeration value="Shape" />
      <xs:enumeration value="Stroke" />
      <xs:enumeration value="StrokeDashArray" />
      <xs:enumeration value="StrokeThickness" />
      <xs:enumeration value="Style" />
    </xs:restriction>
  </xs:simpleType>
  <!-- Code Schema attributes -->
  <xs:attributeGroup name="CodeSchemaAttributes">
    <xs:attribute name="Access" type="xs:string" />
    <xs:attribute name="Assembly" type="xs:string" />
    <xs:attribute name="FilePath" type="xs:string" />
    <xs:attribute name="FunctionTypeFlags" type="xs:string" />
    <xs:attribute name="IsAbstract" type="ClrBoolean" />
    <xs:attribute name="IsCodeType" type="ClrBoolean" />
    <xs:attribute name="IsHub" type="ClrBoolean" />
    <xs:attribute name="IsOverloaded" type="ClrBoolean" />
    <xs:attribute name="IsOverridable" type="ClrBoolean" />
    <xs:attribute name="Language" type="xs:string" />
    <xs:attribute name="Location" type="xs:string" />
    <xs:attribute name="LinesOfCode" type="xs:int" />
    <xs:attribute name="Namespace" type="xs:string" />
    <xs:attribute name="MustImplement" type="xs:string" />
    <xs:attribute name="TypeName" type="xs:string" />

    <xs:attribute name="IsDocumentation" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>This category or property is only used for documentation</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeGenSourceName" type="xs:string">
      <xs:annotation>
        <xs:documentation>Depth in the call stack (distance from the originating node)</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeGenTargetName" type="xs:string">
      <xs:annotation>
        <xs:documentation>Depth in the call stack (distance from the originating node)</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeGenIncoming" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>Generate reverse link code</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_CallSequenceNumber" type="xs:int">
      <xs:annotation>
        <xs:documentation>Execution sequence of the call from the beginning of the originating node</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_DisableEnabledErrorHandler" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>Flag which disables enabled error handler in the current procedure and resets it to Nothing.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_DisableEnabledException" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>Flag which disables enabled exception in the current procedure and resets it to Nothing.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_EndColumn" type="xs:int">
      <xs:annotation>
        <xs:documentation>Last column number on the last line for the statement</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_EndLine" type="xs:int">
      <xs:annotation>
        <xs:documentation>Last line for the statement</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_FrameDepth" type="xs:int">
      <xs:annotation>
        <xs:documentation>depth in the call stack (distance from the originating node)</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_FrameKind" type="FrameKindEnum">
      <xs:annotation>
        <xs:documentation>Represents a single frame in the system. This can be a method call or just a control flow frame such as an if statement or loop that is part of the method</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_Icon" type="xs:string">
      <xs:annotation>
        <xs:documentation>Icon for the category.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_InstanceTrackingInformation" type="xs:string">
      <xs:annotation>
        <xs:documentation>Instance tracking information</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_IsAbstract" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>Flag to indicate member is 'Abstract' does not provide a full implementation</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_IsAnonymous" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>Flag indicating if this delegate or type is anonymous</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_IsArray" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>Flag indicating that a type node represents an array of some other type</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_IsByReference" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>Flag indicating if the parameter takes a reference to the argument</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_IsCallToThis" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>Flag to indicate the that the method call is going to another method in this object</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_IsConstructor" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>Flag to indicate the method is a constructor</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_IsDo" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>Flag indicating the statement is a Do loop (which is also either a while or until loop)</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_IsFinal" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>Flag to indicate the member is 'Final' and cannot be derived from</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_IsFor" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>Flag indicating the statement is a For loop</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_IsForEach" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>Flag indicating the statement is a For Each statement</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_IsGeneric" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>Flag to indicate the member is 'Generic'</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_IsGenericInstance" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>Flag to indicate the member is an instantiation of a 'Generic'</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_IsInternal" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>Flag to indicate the method is 'Internal'</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_IsHideBySignature" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>Flag to indicate the method hides another method of the same signature</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_IsOperator" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>Flag indicating if this method defines a new operator</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_IsOut" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>Flag indicating the parameter is an 'out' parameter</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_IsParameterArray" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>Flag indicating if the parameter is a 'params' or 'paramarray' definition</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_IsPrivate" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>Flag to indicate the scope is Private</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_IsProtected" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>Flag to indicate the scope is Protected</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_IsProtectedOrInternal" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>Flag to indicate the scope is Protected or Internal</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_IsPropertyGet" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>Flag to indicate the frame is a Property Get</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_IsPropertySet" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>Flag to indicate the frame is a Property Set</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_IsPrototype" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>Flag to indicate the member is a prototype</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_IsPublic" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>Flag to indicate the scope is Public</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_IsSpecialName" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>Flag to indicate the member has a compiler generated name</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_IsStatic" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>Flag to indicate the method is a static member</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_IsUntilLoop" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>Flag indicating the GuardExpression needs to evaluate to True to break out of the loop</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_IsVirtual" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>Flag to indicate the method can be overridden</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_IsWhile" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>Flag indicating the statement is a While loop</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_PreserveData" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>Flag used to preserve the data in the existing array when you change the size of only the last dimension.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_SingleInstanceSourceLink" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>The link contains only one instance, ever</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_SingleInstanceTargetLink" type="ClrBoolean">
      <xs:annotation>
        <xs:documentation>The link contains only one instance, ever</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_SourceText" type="xs:string">
      <xs:annotation>
        <xs:documentation>The source text associated with the graph node</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_StartColumn" type="xs:int">
      <xs:annotation>
        <xs:documentation>Starting column number for the statement</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_StartLine" type="xs:int">
      <xs:annotation>
        <xs:documentation>Starting line number for the statement</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_StatementKind" type="xs:string">
      <xs:annotation>
        <xs:documentation>Starting line number for the statement</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_StatementNumber" type="xs:int">
      <xs:annotation>
        <xs:documentation>Starting line number for the statement</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="CodeSchemaProperty_StatementType" type="xs:string">
      <xs:annotation>
        <xs:documentation>Starting line number for the statement</xs:documentation>
      </xs:annotation>
    </xs:attribute>

  </xs:attributeGroup>
  <!-- Code Schema attributes -->
  <xs:attributeGroup name="GroupingAttributes">
    <xs:attribute name="Seeder" type="ClrBoolean" >
      <xs:annotation>
        <xs:documentation>Flag used by group by patterns</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="AttractConsumers" type="ClrBoolean" >
      <xs:annotation>
        <xs:documentation>Flag used by group by patterns</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>


  <xs:simpleType name="VisibilityEnum">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Visible" />
      <xs:enumeration value="Hidden" />
      <xs:enumeration value="Collapsed" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="GroupEnum">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Expanded" />
      <xs:enumeration value="Collapsed" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="FontStyleEnum">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Normal" />
      <xs:enumeration value="Italic" />
      <xs:enumeration value="Oblique" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="FontWeightEnum">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Black" />
      <xs:enumeration value="Bold" />
      <xs:enumeration value="DemiBold" />
      <xs:enumeration value="ExtraBlack" />
      <xs:enumeration value="ExtraBold" />
      <xs:enumeration value="ExtraLight" />
      <xs:enumeration value="Heavy" />
      <xs:enumeration value="Light" />
      <xs:enumeration value="Medium" />
      <xs:enumeration value="Normal" />
      <xs:enumeration value="Regular" />
      <xs:enumeration value="Semibold" />
      <xs:enumeration value="Thin" />
      <xs:enumeration value="UltraBlack" />
      <xs:enumeration value="UltraBold" />
      <xs:enumeration value="UltraLight" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="FrameKindEnum">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Conditional" />
      <xs:enumeration value="Clause" />
      <xs:enumeration value="Loop" />
      <xs:enumeration value="Call" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="GraphDirectionEnum">
    <xs:restriction base="xs:string">
      <xs:enumeration value="TopToBottom" />
      <xs:enumeration value="BottomToTop" />
      <xs:enumeration value="LeftToRight" />
      <xs:enumeration value="RightToLeft" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="LayoutEnum">
    <xs:restriction base="xs:string">
      <xs:enumeration value="None" />
      <xs:enumeration value="Sugiyama" />
      <xs:enumeration value="ForceDirected" />
      <xs:enumeration value="DependencyMatrix" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="HorizontalAlignmentEnum">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Left" />
      <xs:enumeration value="Center" />
      <xs:enumeration value="Right" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="VerticalAlignmentEnum">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Top" />
      <xs:enumeration value="Center" />
      <xs:enumeration value="Bottom" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="ZoomLevel">
    <xs:union memberTypes="xs:double ZoomLevelEnum">
    </xs:union>
  </xs:simpleType>

  <xs:simpleType name="ZoomLevelEnum">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Fit" />
    </xs:restriction>
  </xs:simpleType>

</xs:schema>
//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.42000
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

// 
// This source code was auto-generated by xsd, Version=4.6.1055.0.
// 
namespace DgmlUtils {
    using System.Xml.Serialization;
    
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://schemas.microsoft.com/vs/2009/dgml")]
    [System.Xml.Serialization.XmlRootAttribute(Namespace="http://schemas.microsoft.com/vs/2009/dgml", IsNullable=false)]
    public partial class DirectedGraph {
        
        private DirectedGraphNode[] nodesField;
        
        private DirectedGraphLink[] linksField;
        
        private DirectedGraphCategory[] categoriesField;
        
        private DirectedGraphProperty[] propertiesField;
        
        private DirectedGraphName[] qualifiedNamesField;
        
        private DirectedGraphAlias[] identifierAliasesField;
        
        private DirectedGraphStyle[] stylesField;
        
        private DirectedGraphPath[] pathsField;
        
        private string titleField;
        
        private string backgroundField;
        
        private string backgroundImageField;
        
        private GraphDirectionEnum graphDirectionField;
        
        private bool graphDirectionFieldSpecified;
        
        private LayoutEnum layoutField;
        
        private bool layoutFieldSpecified;
        
        private ClrBoolean butterflyModeField;
        
        private bool butterflyModeFieldSpecified;
        
        private string neighborhoodDistanceField;
        
        private string zoomLevelField;
        
        /// <remarks/>
        [System.Xml.Serialization.XmlArrayItemAttribute("Node", IsNullable=false)]
        public DirectedGraphNode[] Nodes {
            get {
                return this.nodesField;
            }
            set {
                this.nodesField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlArrayItemAttribute("Link", IsNullable=false)]
        public DirectedGraphLink[] Links {
            get {
                return this.linksField;
            }
            set {
                this.linksField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlArrayItemAttribute("Category", IsNullable=false)]
        public DirectedGraphCategory[] Categories {
            get {
                return this.categoriesField;
            }
            set {
                this.categoriesField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlArrayItemAttribute("Property", IsNullable=false)]
        public DirectedGraphProperty[] Properties {
            get {
                return this.propertiesField;
            }
            set {
                this.propertiesField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlArrayItemAttribute("Name", IsNullable=false)]
        public DirectedGraphName[] QualifiedNames {
            get {
                return this.qualifiedNamesField;
            }
            set {
                this.qualifiedNamesField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlArrayItemAttribute("Alias", IsNullable=false)]
        public DirectedGraphAlias[] IdentifierAliases {
            get {
                return this.identifierAliasesField;
            }
            set {
                this.identifierAliasesField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlArrayItemAttribute("Style", IsNullable=false)]
        public DirectedGraphStyle[] Styles {
            get {
                return this.stylesField;
            }
            set {
                this.stylesField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlArrayItemAttribute("Path", IsNullable=false)]
        public DirectedGraphPath[] Paths {
            get {
                return this.pathsField;
            }
            set {
                this.pathsField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Title {
            get {
                return this.titleField;
            }
            set {
                this.titleField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Background {
            get {
                return this.backgroundField;
            }
            set {
                this.backgroundField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string BackgroundImage {
            get {
                return this.backgroundImageField;
            }
            set {
                this.backgroundImageField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public GraphDirectionEnum GraphDirection {
            get {
                return this.graphDirectionField;
            }
            set {
                this.graphDirectionField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool GraphDirectionSpecified {
            get {
                return this.graphDirectionFieldSpecified;
            }
            set {
                this.graphDirectionFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public LayoutEnum Layout {
            get {
                return this.layoutField;
            }
            set {
                this.layoutField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool LayoutSpecified {
            get {
                return this.layoutFieldSpecified;
            }
            set {
                this.layoutFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean ButterflyMode {
            get {
                return this.butterflyModeField;
            }
            set {
                this.butterflyModeField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool ButterflyModeSpecified {
            get {
                return this.butterflyModeFieldSpecified;
            }
            set {
                this.butterflyModeFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute(DataType="integer")]
        public string NeighborhoodDistance {
            get {
                return this.neighborhoodDistanceField;
            }
            set {
                this.neighborhoodDistanceField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string ZoomLevel {
            get {
                return this.zoomLevelField;
            }
            set {
                this.zoomLevelField = value;
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://schemas.microsoft.com/vs/2009/dgml")]
    public partial class DirectedGraphNode {
        
        private DirectedGraphNodeCategory[] categoryField;
        
        private string idField;
        
        private string category1Field;
        
        private string iconField;
        
        private string shapeField;
        
        private string styleField;
        
        private HorizontalAlignmentEnum horizontalAlignmentField;
        
        private bool horizontalAlignmentFieldSpecified;
        
        private VerticalAlignmentEnum verticalAlignmentField;
        
        private bool verticalAlignmentFieldSpecified;
        
        private double minWidthField;
        
        private bool minWidthFieldSpecified;
        
        private double maxWidthField;
        
        private bool maxWidthFieldSpecified;
        
        private double nodeRadiusField;
        
        private bool nodeRadiusFieldSpecified;
        
        private string descriptionField;
        
        private GroupEnum groupField;
        
        private bool groupFieldSpecified;
        
        private ClrBoolean isVerticalField;
        
        private bool isVerticalFieldSpecified;
        
        private string referenceField;
        
        private string labelField;
        
        private VisibilityEnum visibilityField;
        
        private bool visibilityFieldSpecified;
        
        private string backgroundField;
        
        private double fontSizeField;
        
        private bool fontSizeFieldSpecified;
        
        private string fontFamilyField;
        
        private FontStyleEnum fontStyleField;
        
        private bool fontStyleFieldSpecified;
        
        private FontWeightEnum fontWeightField;
        
        private bool fontWeightFieldSpecified;
        
        private string strokeField;
        
        private string strokeThicknessField;
        
        private string strokeDashArrayField;
        
        private string accessField;
        
        private string assemblyField;
        
        private string filePathField;
        
        private string functionTypeFlagsField;
        
        private ClrBoolean isAbstractField;
        
        private bool isAbstractFieldSpecified;
        
        private ClrBoolean isCodeTypeField;
        
        private bool isCodeTypeFieldSpecified;
        
        private ClrBoolean isHubField;
        
        private bool isHubFieldSpecified;
        
        private ClrBoolean isOverloadedField;
        
        private bool isOverloadedFieldSpecified;
        
        private ClrBoolean isOverridableField;
        
        private bool isOverridableFieldSpecified;
        
        private string languageField;
        
        private string locationField;
        
        private int linesOfCodeField;
        
        private bool linesOfCodeFieldSpecified;
        
        private string namespaceField;
        
        private string mustImplementField;
        
        private string typeNameField;
        
        private ClrBoolean isDocumentationField;
        
        private bool isDocumentationFieldSpecified;
        
        private string codeGenSourceNameField;
        
        private string codeGenTargetNameField;
        
        private ClrBoolean codeGenIncomingField;
        
        private bool codeGenIncomingFieldSpecified;
        
        private int codeSchemaProperty_CallSequenceNumberField;
        
        private bool codeSchemaProperty_CallSequenceNumberFieldSpecified;
        
        private ClrBoolean codeSchemaProperty_DisableEnabledErrorHandlerField;
        
        private bool codeSchemaProperty_DisableEnabledErrorHandlerFieldSpecified;
        
        private ClrBoolean codeSchemaProperty_DisableEnabledExceptionField;
        
        private bool codeSchemaProperty_DisableEnabledExceptionFieldSpecified;
        
        private int codeSchemaProperty_EndColumnField;
        
        private bool codeSchemaProperty_EndColumnFieldSpecified;
        
        private int codeSchemaProperty_EndLineField;
        
        private bool codeSchemaProperty_EndLineFieldSpecified;
        
        private int codeSchemaProperty_FrameDepthField;
        
        private bool codeSchemaProperty_FrameDepthFieldSpecified;
        
        private FrameKindEnum codeSchemaProperty_FrameKindField;
        
        private bool codeSchemaProperty_FrameKindFieldSpecified;
        
        private string codeSchemaProperty_IconField;
        
        private string codeSchemaProperty_InstanceTrackingInformationField;
        
        private ClrBoolean codeSchemaProperty_IsAbstractField;
        
        private bool codeSchemaProperty_IsAbstractFieldSpecified;
        
        private ClrBoolean codeSchemaProperty_IsAnonymousField;
        
        private bool codeSchemaProperty_IsAnonymousFieldSpecified;
        
        private ClrBoolean codeSchemaProperty_IsArrayField;
        
        private bool codeSchemaProperty_IsArrayFieldSpecified;
        
        private ClrBoolean codeSchemaProperty_IsByReferenceField;
        
        private bool codeSchemaProperty_IsByReferenceFieldSpecified;
        
        private ClrBoolean codeSchemaProperty_IsCallToThisField;
        
        private bool codeSchemaProperty_IsCallToThisFieldSpecified;
        
        private ClrBoolean codeSchemaProperty_IsConstructorField;
        
        private bool codeSchemaProperty_IsConstructorFieldSpecified;
        
        private ClrBoolean codeSchemaProperty_IsDoField;
        
        private bool codeSchemaProperty_IsDoFieldSpecified;
        
        private ClrBoolean codeSchemaProperty_IsFinalField;
        
        private bool codeSchemaProperty_IsFinalFieldSpecified;
        
        private ClrBoolean codeSchemaProperty_IsForField;
        
        private bool codeSchemaProperty_IsForFieldSpecified;
        
        private ClrBoolean codeSchemaProperty_IsForEachField;
        
        private bool codeSchemaProperty_IsForEachFieldSpecified;
        
        private ClrBoolean codeSchemaProperty_IsGenericField;
        
        private bool codeSchemaProperty_IsGenericFieldSpecified;
        
        private ClrBoolean codeSchemaProperty_IsGenericInstanceField;
        
        private bool codeSchemaProperty_IsGenericInstanceFieldSpecified;
        
        private ClrBoolean codeSchemaProperty_IsInternalField;
        
        private bool codeSchemaProperty_IsInternalFieldSpecified;
        
        private ClrBoolean codeSchemaProperty_IsHideBySignatureField;
        
        private bool codeSchemaProperty_IsHideBySignatureFieldSpecified;
        
        private ClrBoolean codeSchemaProperty_IsOperatorField;
        
        private bool codeSchemaProperty_IsOperatorFieldSpecified;
        
        private ClrBoolean codeSchemaProperty_IsOutField;
        
        private bool codeSchemaProperty_IsOutFieldSpecified;
        
        private ClrBoolean codeSchemaProperty_IsParameterArrayField;
        
        private bool codeSchemaProperty_IsParameterArrayFieldSpecified;
        
        private ClrBoolean codeSchemaProperty_IsPrivateField;
        
        private bool codeSchemaProperty_IsPrivateFieldSpecified;
        
        private ClrBoolean codeSchemaProperty_IsProtectedField;
        
        private bool codeSchemaProperty_IsProtectedFieldSpecified;
        
        private ClrBoolean codeSchemaProperty_IsProtectedOrInternalField;
        
        private bool codeSchemaProperty_IsProtectedOrInternalFieldSpecified;
        
        private ClrBoolean codeSchemaProperty_IsPropertyGetField;
        
        private bool codeSchemaProperty_IsPropertyGetFieldSpecified;
        
        private ClrBoolean codeSchemaProperty_IsPropertySetField;
        
        private bool codeSchemaProperty_IsPropertySetFieldSpecified;
        
        private ClrBoolean codeSchemaProperty_IsPrototypeField;
        
        private bool codeSchemaProperty_IsPrototypeFieldSpecified;
        
        private ClrBoolean codeSchemaProperty_IsPublicField;
        
        private bool codeSchemaProperty_IsPublicFieldSpecified;
        
        private ClrBoolean codeSchemaProperty_IsSpecialNameField;
        
        private bool codeSchemaProperty_IsSpecialNameFieldSpecified;
        
        private ClrBoolean codeSchemaProperty_IsStaticField;
        
        private bool codeSchemaProperty_IsStaticFieldSpecified;
        
        private ClrBoolean codeSchemaProperty_IsUntilLoopField;
        
        private bool codeSchemaProperty_IsUntilLoopFieldSpecified;
        
        private ClrBoolean codeSchemaProperty_IsVirtualField;
        
        private bool codeSchemaProperty_IsVirtualFieldSpecified;
        
        private ClrBoolean codeSchemaProperty_IsWhileField;
        
        private bool codeSchemaProperty_IsWhileFieldSpecified;
        
        private ClrBoolean codeSchemaProperty_PreserveDataField;
        
        private bool codeSchemaProperty_PreserveDataFieldSpecified;
        
        private ClrBoolean codeSchemaProperty_SingleInstanceSourceLinkField;
        
        private bool codeSchemaProperty_SingleInstanceSourceLinkFieldSpecified;
        
        private ClrBoolean codeSchemaProperty_SingleInstanceTargetLinkField;
        
        private bool codeSchemaProperty_SingleInstanceTargetLinkFieldSpecified;
        
        private string codeSchemaProperty_SourceTextField;
        
        private int codeSchemaProperty_StartColumnField;
        
        private bool codeSchemaProperty_StartColumnFieldSpecified;
        
        private int codeSchemaProperty_StartLineField;
        
        private bool codeSchemaProperty_StartLineFieldSpecified;
        
        private string codeSchemaProperty_StatementKindField;
        
        private int codeSchemaProperty_StatementNumberField;
        
        private bool codeSchemaProperty_StatementNumberFieldSpecified;
        
        private string codeSchemaProperty_StatementTypeField;
        
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("Category")]
        public DirectedGraphNodeCategory[] Category {
            get {
                return this.categoryField;
            }
            set {
                this.categoryField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Id {
            get {
                return this.idField;
            }
            set {
                this.idField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("Category")]
        public string Category1 {
            get {
                return this.category1Field;
            }
            set {
                this.category1Field = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Icon {
            get {
                return this.iconField;
            }
            set {
                this.iconField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Shape {
            get {
                return this.shapeField;
            }
            set {
                this.shapeField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Style {
            get {
                return this.styleField;
            }
            set {
                this.styleField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public HorizontalAlignmentEnum HorizontalAlignment {
            get {
                return this.horizontalAlignmentField;
            }
            set {
                this.horizontalAlignmentField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool HorizontalAlignmentSpecified {
            get {
                return this.horizontalAlignmentFieldSpecified;
            }
            set {
                this.horizontalAlignmentFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public VerticalAlignmentEnum VerticalAlignment {
            get {
                return this.verticalAlignmentField;
            }
            set {
                this.verticalAlignmentField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool VerticalAlignmentSpecified {
            get {
                return this.verticalAlignmentFieldSpecified;
            }
            set {
                this.verticalAlignmentFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public double MinWidth {
            get {
                return this.minWidthField;
            }
            set {
                this.minWidthField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool MinWidthSpecified {
            get {
                return this.minWidthFieldSpecified;
            }
            set {
                this.minWidthFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public double MaxWidth {
            get {
                return this.maxWidthField;
            }
            set {
                this.maxWidthField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool MaxWidthSpecified {
            get {
                return this.maxWidthFieldSpecified;
            }
            set {
                this.maxWidthFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public double NodeRadius {
            get {
                return this.nodeRadiusField;
            }
            set {
                this.nodeRadiusField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool NodeRadiusSpecified {
            get {
                return this.nodeRadiusFieldSpecified;
            }
            set {
                this.nodeRadiusFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Description {
            get {
                return this.descriptionField;
            }
            set {
                this.descriptionField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public GroupEnum Group {
            get {
                return this.groupField;
            }
            set {
                this.groupField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool GroupSpecified {
            get {
                return this.groupFieldSpecified;
            }
            set {
                this.groupFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean IsVertical {
            get {
                return this.isVerticalField;
            }
            set {
                this.isVerticalField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool IsVerticalSpecified {
            get {
                return this.isVerticalFieldSpecified;
            }
            set {
                this.isVerticalFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Reference {
            get {
                return this.referenceField;
            }
            set {
                this.referenceField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Label {
            get {
                return this.labelField;
            }
            set {
                this.labelField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public VisibilityEnum Visibility {
            get {
                return this.visibilityField;
            }
            set {
                this.visibilityField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool VisibilitySpecified {
            get {
                return this.visibilityFieldSpecified;
            }
            set {
                this.visibilityFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Background {
            get {
                return this.backgroundField;
            }
            set {
                this.backgroundField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public double FontSize {
            get {
                return this.fontSizeField;
            }
            set {
                this.fontSizeField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool FontSizeSpecified {
            get {
                return this.fontSizeFieldSpecified;
            }
            set {
                this.fontSizeFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string FontFamily {
            get {
                return this.fontFamilyField;
            }
            set {
                this.fontFamilyField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public FontStyleEnum FontStyle {
            get {
                return this.fontStyleField;
            }
            set {
                this.fontStyleField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool FontStyleSpecified {
            get {
                return this.fontStyleFieldSpecified;
            }
            set {
                this.fontStyleFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public FontWeightEnum FontWeight {
            get {
                return this.fontWeightField;
            }
            set {
                this.fontWeightField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool FontWeightSpecified {
            get {
                return this.fontWeightFieldSpecified;
            }
            set {
                this.fontWeightFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Stroke {
            get {
                return this.strokeField;
            }
            set {
                this.strokeField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string StrokeThickness {
            get {
                return this.strokeThicknessField;
            }
            set {
                this.strokeThicknessField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string StrokeDashArray {
            get {
                return this.strokeDashArrayField;
            }
            set {
                this.strokeDashArrayField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Access {
            get {
                return this.accessField;
            }
            set {
                this.accessField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Assembly {
            get {
                return this.assemblyField;
            }
            set {
                this.assemblyField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string FilePath {
            get {
                return this.filePathField;
            }
            set {
                this.filePathField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string FunctionTypeFlags {
            get {
                return this.functionTypeFlagsField;
            }
            set {
                this.functionTypeFlagsField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean IsAbstract {
            get {
                return this.isAbstractField;
            }
            set {
                this.isAbstractField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool IsAbstractSpecified {
            get {
                return this.isAbstractFieldSpecified;
            }
            set {
                this.isAbstractFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean IsCodeType {
            get {
                return this.isCodeTypeField;
            }
            set {
                this.isCodeTypeField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool IsCodeTypeSpecified {
            get {
                return this.isCodeTypeFieldSpecified;
            }
            set {
                this.isCodeTypeFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean IsHub {
            get {
                return this.isHubField;
            }
            set {
                this.isHubField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool IsHubSpecified {
            get {
                return this.isHubFieldSpecified;
            }
            set {
                this.isHubFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean IsOverloaded {
            get {
                return this.isOverloadedField;
            }
            set {
                this.isOverloadedField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool IsOverloadedSpecified {
            get {
                return this.isOverloadedFieldSpecified;
            }
            set {
                this.isOverloadedFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean IsOverridable {
            get {
                return this.isOverridableField;
            }
            set {
                this.isOverridableField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool IsOverridableSpecified {
            get {
                return this.isOverridableFieldSpecified;
            }
            set {
                this.isOverridableFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Language {
            get {
                return this.languageField;
            }
            set {
                this.languageField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Location {
            get {
                return this.locationField;
            }
            set {
                this.locationField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public int LinesOfCode {
            get {
                return this.linesOfCodeField;
            }
            set {
                this.linesOfCodeField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool LinesOfCodeSpecified {
            get {
                return this.linesOfCodeFieldSpecified;
            }
            set {
                this.linesOfCodeFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Namespace {
            get {
                return this.namespaceField;
            }
            set {
                this.namespaceField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string MustImplement {
            get {
                return this.mustImplementField;
            }
            set {
                this.mustImplementField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string TypeName {
            get {
                return this.typeNameField;
            }
            set {
                this.typeNameField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean IsDocumentation {
            get {
                return this.isDocumentationField;
            }
            set {
                this.isDocumentationField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool IsDocumentationSpecified {
            get {
                return this.isDocumentationFieldSpecified;
            }
            set {
                this.isDocumentationFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string CodeGenSourceName {
            get {
                return this.codeGenSourceNameField;
            }
            set {
                this.codeGenSourceNameField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string CodeGenTargetName {
            get {
                return this.codeGenTargetNameField;
            }
            set {
                this.codeGenTargetNameField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeGenIncoming {
            get {
                return this.codeGenIncomingField;
            }
            set {
                this.codeGenIncomingField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeGenIncomingSpecified {
            get {
                return this.codeGenIncomingFieldSpecified;
            }
            set {
                this.codeGenIncomingFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public int CodeSchemaProperty_CallSequenceNumber {
            get {
                return this.codeSchemaProperty_CallSequenceNumberField;
            }
            set {
                this.codeSchemaProperty_CallSequenceNumberField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_CallSequenceNumberSpecified {
            get {
                return this.codeSchemaProperty_CallSequenceNumberFieldSpecified;
            }
            set {
                this.codeSchemaProperty_CallSequenceNumberFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_DisableEnabledErrorHandler {
            get {
                return this.codeSchemaProperty_DisableEnabledErrorHandlerField;
            }
            set {
                this.codeSchemaProperty_DisableEnabledErrorHandlerField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_DisableEnabledErrorHandlerSpecified {
            get {
                return this.codeSchemaProperty_DisableEnabledErrorHandlerFieldSpecified;
            }
            set {
                this.codeSchemaProperty_DisableEnabledErrorHandlerFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_DisableEnabledException {
            get {
                return this.codeSchemaProperty_DisableEnabledExceptionField;
            }
            set {
                this.codeSchemaProperty_DisableEnabledExceptionField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_DisableEnabledExceptionSpecified {
            get {
                return this.codeSchemaProperty_DisableEnabledExceptionFieldSpecified;
            }
            set {
                this.codeSchemaProperty_DisableEnabledExceptionFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public int CodeSchemaProperty_EndColumn {
            get {
                return this.codeSchemaProperty_EndColumnField;
            }
            set {
                this.codeSchemaProperty_EndColumnField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_EndColumnSpecified {
            get {
                return this.codeSchemaProperty_EndColumnFieldSpecified;
            }
            set {
                this.codeSchemaProperty_EndColumnFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public int CodeSchemaProperty_EndLine {
            get {
                return this.codeSchemaProperty_EndLineField;
            }
            set {
                this.codeSchemaProperty_EndLineField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_EndLineSpecified {
            get {
                return this.codeSchemaProperty_EndLineFieldSpecified;
            }
            set {
                this.codeSchemaProperty_EndLineFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public int CodeSchemaProperty_FrameDepth {
            get {
                return this.codeSchemaProperty_FrameDepthField;
            }
            set {
                this.codeSchemaProperty_FrameDepthField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_FrameDepthSpecified {
            get {
                return this.codeSchemaProperty_FrameDepthFieldSpecified;
            }
            set {
                this.codeSchemaProperty_FrameDepthFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public FrameKindEnum CodeSchemaProperty_FrameKind {
            get {
                return this.codeSchemaProperty_FrameKindField;
            }
            set {
                this.codeSchemaProperty_FrameKindField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_FrameKindSpecified {
            get {
                return this.codeSchemaProperty_FrameKindFieldSpecified;
            }
            set {
                this.codeSchemaProperty_FrameKindFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string CodeSchemaProperty_Icon {
            get {
                return this.codeSchemaProperty_IconField;
            }
            set {
                this.codeSchemaProperty_IconField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string CodeSchemaProperty_InstanceTrackingInformation {
            get {
                return this.codeSchemaProperty_InstanceTrackingInformationField;
            }
            set {
                this.codeSchemaProperty_InstanceTrackingInformationField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_IsAbstract {
            get {
                return this.codeSchemaProperty_IsAbstractField;
            }
            set {
                this.codeSchemaProperty_IsAbstractField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_IsAbstractSpecified {
            get {
                return this.codeSchemaProperty_IsAbstractFieldSpecified;
            }
            set {
                this.codeSchemaProperty_IsAbstractFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_IsAnonymous {
            get {
                return this.codeSchemaProperty_IsAnonymousField;
            }
            set {
                this.codeSchemaProperty_IsAnonymousField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_IsAnonymousSpecified {
            get {
                return this.codeSchemaProperty_IsAnonymousFieldSpecified;
            }
            set {
                this.codeSchemaProperty_IsAnonymousFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_IsArray {
            get {
                return this.codeSchemaProperty_IsArrayField;
            }
            set {
                this.codeSchemaProperty_IsArrayField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_IsArraySpecified {
            get {
                return this.codeSchemaProperty_IsArrayFieldSpecified;
            }
            set {
                this.codeSchemaProperty_IsArrayFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_IsByReference {
            get {
                return this.codeSchemaProperty_IsByReferenceField;
            }
            set {
                this.codeSchemaProperty_IsByReferenceField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_IsByReferenceSpecified {
            get {
                return this.codeSchemaProperty_IsByReferenceFieldSpecified;
            }
            set {
                this.codeSchemaProperty_IsByReferenceFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_IsCallToThis {
            get {
                return this.codeSchemaProperty_IsCallToThisField;
            }
            set {
                this.codeSchemaProperty_IsCallToThisField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_IsCallToThisSpecified {
            get {
                return this.codeSchemaProperty_IsCallToThisFieldSpecified;
            }
            set {
                this.codeSchemaProperty_IsCallToThisFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_IsConstructor {
            get {
                return this.codeSchemaProperty_IsConstructorField;
            }
            set {
                this.codeSchemaProperty_IsConstructorField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_IsConstructorSpecified {
            get {
                return this.codeSchemaProperty_IsConstructorFieldSpecified;
            }
            set {
                this.codeSchemaProperty_IsConstructorFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_IsDo {
            get {
                return this.codeSchemaProperty_IsDoField;
            }
            set {
                this.codeSchemaProperty_IsDoField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_IsDoSpecified {
            get {
                return this.codeSchemaProperty_IsDoFieldSpecified;
            }
            set {
                this.codeSchemaProperty_IsDoFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_IsFinal {
            get {
                return this.codeSchemaProperty_IsFinalField;
            }
            set {
                this.codeSchemaProperty_IsFinalField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_IsFinalSpecified {
            get {
                return this.codeSchemaProperty_IsFinalFieldSpecified;
            }
            set {
                this.codeSchemaProperty_IsFinalFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_IsFor {
            get {
                return this.codeSchemaProperty_IsForField;
            }
            set {
                this.codeSchemaProperty_IsForField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_IsForSpecified {
            get {
                return this.codeSchemaProperty_IsForFieldSpecified;
            }
            set {
                this.codeSchemaProperty_IsForFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_IsForEach {
            get {
                return this.codeSchemaProperty_IsForEachField;
            }
            set {
                this.codeSchemaProperty_IsForEachField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_IsForEachSpecified {
            get {
                return this.codeSchemaProperty_IsForEachFieldSpecified;
            }
            set {
                this.codeSchemaProperty_IsForEachFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_IsGeneric {
            get {
                return this.codeSchemaProperty_IsGenericField;
            }
            set {
                this.codeSchemaProperty_IsGenericField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_IsGenericSpecified {
            get {
                return this.codeSchemaProperty_IsGenericFieldSpecified;
            }
            set {
                this.codeSchemaProperty_IsGenericFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_IsGenericInstance {
            get {
                return this.codeSchemaProperty_IsGenericInstanceField;
            }
            set {
                this.codeSchemaProperty_IsGenericInstanceField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_IsGenericInstanceSpecified {
            get {
                return this.codeSchemaProperty_IsGenericInstanceFieldSpecified;
            }
            set {
                this.codeSchemaProperty_IsGenericInstanceFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_IsInternal {
            get {
                return this.codeSchemaProperty_IsInternalField;
            }
            set {
                this.codeSchemaProperty_IsInternalField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_IsInternalSpecified {
            get {
                return this.codeSchemaProperty_IsInternalFieldSpecified;
            }
            set {
                this.codeSchemaProperty_IsInternalFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_IsHideBySignature {
            get {
                return this.codeSchemaProperty_IsHideBySignatureField;
            }
            set {
                this.codeSchemaProperty_IsHideBySignatureField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_IsHideBySignatureSpecified {
            get {
                return this.codeSchemaProperty_IsHideBySignatureFieldSpecified;
            }
            set {
                this.codeSchemaProperty_IsHideBySignatureFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_IsOperator {
            get {
                return this.codeSchemaProperty_IsOperatorField;
            }
            set {
                this.codeSchemaProperty_IsOperatorField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_IsOperatorSpecified {
            get {
                return this.codeSchemaProperty_IsOperatorFieldSpecified;
            }
            set {
                this.codeSchemaProperty_IsOperatorFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_IsOut {
            get {
                return this.codeSchemaProperty_IsOutField;
            }
            set {
                this.codeSchemaProperty_IsOutField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_IsOutSpecified {
            get {
                return this.codeSchemaProperty_IsOutFieldSpecified;
            }
            set {
                this.codeSchemaProperty_IsOutFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_IsParameterArray {
            get {
                return this.codeSchemaProperty_IsParameterArrayField;
            }
            set {
                this.codeSchemaProperty_IsParameterArrayField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_IsParameterArraySpecified {
            get {
                return this.codeSchemaProperty_IsParameterArrayFieldSpecified;
            }
            set {
                this.codeSchemaProperty_IsParameterArrayFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_IsPrivate {
            get {
                return this.codeSchemaProperty_IsPrivateField;
            }
            set {
                this.codeSchemaProperty_IsPrivateField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_IsPrivateSpecified {
            get {
                return this.codeSchemaProperty_IsPrivateFieldSpecified;
            }
            set {
                this.codeSchemaProperty_IsPrivateFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_IsProtected {
            get {
                return this.codeSchemaProperty_IsProtectedField;
            }
            set {
                this.codeSchemaProperty_IsProtectedField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_IsProtectedSpecified {
            get {
                return this.codeSchemaProperty_IsProtectedFieldSpecified;
            }
            set {
                this.codeSchemaProperty_IsProtectedFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_IsProtectedOrInternal {
            get {
                return this.codeSchemaProperty_IsProtectedOrInternalField;
            }
            set {
                this.codeSchemaProperty_IsProtectedOrInternalField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_IsProtectedOrInternalSpecified {
            get {
                return this.codeSchemaProperty_IsProtectedOrInternalFieldSpecified;
            }
            set {
                this.codeSchemaProperty_IsProtectedOrInternalFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_IsPropertyGet {
            get {
                return this.codeSchemaProperty_IsPropertyGetField;
            }
            set {
                this.codeSchemaProperty_IsPropertyGetField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_IsPropertyGetSpecified {
            get {
                return this.codeSchemaProperty_IsPropertyGetFieldSpecified;
            }
            set {
                this.codeSchemaProperty_IsPropertyGetFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_IsPropertySet {
            get {
                return this.codeSchemaProperty_IsPropertySetField;
            }
            set {
                this.codeSchemaProperty_IsPropertySetField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_IsPropertySetSpecified {
            get {
                return this.codeSchemaProperty_IsPropertySetFieldSpecified;
            }
            set {
                this.codeSchemaProperty_IsPropertySetFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_IsPrototype {
            get {
                return this.codeSchemaProperty_IsPrototypeField;
            }
            set {
                this.codeSchemaProperty_IsPrototypeField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_IsPrototypeSpecified {
            get {
                return this.codeSchemaProperty_IsPrototypeFieldSpecified;
            }
            set {
                this.codeSchemaProperty_IsPrototypeFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_IsPublic {
            get {
                return this.codeSchemaProperty_IsPublicField;
            }
            set {
                this.codeSchemaProperty_IsPublicField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_IsPublicSpecified {
            get {
                return this.codeSchemaProperty_IsPublicFieldSpecified;
            }
            set {
                this.codeSchemaProperty_IsPublicFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_IsSpecialName {
            get {
                return this.codeSchemaProperty_IsSpecialNameField;
            }
            set {
                this.codeSchemaProperty_IsSpecialNameField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_IsSpecialNameSpecified {
            get {
                return this.codeSchemaProperty_IsSpecialNameFieldSpecified;
            }
            set {
                this.codeSchemaProperty_IsSpecialNameFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_IsStatic {
            get {
                return this.codeSchemaProperty_IsStaticField;
            }
            set {
                this.codeSchemaProperty_IsStaticField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_IsStaticSpecified {
            get {
                return this.codeSchemaProperty_IsStaticFieldSpecified;
            }
            set {
                this.codeSchemaProperty_IsStaticFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_IsUntilLoop {
            get {
                return this.codeSchemaProperty_IsUntilLoopField;
            }
            set {
                this.codeSchemaProperty_IsUntilLoopField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_IsUntilLoopSpecified {
            get {
                return this.codeSchemaProperty_IsUntilLoopFieldSpecified;
            }
            set {
                this.codeSchemaProperty_IsUntilLoopFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_IsVirtual {
            get {
                return this.codeSchemaProperty_IsVirtualField;
            }
            set {
                this.codeSchemaProperty_IsVirtualField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_IsVirtualSpecified {
            get {
                return this.codeSchemaProperty_IsVirtualFieldSpecified;
            }
            set {
                this.codeSchemaProperty_IsVirtualFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_IsWhile {
            get {
                return this.codeSchemaProperty_IsWhileField;
            }
            set {
                this.codeSchemaProperty_IsWhileField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_IsWhileSpecified {
            get {
                return this.codeSchemaProperty_IsWhileFieldSpecified;
            }
            set {
                this.codeSchemaProperty_IsWhileFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_PreserveData {
            get {
                return this.codeSchemaProperty_PreserveDataField;
            }
            set {
                this.codeSchemaProperty_PreserveDataField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_PreserveDataSpecified {
            get {
                return this.codeSchemaProperty_PreserveDataFieldSpecified;
            }
            set {
                this.codeSchemaProperty_PreserveDataFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_SingleInstanceSourceLink {
            get {
                return this.codeSchemaProperty_SingleInstanceSourceLinkField;
            }
            set {
                this.codeSchemaProperty_SingleInstanceSourceLinkField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_SingleInstanceSourceLinkSpecified {
            get {
                return this.codeSchemaProperty_SingleInstanceSourceLinkFieldSpecified;
            }
            set {
                this.codeSchemaProperty_SingleInstanceSourceLinkFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean CodeSchemaProperty_SingleInstanceTargetLink {
            get {
                return this.codeSchemaProperty_SingleInstanceTargetLinkField;
            }
            set {
                this.codeSchemaProperty_SingleInstanceTargetLinkField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_SingleInstanceTargetLinkSpecified {
            get {
                return this.codeSchemaProperty_SingleInstanceTargetLinkFieldSpecified;
            }
            set {
                this.codeSchemaProperty_SingleInstanceTargetLinkFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string CodeSchemaProperty_SourceText {
            get {
                return this.codeSchemaProperty_SourceTextField;
            }
            set {
                this.codeSchemaProperty_SourceTextField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public int CodeSchemaProperty_StartColumn {
            get {
                return this.codeSchemaProperty_StartColumnField;
            }
            set {
                this.codeSchemaProperty_StartColumnField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_StartColumnSpecified {
            get {
                return this.codeSchemaProperty_StartColumnFieldSpecified;
            }
            set {
                this.codeSchemaProperty_StartColumnFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public int CodeSchemaProperty_StartLine {
            get {
                return this.codeSchemaProperty_StartLineField;
            }
            set {
                this.codeSchemaProperty_StartLineField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_StartLineSpecified {
            get {
                return this.codeSchemaProperty_StartLineFieldSpecified;
            }
            set {
                this.codeSchemaProperty_StartLineFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string CodeSchemaProperty_StatementKind {
            get {
                return this.codeSchemaProperty_StatementKindField;
            }
            set {
                this.codeSchemaProperty_StatementKindField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public int CodeSchemaProperty_StatementNumber {
            get {
                return this.codeSchemaProperty_StatementNumberField;
            }
            set {
                this.codeSchemaProperty_StatementNumberField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool CodeSchemaProperty_StatementNumberSpecified {
            get {
                return this.codeSchemaProperty_StatementNumberFieldSpecified;
            }
            set {
                this.codeSchemaProperty_StatementNumberFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string CodeSchemaProperty_StatementType {
            get {
                return this.codeSchemaProperty_StatementTypeField;
            }
            set {
                this.codeSchemaProperty_StatementTypeField = value;
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://schemas.microsoft.com/vs/2009/dgml")]
    public partial class DirectedGraphNodeCategory {
        
        private string refField;
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Ref {
            get {
                return this.refField;
            }
            set {
                this.refField = value;
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
    [System.SerializableAttribute()]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://schemas.microsoft.com/vs/2009/dgml")]
    public enum HorizontalAlignmentEnum {
        
        /// <remarks/>
        Left,
        
        /// <remarks/>
        Center,
        
        /// <remarks/>
        Right,
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
    [System.SerializableAttribute()]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://schemas.microsoft.com/vs/2009/dgml")]
    public enum VerticalAlignmentEnum {
        
        /// <remarks/>
        Top,
        
        /// <remarks/>
        Center,
        
        /// <remarks/>
        Bottom,
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
    [System.SerializableAttribute()]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://schemas.microsoft.com/vs/2009/dgml")]
    public enum GroupEnum {
        
        /// <remarks/>
        Expanded,
        
        /// <remarks/>
        Collapsed,
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
    [System.SerializableAttribute()]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://schemas.microsoft.com/vs/2009/dgml")]
    public enum ClrBoolean {
        
        /// <remarks/>
        True,
        
        /// <remarks/>
        False,
        
        /// <remarks/>
        @true,
        
        /// <remarks/>
        @false,
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
    [System.SerializableAttribute()]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://schemas.microsoft.com/vs/2009/dgml")]
    public enum VisibilityEnum {
        
        /// <remarks/>
        Visible,
        
        /// <remarks/>
        Hidden,
        
        /// <remarks/>
        Collapsed,
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
    [System.SerializableAttribute()]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://schemas.microsoft.com/vs/2009/dgml")]
    public enum FontStyleEnum {
        
        /// <remarks/>
        Normal,
        
        /// <remarks/>
        Italic,
        
        /// <remarks/>
        Oblique,
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
    [System.SerializableAttribute()]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://schemas.microsoft.com/vs/2009/dgml")]
    public enum FontWeightEnum {
        
        /// <remarks/>
        Black,
        
        /// <remarks/>
        Bold,
        
        /// <remarks/>
        DemiBold,
        
        /// <remarks/>
        ExtraBlack,
        
        /// <remarks/>
        ExtraBold,
        
        /// <remarks/>
        ExtraLight,
        
        /// <remarks/>
        Heavy,
        
        /// <remarks/>
        Light,
        
        /// <remarks/>
        Medium,
        
        /// <remarks/>
        Normal,
        
        /// <remarks/>
        Regular,
        
        /// <remarks/>
        Semibold,
        
        /// <remarks/>
        Thin,
        
        /// <remarks/>
        UltraBlack,
        
        /// <remarks/>
        UltraBold,
        
        /// <remarks/>
        UltraLight,
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
    [System.SerializableAttribute()]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://schemas.microsoft.com/vs/2009/dgml")]
    public enum FrameKindEnum {
        
        /// <remarks/>
        Conditional,
        
        /// <remarks/>
        Clause,
        
        /// <remarks/>
        Loop,
        
        /// <remarks/>
        Call,
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://schemas.microsoft.com/vs/2009/dgml")]
    public partial class DirectedGraphLink {
        
        private DirectedGraphLinkCategory[] categoryField;
        
        private string labelField;
        
        private VisibilityEnum visibilityField;
        
        private bool visibilityFieldSpecified;
        
        private string backgroundField;
        
        private double fontSizeField;
        
        private bool fontSizeFieldSpecified;
        
        private string fontFamilyField;
        
        private FontStyleEnum fontStyleField;
        
        private bool fontStyleFieldSpecified;
        
        private FontWeightEnum fontWeightField;
        
        private bool fontWeightFieldSpecified;
        
        private string strokeField;
        
        private string strokeThicknessField;
        
        private string strokeDashArrayField;
        
        private string sourceField;
        
        private string targetField;
        
        private string category1Field;
        
        private ClrBoolean seederField;
        
        private bool seederFieldSpecified;
        
        private ClrBoolean attractConsumersField;
        
        private bool attractConsumersFieldSpecified;
        
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("Category")]
        public DirectedGraphLinkCategory[] Category {
            get {
                return this.categoryField;
            }
            set {
                this.categoryField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Label {
            get {
                return this.labelField;
            }
            set {
                this.labelField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public VisibilityEnum Visibility {
            get {
                return this.visibilityField;
            }
            set {
                this.visibilityField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool VisibilitySpecified {
            get {
                return this.visibilityFieldSpecified;
            }
            set {
                this.visibilityFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Background {
            get {
                return this.backgroundField;
            }
            set {
                this.backgroundField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public double FontSize {
            get {
                return this.fontSizeField;
            }
            set {
                this.fontSizeField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool FontSizeSpecified {
            get {
                return this.fontSizeFieldSpecified;
            }
            set {
                this.fontSizeFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string FontFamily {
            get {
                return this.fontFamilyField;
            }
            set {
                this.fontFamilyField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public FontStyleEnum FontStyle {
            get {
                return this.fontStyleField;
            }
            set {
                this.fontStyleField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool FontStyleSpecified {
            get {
                return this.fontStyleFieldSpecified;
            }
            set {
                this.fontStyleFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public FontWeightEnum FontWeight {
            get {
                return this.fontWeightField;
            }
            set {
                this.fontWeightField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool FontWeightSpecified {
            get {
                return this.fontWeightFieldSpecified;
            }
            set {
                this.fontWeightFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Stroke {
            get {
                return this.strokeField;
            }
            set {
                this.strokeField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string StrokeThickness {
            get {
                return this.strokeThicknessField;
            }
            set {
                this.strokeThicknessField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string StrokeDashArray {
            get {
                return this.strokeDashArrayField;
            }
            set {
                this.strokeDashArrayField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Source {
            get {
                return this.sourceField;
            }
            set {
                this.sourceField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Target {
            get {
                return this.targetField;
            }
            set {
                this.targetField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("Category")]
        public string Category1 {
            get {
                return this.category1Field;
            }
            set {
                this.category1Field = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean Seeder {
            get {
                return this.seederField;
            }
            set {
                this.seederField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool SeederSpecified {
            get {
                return this.seederFieldSpecified;
            }
            set {
                this.seederFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean AttractConsumers {
            get {
                return this.attractConsumersField;
            }
            set {
                this.attractConsumersField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool AttractConsumersSpecified {
            get {
                return this.attractConsumersFieldSpecified;
            }
            set {
                this.attractConsumersFieldSpecified = value;
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://schemas.microsoft.com/vs/2009/dgml")]
    public partial class DirectedGraphLinkCategory {
        
        private string refField;
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Ref {
            get {
                return this.refField;
            }
            set {
                this.refField = value;
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://schemas.microsoft.com/vs/2009/dgml")]
    public partial class DirectedGraphCategory {
        
        private string idField;
        
        private string basedOnField;
        
        private string labelField;
        
        private VisibilityEnum visibilityField;
        
        private bool visibilityFieldSpecified;
        
        private string backgroundField;
        
        private double fontSizeField;
        
        private bool fontSizeFieldSpecified;
        
        private string fontFamilyField;
        
        private FontStyleEnum fontStyleField;
        
        private bool fontStyleFieldSpecified;
        
        private FontWeightEnum fontWeightField;
        
        private bool fontWeightFieldSpecified;
        
        private string strokeField;
        
        private string strokeThicknessField;
        
        private string strokeDashArrayField;
        
        private string iconField;
        
        private string shapeField;
        
        private string styleField;
        
        private HorizontalAlignmentEnum horizontalAlignmentField;
        
        private bool horizontalAlignmentFieldSpecified;
        
        private VerticalAlignmentEnum verticalAlignmentField;
        
        private bool verticalAlignmentFieldSpecified;
        
        private double minWidthField;
        
        private bool minWidthFieldSpecified;
        
        private double maxWidthField;
        
        private bool maxWidthFieldSpecified;
        
        private double nodeRadiusField;
        
        private bool nodeRadiusFieldSpecified;
        
        private string canLinkedNodesBeDataDrivenField;
        
        private string canBeDataDrivenField;
        
        private string defaultActionField;
        
        private string incomingActionLabelField;
        
        private ClrBoolean isProviderRootField;
        
        private bool isProviderRootFieldSpecified;
        
        private ClrBoolean isContainmentField;
        
        private bool isContainmentFieldSpecified;
        
        private ClrBoolean isTagField;
        
        private bool isTagFieldSpecified;
        
        private string navigationActionLabelField;
        
        private string outgoingActionLabelField;
        
        private string sourceCategoryField;
        
        private string targetCategoryField;
        
        private string detailsField;
        
        private string inboundNameField;
        
        private string outboundNameField;
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Id {
            get {
                return this.idField;
            }
            set {
                this.idField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string BasedOn {
            get {
                return this.basedOnField;
            }
            set {
                this.basedOnField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Label {
            get {
                return this.labelField;
            }
            set {
                this.labelField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public VisibilityEnum Visibility {
            get {
                return this.visibilityField;
            }
            set {
                this.visibilityField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool VisibilitySpecified {
            get {
                return this.visibilityFieldSpecified;
            }
            set {
                this.visibilityFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Background {
            get {
                return this.backgroundField;
            }
            set {
                this.backgroundField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public double FontSize {
            get {
                return this.fontSizeField;
            }
            set {
                this.fontSizeField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool FontSizeSpecified {
            get {
                return this.fontSizeFieldSpecified;
            }
            set {
                this.fontSizeFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string FontFamily {
            get {
                return this.fontFamilyField;
            }
            set {
                this.fontFamilyField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public FontStyleEnum FontStyle {
            get {
                return this.fontStyleField;
            }
            set {
                this.fontStyleField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool FontStyleSpecified {
            get {
                return this.fontStyleFieldSpecified;
            }
            set {
                this.fontStyleFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public FontWeightEnum FontWeight {
            get {
                return this.fontWeightField;
            }
            set {
                this.fontWeightField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool FontWeightSpecified {
            get {
                return this.fontWeightFieldSpecified;
            }
            set {
                this.fontWeightFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Stroke {
            get {
                return this.strokeField;
            }
            set {
                this.strokeField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string StrokeThickness {
            get {
                return this.strokeThicknessField;
            }
            set {
                this.strokeThicknessField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string StrokeDashArray {
            get {
                return this.strokeDashArrayField;
            }
            set {
                this.strokeDashArrayField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Icon {
            get {
                return this.iconField;
            }
            set {
                this.iconField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Shape {
            get {
                return this.shapeField;
            }
            set {
                this.shapeField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Style {
            get {
                return this.styleField;
            }
            set {
                this.styleField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public HorizontalAlignmentEnum HorizontalAlignment {
            get {
                return this.horizontalAlignmentField;
            }
            set {
                this.horizontalAlignmentField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool HorizontalAlignmentSpecified {
            get {
                return this.horizontalAlignmentFieldSpecified;
            }
            set {
                this.horizontalAlignmentFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public VerticalAlignmentEnum VerticalAlignment {
            get {
                return this.verticalAlignmentField;
            }
            set {
                this.verticalAlignmentField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool VerticalAlignmentSpecified {
            get {
                return this.verticalAlignmentFieldSpecified;
            }
            set {
                this.verticalAlignmentFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public double MinWidth {
            get {
                return this.minWidthField;
            }
            set {
                this.minWidthField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool MinWidthSpecified {
            get {
                return this.minWidthFieldSpecified;
            }
            set {
                this.minWidthFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public double MaxWidth {
            get {
                return this.maxWidthField;
            }
            set {
                this.maxWidthField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool MaxWidthSpecified {
            get {
                return this.maxWidthFieldSpecified;
            }
            set {
                this.maxWidthFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public double NodeRadius {
            get {
                return this.nodeRadiusField;
            }
            set {
                this.nodeRadiusField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool NodeRadiusSpecified {
            get {
                return this.nodeRadiusFieldSpecified;
            }
            set {
                this.nodeRadiusFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string CanLinkedNodesBeDataDriven {
            get {
                return this.canLinkedNodesBeDataDrivenField;
            }
            set {
                this.canLinkedNodesBeDataDrivenField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string CanBeDataDriven {
            get {
                return this.canBeDataDrivenField;
            }
            set {
                this.canBeDataDrivenField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string DefaultAction {
            get {
                return this.defaultActionField;
            }
            set {
                this.defaultActionField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string IncomingActionLabel {
            get {
                return this.incomingActionLabelField;
            }
            set {
                this.incomingActionLabelField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean IsProviderRoot {
            get {
                return this.isProviderRootField;
            }
            set {
                this.isProviderRootField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool IsProviderRootSpecified {
            get {
                return this.isProviderRootFieldSpecified;
            }
            set {
                this.isProviderRootFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean IsContainment {
            get {
                return this.isContainmentField;
            }
            set {
                this.isContainmentField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool IsContainmentSpecified {
            get {
                return this.isContainmentFieldSpecified;
            }
            set {
                this.isContainmentFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean IsTag {
            get {
                return this.isTagField;
            }
            set {
                this.isTagField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool IsTagSpecified {
            get {
                return this.isTagFieldSpecified;
            }
            set {
                this.isTagFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string NavigationActionLabel {
            get {
                return this.navigationActionLabelField;
            }
            set {
                this.navigationActionLabelField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string OutgoingActionLabel {
            get {
                return this.outgoingActionLabelField;
            }
            set {
                this.outgoingActionLabelField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string SourceCategory {
            get {
                return this.sourceCategoryField;
            }
            set {
                this.sourceCategoryField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string TargetCategory {
            get {
                return this.targetCategoryField;
            }
            set {
                this.targetCategoryField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Details {
            get {
                return this.detailsField;
            }
            set {
                this.detailsField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string InboundName {
            get {
                return this.inboundNameField;
            }
            set {
                this.inboundNameField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string OutboundName {
            get {
                return this.outboundNameField;
            }
            set {
                this.outboundNameField = value;
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://schemas.microsoft.com/vs/2009/dgml")]
    public partial class DirectedGraphProperty {
        
        private string idField;
        
        private ClrBoolean isReferenceField;
        
        private bool isReferenceFieldSpecified;
        
        private string labelField;
        
        private string dataTypeField;
        
        private string descriptionField;
        
        private string groupField;
        
        private string referenceTemplateField;
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Id {
            get {
                return this.idField;
            }
            set {
                this.idField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean IsReference {
            get {
                return this.isReferenceField;
            }
            set {
                this.isReferenceField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool IsReferenceSpecified {
            get {
                return this.isReferenceFieldSpecified;
            }
            set {
                this.isReferenceFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Label {
            get {
                return this.labelField;
            }
            set {
                this.labelField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string DataType {
            get {
                return this.dataTypeField;
            }
            set {
                this.dataTypeField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Description {
            get {
                return this.descriptionField;
            }
            set {
                this.descriptionField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Group {
            get {
                return this.groupField;
            }
            set {
                this.groupField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string ReferenceTemplate {
            get {
                return this.referenceTemplateField;
            }
            set {
                this.referenceTemplateField = value;
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://schemas.microsoft.com/vs/2009/dgml")]
    public partial class DirectedGraphName {
        
        private string idField;
        
        private string labelField;
        
        private string valueTypeField;
        
        private string formatterField;
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Id {
            get {
                return this.idField;
            }
            set {
                this.idField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Label {
            get {
                return this.labelField;
            }
            set {
                this.labelField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string ValueType {
            get {
                return this.valueTypeField;
            }
            set {
                this.valueTypeField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Formatter {
            get {
                return this.formatterField;
            }
            set {
                this.formatterField = value;
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://schemas.microsoft.com/vs/2009/dgml")]
    public partial class DirectedGraphAlias {
        
        private byte nField;
        
        private string uriField;
        
        private string idField;
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public byte n {
            get {
                return this.nField;
            }
            set {
                this.nField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Uri {
            get {
                return this.uriField;
            }
            set {
                this.uriField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Id {
            get {
                return this.idField;
            }
            set {
                this.idField = value;
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://schemas.microsoft.com/vs/2009/dgml")]
    public partial class DirectedGraphStyle {
        
        private DirectedGraphStyleCondition conditionField;
        
        private DirectedGraphStyleSetter[] setterField;
        
        private TargetTypeEnum targetTypeField;
        
        private ClrBoolean isEnabledField;
        
        private bool isEnabledFieldSpecified;
        
        private string groupLabelField;
        
        private string valueLabelField;
        
        private string toolTipField;
        
        /// <remarks/>
        public DirectedGraphStyleCondition Condition {
            get {
                return this.conditionField;
            }
            set {
                this.conditionField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("Setter")]
        public DirectedGraphStyleSetter[] Setter {
            get {
                return this.setterField;
            }
            set {
                this.setterField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public TargetTypeEnum TargetType {
            get {
                return this.targetTypeField;
            }
            set {
                this.targetTypeField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ClrBoolean IsEnabled {
            get {
                return this.isEnabledField;
            }
            set {
                this.isEnabledField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool IsEnabledSpecified {
            get {
                return this.isEnabledFieldSpecified;
            }
            set {
                this.isEnabledFieldSpecified = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string GroupLabel {
            get {
                return this.groupLabelField;
            }
            set {
                this.groupLabelField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string ValueLabel {
            get {
                return this.valueLabelField;
            }
            set {
                this.valueLabelField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string ToolTip {
            get {
                return this.toolTipField;
            }
            set {
                this.toolTipField = value;
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://schemas.microsoft.com/vs/2009/dgml")]
    public partial class DirectedGraphStyleCondition {
        
        private string expressionField;
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Expression {
            get {
                return this.expressionField;
            }
            set {
                this.expressionField = value;
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://schemas.microsoft.com/vs/2009/dgml")]
    public partial class DirectedGraphStyleSetter {
        
        private PropertyType propertyField;
        
        private string valueField;
        
        private string expressionField;
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public PropertyType Property {
            get {
                return this.propertyField;
            }
            set {
                this.propertyField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Value {
            get {
                return this.valueField;
            }
            set {
                this.valueField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Expression {
            get {
                return this.expressionField;
            }
            set {
                this.expressionField = value;
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
    [System.SerializableAttribute()]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://schemas.microsoft.com/vs/2009/dgml")]
    public enum PropertyType {
        
        /// <remarks/>
        ArrowHeadSize,
        
        /// <remarks/>
        ArrowHeadWidth,
        
        /// <remarks/>
        Background,
        
        /// <remarks/>
        FontFamily,
        
        /// <remarks/>
        FontSize,
        
        /// <remarks/>
        FontStyle,
        
        /// <remarks/>
        FontWeight,
        
        /// <remarks/>
        Foreground,
        
        /// <remarks/>
        HorizontalAlignment,
        
        /// <remarks/>
        Icon,
        
        /// <remarks/>
        Image,
        
        /// <remarks/>
        MinWidth,
        
        /// <remarks/>
        MaxWidth,
        
        /// <remarks/>
        NodeRadius,
        
        /// <remarks/>
        SelectedStroke,
        
        /// <remarks/>
        ShadowDepth,
        
        /// <remarks/>
        Shape,
        
        /// <remarks/>
        Stroke,
        
        /// <remarks/>
        StrokeDashArray,
        
        /// <remarks/>
        StrokeThickness,
        
        /// <remarks/>
        Style,
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
    [System.SerializableAttribute()]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://schemas.microsoft.com/vs/2009/dgml")]
    public enum TargetTypeEnum {
        
        /// <remarks/>
        Node,
        
        /// <remarks/>
        Link,
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://schemas.microsoft.com/vs/2009/dgml")]
    public partial class DirectedGraphPath {
        
        private string idField;
        
        private string valueField;
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Id {
            get {
                return this.idField;
            }
            set {
                this.idField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Value {
            get {
                return this.valueField;
            }
            set {
                this.valueField = value;
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
    [System.SerializableAttribute()]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://schemas.microsoft.com/vs/2009/dgml")]
    public enum GraphDirectionEnum {
        
        /// <remarks/>
        TopToBottom,
        
        /// <remarks/>
        BottomToTop,
        
        /// <remarks/>
        LeftToRight,
        
        /// <remarks/>
        RightToLeft,
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
    [System.SerializableAttribute()]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://schemas.microsoft.com/vs/2009/dgml")]
    public enum LayoutEnum {
        
        /// <remarks/>
        None,
        
        /// <remarks/>
        Sugiyama,
        
        /// <remarks/>
        ForceDirected,
        
        /// <remarks/>
        DependencyMatrix,
    }
}
//Latest version is here: https://gist.github.com/7ec91c0ed627d9aa3b6cab0b5838b077.git
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Xml;
using System.Xml.Schema;
using System.Xml.Serialization;

namespace DgmlUtils
{
    public partial class DgmlBase
    {
        [XmlIgnore]
        public DirectedGraph Parent { get; set; }

        [XmlAnyElement]
        public XmlElement[] otherElements;
        [XmlAnyAttribute]
        public XmlAttribute[] otherAttributes;

        Dictionary<string, string> otherAttrsDictionary;
        [XmlIgnore]
        public Dictionary<string, string> OtherAttrsDictionary
        {
            get {
                if (otherAttrsDictionary == null)
                    otherAttrsDictionary = (otherAttributes?.ToDictionary(a => a.Name, a => a.Value))??new Dictionary<string, string>();
                return otherAttrsDictionary;
            }
        }

        Dictionary<string, XmlElement> otherElementsDictionary;
        [XmlIgnore]
        public Dictionary<string, XmlElement> OtherElementsDictionary
        {
            get
            {
                if (otherElementsDictionary == null)
                    otherElementsDictionary = (otherElements?.ToDictionary(a => a.Name, a => a)) ?? new Dictionary<string, XmlElement>();
                return otherElementsDictionary;
            }
        }


    }

    partial class DirectedGraph : DgmlBase
    {
        /// <summary>
        /// Created as a workaround to absense of OnDeserialized attribute, which does not work in XmlSerializer.
        /// This must be executed after deserialization in order to connect children to parent and so on
        /// </summary>
        public virtual void Initialize()
        {
            foreach (var node in this.Nodes)
            {
                node.Parent = this;
                NodeById[node.Id] = node;
            }
            foreach (var lnk in this.Links)
            {
                lnk.Parent = this;
                lnk.TargetNode.IncomingLinks.Add(lnk);
                lnk.SourceNode.OutgoingLinks.Add(lnk);
            }
        }

        [XmlIgnore]
        public Dictionary<string, DirectedGraphNode> NodeById { get; } = new Dictionary<string, DirectedGraphNode>();

        static readonly XmlSerializer xmlSerializer = new XmlSerializer(typeof(DirectedGraph));

        public static DirectedGraph ReadFrom(string filePath)
        {
            using (var xtr = System.IO.File.OpenRead(filePath))
            {
                var dg = xmlSerializer.Deserialize(xtr) as DirectedGraph;
                dg.Initialize();
                return dg;
            }
        }
    }

    partial class DirectedGraphNode : DgmlBase
    {
        [XmlIgnore]
        public List<DirectedGraphLink> IncomingLinks { get; } = new List<DirectedGraphLink>();
        [XmlIgnore]
        public List<DirectedGraphLink> OutgoingLinks { get; } = new List<DirectedGraphLink>();
    }

    partial class DirectedGraphLink: DgmlBase
    {
        [XmlIgnore]
        public DirectedGraphNode SourceNode { get { return Parent.NodeById[this.Source]; } }
        [XmlIgnore]
        public DirectedGraphNode TargetNode { get { return Parent.NodeById[this.Target]; } }

    }
}
using System;

namespace System
{
    internal class SerializableAttribute : Attribute
    {

    }
}

//namespace System.ComponentModel
//{
//    internal class DesignerCategoryAttribute: Attribute
//    {
//        public DesignerCategoryAttribute(string str)
//        {
//        }
//    }
//}