DynamoDS/Dynamo — pull request #3362 by vmoyseenko (2014-12-04 14:03:49+00:00)
Title: Dump library to XML. Added flattened list of nodes

#### Purpose

Currently dump is making a tree of nodes. This PR adds a flattened list of nodes. Node information is saved this list. To link nodes from Tree to nodes of Flattened list `FullName` property is used. Example of new file you can find in attachment of task [MAGN-5542](http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-5542).

#### Modifications

Using collections of assembly paths / names all nodes are dumped into 4 categories.

1. `Assemblies` - all loaded assemblies except those who are parts of packages.
2. `Packages` - all loaded packages. Here can be custom nodes and nodes which are members of packages assemblies.
3. `CustomNodes` - free custom nodes. These nodes are not members of any package.
4. `Specifics` - Builtin Functions and Operators.

##### Node modifications

To make separation described above next changes are needed on Node level.

1. Property `Dynamo.Nodes.Search.BrowserInternalElement.FullName` is specified automatically. Used as unique identifier.
2. Added property `Dynamo.Nodes.Search.BrowserInternalElement.Assembly` to know which assembly is owner of Node.
3. Added property `Dynamo.Nodes.Search.CustomNodeSearchElement.Package` to know to which package custom node is belong to. Can be empty.
4. Added property `Dynamo.Utilities.CustomNodeInfo.PackageName` to specify previous property.

#### Unit tests
![001](https://cloud.githubusercontent.com/assets/8158551/5299233/a094d61a-7bcd-11e4-962f-ee8413fe3fa3.PNG)

#### Additional references

[MAGN-5542](http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-5542).
[MAGN-5554](http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-5554).

First PR in "Dump library to XML" series: https://github.com/DynamoDS/Dynamo/pull/3270.

#### Reviewers

@sharadkjaiswal, please, take a look.
@pboyer, could you please take a look? Especially on node changes.
@aparajit-pratap, can your `Dynamo.DynamoLoader.Utilities.DumpLibrarySnapshot` function be removed as the one which is replaced by proposed functionality?