DynamoDS/Dynamo — pull request #3191 by aparajit-pratap (2014-11-19 05:36:46+00:00)
Title: Skip importing zero-touch methods with out and ref parameters - fix MAGN-5261

This submission fixes an [issue] (http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-5261) with Dynamo crashing in auto-complete after importing `DynamoMathematica` package.

### Background
When installing the `DynamoMathematica` package, both `DynamoMathematica` and the `Wolfram` library it is dependent on, get imported into the VM and into the Library while one would expect only the node library to install and not its dependencies when installing a package. This is because there is no way the package manager can automatically infer which is the node library to be imported from a package comprising a bunch of assemblies.

This causes the entire `Wolfram` library to be imported into the VM including some `System` types that it in turn depends on, which bloats up the VM as well as the Library and makes all of these classes available to users while they should be hidden. (The `DynamoMathematica` library comprises of just a single class with about 4 methods that need to be exposed.)

The FFI does not support zero-touch (C#) functions that accept `ref` and `out` parameters as these nodes would need to be special multi-outport nodes that would return more than one value. Such functions were found in the `Wolfram` assembly and as a result of these `ref` and `out` parameters, their corresponding types contain special characters such as square brackets and `&` in their names. As the syntax highlighting `Regex` rules expect only alpha-numeric names for classes, the `Regex` fails and hence the crash. This has been logged as an improvement task [here] (http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-5460) to tweak the FFI to support such functions.

### Fix
Skip importing zero-touch methods with `out` and `ref` parameters as these are not supported currently.

@sharadkjaiswal please review.