Add the tests used to bring the System V struct passing/returning functionality.
authorLubomir Litchev <lubol@microsoft.com>
Sun, 15 Nov 2015 23:24:35 +0000 (15:24 -0800)
committerLubomir Litchev <lubol@microsoft.com>
Wed, 18 Nov 2015 13:32:32 +0000 (05:32 -0800)
There are:
1. Tests for passing managed struct.\
2. Tests for returning managed structs.
3. Tests for PInvoke and reverse PInvoke using callbacks and native SO.

tests/src/JIT/Methodical/structs/systemvbringup/CMakeLists.txt [new file with mode: 0644]
tests/src/JIT/Methodical/structs/systemvbringup/project.json [new file with mode: 0644]
tests/src/JIT/Methodical/structs/systemvbringup/project.lock.json [new file with mode: 0644]
tests/src/JIT/Methodical/structs/systemvbringup/structinregs.cpp [new file with mode: 0644]
tests/src/JIT/Methodical/structs/systemvbringup/structinregs.csproj [new file with mode: 0644]
tests/src/JIT/Methodical/structs/systemvbringup/structinregs.def [new file with mode: 0644]
tests/src/JIT/Methodical/structs/systemvbringup/structpasstest.cs [new file with mode: 0644]
tests/src/JIT/Methodical/structs/systemvbringup/structpasstest1.cs [new file with mode: 0644]
tests/src/JIT/Methodical/structs/systemvbringup/structpinvoketests.cs [new file with mode: 0644]
tests/src/JIT/Methodical/structs/systemvbringup/structrettest.cs [new file with mode: 0644]

diff --git a/tests/src/JIT/Methodical/structs/systemvbringup/CMakeLists.txt b/tests/src/JIT/Methodical/structs/systemvbringup/CMakeLists.txt
new file mode 100644 (file)
index 0000000..f4a3253
--- /dev/null
@@ -0,0 +1,13 @@
+cmake_minimum_required(VERSION 2.6)
+project(jitstructtests)
+
+set(CMAKE_SHARED_LIBRARY_PREFIX "")
+
+set(SOURCES structinregs.cpp structinregs.def)
+add_library(jitstructtests_lib SHARED ${SOURCES})
+
+# add the install targets (this "installs" the native file on Windows systems)
+install(TARGETS jitstructtests_lib DESTINATION bin)
+
+# This "installs" the native file on System V systems
+set_target_properties(jitstructtests_lib PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/structinregs)
diff --git a/tests/src/JIT/Methodical/structs/systemvbringup/project.json b/tests/src/JIT/Methodical/structs/systemvbringup/project.json
new file mode 100644 (file)
index 0000000..f8f0568
--- /dev/null
@@ -0,0 +1,10 @@
+{
+  "dependencies": {
+    "System.Runtime": "4.0.20-beta-23302",
+    "System.Runtime.InteropServices": "4.0.20-beta-23302",
+    "System.Console": "4.0.0-beta-23302",
+  },
+  "frameworks": {
+    "dnxcore50": {}
+  }
+}
diff --git a/tests/src/JIT/Methodical/structs/systemvbringup/project.lock.json b/tests/src/JIT/Methodical/structs/systemvbringup/project.lock.json
new file mode 100644 (file)
index 0000000..24beeb6
--- /dev/null
@@ -0,0 +1,2615 @@
+{
+  "locked": true,
+  "version": -9996,
+  "targets": {
+    "DNXCore,Version=v5.0": {
+      "System.Console/4.0.0-beta-23302": {
+        "dependencies": {
+          "System.Runtime": "4.0.20",
+          "System.Runtime.InteropServices": "4.0.20",
+          "System.Resources.ResourceManager": "4.0.0",
+          "System.IO.FileSystem.Primitives": "4.0.0",
+          "System.IO": "4.0.10",
+          "System.Threading.Tasks": "4.0.10",
+          "System.Text.Encoding": "4.0.10",
+          "System.Threading": "4.0.10",
+          "System.Text.Encoding.Extensions": "4.0.10"
+        },
+        "compile": {
+          "ref/dotnet/System.Console.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Console.dll": {}
+        }
+      },
+      "System.Globalization/4.0.0": {
+        "dependencies": {
+          "System.Runtime": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Globalization.dll": {}
+        }
+      },
+      "System.IO/4.0.10": {
+        "dependencies": {
+          "System.Runtime": "4.0.20",
+          "System.Text.Encoding": "4.0.0",
+          "System.Threading.Tasks": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.IO.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.IO.dll": {}
+        }
+      },
+      "System.IO.FileSystem.Primitives/4.0.0": {
+        "dependencies": {
+          "System.Runtime": "4.0.20"
+        },
+        "compile": {
+          "ref/dotnet/System.IO.FileSystem.Primitives.dll": {}
+        },
+        "runtime": {
+          "lib/dotnet/System.IO.FileSystem.Primitives.dll": {}
+        }
+      },
+      "System.Private.Uri/4.0.0": {
+        "runtime": {
+          "lib/DNXCore50/System.Private.Uri.dll": {}
+        }
+      },
+      "System.Reflection/4.0.0": {
+        "dependencies": {
+          "System.IO": "4.0.0",
+          "System.Reflection.Primitives": "4.0.0",
+          "System.Runtime": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Reflection.dll": {}
+        }
+      },
+      "System.Reflection.Primitives/4.0.0": {
+        "dependencies": {
+          "System.Runtime": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Reflection.Primitives.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Reflection.Primitives.dll": {}
+        }
+      },
+      "System.Resources.ResourceManager/4.0.0": {
+        "dependencies": {
+          "System.Runtime": "4.0.0",
+          "System.Reflection": "4.0.0",
+          "System.Globalization": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Resources.ResourceManager.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Resources.ResourceManager.dll": {}
+        }
+      },
+      "System.Runtime/4.0.20": {
+        "dependencies": {
+          "System.Private.Uri": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Runtime.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Runtime.dll": {}
+        }
+      },
+      "System.Runtime.Handles/4.0.0": {
+        "dependencies": {
+          "System.Runtime": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Runtime.Handles.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Runtime.Handles.dll": {}
+        }
+      },
+      "System.Runtime.InteropServices/4.0.20": {
+        "dependencies": {
+          "System.Runtime": "4.0.0",
+          "System.Reflection": "4.0.0",
+          "System.Reflection.Primitives": "4.0.0",
+          "System.Runtime.Handles": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Runtime.InteropServices.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Runtime.InteropServices.dll": {}
+        }
+      },
+      "System.Text.Encoding/4.0.10": {
+        "dependencies": {
+          "System.Runtime": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Text.Encoding.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Text.Encoding.dll": {}
+        }
+      },
+      "System.Text.Encoding.Extensions/4.0.10": {
+        "dependencies": {
+          "System.Runtime": "4.0.0",
+          "System.Text.Encoding": "4.0.10"
+        },
+        "compile": {
+          "ref/dotnet/System.Text.Encoding.Extensions.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Text.Encoding.Extensions.dll": {}
+        }
+      },
+      "System.Threading/4.0.10": {
+        "dependencies": {
+          "System.Runtime": "4.0.0",
+          "System.Threading.Tasks": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Threading.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Threading.dll": {}
+        }
+      },
+      "System.Threading.Tasks/4.0.10": {
+        "dependencies": {
+          "System.Runtime": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Threading.Tasks.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Threading.Tasks.dll": {}
+        }
+      }
+    }
+  },
+  "libraries": {
+    "System.Console/4.0.0-beta-23302": {
+      "serviceable": true,
+      "sha512": "rpWEkJWW29TjVZdDz5zr8VnBv4IN9BQHmP4Ky9tEbvkdhkJRb0ZO59acXMpVD1tSM2VhGlLnq0kpdjOLNmejNA==",
+      "files": [
+        "System.Console.4.0.0-beta-23302.nupkg",
+        "System.Console.4.0.0-beta-23302.nupkg.sha512",
+        "System.Console.nuspec",
+        "lib/DNXCore50/System.Console.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/System.Console.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Console.dll",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/System.Console.dll",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._"
+      ]
+    },
+    "System.Globalization/4.0.0": {
+      "sha512": "IBJyTo1y7ZtzzoJUA60T1XPvNTyw/wfFmjFoBFtlYfkekIOtD/AzDDIg0YdUa7eNtFEfliED2R7HdppTdU4t5A==",
+      "files": [
+        "License.rtf",
+        "System.Globalization.4.0.0.nupkg",
+        "System.Globalization.4.0.0.nupkg.sha512",
+        "System.Globalization.nuspec",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net45/_._",
+        "lib/win8/_._",
+        "lib/wp80/_._",
+        "lib/wpa81/_._",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Globalization.dll",
+        "ref/dotnet/System.Globalization.xml",
+        "ref/dotnet/de/System.Globalization.xml",
+        "ref/dotnet/es/System.Globalization.xml",
+        "ref/dotnet/fr/System.Globalization.xml",
+        "ref/dotnet/it/System.Globalization.xml",
+        "ref/dotnet/ja/System.Globalization.xml",
+        "ref/dotnet/ko/System.Globalization.xml",
+        "ref/dotnet/ru/System.Globalization.xml",
+        "ref/dotnet/zh-hans/System.Globalization.xml",
+        "ref/dotnet/zh-hant/System.Globalization.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net45/_._",
+        "ref/netcore50/System.Globalization.dll",
+        "ref/netcore50/System.Globalization.xml",
+        "ref/netcore50/de/System.Globalization.xml",
+        "ref/netcore50/es/System.Globalization.xml",
+        "ref/netcore50/fr/System.Globalization.xml",
+        "ref/netcore50/it/System.Globalization.xml",
+        "ref/netcore50/ja/System.Globalization.xml",
+        "ref/netcore50/ko/System.Globalization.xml",
+        "ref/netcore50/ru/System.Globalization.xml",
+        "ref/netcore50/zh-hans/System.Globalization.xml",
+        "ref/netcore50/zh-hant/System.Globalization.xml",
+        "ref/win8/_._",
+        "ref/wp80/_._",
+        "ref/wpa81/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._"
+      ]
+    },
+    "System.IO/4.0.10": {
+      "serviceable": true,
+      "sha512": "kghf1CeYT+W2lw8a50/GxFz5HR9t6RkL4BvjxtTp1NxtEFWywnMA9W8FH/KYXiDNThcw9u/GOViDON4iJFGXIQ==",
+      "files": [
+        "System.IO.4.0.10.nupkg",
+        "System.IO.4.0.10.nupkg.sha512",
+        "System.IO.nuspec",
+        "lib/DNXCore50/System.IO.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.IO.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.IO.dll",
+        "ref/dotnet/System.IO.xml",
+        "ref/dotnet/de/System.IO.xml",
+        "ref/dotnet/es/System.IO.xml",
+        "ref/dotnet/fr/System.IO.xml",
+        "ref/dotnet/it/System.IO.xml",
+        "ref/dotnet/ja/System.IO.xml",
+        "ref/dotnet/ko/System.IO.xml",
+        "ref/dotnet/ru/System.IO.xml",
+        "ref/dotnet/zh-hans/System.IO.xml",
+        "ref/dotnet/zh-hant/System.IO.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.IO.dll"
+      ]
+    },
+    "System.IO.FileSystem.Primitives/4.0.0": {
+      "serviceable": true,
+      "sha512": "7pJUvYi/Yq3A5nagqCCiOw3+aJp3xXc/Cjr8dnJDnER3/6kX3LEencfqmXUcPl9+7OvRNyPMNhqsLAcMK6K/KA==",
+      "files": [
+        "System.IO.FileSystem.Primitives.4.0.0.nupkg",
+        "System.IO.FileSystem.Primitives.4.0.0.nupkg.sha512",
+        "System.IO.FileSystem.Primitives.nuspec",
+        "lib/dotnet/System.IO.FileSystem.Primitives.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/System.IO.FileSystem.Primitives.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.IO.FileSystem.Primitives.dll",
+        "ref/dotnet/System.IO.FileSystem.Primitives.xml",
+        "ref/dotnet/de/System.IO.FileSystem.Primitives.xml",
+        "ref/dotnet/es/System.IO.FileSystem.Primitives.xml",
+        "ref/dotnet/fr/System.IO.FileSystem.Primitives.xml",
+        "ref/dotnet/it/System.IO.FileSystem.Primitives.xml",
+        "ref/dotnet/ja/System.IO.FileSystem.Primitives.xml",
+        "ref/dotnet/ko/System.IO.FileSystem.Primitives.xml",
+        "ref/dotnet/ru/System.IO.FileSystem.Primitives.xml",
+        "ref/dotnet/zh-hans/System.IO.FileSystem.Primitives.xml",
+        "ref/dotnet/zh-hant/System.IO.FileSystem.Primitives.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/System.IO.FileSystem.Primitives.dll",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._"
+      ]
+    },
+    "System.Private.Uri/4.0.0": {
+      "serviceable": true,
+      "sha512": "CtuxaCKcRIvPcsqquVl3mPp79EDZPMr2UogfiFCxCs+t2z1VjbpQsKNs1GHZ8VQetqbk1mr0V1yAfMe6y8CHDA==",
+      "files": [
+        "System.Private.Uri.4.0.0.nupkg",
+        "System.Private.Uri.4.0.0.nupkg.sha512",
+        "System.Private.Uri.nuspec",
+        "lib/DNXCore50/System.Private.Uri.dll",
+        "lib/netcore50/System.Private.Uri.dll",
+        "ref/dnxcore50/_._",
+        "ref/netcore50/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Private.Uri.dll"
+      ]
+    },
+    "System.Reflection/4.0.0": {
+      "sha512": "g96Rn8XuG7y4VfxPj/jnXroRJdQ8L3iN3k3zqsuzk4k3Nq4KMXARYiIO4BLW4GwX06uQpuYwRMcAC/aF117knQ==",
+      "files": [
+        "License.rtf",
+        "System.Reflection.4.0.0.nupkg",
+        "System.Reflection.4.0.0.nupkg.sha512",
+        "System.Reflection.nuspec",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net45/_._",
+        "lib/win8/_._",
+        "lib/wp80/_._",
+        "lib/wpa81/_._",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Reflection.dll",
+        "ref/dotnet/System.Reflection.xml",
+        "ref/dotnet/de/System.Reflection.xml",
+        "ref/dotnet/es/System.Reflection.xml",
+        "ref/dotnet/fr/System.Reflection.xml",
+        "ref/dotnet/it/System.Reflection.xml",
+        "ref/dotnet/ja/System.Reflection.xml",
+        "ref/dotnet/ko/System.Reflection.xml",
+        "ref/dotnet/ru/System.Reflection.xml",
+        "ref/dotnet/zh-hans/System.Reflection.xml",
+        "ref/dotnet/zh-hant/System.Reflection.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net45/_._",
+        "ref/netcore50/System.Reflection.dll",
+        "ref/netcore50/System.Reflection.xml",
+        "ref/netcore50/de/System.Reflection.xml",
+        "ref/netcore50/es/System.Reflection.xml",
+        "ref/netcore50/fr/System.Reflection.xml",
+        "ref/netcore50/it/System.Reflection.xml",
+        "ref/netcore50/ja/System.Reflection.xml",
+        "ref/netcore50/ko/System.Reflection.xml",
+        "ref/netcore50/ru/System.Reflection.xml",
+        "ref/netcore50/zh-hans/System.Reflection.xml",
+        "ref/netcore50/zh-hant/System.Reflection.xml",
+        "ref/win8/_._",
+        "ref/wp80/_._",
+        "ref/wpa81/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._"
+      ]
+    },
+    "System.Reflection.Primitives/4.0.0": {
+      "serviceable": true,
+      "sha512": "n9S0XpKv2ruc17FSnaiX6nV47VfHTZ1wLjKZlAirUZCvDQCH71mVp+Ohabn0xXLh5pK2PKp45HCxkqu5Fxn/lA==",
+      "files": [
+        "System.Reflection.Primitives.4.0.0.nupkg",
+        "System.Reflection.Primitives.4.0.0.nupkg.sha512",
+        "System.Reflection.Primitives.nuspec",
+        "lib/DNXCore50/System.Reflection.Primitives.dll",
+        "lib/net45/_._",
+        "lib/netcore50/System.Reflection.Primitives.dll",
+        "lib/win8/_._",
+        "lib/wp80/_._",
+        "lib/wpa81/_._",
+        "ref/dotnet/System.Reflection.Primitives.dll",
+        "ref/dotnet/System.Reflection.Primitives.xml",
+        "ref/dotnet/de/System.Reflection.Primitives.xml",
+        "ref/dotnet/es/System.Reflection.Primitives.xml",
+        "ref/dotnet/fr/System.Reflection.Primitives.xml",
+        "ref/dotnet/it/System.Reflection.Primitives.xml",
+        "ref/dotnet/ja/System.Reflection.Primitives.xml",
+        "ref/dotnet/ko/System.Reflection.Primitives.xml",
+        "ref/dotnet/ru/System.Reflection.Primitives.xml",
+        "ref/dotnet/zh-hans/System.Reflection.Primitives.xml",
+        "ref/dotnet/zh-hant/System.Reflection.Primitives.xml",
+        "ref/net45/_._",
+        "ref/netcore50/System.Reflection.Primitives.dll",
+        "ref/netcore50/System.Reflection.Primitives.xml",
+        "ref/win8/_._",
+        "ref/wp80/_._",
+        "ref/wpa81/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Reflection.Primitives.dll"
+      ]
+    },
+    "System.Resources.ResourceManager/4.0.0": {
+      "serviceable": true,
+      "sha512": "qmqeZ4BJgjfU+G2JbrZt4Dk1LsMxO4t+f/9HarNY6w8pBgweO6jT+cknUH7c3qIrGvyUqraBhU45Eo6UtA0fAw==",
+      "files": [
+        "System.Resources.ResourceManager.4.0.0.nupkg",
+        "System.Resources.ResourceManager.4.0.0.nupkg.sha512",
+        "System.Resources.ResourceManager.nuspec",
+        "lib/DNXCore50/System.Resources.ResourceManager.dll",
+        "lib/net45/_._",
+        "lib/netcore50/System.Resources.ResourceManager.dll",
+        "lib/win8/_._",
+        "lib/wp80/_._",
+        "lib/wpa81/_._",
+        "ref/dotnet/System.Resources.ResourceManager.dll",
+        "ref/dotnet/System.Resources.ResourceManager.xml",
+        "ref/dotnet/de/System.Resources.ResourceManager.xml",
+        "ref/dotnet/es/System.Resources.ResourceManager.xml",
+        "ref/dotnet/fr/System.Resources.ResourceManager.xml",
+        "ref/dotnet/it/System.Resources.ResourceManager.xml",
+        "ref/dotnet/ja/System.Resources.ResourceManager.xml",
+        "ref/dotnet/ko/System.Resources.ResourceManager.xml",
+        "ref/dotnet/ru/System.Resources.ResourceManager.xml",
+        "ref/dotnet/zh-hans/System.Resources.ResourceManager.xml",
+        "ref/dotnet/zh-hant/System.Resources.ResourceManager.xml",
+        "ref/net45/_._",
+        "ref/netcore50/System.Resources.ResourceManager.dll",
+        "ref/netcore50/System.Resources.ResourceManager.xml",
+        "ref/win8/_._",
+        "ref/wp80/_._",
+        "ref/wpa81/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Resources.ResourceManager.dll"
+      ]
+    },
+    "System.Runtime/4.0.20": {
+      "serviceable": true,
+      "sha512": "X7N/9Bz7jVPorqdVFO86ns1sX6MlQM+WTxELtx+Z4VG45x9+LKmWH0GRqjgKprUnVuwmfB9EJ9DQng14Z7/zwg==",
+      "files": [
+        "System.Runtime.4.0.20.nupkg",
+        "System.Runtime.4.0.20.nupkg.sha512",
+        "System.Runtime.nuspec",
+        "lib/DNXCore50/System.Runtime.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.Runtime.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Runtime.dll",
+        "ref/dotnet/System.Runtime.xml",
+        "ref/dotnet/de/System.Runtime.xml",
+        "ref/dotnet/es/System.Runtime.xml",
+        "ref/dotnet/fr/System.Runtime.xml",
+        "ref/dotnet/it/System.Runtime.xml",
+        "ref/dotnet/ja/System.Runtime.xml",
+        "ref/dotnet/ko/System.Runtime.xml",
+        "ref/dotnet/ru/System.Runtime.xml",
+        "ref/dotnet/zh-hans/System.Runtime.xml",
+        "ref/dotnet/zh-hant/System.Runtime.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Runtime.dll"
+      ]
+    },
+    "System.Runtime.Handles/4.0.0": {
+      "serviceable": true,
+      "sha512": "638VhpRq63tVcQ6HDb3um3R/J2BtR1Sa96toHo6PcJGPXEPEsleCuqhBgX2gFCz0y0qkutANwW6VPPY5wQu1XQ==",
+      "files": [
+        "System.Runtime.Handles.4.0.0.nupkg",
+        "System.Runtime.Handles.4.0.0.nupkg.sha512",
+        "System.Runtime.Handles.nuspec",
+        "lib/DNXCore50/System.Runtime.Handles.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.Runtime.Handles.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Runtime.Handles.dll",
+        "ref/dotnet/System.Runtime.Handles.xml",
+        "ref/dotnet/de/System.Runtime.Handles.xml",
+        "ref/dotnet/es/System.Runtime.Handles.xml",
+        "ref/dotnet/fr/System.Runtime.Handles.xml",
+        "ref/dotnet/it/System.Runtime.Handles.xml",
+        "ref/dotnet/ja/System.Runtime.Handles.xml",
+        "ref/dotnet/ko/System.Runtime.Handles.xml",
+        "ref/dotnet/ru/System.Runtime.Handles.xml",
+        "ref/dotnet/zh-hans/System.Runtime.Handles.xml",
+        "ref/dotnet/zh-hant/System.Runtime.Handles.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Runtime.Handles.dll"
+      ]
+    },
+    "System.Runtime.InteropServices/4.0.20": {
+      "serviceable": true,
+      "sha512": "ZgDyBYfEnjWoz/viS6VOswA6XOkDSH2DzgbpczbW50RywhnCgTl+w3JEvtAiOGyIh8cyx1NJq80jsNBSUr8Pig==",
+      "files": [
+        "System.Runtime.InteropServices.4.0.20.nupkg",
+        "System.Runtime.InteropServices.4.0.20.nupkg.sha512",
+        "System.Runtime.InteropServices.nuspec",
+        "lib/DNXCore50/System.Runtime.InteropServices.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.Runtime.InteropServices.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Runtime.InteropServices.dll",
+        "ref/dotnet/System.Runtime.InteropServices.xml",
+        "ref/dotnet/de/System.Runtime.InteropServices.xml",
+        "ref/dotnet/es/System.Runtime.InteropServices.xml",
+        "ref/dotnet/fr/System.Runtime.InteropServices.xml",
+        "ref/dotnet/it/System.Runtime.InteropServices.xml",
+        "ref/dotnet/ja/System.Runtime.InteropServices.xml",
+        "ref/dotnet/ko/System.Runtime.InteropServices.xml",
+        "ref/dotnet/ru/System.Runtime.InteropServices.xml",
+        "ref/dotnet/zh-hans/System.Runtime.InteropServices.xml",
+        "ref/dotnet/zh-hant/System.Runtime.InteropServices.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Runtime.InteropServices.dll"
+      ]
+    },
+    "System.Text.Encoding/4.0.10": {
+      "sha512": "fNlSFgy4OuDlJrP9SFFxMlaLazq6ipv15sU5TiEgg9UCVnA/OgoVUfymFp4AOk1jOkW5SVxWbeeIUptcM+m/Vw==",
+      "files": [
+        "System.Text.Encoding.4.0.10.nupkg",
+        "System.Text.Encoding.4.0.10.nupkg.sha512",
+        "System.Text.Encoding.nuspec",
+        "lib/DNXCore50/System.Text.Encoding.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.Text.Encoding.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Text.Encoding.dll",
+        "ref/dotnet/System.Text.Encoding.xml",
+        "ref/dotnet/de/System.Text.Encoding.xml",
+        "ref/dotnet/es/System.Text.Encoding.xml",
+        "ref/dotnet/fr/System.Text.Encoding.xml",
+        "ref/dotnet/it/System.Text.Encoding.xml",
+        "ref/dotnet/ja/System.Text.Encoding.xml",
+        "ref/dotnet/ko/System.Text.Encoding.xml",
+        "ref/dotnet/ru/System.Text.Encoding.xml",
+        "ref/dotnet/zh-hans/System.Text.Encoding.xml",
+        "ref/dotnet/zh-hant/System.Text.Encoding.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Text.Encoding.dll"
+      ]
+    },
+    "System.Text.Encoding.Extensions/4.0.10": {
+      "sha512": "TZvlwXMxKo3bSRIcsWZLCIzIhLbvlz+mGeKYRZv/zUiSoQzGOwkYeBu6hOw2XPQgKqT0F4Rv8zqKdvmp2fWKYg==",
+      "files": [
+        "System.Text.Encoding.Extensions.4.0.10.nupkg",
+        "System.Text.Encoding.Extensions.4.0.10.nupkg.sha512",
+        "System.Text.Encoding.Extensions.nuspec",
+        "lib/DNXCore50/System.Text.Encoding.Extensions.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.Text.Encoding.Extensions.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Text.Encoding.Extensions.dll",
+        "ref/dotnet/System.Text.Encoding.Extensions.xml",
+        "ref/dotnet/de/System.Text.Encoding.Extensions.xml",
+        "ref/dotnet/es/System.Text.Encoding.Extensions.xml",
+        "ref/dotnet/fr/System.Text.Encoding.Extensions.xml",
+        "ref/dotnet/it/System.Text.Encoding.Extensions.xml",
+        "ref/dotnet/ja/System.Text.Encoding.Extensions.xml",
+        "ref/dotnet/ko/System.Text.Encoding.Extensions.xml",
+        "ref/dotnet/ru/System.Text.Encoding.Extensions.xml",
+        "ref/dotnet/zh-hans/System.Text.Encoding.Extensions.xml",
+        "ref/dotnet/zh-hant/System.Text.Encoding.Extensions.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Text.Encoding.Extensions.dll"
+      ]
+    },
+    "System.Threading/4.0.10": {
+      "serviceable": true,
+      "sha512": "0w6pRxIEE7wuiOJeKabkDgeIKmqf4ER1VNrs6qFwHnooEE78yHwi/bKkg5Jo8/pzGLm0xQJw0nEmPXt1QBAIUA==",
+      "files": [
+        "System.Threading.4.0.10.nupkg",
+        "System.Threading.4.0.10.nupkg.sha512",
+        "System.Threading.nuspec",
+        "lib/DNXCore50/System.Threading.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.Threading.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Threading.dll",
+        "ref/dotnet/System.Threading.xml",
+        "ref/dotnet/de/System.Threading.xml",
+        "ref/dotnet/es/System.Threading.xml",
+        "ref/dotnet/fr/System.Threading.xml",
+        "ref/dotnet/it/System.Threading.xml",
+        "ref/dotnet/ja/System.Threading.xml",
+        "ref/dotnet/ko/System.Threading.xml",
+        "ref/dotnet/ru/System.Threading.xml",
+        "ref/dotnet/zh-hans/System.Threading.xml",
+        "ref/dotnet/zh-hant/System.Threading.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Threading.dll"
+      ]
+    },
+    "System.Threading.Tasks/4.0.10": {
+      "serviceable": true,
+      "sha512": "NOwJGDfk79jR0bnzosbXLVD/PdI8KzBeESoa3CofEM5v9R5EBfcI0Jyf18stx+0IYV9okmDIDxVtxq9TbnR9bQ==",
+      "files": [
+        "System.Threading.Tasks.4.0.10.nupkg",
+        "System.Threading.Tasks.4.0.10.nupkg.sha512",
+        "System.Threading.Tasks.nuspec",
+        "lib/DNXCore50/System.Threading.Tasks.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.Threading.Tasks.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Threading.Tasks.dll",
+        "ref/dotnet/System.Threading.Tasks.xml",
+        "ref/dotnet/de/System.Threading.Tasks.xml",
+        "ref/dotnet/es/System.Threading.Tasks.xml",
+        "ref/dotnet/fr/System.Threading.Tasks.xml",
+        "ref/dotnet/it/System.Threading.Tasks.xml",
+        "ref/dotnet/ja/System.Threading.Tasks.xml",
+        "ref/dotnet/ko/System.Threading.Tasks.xml",
+        "ref/dotnet/ru/System.Threading.Tasks.xml",
+        "ref/dotnet/zh-hans/System.Threading.Tasks.xml",
+        "ref/dotnet/zh-hant/System.Threading.Tasks.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Threading.Tasks.dll"
+      ]
+    }
+  },
+  "projectFileDependencyGroups": {
+    "": [
+      "System.Runtime >= 4.0.20-beta-23302",
+      "System.Runtime.InteropServices >= 4.0.20-beta-23302",
+      "System.Console >= 4.0.0-beta-23302"
+    ],
+    "DNXCore,Version=v5.0": []
+  }
+}
+{
+  "locked": true,
+  "version": -9996,
+  "targets": {
+    "DNXCore,Version=v5.0": {
+      "Microsoft.Win32.Primitives/4.0.0": {
+        "dependencies": {
+          "System.Runtime": "4.0.20",
+          "System.Runtime.InteropServices": "4.0.20"
+        },
+        "compile": {
+          "ref/dotnet/Microsoft.Win32.Primitives.dll": {}
+        },
+        "runtime": {
+          "lib/dotnet/Microsoft.Win32.Primitives.dll": {}
+        }
+      },
+      "Microsoft.Win32.Registry/4.0.0-beta-23302": {
+        "dependencies": {
+          "System.Runtime": "4.0.20",
+          "System.Runtime.InteropServices": "4.0.20",
+          "System.Resources.ResourceManager": "4.0.0",
+          "System.Runtime.Handles": "4.0.0",
+          "System.Collections": "4.0.10",
+          "System.Runtime.Extensions": "4.0.10",
+          "System.Globalization": "4.0.10"
+        },
+        "compile": {
+          "ref/dotnet/Microsoft.Win32.Registry.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/Microsoft.Win32.Registry.dll": {}
+        }
+      },
+      "System.Collections/4.0.10": {
+        "dependencies": {
+          "System.Runtime": "4.0.20"
+        },
+        "compile": {
+          "ref/dotnet/System.Collections.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Collections.dll": {}
+        }
+      },
+      "System.Collections.NonGeneric/4.0.1-beta-23302": {
+        "dependencies": {
+          "System.Runtime": "4.0.20",
+          "System.Globalization": "4.0.10",
+          "System.Resources.ResourceManager": "4.0.0",
+          "System.Diagnostics.Debug": "4.0.10",
+          "System.Threading": "4.0.10",
+          "System.Runtime.Extensions": "4.0.10"
+        },
+        "compile": {
+          "ref/dotnet/System.Collections.NonGeneric.dll": {}
+        },
+        "runtime": {
+          "lib/dotnet/System.Collections.NonGeneric.dll": {}
+        }
+      },
+      "System.Collections.Specialized/4.0.1-beta-23302": {
+        "dependencies": {
+          "System.Runtime": "4.0.20",
+          "System.Resources.ResourceManager": "4.0.0",
+          "System.Collections.NonGeneric": "4.0.0",
+          "System.Globalization.Extensions": "4.0.0",
+          "System.Runtime.Extensions": "4.0.10",
+          "System.Threading": "4.0.10",
+          "System.Globalization": "4.0.10"
+        },
+        "compile": {
+          "ref/dotnet/System.Collections.Specialized.dll": {}
+        },
+        "runtime": {
+          "lib/dotnet/System.Collections.Specialized.dll": {}
+        }
+      },
+      "System.ComponentModel/4.0.1-beta-23302": {
+        "dependencies": {
+          "System.Runtime": "4.0.20"
+        },
+        "compile": {
+          "ref/dotnet/System.ComponentModel.dll": {}
+        },
+        "runtime": {
+          "lib/dotnet/System.ComponentModel.dll": {}
+        }
+      },
+      "System.Console/4.0.0-beta-23302": {
+        "dependencies": {
+          "System.Runtime": "4.0.20",
+          "System.Runtime.InteropServices": "4.0.20",
+          "System.Resources.ResourceManager": "4.0.0",
+          "System.IO.FileSystem.Primitives": "4.0.0",
+          "System.IO": "4.0.10",
+          "System.Threading.Tasks": "4.0.10",
+          "System.Text.Encoding": "4.0.10",
+          "System.Threading": "4.0.10",
+          "System.Text.Encoding.Extensions": "4.0.10"
+        },
+        "compile": {
+          "ref/dotnet/System.Console.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Console.dll": {}
+        }
+      },
+      "System.Diagnostics.Debug/4.0.10": {
+        "dependencies": {
+          "System.Runtime": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Diagnostics.Debug.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Diagnostics.Debug.dll": {}
+        }
+      },
+      "System.Diagnostics.Process/4.0.0-beta-23302": {
+        "dependencies": {
+          "System.Runtime": "4.0.20",
+          "System.Runtime.InteropServices": "4.0.20",
+          "System.Resources.ResourceManager": "4.0.0",
+          "System.Runtime.Handles": "4.0.0",
+          "System.IO.FileSystem": "4.0.0",
+          "Microsoft.Win32.Registry": "4.0.0-beta-23302",
+          "Microsoft.Win32.Primitives": "4.0.0",
+          "System.IO.FileSystem.Primitives": "4.0.0",
+          "System.Threading.Thread": "4.0.0-beta-23302",
+          "System.Text.Encoding": "4.0.10",
+          "System.IO": "4.0.10",
+          "System.Threading.Tasks": "4.0.10",
+          "System.Collections": "4.0.10",
+          "System.Diagnostics.Debug": "4.0.10",
+          "System.Threading.ThreadPool": "4.0.10-beta-23302",
+          "System.Globalization": "4.0.10",
+          "System.Text.Encoding.Extensions": "4.0.10",
+          "System.Threading": "4.0.10",
+          "System.Runtime.Extensions": "4.0.10"
+        },
+        "compile": {
+          "ref/dotnet/System.Diagnostics.Process.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Diagnostics.Process.dll": {}
+        }
+      },
+      "System.Diagnostics.Tools/4.0.0": {
+        "dependencies": {
+          "System.Runtime": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Diagnostics.Tools.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Diagnostics.Tools.dll": {}
+        }
+      },
+      "System.Globalization/4.0.10": {
+        "dependencies": {
+          "System.Runtime": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Globalization.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Globalization.dll": {}
+        }
+      },
+      "System.Globalization.Calendars/4.0.0": {
+        "dependencies": {
+          "System.Runtime": "4.0.0",
+          "System.Globalization": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Globalization.Calendars.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Globalization.Calendars.dll": {}
+        }
+      },
+      "System.Globalization.Extensions/4.0.0": {
+        "dependencies": {
+          "System.Runtime": "4.0.20",
+          "System.Runtime.Extensions": "4.0.10",
+          "System.Globalization": "4.0.10",
+          "System.Runtime.InteropServices": "4.0.20",
+          "System.Resources.ResourceManager": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Globalization.Extensions.dll": {}
+        },
+        "runtime": {
+          "lib/dotnet/System.Globalization.Extensions.dll": {}
+        }
+      },
+      "System.IO/4.0.10": {
+        "dependencies": {
+          "System.Runtime": "4.0.20",
+          "System.Text.Encoding": "4.0.0",
+          "System.Threading.Tasks": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.IO.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.IO.dll": {}
+        }
+      },
+      "System.IO.FileSystem/4.0.0": {
+        "dependencies": {
+          "System.Runtime": "4.0.20",
+          "System.Runtime.InteropServices": "4.0.20",
+          "System.Resources.ResourceManager": "4.0.0",
+          "System.IO.FileSystem.Primitives": "4.0.0",
+          "System.Runtime.Handles": "4.0.0",
+          "System.Threading.Overlapped": "4.0.0",
+          "System.Text.Encoding": "4.0.10",
+          "System.IO": "4.0.10",
+          "System.Collections": "4.0.10",
+          "System.Threading.Tasks": "4.0.10",
+          "System.Runtime.Extensions": "4.0.10",
+          "System.Text.Encoding.Extensions": "4.0.10",
+          "System.Threading": "4.0.10"
+        },
+        "compile": {
+          "ref/dotnet/System.IO.FileSystem.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.IO.FileSystem.dll": {}
+        }
+      },
+      "System.IO.FileSystem.Primitives/4.0.0": {
+        "dependencies": {
+          "System.Runtime": "4.0.20"
+        },
+        "compile": {
+          "ref/dotnet/System.IO.FileSystem.Primitives.dll": {}
+        },
+        "runtime": {
+          "lib/dotnet/System.IO.FileSystem.Primitives.dll": {}
+        }
+      },
+      "System.Linq/4.0.1-beta-23302": {
+        "dependencies": {
+          "System.Runtime": "4.0.20",
+          "System.Collections": "4.0.10",
+          "System.Resources.ResourceManager": "4.0.0",
+          "System.Diagnostics.Debug": "4.0.10",
+          "System.Runtime.Extensions": "4.0.10"
+        },
+        "compile": {
+          "ref/dotnet/System.Linq.dll": {}
+        },
+        "runtime": {
+          "lib/dotnet/System.Linq.dll": {}
+        }
+      },
+      "System.Linq.Expressions/4.0.10": {
+        "dependencies": {
+          "System.Runtime": "4.0.20",
+          "System.Resources.ResourceManager": "4.0.0",
+          "System.Collections": "4.0.0",
+          "System.Diagnostics.Debug": "4.0.0",
+          "System.Reflection": "4.0.0",
+          "System.IO": "4.0.0",
+          "System.Reflection.TypeExtensions": "4.0.0",
+          "System.Reflection.Primitives": "4.0.0",
+          "System.Reflection.Emit": "4.0.0",
+          "System.ObjectModel": "4.0.0",
+          "System.Threading": "4.0.0",
+          "System.Runtime.Extensions": "4.0.0",
+          "System.Linq": "4.0.0",
+          "System.Globalization": "4.0.0",
+          "System.Reflection.Extensions": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Linq.Expressions.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Linq.Expressions.dll": {}
+        }
+      },
+      "System.Linq.Queryable/4.0.1-beta-23302": {
+        "dependencies": {
+          "System.Runtime": "4.0.20",
+          "System.Linq.Expressions": "4.0.10",
+          "System.Linq": "4.0.0",
+          "System.Resources.ResourceManager": "4.0.0",
+          "System.Reflection.Extensions": "4.0.0",
+          "System.Reflection": "4.0.10",
+          "System.Collections": "4.0.10"
+        },
+        "compile": {
+          "ref/dotnet/System.Linq.Queryable.dll": {}
+        },
+        "runtime": {
+          "lib/dotnet/System.Linq.Queryable.dll": {}
+        }
+      },
+      "System.ObjectModel/4.0.0": {
+        "dependencies": {
+          "System.Runtime": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.ObjectModel.dll": {}
+        }
+      },
+      "System.Private.Uri/4.0.0": {
+        "runtime": {
+          "lib/DNXCore50/System.Private.Uri.dll": {}
+        }
+      },
+      "System.Reflection/4.0.10": {
+        "dependencies": {
+          "System.Runtime": "4.0.20",
+          "System.IO": "4.0.0",
+          "System.Reflection.Primitives": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Reflection.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Reflection.dll": {}
+        }
+      },
+      "System.Reflection.Emit/4.0.0": {
+        "dependencies": {
+          "System.Runtime": "4.0.0",
+          "System.Reflection": "4.0.0",
+          "System.Reflection.Emit.ILGeneration": "4.0.0",
+          "System.IO": "4.0.0",
+          "System.Reflection.Primitives": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Reflection.Emit.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Reflection.Emit.dll": {}
+        }
+      },
+      "System.Reflection.Emit.ILGeneration/4.0.0": {
+        "dependencies": {
+          "System.Runtime": "4.0.0",
+          "System.Reflection": "4.0.0",
+          "System.Reflection.Primitives": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Reflection.Emit.ILGeneration.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Reflection.Emit.ILGeneration.dll": {}
+        }
+      },
+      "System.Reflection.Extensions/4.0.0": {
+        "dependencies": {
+          "System.Runtime": "4.0.0",
+          "System.Reflection": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Reflection.Extensions.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Reflection.Extensions.dll": {}
+        }
+      },
+      "System.Reflection.Primitives/4.0.0": {
+        "dependencies": {
+          "System.Runtime": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Reflection.Primitives.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Reflection.Primitives.dll": {}
+        }
+      },
+      "System.Reflection.TypeExtensions/4.0.0": {
+        "dependencies": {
+          "System.Runtime": "4.0.0",
+          "System.Reflection": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Reflection.TypeExtensions.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Reflection.TypeExtensions.dll": {}
+        }
+      },
+      "System.Resources.ResourceManager/4.0.0": {
+        "dependencies": {
+          "System.Runtime": "4.0.0",
+          "System.Reflection": "4.0.0",
+          "System.Globalization": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Resources.ResourceManager.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Resources.ResourceManager.dll": {}
+        }
+      },
+      "System.Runtime/4.0.20": {
+        "dependencies": {
+          "System.Private.Uri": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Runtime.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Runtime.dll": {}
+        }
+      },
+      "System.Runtime.Extensions/4.0.10": {
+        "dependencies": {
+          "System.Runtime": "4.0.20"
+        },
+        "compile": {
+          "ref/dotnet/System.Runtime.Extensions.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Runtime.Extensions.dll": {}
+        }
+      },
+      "System.Runtime.Handles/4.0.0": {
+        "dependencies": {
+          "System.Runtime": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Runtime.Handles.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Runtime.Handles.dll": {}
+        }
+      },
+      "System.Runtime.InteropServices/4.0.20": {
+        "dependencies": {
+          "System.Runtime": "4.0.0",
+          "System.Reflection": "4.0.0",
+          "System.Reflection.Primitives": "4.0.0",
+          "System.Runtime.Handles": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Runtime.InteropServices.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Runtime.InteropServices.dll": {}
+        }
+      },
+      "System.Runtime.Loader/4.0.0-beta-23302": {
+        "dependencies": {
+          "System.Runtime": "4.0.0",
+          "System.Reflection": "4.0.0",
+          "System.IO": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Runtime.Loader.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Runtime.Loader.dll": {}
+        }
+      },
+      "System.Text.Encoding/4.0.10": {
+        "dependencies": {
+          "System.Runtime": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Text.Encoding.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Text.Encoding.dll": {}
+        }
+      },
+      "System.Text.Encoding.Extensions/4.0.10": {
+        "dependencies": {
+          "System.Runtime": "4.0.0",
+          "System.Text.Encoding": "4.0.10"
+        },
+        "compile": {
+          "ref/dotnet/System.Text.Encoding.Extensions.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Text.Encoding.Extensions.dll": {}
+        }
+      },
+      "System.Text.RegularExpressions/4.0.10": {
+        "dependencies": {
+          "System.Runtime": "4.0.20",
+          "System.Resources.ResourceManager": "4.0.0",
+          "System.Collections": "4.0.10",
+          "System.Globalization": "4.0.10",
+          "System.Runtime.Extensions": "4.0.10",
+          "System.Threading": "4.0.10"
+        },
+        "compile": {
+          "ref/dotnet/System.Text.RegularExpressions.dll": {}
+        },
+        "runtime": {
+          "lib/dotnet/System.Text.RegularExpressions.dll": {}
+        }
+      },
+      "System.Threading/4.0.10": {
+        "dependencies": {
+          "System.Runtime": "4.0.0",
+          "System.Threading.Tasks": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Threading.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Threading.dll": {}
+        }
+      },
+      "System.Threading.Overlapped/4.0.0": {
+        "dependencies": {
+          "System.Runtime": "4.0.0",
+          "System.Runtime.Handles": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Threading.Overlapped.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Threading.Overlapped.dll": {}
+        }
+      },
+      "System.Threading.Tasks/4.0.10": {
+        "dependencies": {
+          "System.Runtime": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Threading.Tasks.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Threading.Tasks.dll": {}
+        }
+      },
+      "System.Threading.Thread/4.0.0-beta-23302": {
+        "dependencies": {
+          "System.Runtime": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Threading.Thread.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Threading.Thread.dll": {}
+        }
+      },
+      "System.Threading.ThreadPool/4.0.10-beta-23302": {
+        "dependencies": {
+          "System.Runtime": "4.0.0",
+          "System.Runtime.InteropServices": "4.0.0"
+        },
+        "compile": {
+          "ref/dotnet/System.Threading.ThreadPool.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Threading.ThreadPool.dll": {}
+        }
+      },
+      "System.Xml.ReaderWriter/4.0.11-beta-23302": {
+        "dependencies": {
+          "System.Runtime": "4.0.20",
+          "System.Text.Encoding": "4.0.10",
+          "System.IO": "4.0.10",
+          "System.Threading.Tasks": "4.0.10",
+          "System.Runtime.InteropServices": "4.0.20",
+          "System.Resources.ResourceManager": "4.0.0",
+          "System.IO.FileSystem": "4.0.0",
+          "System.IO.FileSystem.Primitives": "4.0.0",
+          "System.Diagnostics.Debug": "4.0.10",
+          "System.Text.RegularExpressions": "4.0.10",
+          "System.Collections": "4.0.10",
+          "System.Runtime.Extensions": "4.0.10",
+          "System.Globalization": "4.0.10",
+          "System.Text.Encoding.Extensions": "4.0.10"
+        },
+        "compile": {
+          "ref/dotnet/System.Xml.ReaderWriter.dll": {}
+        },
+        "runtime": {
+          "lib/dotnet/System.Xml.ReaderWriter.dll": {}
+        }
+      },
+      "System.Xml.XDocument/4.0.11-beta-23302": {
+        "dependencies": {
+          "System.Runtime": "4.0.20",
+          "System.IO": "4.0.10",
+          "System.Xml.ReaderWriter": "4.0.10",
+          "System.Resources.ResourceManager": "4.0.0",
+          "System.Diagnostics.Tools": "4.0.0",
+          "System.Collections": "4.0.10",
+          "System.Diagnostics.Debug": "4.0.10",
+          "System.Globalization": "4.0.10",
+          "System.Threading": "4.0.10",
+          "System.Text.Encoding": "4.0.10",
+          "System.Reflection": "4.0.10",
+          "System.Runtime.Extensions": "4.0.10"
+        },
+        "compile": {
+          "ref/dotnet/System.Xml.XDocument.dll": {}
+        },
+        "runtime": {
+          "lib/dotnet/System.Xml.XDocument.dll": {}
+        }
+      },
+      "System.Xml.XmlDocument/4.0.1-beta-23302": {
+        "dependencies": {
+          "System.Runtime": "4.0.20",
+          "System.Xml.ReaderWriter": "4.0.10",
+          "System.IO": "4.0.10",
+          "System.Resources.ResourceManager": "4.0.0",
+          "System.Text.Encoding": "4.0.10",
+          "System.Collections": "4.0.10",
+          "System.Diagnostics.Debug": "4.0.10",
+          "System.Runtime.Extensions": "4.0.10",
+          "System.Globalization": "4.0.10",
+          "System.Threading": "4.0.10"
+        },
+        "compile": {
+          "ref/dotnet/System.Xml.XmlDocument.dll": {}
+        },
+        "runtime": {
+          "lib/dotnet/System.Xml.XmlDocument.dll": {}
+        }
+      },
+      "System.Xml.XmlSerializer/4.0.11-beta-23302": {
+        "dependencies": {
+          "System.Runtime": "4.0.20",
+          "System.Resources.ResourceManager": "4.0.0",
+          "System.Xml.XmlDocument": "4.0.0",
+          "System.Reflection.TypeExtensions": "4.0.0",
+          "System.Reflection.Primitives": "4.0.0",
+          "System.Reflection.Extensions": "4.0.0",
+          "System.Linq": "4.0.0",
+          "System.Collections": "4.0.10",
+          "System.Diagnostics.Debug": "4.0.10",
+          "System.Globalization": "4.0.10",
+          "System.Reflection": "4.0.10",
+          "System.Xml.ReaderWriter": "4.0.10",
+          "System.IO": "4.0.10",
+          "System.Text.RegularExpressions": "4.0.10",
+          "System.Threading": "4.0.10",
+          "System.Runtime.Extensions": "4.0.10"
+        },
+        "compile": {
+          "ref/dotnet/System.Xml.XmlSerializer.dll": {}
+        },
+        "runtime": {
+          "lib/DNXCore50/System.Xml.XmlSerializer.dll": {}
+        }
+      }
+    }
+  },
+  "libraries": {
+    "Microsoft.Win32.Primitives/4.0.0": {
+      "serviceable": true,
+      "sha512": "CypEz9/lLOup8CEhiAmvr7aLs1zKPYyEU1sxQeEr6G0Ci8/F0Y6pYR1zzkROjM8j8Mq0typmbu676oYyvErQvg==",
+      "files": [
+        "Microsoft.Win32.Primitives.4.0.0.nupkg",
+        "Microsoft.Win32.Primitives.4.0.0.nupkg.sha512",
+        "Microsoft.Win32.Primitives.nuspec",
+        "lib/dotnet/Microsoft.Win32.Primitives.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/Microsoft.Win32.Primitives.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/Microsoft.Win32.Primitives.dll",
+        "ref/dotnet/Microsoft.Win32.Primitives.xml",
+        "ref/dotnet/de/Microsoft.Win32.Primitives.xml",
+        "ref/dotnet/es/Microsoft.Win32.Primitives.xml",
+        "ref/dotnet/fr/Microsoft.Win32.Primitives.xml",
+        "ref/dotnet/it/Microsoft.Win32.Primitives.xml",
+        "ref/dotnet/ja/Microsoft.Win32.Primitives.xml",
+        "ref/dotnet/ko/Microsoft.Win32.Primitives.xml",
+        "ref/dotnet/ru/Microsoft.Win32.Primitives.xml",
+        "ref/dotnet/zh-hans/Microsoft.Win32.Primitives.xml",
+        "ref/dotnet/zh-hant/Microsoft.Win32.Primitives.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/Microsoft.Win32.Primitives.dll",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._"
+      ]
+    },
+    "Microsoft.Win32.Registry/4.0.0-beta-23302": {
+      "serviceable": true,
+      "sha512": "63Vc0lDW+pMCSd6ygScz/XTiJE3Ou5Sr7yrZ0HE/Ym/Bi/mN0LMAJqUtAUSJxVBuqbozW/q39RpNLIZ+QlJvig==",
+      "files": [
+        "Microsoft.Win32.Registry.4.0.0-beta-23302.nupkg",
+        "Microsoft.Win32.Registry.4.0.0-beta-23302.nupkg.sha512",
+        "Microsoft.Win32.Registry.nuspec",
+        "lib/DNXCore50/Microsoft.Win32.Registry.dll",
+        "lib/net46/Microsoft.Win32.Registry.dll",
+        "ref/dotnet/Microsoft.Win32.Registry.dll",
+        "ref/net46/Microsoft.Win32.Registry.dll"
+      ]
+    },
+    "System.Collections/4.0.10": {
+      "serviceable": true,
+      "sha512": "ux6ilcZZjV/Gp7JEZpe+2V1eTueq6NuoGRM3eZCFuPM25hLVVgCRuea6STW8hvqreIOE59irJk5/ovpA5xQipw==",
+      "files": [
+        "System.Collections.4.0.10.nupkg",
+        "System.Collections.4.0.10.nupkg.sha512",
+        "System.Collections.nuspec",
+        "lib/DNXCore50/System.Collections.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.Collections.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Collections.dll",
+        "ref/dotnet/System.Collections.xml",
+        "ref/dotnet/de/System.Collections.xml",
+        "ref/dotnet/es/System.Collections.xml",
+        "ref/dotnet/fr/System.Collections.xml",
+        "ref/dotnet/it/System.Collections.xml",
+        "ref/dotnet/ja/System.Collections.xml",
+        "ref/dotnet/ko/System.Collections.xml",
+        "ref/dotnet/ru/System.Collections.xml",
+        "ref/dotnet/zh-hans/System.Collections.xml",
+        "ref/dotnet/zh-hant/System.Collections.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Collections.dll"
+      ]
+    },
+    "System.Collections.NonGeneric/4.0.1-beta-23302": {
+      "serviceable": true,
+      "sha512": "pSTpxEZ8/VRqmMnAP4Nfs7pdC8JpggNdnfGD225uIeEdNnc4m6xu3guu4BrFD3qrrBY1qSZCuNyY4DNJgq877A==",
+      "files": [
+        "System.Collections.NonGeneric.4.0.1-beta-23302.nupkg",
+        "System.Collections.NonGeneric.4.0.1-beta-23302.nupkg.sha512",
+        "System.Collections.NonGeneric.nuspec",
+        "lib/dotnet/System.Collections.NonGeneric.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/System.Collections.NonGeneric.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Collections.NonGeneric.dll",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/System.Collections.NonGeneric.dll",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._"
+      ]
+    },
+    "System.Collections.Specialized/4.0.1-beta-23302": {
+      "serviceable": true,
+      "sha512": "v1eYdfSH6ttx2QYSbvArTqlumBamCij2R8iNtdA2tBq0QmWseW5Nc+H3Ut1JHa9T1q3jWuk0NR95zMBwty3Q+Q==",
+      "files": [
+        "System.Collections.Specialized.4.0.1-beta-23302.nupkg",
+        "System.Collections.Specialized.4.0.1-beta-23302.nupkg.sha512",
+        "System.Collections.Specialized.nuspec",
+        "lib/dotnet/System.Collections.Specialized.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/System.Collections.Specialized.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Collections.Specialized.dll",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/System.Collections.Specialized.dll",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._"
+      ]
+    },
+    "System.ComponentModel/4.0.1-beta-23302": {
+      "serviceable": true,
+      "sha512": "Ju+nhdZ8gMwZAXRIr/ACoME9I9SpxeS+Xw4Bouok4xTvbbwkjlT55Mr9gybqcGMp4F/hzS55RnQDIiRN70fEdg==",
+      "files": [
+        "System.ComponentModel.4.0.1-beta-23302.nupkg",
+        "System.ComponentModel.4.0.1-beta-23302.nupkg.sha512",
+        "System.ComponentModel.nuspec",
+        "lib/dotnet/System.ComponentModel.dll",
+        "lib/net45/_._",
+        "lib/netcore50/System.ComponentModel.dll",
+        "lib/win8/_._",
+        "lib/wp80/_._",
+        "lib/wpa81/_._",
+        "ref/dotnet/System.ComponentModel.dll",
+        "ref/net45/_._",
+        "ref/netcore50/System.ComponentModel.dll",
+        "ref/win8/_._",
+        "ref/wp80/_._",
+        "ref/wpa81/_._"
+      ]
+    },
+    "System.Console/4.0.0-beta-23302": {
+      "serviceable": true,
+      "sha512": "rpWEkJWW29TjVZdDz5zr8VnBv4IN9BQHmP4Ky9tEbvkdhkJRb0ZO59acXMpVD1tSM2VhGlLnq0kpdjOLNmejNA==",
+      "files": [
+        "System.Console.4.0.0-beta-23302.nupkg",
+        "System.Console.4.0.0-beta-23302.nupkg.sha512",
+        "System.Console.nuspec",
+        "lib/DNXCore50/System.Console.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/System.Console.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Console.dll",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/System.Console.dll",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._"
+      ]
+    },
+    "System.Diagnostics.Debug/4.0.10": {
+      "serviceable": true,
+      "sha512": "pi2KthuvI2LWV2c2V+fwReDsDiKpNl040h6DcwFOb59SafsPT/V1fCy0z66OKwysurJkBMmp5j5CBe3Um+ub0g==",
+      "files": [
+        "System.Diagnostics.Debug.4.0.10.nupkg",
+        "System.Diagnostics.Debug.4.0.10.nupkg.sha512",
+        "System.Diagnostics.Debug.nuspec",
+        "lib/DNXCore50/System.Diagnostics.Debug.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.Diagnostics.Debug.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Diagnostics.Debug.dll",
+        "ref/dotnet/System.Diagnostics.Debug.xml",
+        "ref/dotnet/de/System.Diagnostics.Debug.xml",
+        "ref/dotnet/es/System.Diagnostics.Debug.xml",
+        "ref/dotnet/fr/System.Diagnostics.Debug.xml",
+        "ref/dotnet/it/System.Diagnostics.Debug.xml",
+        "ref/dotnet/ja/System.Diagnostics.Debug.xml",
+        "ref/dotnet/ko/System.Diagnostics.Debug.xml",
+        "ref/dotnet/ru/System.Diagnostics.Debug.xml",
+        "ref/dotnet/zh-hans/System.Diagnostics.Debug.xml",
+        "ref/dotnet/zh-hant/System.Diagnostics.Debug.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Diagnostics.Debug.dll"
+      ]
+    },
+    "System.Diagnostics.Process/4.0.0-beta-23302": {
+      "serviceable": true,
+      "sha512": "FtflxzCJUdgw+4suLaWz82EOLxVa7X6DWbY4eSRIomDlMwYrsof8Ewz81XhKMWY0EOY/5Nx+r/oPTbFUECAiUg==",
+      "files": [
+        "System.Diagnostics.Process.4.0.0-beta-23302.nupkg",
+        "System.Diagnostics.Process.4.0.0-beta-23302.nupkg.sha512",
+        "System.Diagnostics.Process.nuspec",
+        "lib/DNXCore50/System.Diagnostics.Process.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/System.Diagnostics.Process.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Diagnostics.Process.dll",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/System.Diagnostics.Process.dll",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._"
+      ]
+    },
+    "System.Diagnostics.Tools/4.0.0": {
+      "serviceable": true,
+      "sha512": "uw5Qi2u5Cgtv4xv3+8DeB63iaprPcaEHfpeJqlJiLjIVy6v0La4ahJ6VW9oPbJNIjcavd24LKq0ctT9ssuQXsw==",
+      "files": [
+        "System.Diagnostics.Tools.4.0.0.nupkg",
+        "System.Diagnostics.Tools.4.0.0.nupkg.sha512",
+        "System.Diagnostics.Tools.nuspec",
+        "lib/DNXCore50/System.Diagnostics.Tools.dll",
+        "lib/net45/_._",
+        "lib/netcore50/System.Diagnostics.Tools.dll",
+        "lib/win8/_._",
+        "lib/wp80/_._",
+        "lib/wpa81/_._",
+        "ref/dotnet/System.Diagnostics.Tools.dll",
+        "ref/dotnet/System.Diagnostics.Tools.xml",
+        "ref/dotnet/de/System.Diagnostics.Tools.xml",
+        "ref/dotnet/es/System.Diagnostics.Tools.xml",
+        "ref/dotnet/fr/System.Diagnostics.Tools.xml",
+        "ref/dotnet/it/System.Diagnostics.Tools.xml",
+        "ref/dotnet/ja/System.Diagnostics.Tools.xml",
+        "ref/dotnet/ko/System.Diagnostics.Tools.xml",
+        "ref/dotnet/ru/System.Diagnostics.Tools.xml",
+        "ref/dotnet/zh-hans/System.Diagnostics.Tools.xml",
+        "ref/dotnet/zh-hant/System.Diagnostics.Tools.xml",
+        "ref/net45/_._",
+        "ref/netcore50/System.Diagnostics.Tools.dll",
+        "ref/netcore50/System.Diagnostics.Tools.xml",
+        "ref/win8/_._",
+        "ref/wp80/_._",
+        "ref/wpa81/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Diagnostics.Tools.dll"
+      ]
+    },
+    "System.Globalization/4.0.10": {
+      "sha512": "kzRtbbCNAxdafFBDogcM36ehA3th8c1PGiz8QRkZn8O5yMBorDHSK8/TGJPYOaCS5zdsGk0u9qXHnW91nqy7fw==",
+      "files": [
+        "System.Globalization.4.0.10.nupkg",
+        "System.Globalization.4.0.10.nupkg.sha512",
+        "System.Globalization.nuspec",
+        "lib/DNXCore50/System.Globalization.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.Globalization.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Globalization.dll",
+        "ref/dotnet/System.Globalization.xml",
+        "ref/dotnet/de/System.Globalization.xml",
+        "ref/dotnet/es/System.Globalization.xml",
+        "ref/dotnet/fr/System.Globalization.xml",
+        "ref/dotnet/it/System.Globalization.xml",
+        "ref/dotnet/ja/System.Globalization.xml",
+        "ref/dotnet/ko/System.Globalization.xml",
+        "ref/dotnet/ru/System.Globalization.xml",
+        "ref/dotnet/zh-hans/System.Globalization.xml",
+        "ref/dotnet/zh-hant/System.Globalization.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Globalization.dll"
+      ]
+    },
+    "System.Globalization.Calendars/4.0.0": {
+      "sha512": "cL6WrdGKnNBx9W/iTr+jbffsEO4RLjEtOYcpVSzPNDoli6X5Q6bAfWtJYbJNOPi8Q0fXgBEvKK1ncFL/3FTqlA==",
+      "files": [
+        "System.Globalization.Calendars.4.0.0.nupkg",
+        "System.Globalization.Calendars.4.0.0.nupkg.sha512",
+        "System.Globalization.Calendars.nuspec",
+        "lib/DNXCore50/System.Globalization.Calendars.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/System.Globalization.Calendars.dll",
+        "lib/netcore50/System.Globalization.Calendars.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Globalization.Calendars.dll",
+        "ref/dotnet/System.Globalization.Calendars.xml",
+        "ref/dotnet/de/System.Globalization.Calendars.xml",
+        "ref/dotnet/es/System.Globalization.Calendars.xml",
+        "ref/dotnet/fr/System.Globalization.Calendars.xml",
+        "ref/dotnet/it/System.Globalization.Calendars.xml",
+        "ref/dotnet/ja/System.Globalization.Calendars.xml",
+        "ref/dotnet/ko/System.Globalization.Calendars.xml",
+        "ref/dotnet/ru/System.Globalization.Calendars.xml",
+        "ref/dotnet/zh-hans/System.Globalization.Calendars.xml",
+        "ref/dotnet/zh-hant/System.Globalization.Calendars.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/System.Globalization.Calendars.dll",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Globalization.Calendars.dll"
+      ]
+    },
+    "System.Globalization.Extensions/4.0.0": {
+      "serviceable": true,
+      "sha512": "rqbUXiwpBCvJ18ySCsjh20zleazO+6fr3s5GihC2sVwhyS0MUl6+oc5Rzk0z6CKkS4kmxbZQSeZLsK7cFSO0ng==",
+      "files": [
+        "System.Globalization.Extensions.4.0.0.nupkg",
+        "System.Globalization.Extensions.4.0.0.nupkg.sha512",
+        "System.Globalization.Extensions.nuspec",
+        "lib/dotnet/System.Globalization.Extensions.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/System.Globalization.Extensions.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Globalization.Extensions.dll",
+        "ref/dotnet/System.Globalization.Extensions.xml",
+        "ref/dotnet/de/System.Globalization.Extensions.xml",
+        "ref/dotnet/es/System.Globalization.Extensions.xml",
+        "ref/dotnet/fr/System.Globalization.Extensions.xml",
+        "ref/dotnet/it/System.Globalization.Extensions.xml",
+        "ref/dotnet/ja/System.Globalization.Extensions.xml",
+        "ref/dotnet/ko/System.Globalization.Extensions.xml",
+        "ref/dotnet/ru/System.Globalization.Extensions.xml",
+        "ref/dotnet/zh-hans/System.Globalization.Extensions.xml",
+        "ref/dotnet/zh-hant/System.Globalization.Extensions.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/System.Globalization.Extensions.dll",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._"
+      ]
+    },
+    "System.IO/4.0.10": {
+      "serviceable": true,
+      "sha512": "kghf1CeYT+W2lw8a50/GxFz5HR9t6RkL4BvjxtTp1NxtEFWywnMA9W8FH/KYXiDNThcw9u/GOViDON4iJFGXIQ==",
+      "files": [
+        "System.IO.4.0.10.nupkg",
+        "System.IO.4.0.10.nupkg.sha512",
+        "System.IO.nuspec",
+        "lib/DNXCore50/System.IO.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.IO.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.IO.dll",
+        "ref/dotnet/System.IO.xml",
+        "ref/dotnet/de/System.IO.xml",
+        "ref/dotnet/es/System.IO.xml",
+        "ref/dotnet/fr/System.IO.xml",
+        "ref/dotnet/it/System.IO.xml",
+        "ref/dotnet/ja/System.IO.xml",
+        "ref/dotnet/ko/System.IO.xml",
+        "ref/dotnet/ru/System.IO.xml",
+        "ref/dotnet/zh-hans/System.IO.xml",
+        "ref/dotnet/zh-hant/System.IO.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.IO.dll"
+      ]
+    },
+    "System.IO.FileSystem/4.0.0": {
+      "serviceable": true,
+      "sha512": "eo05SPWfG+54UA0wxgRIYOuOslq+2QrJLXZaJDDsfLXG15OLguaItW39NYZTqUb4DeGOkU4R0wpOLOW4ynMUDQ==",
+      "files": [
+        "System.IO.FileSystem.4.0.0.nupkg",
+        "System.IO.FileSystem.4.0.0.nupkg.sha512",
+        "System.IO.FileSystem.nuspec",
+        "lib/DNXCore50/System.IO.FileSystem.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/System.IO.FileSystem.dll",
+        "lib/netcore50/System.IO.FileSystem.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.IO.FileSystem.dll",
+        "ref/dotnet/System.IO.FileSystem.xml",
+        "ref/dotnet/de/System.IO.FileSystem.xml",
+        "ref/dotnet/es/System.IO.FileSystem.xml",
+        "ref/dotnet/fr/System.IO.FileSystem.xml",
+        "ref/dotnet/it/System.IO.FileSystem.xml",
+        "ref/dotnet/ja/System.IO.FileSystem.xml",
+        "ref/dotnet/ko/System.IO.FileSystem.xml",
+        "ref/dotnet/ru/System.IO.FileSystem.xml",
+        "ref/dotnet/zh-hans/System.IO.FileSystem.xml",
+        "ref/dotnet/zh-hant/System.IO.FileSystem.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/System.IO.FileSystem.dll",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._"
+      ]
+    },
+    "System.IO.FileSystem.Primitives/4.0.0": {
+      "serviceable": true,
+      "sha512": "7pJUvYi/Yq3A5nagqCCiOw3+aJp3xXc/Cjr8dnJDnER3/6kX3LEencfqmXUcPl9+7OvRNyPMNhqsLAcMK6K/KA==",
+      "files": [
+        "System.IO.FileSystem.Primitives.4.0.0.nupkg",
+        "System.IO.FileSystem.Primitives.4.0.0.nupkg.sha512",
+        "System.IO.FileSystem.Primitives.nuspec",
+        "lib/dotnet/System.IO.FileSystem.Primitives.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/System.IO.FileSystem.Primitives.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.IO.FileSystem.Primitives.dll",
+        "ref/dotnet/System.IO.FileSystem.Primitives.xml",
+        "ref/dotnet/de/System.IO.FileSystem.Primitives.xml",
+        "ref/dotnet/es/System.IO.FileSystem.Primitives.xml",
+        "ref/dotnet/fr/System.IO.FileSystem.Primitives.xml",
+        "ref/dotnet/it/System.IO.FileSystem.Primitives.xml",
+        "ref/dotnet/ja/System.IO.FileSystem.Primitives.xml",
+        "ref/dotnet/ko/System.IO.FileSystem.Primitives.xml",
+        "ref/dotnet/ru/System.IO.FileSystem.Primitives.xml",
+        "ref/dotnet/zh-hans/System.IO.FileSystem.Primitives.xml",
+        "ref/dotnet/zh-hant/System.IO.FileSystem.Primitives.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/System.IO.FileSystem.Primitives.dll",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._"
+      ]
+    },
+    "System.Linq/4.0.1-beta-23302": {
+      "serviceable": true,
+      "sha512": "s6DNPrcinU2thnbDGyYfvK/2B6RXPvIjNyNFCyFDEPpKKb0dlURf/VSX0HQRbaxi0sXuSSrTCHPXhh75jpx3Pw==",
+      "files": [
+        "System.Linq.4.0.1-beta-23302.nupkg",
+        "System.Linq.4.0.1-beta-23302.nupkg.sha512",
+        "System.Linq.nuspec",
+        "lib/dotnet/System.Linq.dll",
+        "lib/net45/_._",
+        "lib/netcore50/System.Linq.dll",
+        "lib/win8/_._",
+        "lib/wp80/_._",
+        "lib/wpa81/_._",
+        "ref/dotnet/System.Linq.dll",
+        "ref/net45/_._",
+        "ref/netcore50/System.Linq.dll",
+        "ref/win8/_._",
+        "ref/wp80/_._",
+        "ref/wpa81/_._"
+      ]
+    },
+    "System.Linq.Expressions/4.0.10": {
+      "serviceable": true,
+      "sha512": "qhFkPqRsTfXBaacjQhxwwwUoU7TEtwlBIULj7nG7i4qAkvivil31VvOvDKppCSui5yGw0/325ZeNaMYRvTotXw==",
+      "files": [
+        "runtime.json",
+        "System.Linq.Expressions.4.0.10.nupkg",
+        "System.Linq.Expressions.4.0.10.nupkg.sha512",
+        "System.Linq.Expressions.nuspec",
+        "lib/DNXCore50/System.Linq.Expressions.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.Linq.Expressions.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Linq.Expressions.dll",
+        "ref/dotnet/System.Linq.Expressions.xml",
+        "ref/dotnet/de/System.Linq.Expressions.xml",
+        "ref/dotnet/es/System.Linq.Expressions.xml",
+        "ref/dotnet/fr/System.Linq.Expressions.xml",
+        "ref/dotnet/it/System.Linq.Expressions.xml",
+        "ref/dotnet/ja/System.Linq.Expressions.xml",
+        "ref/dotnet/ko/System.Linq.Expressions.xml",
+        "ref/dotnet/ru/System.Linq.Expressions.xml",
+        "ref/dotnet/zh-hans/System.Linq.Expressions.xml",
+        "ref/dotnet/zh-hant/System.Linq.Expressions.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Linq.Expressions.dll"
+      ]
+    },
+    "System.Linq.Queryable/4.0.1-beta-23302": {
+      "serviceable": true,
+      "sha512": "DtZNIidKpY95mLklcL4yfLYJCw3cAvfcoLxk8a+BqCAlMWXDmLDz2zizgyPWv2FwIUs7l+Jf9Znvz0yY/ip79Q==",
+      "files": [
+        "System.Linq.Queryable.4.0.1-beta-23302.nupkg",
+        "System.Linq.Queryable.4.0.1-beta-23302.nupkg.sha512",
+        "System.Linq.Queryable.nuspec",
+        "lib/dotnet/System.Linq.Queryable.dll",
+        "lib/net45/_._",
+        "lib/netcore50/System.Linq.Queryable.dll",
+        "lib/win8/_._",
+        "lib/wp80/_._",
+        "lib/wpa81/_._",
+        "ref/dotnet/System.Linq.Queryable.dll",
+        "ref/net45/_._",
+        "ref/netcore50/System.Linq.Queryable.dll",
+        "ref/win8/_._",
+        "ref/wp80/_._",
+        "ref/wpa81/_._"
+      ]
+    },
+    "System.ObjectModel/4.0.0": {
+      "sha512": "+3j/n+5SlF7PKb0/s5kdord+5RyW3uUscB+0WPuYvfAvEgyx6yPdPXU9tXdDZImRohMuWnQTAG2rFojFPfoGbA==",
+      "files": [
+        "License.rtf",
+        "System.ObjectModel.4.0.0.nupkg",
+        "System.ObjectModel.4.0.0.nupkg.sha512",
+        "System.ObjectModel.nuspec",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net45/_._",
+        "lib/win8/_._",
+        "lib/wp80/_._",
+        "lib/wpa81/_._",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.ObjectModel.dll",
+        "ref/dotnet/System.ObjectModel.xml",
+        "ref/dotnet/de/System.ObjectModel.xml",
+        "ref/dotnet/es/System.ObjectModel.xml",
+        "ref/dotnet/fr/System.ObjectModel.xml",
+        "ref/dotnet/it/System.ObjectModel.xml",
+        "ref/dotnet/ja/System.ObjectModel.xml",
+        "ref/dotnet/ko/System.ObjectModel.xml",
+        "ref/dotnet/ru/System.ObjectModel.xml",
+        "ref/dotnet/zh-hans/System.ObjectModel.xml",
+        "ref/dotnet/zh-hant/System.ObjectModel.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net45/_._",
+        "ref/netcore50/System.ObjectModel.dll",
+        "ref/netcore50/System.ObjectModel.xml",
+        "ref/netcore50/de/System.ObjectModel.xml",
+        "ref/netcore50/es/System.ObjectModel.xml",
+        "ref/netcore50/fr/System.ObjectModel.xml",
+        "ref/netcore50/it/System.ObjectModel.xml",
+        "ref/netcore50/ja/System.ObjectModel.xml",
+        "ref/netcore50/ko/System.ObjectModel.xml",
+        "ref/netcore50/ru/System.ObjectModel.xml",
+        "ref/netcore50/zh-hans/System.ObjectModel.xml",
+        "ref/netcore50/zh-hant/System.ObjectModel.xml",
+        "ref/win8/_._",
+        "ref/wp80/_._",
+        "ref/wpa81/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._"
+      ]
+    },
+    "System.Private.Uri/4.0.0": {
+      "serviceable": true,
+      "sha512": "CtuxaCKcRIvPcsqquVl3mPp79EDZPMr2UogfiFCxCs+t2z1VjbpQsKNs1GHZ8VQetqbk1mr0V1yAfMe6y8CHDA==",
+      "files": [
+        "System.Private.Uri.4.0.0.nupkg",
+        "System.Private.Uri.4.0.0.nupkg.sha512",
+        "System.Private.Uri.nuspec",
+        "lib/DNXCore50/System.Private.Uri.dll",
+        "lib/netcore50/System.Private.Uri.dll",
+        "ref/dnxcore50/_._",
+        "ref/netcore50/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Private.Uri.dll"
+      ]
+    },
+    "System.Reflection/4.0.10": {
+      "sha512": "WZ+4lEE4gqGx6mrqLhSiW4oi6QLPWwdNjzhhTONmhELOrW8Cw9phlO9tltgvRUuQUqYtBiliFwhO5S5fCJElVw==",
+      "files": [
+        "System.Reflection.4.0.10.nupkg",
+        "System.Reflection.4.0.10.nupkg.sha512",
+        "System.Reflection.nuspec",
+        "lib/DNXCore50/System.Reflection.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.Reflection.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Reflection.dll",
+        "ref/dotnet/System.Reflection.xml",
+        "ref/dotnet/de/System.Reflection.xml",
+        "ref/dotnet/es/System.Reflection.xml",
+        "ref/dotnet/fr/System.Reflection.xml",
+        "ref/dotnet/it/System.Reflection.xml",
+        "ref/dotnet/ja/System.Reflection.xml",
+        "ref/dotnet/ko/System.Reflection.xml",
+        "ref/dotnet/ru/System.Reflection.xml",
+        "ref/dotnet/zh-hans/System.Reflection.xml",
+        "ref/dotnet/zh-hant/System.Reflection.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Reflection.dll"
+      ]
+    },
+    "System.Reflection.Emit/4.0.0": {
+      "sha512": "CqnQz5LbNbiSxN10cv3Ehnw3j1UZOBCxnE0OO0q/keGQ5ENjyFM6rIG4gm/i0dX6EjdpYkAgKcI/mhZZCaBq4A==",
+      "files": [
+        "System.Reflection.Emit.4.0.0.nupkg",
+        "System.Reflection.Emit.4.0.0.nupkg.sha512",
+        "System.Reflection.Emit.nuspec",
+        "lib/DNXCore50/System.Reflection.Emit.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/net45/_._",
+        "lib/netcore50/System.Reflection.Emit.dll",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Reflection.Emit.dll",
+        "ref/dotnet/System.Reflection.Emit.xml",
+        "ref/dotnet/de/System.Reflection.Emit.xml",
+        "ref/dotnet/es/System.Reflection.Emit.xml",
+        "ref/dotnet/fr/System.Reflection.Emit.xml",
+        "ref/dotnet/it/System.Reflection.Emit.xml",
+        "ref/dotnet/ja/System.Reflection.Emit.xml",
+        "ref/dotnet/ko/System.Reflection.Emit.xml",
+        "ref/dotnet/ru/System.Reflection.Emit.xml",
+        "ref/dotnet/zh-hans/System.Reflection.Emit.xml",
+        "ref/dotnet/zh-hant/System.Reflection.Emit.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/net45/_._",
+        "ref/xamarinmac20/_._"
+      ]
+    },
+    "System.Reflection.Emit.ILGeneration/4.0.0": {
+      "sha512": "02okuusJ0GZiHZSD2IOLIN41GIn6qOr7i5+86C98BPuhlwWqVABwebiGNvhDiXP1f9a6CxEigC7foQD42klcDg==",
+      "files": [
+        "System.Reflection.Emit.ILGeneration.4.0.0.nupkg",
+        "System.Reflection.Emit.ILGeneration.4.0.0.nupkg.sha512",
+        "System.Reflection.Emit.ILGeneration.nuspec",
+        "lib/DNXCore50/System.Reflection.Emit.ILGeneration.dll",
+        "lib/net45/_._",
+        "lib/netcore50/System.Reflection.Emit.ILGeneration.dll",
+        "lib/wp80/_._",
+        "ref/dotnet/System.Reflection.Emit.ILGeneration.dll",
+        "ref/dotnet/System.Reflection.Emit.ILGeneration.xml",
+        "ref/dotnet/de/System.Reflection.Emit.ILGeneration.xml",
+        "ref/dotnet/es/System.Reflection.Emit.ILGeneration.xml",
+        "ref/dotnet/fr/System.Reflection.Emit.ILGeneration.xml",
+        "ref/dotnet/it/System.Reflection.Emit.ILGeneration.xml",
+        "ref/dotnet/ja/System.Reflection.Emit.ILGeneration.xml",
+        "ref/dotnet/ko/System.Reflection.Emit.ILGeneration.xml",
+        "ref/dotnet/ru/System.Reflection.Emit.ILGeneration.xml",
+        "ref/dotnet/zh-hans/System.Reflection.Emit.ILGeneration.xml",
+        "ref/dotnet/zh-hant/System.Reflection.Emit.ILGeneration.xml",
+        "ref/net45/_._",
+        "ref/wp80/_._"
+      ]
+    },
+    "System.Reflection.Extensions/4.0.0": {
+      "serviceable": true,
+      "sha512": "dbYaZWCyFAu1TGYUqR2n+Q+1casSHPR2vVW0WVNkXpZbrd2BXcZ7cpvpu9C98CTHtNmyfMWCLpCclDqly23t6A==",
+      "files": [
+        "System.Reflection.Extensions.4.0.0.nupkg",
+        "System.Reflection.Extensions.4.0.0.nupkg.sha512",
+        "System.Reflection.Extensions.nuspec",
+        "lib/DNXCore50/System.Reflection.Extensions.dll",
+        "lib/net45/_._",
+        "lib/netcore50/System.Reflection.Extensions.dll",
+        "lib/win8/_._",
+        "lib/wp80/_._",
+        "lib/wpa81/_._",
+        "ref/dotnet/System.Reflection.Extensions.dll",
+        "ref/dotnet/System.Reflection.Extensions.xml",
+        "ref/dotnet/de/System.Reflection.Extensions.xml",
+        "ref/dotnet/es/System.Reflection.Extensions.xml",
+        "ref/dotnet/fr/System.Reflection.Extensions.xml",
+        "ref/dotnet/it/System.Reflection.Extensions.xml",
+        "ref/dotnet/ja/System.Reflection.Extensions.xml",
+        "ref/dotnet/ko/System.Reflection.Extensions.xml",
+        "ref/dotnet/ru/System.Reflection.Extensions.xml",
+        "ref/dotnet/zh-hans/System.Reflection.Extensions.xml",
+        "ref/dotnet/zh-hant/System.Reflection.Extensions.xml",
+        "ref/net45/_._",
+        "ref/netcore50/System.Reflection.Extensions.dll",
+        "ref/netcore50/System.Reflection.Extensions.xml",
+        "ref/win8/_._",
+        "ref/wp80/_._",
+        "ref/wpa81/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Reflection.Extensions.dll"
+      ]
+    },
+    "System.Reflection.Primitives/4.0.0": {
+      "serviceable": true,
+      "sha512": "n9S0XpKv2ruc17FSnaiX6nV47VfHTZ1wLjKZlAirUZCvDQCH71mVp+Ohabn0xXLh5pK2PKp45HCxkqu5Fxn/lA==",
+      "files": [
+        "System.Reflection.Primitives.4.0.0.nupkg",
+        "System.Reflection.Primitives.4.0.0.nupkg.sha512",
+        "System.Reflection.Primitives.nuspec",
+        "lib/DNXCore50/System.Reflection.Primitives.dll",
+        "lib/net45/_._",
+        "lib/netcore50/System.Reflection.Primitives.dll",
+        "lib/win8/_._",
+        "lib/wp80/_._",
+        "lib/wpa81/_._",
+        "ref/dotnet/System.Reflection.Primitives.dll",
+        "ref/dotnet/System.Reflection.Primitives.xml",
+        "ref/dotnet/de/System.Reflection.Primitives.xml",
+        "ref/dotnet/es/System.Reflection.Primitives.xml",
+        "ref/dotnet/fr/System.Reflection.Primitives.xml",
+        "ref/dotnet/it/System.Reflection.Primitives.xml",
+        "ref/dotnet/ja/System.Reflection.Primitives.xml",
+        "ref/dotnet/ko/System.Reflection.Primitives.xml",
+        "ref/dotnet/ru/System.Reflection.Primitives.xml",
+        "ref/dotnet/zh-hans/System.Reflection.Primitives.xml",
+        "ref/dotnet/zh-hant/System.Reflection.Primitives.xml",
+        "ref/net45/_._",
+        "ref/netcore50/System.Reflection.Primitives.dll",
+        "ref/netcore50/System.Reflection.Primitives.xml",
+        "ref/win8/_._",
+        "ref/wp80/_._",
+        "ref/wpa81/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Reflection.Primitives.dll"
+      ]
+    },
+    "System.Reflection.TypeExtensions/4.0.0": {
+      "serviceable": true,
+      "sha512": "YRM/msNAM86hdxPyXcuZSzmTO0RQFh7YMEPBLTY8cqXvFPYIx2x99bOyPkuU81wRYQem1c1HTkImQ2DjbOBfew==",
+      "files": [
+        "System.Reflection.TypeExtensions.4.0.0.nupkg",
+        "System.Reflection.TypeExtensions.4.0.0.nupkg.sha512",
+        "System.Reflection.TypeExtensions.nuspec",
+        "lib/DNXCore50/System.Reflection.TypeExtensions.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/System.Reflection.TypeExtensions.dll",
+        "lib/netcore50/System.Reflection.TypeExtensions.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Reflection.TypeExtensions.dll",
+        "ref/dotnet/System.Reflection.TypeExtensions.xml",
+        "ref/dotnet/de/System.Reflection.TypeExtensions.xml",
+        "ref/dotnet/es/System.Reflection.TypeExtensions.xml",
+        "ref/dotnet/fr/System.Reflection.TypeExtensions.xml",
+        "ref/dotnet/it/System.Reflection.TypeExtensions.xml",
+        "ref/dotnet/ja/System.Reflection.TypeExtensions.xml",
+        "ref/dotnet/ko/System.Reflection.TypeExtensions.xml",
+        "ref/dotnet/ru/System.Reflection.TypeExtensions.xml",
+        "ref/dotnet/zh-hans/System.Reflection.TypeExtensions.xml",
+        "ref/dotnet/zh-hant/System.Reflection.TypeExtensions.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/System.Reflection.TypeExtensions.dll",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Reflection.TypeExtensions.dll"
+      ]
+    },
+    "System.Resources.ResourceManager/4.0.0": {
+      "serviceable": true,
+      "sha512": "qmqeZ4BJgjfU+G2JbrZt4Dk1LsMxO4t+f/9HarNY6w8pBgweO6jT+cknUH7c3qIrGvyUqraBhU45Eo6UtA0fAw==",
+      "files": [
+        "System.Resources.ResourceManager.4.0.0.nupkg",
+        "System.Resources.ResourceManager.4.0.0.nupkg.sha512",
+        "System.Resources.ResourceManager.nuspec",
+        "lib/DNXCore50/System.Resources.ResourceManager.dll",
+        "lib/net45/_._",
+        "lib/netcore50/System.Resources.ResourceManager.dll",
+        "lib/win8/_._",
+        "lib/wp80/_._",
+        "lib/wpa81/_._",
+        "ref/dotnet/System.Resources.ResourceManager.dll",
+        "ref/dotnet/System.Resources.ResourceManager.xml",
+        "ref/dotnet/de/System.Resources.ResourceManager.xml",
+        "ref/dotnet/es/System.Resources.ResourceManager.xml",
+        "ref/dotnet/fr/System.Resources.ResourceManager.xml",
+        "ref/dotnet/it/System.Resources.ResourceManager.xml",
+        "ref/dotnet/ja/System.Resources.ResourceManager.xml",
+        "ref/dotnet/ko/System.Resources.ResourceManager.xml",
+        "ref/dotnet/ru/System.Resources.ResourceManager.xml",
+        "ref/dotnet/zh-hans/System.Resources.ResourceManager.xml",
+        "ref/dotnet/zh-hant/System.Resources.ResourceManager.xml",
+        "ref/net45/_._",
+        "ref/netcore50/System.Resources.ResourceManager.dll",
+        "ref/netcore50/System.Resources.ResourceManager.xml",
+        "ref/win8/_._",
+        "ref/wp80/_._",
+        "ref/wpa81/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Resources.ResourceManager.dll"
+      ]
+    },
+    "System.Runtime/4.0.20": {
+      "serviceable": true,
+      "sha512": "X7N/9Bz7jVPorqdVFO86ns1sX6MlQM+WTxELtx+Z4VG45x9+LKmWH0GRqjgKprUnVuwmfB9EJ9DQng14Z7/zwg==",
+      "files": [
+        "System.Runtime.4.0.20.nupkg",
+        "System.Runtime.4.0.20.nupkg.sha512",
+        "System.Runtime.nuspec",
+        "lib/DNXCore50/System.Runtime.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.Runtime.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Runtime.dll",
+        "ref/dotnet/System.Runtime.xml",
+        "ref/dotnet/de/System.Runtime.xml",
+        "ref/dotnet/es/System.Runtime.xml",
+        "ref/dotnet/fr/System.Runtime.xml",
+        "ref/dotnet/it/System.Runtime.xml",
+        "ref/dotnet/ja/System.Runtime.xml",
+        "ref/dotnet/ko/System.Runtime.xml",
+        "ref/dotnet/ru/System.Runtime.xml",
+        "ref/dotnet/zh-hans/System.Runtime.xml",
+        "ref/dotnet/zh-hant/System.Runtime.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Runtime.dll"
+      ]
+    },
+    "System.Runtime.Extensions/4.0.10": {
+      "serviceable": true,
+      "sha512": "5dsEwf3Iml7d5OZeT20iyOjT+r+okWpN7xI2v+R4cgd3WSj4DeRPTvPFjDpacbVW4skCAZ8B9hxXJYgkCFKJ1A==",
+      "files": [
+        "System.Runtime.Extensions.4.0.10.nupkg",
+        "System.Runtime.Extensions.4.0.10.nupkg.sha512",
+        "System.Runtime.Extensions.nuspec",
+        "lib/DNXCore50/System.Runtime.Extensions.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.Runtime.Extensions.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Runtime.Extensions.dll",
+        "ref/dotnet/System.Runtime.Extensions.xml",
+        "ref/dotnet/de/System.Runtime.Extensions.xml",
+        "ref/dotnet/es/System.Runtime.Extensions.xml",
+        "ref/dotnet/fr/System.Runtime.Extensions.xml",
+        "ref/dotnet/it/System.Runtime.Extensions.xml",
+        "ref/dotnet/ja/System.Runtime.Extensions.xml",
+        "ref/dotnet/ko/System.Runtime.Extensions.xml",
+        "ref/dotnet/ru/System.Runtime.Extensions.xml",
+        "ref/dotnet/zh-hans/System.Runtime.Extensions.xml",
+        "ref/dotnet/zh-hant/System.Runtime.Extensions.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Runtime.Extensions.dll"
+      ]
+    },
+    "System.Runtime.Handles/4.0.0": {
+      "serviceable": true,
+      "sha512": "638VhpRq63tVcQ6HDb3um3R/J2BtR1Sa96toHo6PcJGPXEPEsleCuqhBgX2gFCz0y0qkutANwW6VPPY5wQu1XQ==",
+      "files": [
+        "System.Runtime.Handles.4.0.0.nupkg",
+        "System.Runtime.Handles.4.0.0.nupkg.sha512",
+        "System.Runtime.Handles.nuspec",
+        "lib/DNXCore50/System.Runtime.Handles.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.Runtime.Handles.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Runtime.Handles.dll",
+        "ref/dotnet/System.Runtime.Handles.xml",
+        "ref/dotnet/de/System.Runtime.Handles.xml",
+        "ref/dotnet/es/System.Runtime.Handles.xml",
+        "ref/dotnet/fr/System.Runtime.Handles.xml",
+        "ref/dotnet/it/System.Runtime.Handles.xml",
+        "ref/dotnet/ja/System.Runtime.Handles.xml",
+        "ref/dotnet/ko/System.Runtime.Handles.xml",
+        "ref/dotnet/ru/System.Runtime.Handles.xml",
+        "ref/dotnet/zh-hans/System.Runtime.Handles.xml",
+        "ref/dotnet/zh-hant/System.Runtime.Handles.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Runtime.Handles.dll"
+      ]
+    },
+    "System.Runtime.InteropServices/4.0.20": {
+      "serviceable": true,
+      "sha512": "ZgDyBYfEnjWoz/viS6VOswA6XOkDSH2DzgbpczbW50RywhnCgTl+w3JEvtAiOGyIh8cyx1NJq80jsNBSUr8Pig==",
+      "files": [
+        "System.Runtime.InteropServices.4.0.20.nupkg",
+        "System.Runtime.InteropServices.4.0.20.nupkg.sha512",
+        "System.Runtime.InteropServices.nuspec",
+        "lib/DNXCore50/System.Runtime.InteropServices.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.Runtime.InteropServices.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Runtime.InteropServices.dll",
+        "ref/dotnet/System.Runtime.InteropServices.xml",
+        "ref/dotnet/de/System.Runtime.InteropServices.xml",
+        "ref/dotnet/es/System.Runtime.InteropServices.xml",
+        "ref/dotnet/fr/System.Runtime.InteropServices.xml",
+        "ref/dotnet/it/System.Runtime.InteropServices.xml",
+        "ref/dotnet/ja/System.Runtime.InteropServices.xml",
+        "ref/dotnet/ko/System.Runtime.InteropServices.xml",
+        "ref/dotnet/ru/System.Runtime.InteropServices.xml",
+        "ref/dotnet/zh-hans/System.Runtime.InteropServices.xml",
+        "ref/dotnet/zh-hant/System.Runtime.InteropServices.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Runtime.InteropServices.dll"
+      ]
+    },
+    "System.Runtime.Loader/4.0.0-beta-23302": {
+      "serviceable": true,
+      "sha512": "b4NcLjIIX8W3TY3MR8nNp2c+JgZFWcf1Nr5W3FfrM6Takr1BjBsDKv40cqK1yP2UsEnaIjGkAzXOph4fF4I40A==",
+      "files": [
+        "System.Runtime.Loader.4.0.0-beta-23302.nupkg",
+        "System.Runtime.Loader.4.0.0-beta-23302.nupkg.sha512",
+        "System.Runtime.Loader.nuspec",
+        "lib/DNXCore50/System.Runtime.Loader.dll",
+        "ref/dotnet/System.Runtime.Loader.dll"
+      ]
+    },
+    "System.Text.Encoding/4.0.10": {
+      "sha512": "fNlSFgy4OuDlJrP9SFFxMlaLazq6ipv15sU5TiEgg9UCVnA/OgoVUfymFp4AOk1jOkW5SVxWbeeIUptcM+m/Vw==",
+      "files": [
+        "System.Text.Encoding.4.0.10.nupkg",
+        "System.Text.Encoding.4.0.10.nupkg.sha512",
+        "System.Text.Encoding.nuspec",
+        "lib/DNXCore50/System.Text.Encoding.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.Text.Encoding.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Text.Encoding.dll",
+        "ref/dotnet/System.Text.Encoding.xml",
+        "ref/dotnet/de/System.Text.Encoding.xml",
+        "ref/dotnet/es/System.Text.Encoding.xml",
+        "ref/dotnet/fr/System.Text.Encoding.xml",
+        "ref/dotnet/it/System.Text.Encoding.xml",
+        "ref/dotnet/ja/System.Text.Encoding.xml",
+        "ref/dotnet/ko/System.Text.Encoding.xml",
+        "ref/dotnet/ru/System.Text.Encoding.xml",
+        "ref/dotnet/zh-hans/System.Text.Encoding.xml",
+        "ref/dotnet/zh-hant/System.Text.Encoding.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Text.Encoding.dll"
+      ]
+    },
+    "System.Text.Encoding.Extensions/4.0.10": {
+      "sha512": "TZvlwXMxKo3bSRIcsWZLCIzIhLbvlz+mGeKYRZv/zUiSoQzGOwkYeBu6hOw2XPQgKqT0F4Rv8zqKdvmp2fWKYg==",
+      "files": [
+        "System.Text.Encoding.Extensions.4.0.10.nupkg",
+        "System.Text.Encoding.Extensions.4.0.10.nupkg.sha512",
+        "System.Text.Encoding.Extensions.nuspec",
+        "lib/DNXCore50/System.Text.Encoding.Extensions.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.Text.Encoding.Extensions.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Text.Encoding.Extensions.dll",
+        "ref/dotnet/System.Text.Encoding.Extensions.xml",
+        "ref/dotnet/de/System.Text.Encoding.Extensions.xml",
+        "ref/dotnet/es/System.Text.Encoding.Extensions.xml",
+        "ref/dotnet/fr/System.Text.Encoding.Extensions.xml",
+        "ref/dotnet/it/System.Text.Encoding.Extensions.xml",
+        "ref/dotnet/ja/System.Text.Encoding.Extensions.xml",
+        "ref/dotnet/ko/System.Text.Encoding.Extensions.xml",
+        "ref/dotnet/ru/System.Text.Encoding.Extensions.xml",
+        "ref/dotnet/zh-hans/System.Text.Encoding.Extensions.xml",
+        "ref/dotnet/zh-hant/System.Text.Encoding.Extensions.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Text.Encoding.Extensions.dll"
+      ]
+    },
+    "System.Text.RegularExpressions/4.0.10": {
+      "serviceable": true,
+      "sha512": "0vDuHXJePpfMCecWBNOabOKCvzfTbFMNcGgklt3l5+RqHV5SzmF7RUVpuet8V0rJX30ROlL66xdehw2Rdsn2DA==",
+      "files": [
+        "System.Text.RegularExpressions.4.0.10.nupkg",
+        "System.Text.RegularExpressions.4.0.10.nupkg.sha512",
+        "System.Text.RegularExpressions.nuspec",
+        "lib/dotnet/System.Text.RegularExpressions.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Text.RegularExpressions.dll",
+        "ref/dotnet/System.Text.RegularExpressions.xml",
+        "ref/dotnet/de/System.Text.RegularExpressions.xml",
+        "ref/dotnet/es/System.Text.RegularExpressions.xml",
+        "ref/dotnet/fr/System.Text.RegularExpressions.xml",
+        "ref/dotnet/it/System.Text.RegularExpressions.xml",
+        "ref/dotnet/ja/System.Text.RegularExpressions.xml",
+        "ref/dotnet/ko/System.Text.RegularExpressions.xml",
+        "ref/dotnet/ru/System.Text.RegularExpressions.xml",
+        "ref/dotnet/zh-hans/System.Text.RegularExpressions.xml",
+        "ref/dotnet/zh-hant/System.Text.RegularExpressions.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._"
+      ]
+    },
+    "System.Threading/4.0.10": {
+      "serviceable": true,
+      "sha512": "0w6pRxIEE7wuiOJeKabkDgeIKmqf4ER1VNrs6qFwHnooEE78yHwi/bKkg5Jo8/pzGLm0xQJw0nEmPXt1QBAIUA==",
+      "files": [
+        "System.Threading.4.0.10.nupkg",
+        "System.Threading.4.0.10.nupkg.sha512",
+        "System.Threading.nuspec",
+        "lib/DNXCore50/System.Threading.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.Threading.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Threading.dll",
+        "ref/dotnet/System.Threading.xml",
+        "ref/dotnet/de/System.Threading.xml",
+        "ref/dotnet/es/System.Threading.xml",
+        "ref/dotnet/fr/System.Threading.xml",
+        "ref/dotnet/it/System.Threading.xml",
+        "ref/dotnet/ja/System.Threading.xml",
+        "ref/dotnet/ko/System.Threading.xml",
+        "ref/dotnet/ru/System.Threading.xml",
+        "ref/dotnet/zh-hans/System.Threading.xml",
+        "ref/dotnet/zh-hant/System.Threading.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Threading.dll"
+      ]
+    },
+    "System.Threading.Overlapped/4.0.0": {
+      "serviceable": true,
+      "sha512": "X5LuQFhM5FTqaez3eXKJ9CbfSGZ7wj6j4hSVtxct3zmwQXLqG95qoWdvILcgN7xtrDOBIFtpiyDg0vmoI0jE2A==",
+      "files": [
+        "System.Threading.Overlapped.4.0.0.nupkg",
+        "System.Threading.Overlapped.4.0.0.nupkg.sha512",
+        "System.Threading.Overlapped.nuspec",
+        "lib/DNXCore50/System.Threading.Overlapped.dll",
+        "lib/net46/System.Threading.Overlapped.dll",
+        "lib/netcore50/System.Threading.Overlapped.dll",
+        "ref/dotnet/System.Threading.Overlapped.dll",
+        "ref/dotnet/System.Threading.Overlapped.xml",
+        "ref/dotnet/de/System.Threading.Overlapped.xml",
+        "ref/dotnet/es/System.Threading.Overlapped.xml",
+        "ref/dotnet/fr/System.Threading.Overlapped.xml",
+        "ref/dotnet/it/System.Threading.Overlapped.xml",
+        "ref/dotnet/ja/System.Threading.Overlapped.xml",
+        "ref/dotnet/ko/System.Threading.Overlapped.xml",
+        "ref/dotnet/ru/System.Threading.Overlapped.xml",
+        "ref/dotnet/zh-hans/System.Threading.Overlapped.xml",
+        "ref/dotnet/zh-hant/System.Threading.Overlapped.xml",
+        "ref/net46/System.Threading.Overlapped.dll"
+      ]
+    },
+    "System.Threading.Tasks/4.0.10": {
+      "serviceable": true,
+      "sha512": "NOwJGDfk79jR0bnzosbXLVD/PdI8KzBeESoa3CofEM5v9R5EBfcI0Jyf18stx+0IYV9okmDIDxVtxq9TbnR9bQ==",
+      "files": [
+        "System.Threading.Tasks.4.0.10.nupkg",
+        "System.Threading.Tasks.4.0.10.nupkg.sha512",
+        "System.Threading.Tasks.nuspec",
+        "lib/DNXCore50/System.Threading.Tasks.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.Threading.Tasks.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Threading.Tasks.dll",
+        "ref/dotnet/System.Threading.Tasks.xml",
+        "ref/dotnet/de/System.Threading.Tasks.xml",
+        "ref/dotnet/es/System.Threading.Tasks.xml",
+        "ref/dotnet/fr/System.Threading.Tasks.xml",
+        "ref/dotnet/it/System.Threading.Tasks.xml",
+        "ref/dotnet/ja/System.Threading.Tasks.xml",
+        "ref/dotnet/ko/System.Threading.Tasks.xml",
+        "ref/dotnet/ru/System.Threading.Tasks.xml",
+        "ref/dotnet/zh-hans/System.Threading.Tasks.xml",
+        "ref/dotnet/zh-hant/System.Threading.Tasks.xml",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Threading.Tasks.dll"
+      ]
+    },
+    "System.Threading.Thread/4.0.0-beta-23302": {
+      "serviceable": true,
+      "sha512": "0tn5ET6NNDVjJdpacPXM9lwa3tZeKiIYZHOZPtsbORXop84IN93KenlcqEdPizxPsnOAgauVIgeKftnvwcvlsQ==",
+      "files": [
+        "System.Threading.Thread.4.0.0-beta-23302.nupkg",
+        "System.Threading.Thread.4.0.0-beta-23302.nupkg.sha512",
+        "System.Threading.Thread.nuspec",
+        "lib/DNXCore50/System.Threading.Thread.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/System.Threading.Thread.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Threading.Thread.dll",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/System.Threading.Thread.dll",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._"
+      ]
+    },
+    "System.Threading.ThreadPool/4.0.10-beta-23302": {
+      "serviceable": true,
+      "sha512": "dwwA7ce4yVXenjpJU20JyNn3zrXsWWkbw9UMNK49C09D7tmrYLSxzWSzY7/4034okFcOjQmtP5g36ZRZANZL9A==",
+      "files": [
+        "System.Threading.ThreadPool.4.0.10-beta-23302.nupkg",
+        "System.Threading.ThreadPool.4.0.10-beta-23302.nupkg.sha512",
+        "System.Threading.ThreadPool.nuspec",
+        "lib/DNXCore50/System.Threading.ThreadPool.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/System.Threading.ThreadPool.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Threading.ThreadPool.dll",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/System.Threading.ThreadPool.dll",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._"
+      ]
+    },
+    "System.Xml.ReaderWriter/4.0.11-beta-23302": {
+      "serviceable": true,
+      "sha512": "z9D4/CQ9FytubW6CuTFkv7nb9jPHEvTlOUCXD83oEh5gYfw6RfRJGVPpqY+eJLQOqnBS0wgCPck3zNKEWGCFEA==",
+      "files": [
+        "System.Xml.ReaderWriter.4.0.11-beta-23302.nupkg",
+        "System.Xml.ReaderWriter.4.0.11-beta-23302.nupkg.sha512",
+        "System.Xml.ReaderWriter.nuspec",
+        "lib/dotnet/System.Xml.ReaderWriter.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Xml.ReaderWriter.dll",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._"
+      ]
+    },
+    "System.Xml.XDocument/4.0.11-beta-23302": {
+      "serviceable": true,
+      "sha512": "ugSaPpuT0ImDyfbRtUdsBd6PMWaTYGbeRg1jO6/2tW0cBYIUU5h9496L2Pjm4l6UYa4v2G1+IH1CE/a19D+qSQ==",
+      "files": [
+        "System.Xml.XDocument.4.0.11-beta-23302.nupkg",
+        "System.Xml.XDocument.4.0.11-beta-23302.nupkg.sha512",
+        "System.Xml.XDocument.nuspec",
+        "lib/dotnet/System.Xml.XDocument.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Xml.XDocument.dll",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._"
+      ]
+    },
+    "System.Xml.XmlDocument/4.0.1-beta-23302": {
+      "serviceable": true,
+      "sha512": "cv14snu2E01I+Ar4Kb8bNfPLdh3+OZDnJArvaRWzdpM1XAnY5SwrsbZLEOE6h6wAIFp3aefU8IbcbnXOMRATlQ==",
+      "files": [
+        "System.Xml.XmlDocument.4.0.1-beta-23302.nupkg",
+        "System.Xml.XmlDocument.4.0.1-beta-23302.nupkg.sha512",
+        "System.Xml.XmlDocument.nuspec",
+        "lib/dotnet/System.Xml.XmlDocument.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/System.Xml.XmlDocument.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Xml.XmlDocument.dll",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/System.Xml.XmlDocument.dll",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._"
+      ]
+    },
+    "System.Xml.XmlSerializer/4.0.11-beta-23302": {
+      "serviceable": true,
+      "sha512": "aLVJmiBKKGhPYAa3zaojjowvsNuFA5hBmDC6aN8Iv+UAr0WIIPOFy9ASp8oTx6VQ7kEhjxCQXC+pWU21597wXA==",
+      "files": [
+        "runtime.json",
+        "System.Xml.XmlSerializer.4.0.11-beta-23302.nupkg",
+        "System.Xml.XmlSerializer.4.0.11-beta-23302.nupkg.sha512",
+        "System.Xml.XmlSerializer.nuspec",
+        "lib/DNXCore50/System.Xml.XmlSerializer.dll",
+        "lib/MonoAndroid10/_._",
+        "lib/MonoTouch10/_._",
+        "lib/net46/_._",
+        "lib/netcore50/System.Xml.XmlSerializer.dll",
+        "lib/xamarinios10/_._",
+        "lib/xamarinmac20/_._",
+        "ref/dotnet/System.Xml.XmlSerializer.dll",
+        "ref/MonoAndroid10/_._",
+        "ref/MonoTouch10/_._",
+        "ref/net46/_._",
+        "ref/xamarinios10/_._",
+        "ref/xamarinmac20/_._",
+        "runtimes/win8-aot/lib/netcore50/System.Xml.XmlSerializer.dll"
+      ]
+    }
+  },
+  "projectFileDependencyGroups": {
+    "": [
+      "System.Diagnostics.Process >= 4.0.0-beta-23302",
+      "System.IO >= 4.0.10-beta-23302",
+      "System.IO.FileSystem >= 4.0.0-beta-23302",
+      "System.IO.FileSystem.Primitives >= 4.0.0-beta-23302",
+      "System.Runtime >= 4.0.20-beta-23302",
+      "System.Runtime.Extensions >= 4.0.10-beta-23302",
+      "System.Runtime.Handles >= 4.0.0-beta-23302",
+      "System.Runtime.Loader >= 4.0.0-beta-23302",
+      "System.Threading >= 4.0.10-beta-23302",
+      "System.Globalization.Calendars >= 4.0.0-beta-23302",
+      "System.Globalization >= 4.0.10-beta-23302",
+      "System.Text.Encoding >= 4.0.10-beta-23302",
+      "System.Runtime.InteropServices >= 4.0.20-beta-23302",
+      "System.Collections >= 4.0.10-beta-23302",
+      "System.Console >= 4.0.0-beta-23302",
+      "System.Reflection >= 4.0.10-beta-23302",
+      "System.Reflection.Primitives >= 4.0.0-beta-23302",
+      "System.ComponentModel >= 4.0.1-beta-23302",
+      "System.Xml.ReaderWriter >= 4.0.11-beta-23302",
+      "System.Collections.NonGeneric >= 4.0.1-beta-23302",
+      "System.Collections.Specialized >= 4.0.1-beta-23302",
+      "System.Linq >= 4.0.1-beta-23302",
+      "System.Linq.Queryable >= 4.0.1-beta-23302",
+      "System.Xml.XmlSerializer >= 4.0.11-beta-23302",
+      "System.Xml.XmlDocument >= 4.0.1-beta-23302",
+      "System.Xml.XDocument >= 4.0.11-beta-23302"
+    ],
+    "DNXCore,Version=v5.0": []
+  }
+}
\ No newline at end of file
diff --git a/tests/src/JIT/Methodical/structs/systemvbringup/structinregs.cpp b/tests/src/JIT/Methodical/structs/systemvbringup/structinregs.cpp
new file mode 100644 (file)
index 0000000..22519f6
--- /dev/null
@@ -0,0 +1,475 @@
+#include <stdio.h>
+
+#ifdef __clang__
+#define EXPORT(type) __attribute__((visibility("default"))) extern "C" type
+#else
+#define EXPORT(type) type
+#endif
+
+typedef unsigned char byte;
+
+struct S1
+{
+    int x;
+    int y;
+    int z;
+    int w;
+};
+
+struct S2
+{
+    int x;
+    int y;
+    float z;
+};
+
+struct S3
+{
+    int x;
+    int y;
+    double z;
+};
+
+struct S4
+{
+    int x;
+    float y;
+};
+
+struct S5
+{
+    int x;
+    double y;
+};
+
+struct S6
+{
+    short x;
+    short y;
+    int z;
+    int w;
+};
+
+struct S7
+{
+    double x;
+    int y;
+    int z;
+};
+
+struct S8
+{
+    double x;
+    int y;
+};
+
+struct S9
+{
+    int x;
+    int y;
+    float z;
+    float w;
+};
+
+struct S10
+{
+    byte a;
+    byte b;
+    byte c;
+    byte d;
+    byte e;
+    byte f;
+    byte g;
+    byte h;
+};
+
+struct S11
+{
+    byte a;
+    byte b;
+    byte c;
+    byte d;
+    double e;
+};
+
+struct S12
+{
+    byte a;
+    byte b;
+    byte c;
+    byte d;
+    byte e;
+    byte f;
+    byte g;
+    byte h;
+    long long i;
+};
+
+struct S13
+{
+    byte hasValue;
+    int x;
+};
+
+struct S14
+{
+    byte x;
+    long long y;
+};
+
+struct S15
+{
+    byte a;
+    byte b;
+    byte c;
+    byte d;
+    byte e;
+    byte f;
+    byte g;
+    byte h;
+    byte i;
+};
+
+struct S16
+{
+    byte x;
+    short y;
+};
+
+struct S17
+{
+    float x;
+    float y;
+};
+
+struct S18
+{
+    float x;
+    int y;
+    float z;
+};
+
+struct S19
+{
+    int x;
+    float y;
+    int z;
+    float w;
+};
+
+struct S20
+{
+    long long x;
+    long long y;
+    long long z;
+    long long w;
+};
+
+struct S28
+{
+    void* x;
+    int y;
+};
+
+struct S29
+{
+    int x;
+    void* y;
+};
+
+struct S30
+{
+    long long x;
+    long long y;
+};
+    
+typedef void* (*PFNACTION1)(S1 s);
+typedef void* (*PFNACTION2)(S2 s);
+typedef void* (*PFNACTION3)(S3 s);
+typedef void* (*PFNACTION4)(S4 s);
+typedef void* (*PFNACTION5)(S5 s);
+typedef void* (*PFNACTION6)(S6 s);
+typedef void* (*PFNACTION7)(S7 s);
+typedef void* (*PFNACTION8)(S8 s);
+typedef void* (*PFNACTION9)(S9 s);
+typedef void* (*PFNACTION10)(S10 s);
+typedef void* (*PFNACTION11)(S11 s);
+typedef void* (*PFNACTION12)(S12 s);
+typedef void* (*PFNACTION13)(S13 s);
+typedef void* (*PFNACTION14)(S14 s);
+typedef void* (*PFNACTION15)(S15 s);
+typedef void* (*PFNACTION16)(S16 s);
+typedef void* (*PFNACTION17)(S17 s);
+typedef void* (*PFNACTION18)(S18 s);
+typedef void* (*PFNACTION19)(S19 s);
+typedef void* (*PFNACTION20)(S20 s);
+
+typedef void* (*PFNACTION28)(S28 s);
+typedef void* (*PFNACTION29)(S29 s);
+typedef void (*PFNACTION30)(S30 s1, S30 s2, S30 s3);
+
+EXPORT(void) InvokeCallback1(PFNACTION1 callback, S1 s)
+{
+    printf("Native S1: %d, %d, %d, %d\n", s.x, s.y, s.z, s.w);
+    callback(s);
+}
+
+EXPORT(void) InvokeCallback2(PFNACTION2 callback, S2 s)
+{
+    printf("Native S2: %d, %d, %f\n", s.x, s.y, s.z);
+    callback(s);
+}
+EXPORT(void) InvokeCallback3(PFNACTION3 callback, S3 s)
+{
+    printf("Native S3: %d, %d, %f\n", s.x, s.y, s.z);
+    callback(s);
+}
+EXPORT(void) InvokeCallback4(PFNACTION4 callback, S4 s)
+{
+    printf("Native S4: %d, %f\n", s.x, s.y);
+    callback(s);
+}
+EXPORT(void) InvokeCallback5(PFNACTION5 callback, S5 s)
+{
+    printf("Native S5: %d, %f\n", s.x, s.y);
+    callback(s);
+}
+EXPORT(void) InvokeCallback6(PFNACTION6 callback, S6 s)
+{
+    printf("Native S6: %hd, %hd, %d, %d\n", s.x, s.y, s.z, s.w);
+    callback(s);
+}
+EXPORT(void) InvokeCallback7(PFNACTION7 callback, S7 s)
+{
+    printf("Native S7: %f, %d, %d\n", s.x, s.y, s.z);
+    callback(s);
+}
+EXPORT(void) InvokeCallback8(PFNACTION8 callback, S8 s)
+{
+    printf("Native S8: %f, %d\n", s.x, s.y);
+    callback(s);
+}
+EXPORT(void) InvokeCallback9(PFNACTION9 callback, S9 s)
+{
+    printf("Native S9: %d, %d, %f, %f\n", s.x, s.y, s.z, s.w);
+    callback(s);
+}
+EXPORT(void) InvokeCallback10(PFNACTION10 callback, S10 s)
+{
+    printf("Native S10: %hhd, %hhd, %hhd, %hhd, %hhd, %hhd, %hhd, %hhd\n", s.a, s.b, s.c, s.d, s.e, s.f, s.g, s.h);
+    callback(s);
+}
+
+EXPORT(void) InvokeCallback11(PFNACTION11 callback, S11 s)
+{
+    printf("Native S11: %hhd, %hhd, %hhd, %hhd, %f\n", s.a, s.b, s.c, s.d, s.e);
+    callback(s);
+}
+EXPORT(void) InvokeCallback12(PFNACTION12 callback, S12 s)
+{
+    printf("Native S12: %hhd, %hhd, %hhd, %hhd, %hhd, %hhd, %hhd, %hhd, %lld\n", s.a, s.b, s.c, s.d, s.e, s.f, s.g, s.h, s.i);
+    callback(s);
+}
+EXPORT(void) InvokeCallback13(PFNACTION13 callback, S13 s)
+{
+    printf("Native S13: %hhd, %d\n", s.hasValue, s.x);
+    callback(s);
+}
+EXPORT(void) InvokeCallback14(PFNACTION14 callback, S14 s)
+{
+    printf("Native S13: %hhd, %lld\n", s.x, s.y);
+    callback(s);
+}
+EXPORT(void) InvokeCallback15(PFNACTION15 callback, S15 s)
+{
+    printf("Native S15: %hhd, %hhd, %hhd, %hhd, %hhd, %hhd, %hhd, %hhd, %hhd\n", s.a, s.b, s.c, s.d, s.e, s.f, s.g, s.h, s.i);
+    callback(s);
+}
+EXPORT(void) InvokeCallback16(PFNACTION16 callback, S16 s)
+{
+    printf("Native S16: %hhd, %hd\n", s.x, s.y);
+    callback(s);
+}
+EXPORT(void) InvokeCallback17(PFNACTION17 callback, S17 s)
+{
+    printf("Native S17: %f, %f\n", s.x, s.y);
+    callback(s);
+}
+EXPORT(void) InvokeCallback18(PFNACTION18 callback, S18 s)
+{
+    printf("Native S18: %f, %d, %f\n", s.x, s.y, s.z);
+    callback(s);
+}
+EXPORT(void) InvokeCallback19(PFNACTION19 callback, S19 s)
+{
+    printf("Native S19: %d, %f, %d, %f\n", s.x, s.y, s.z, s.w);
+    callback(s);
+}
+
+EXPORT(void) InvokeCallback20(PFNACTION20 callback, S20 s)
+{
+#ifdef __clang__
+    printf("Native S20: %lld, %lld, %lld, %lld\n", s.x, s.y, s.z, s.w);
+#else
+    printf("Native S20: %I64d, %I64d, %I64d, %I64d\n", s.x, s.y, s.z, s.w);
+#endif
+
+    callback(s);
+}
+
+EXPORT(void) InvokeCallback28(PFNACTION28 callback, S28 s)
+{
+    printf("Native S28: %X object, %d\n", (unsigned int)s.x, s.y);
+    callback(s);
+}
+EXPORT(void) InvokeCallback29(PFNACTION29 callback, S29 s)
+{
+    printf("Native S29: %d, %X object\n", s.x, (unsigned int)s.y);
+    callback(s);
+}
+
+EXPORT(void) InvokeCallback30(PFNACTION30 callback, S30 s1, S30 s2, S30 s3)
+{
+    printf("Native S30: %lld, %lld, %lld, %lld, %lld, %lld\n", s1.x, s1.y, s2.x, s2.y, s3.x, s3.y);
+    callback(s1, s2, s3);
+}
+
+EXPORT(S1) InvokeCallback1R(PFNACTION1 callback, S1 s)
+{
+    printf("Native S1: %d, %d, %d, %d\n", s.x, s.y, s.z, s.w);
+    callback(s);
+    return s;
+}
+
+EXPORT(S2) InvokeCallback2R(PFNACTION2 callback, S2 s)
+{
+    printf("Native S2: %d, %d, %f\n", s.x, s.y, s.z);
+    callback(s);
+    return s;
+}
+EXPORT(S3) InvokeCallback3R(PFNACTION3 callback, S3 s)
+{
+    printf("Native S3: %d, %d, %f\n", s.x, s.y, s.z);
+    callback(s);
+    return s;
+}
+EXPORT(S4) InvokeCallback4R(PFNACTION4 callback, S4 s)
+{
+    printf("Native S4: %d, %f\n", s.x, s.y);
+    callback(s);
+    return s;
+}
+EXPORT(S5) InvokeCallback5R(PFNACTION5 callback, S5 s)
+{
+    printf("Native S5: %d, %f\n", s.x, s.y);
+    callback(s);
+    return s;
+}
+EXPORT(S6) InvokeCallback6R(PFNACTION6 callback, S6 s)
+{
+    printf("Native S6: %hd, %hd, %d, %d\n", s.x, s.y, s.z, s.w);
+    callback(s);
+    return s;
+}
+EXPORT(S7) InvokeCallback7R(PFNACTION7 callback, S7 s)
+{
+    printf("Native S7: %f, %d, %d\n", s.x, s.y, s.z);
+    callback(s);
+    return s;
+}
+EXPORT(S8) InvokeCallback8R(PFNACTION8 callback, S8 s)
+{
+    printf("Native S8: %f, %d\n", s.x, s.y);
+    callback(s);
+    return s;
+}
+EXPORT(S9) InvokeCallback9R(PFNACTION9 callback, S9 s)
+{
+    printf("Native S9: %d, %d, %f, %f\n", s.x, s.y, s.z, s.w);
+    callback(s);
+    return s;
+}
+EXPORT(S10) InvokeCallback10R(PFNACTION10 callback, S10 s)
+{
+    printf("Native S10: %hhd, %hhd, %hhd, %hhd, %hhd, %hhd, %hhd, %hhd\n", s.a, s.b, s.c, s.d, s.e, s.f, s.g, s.h);
+    callback(s);
+    return s;
+}
+EXPORT(S11) InvokeCallback11R(PFNACTION11 callback, S11 s)
+{
+    printf("Native S11: %hhd, %hhd, %hhd, %hhd, %f\n", s.a, s.b, s.c, s.d, s.e);
+    callback(s);
+    return s;
+}
+EXPORT(S12) InvokeCallback12R(PFNACTION12 callback, S12 s)
+{
+    printf("Native S12: %hhd, %hhd, %hhd, %hhd, %hhd, %hhd, %hhd, %hhd, %lld\n", s.a, s.b, s.c, s.d, s.e, s.f, s.g, s.h, s.i);
+    callback(s);
+    return s;
+}
+EXPORT(S13) InvokeCallback13R(PFNACTION13 callback, S13 s)
+{
+    printf("Native S13: %hhd, %d\n", s.hasValue, s.x);
+    callback(s);
+    return s;
+}
+EXPORT(S14) InvokeCallback14R(PFNACTION14 callback, S14 s)
+{
+    printf("Native S13: %hhd, %lld\n", s.x, s.y);
+    callback(s);
+    return s;
+}
+EXPORT(S15) InvokeCallback15R(PFNACTION15 callback, S15 s)
+{
+    printf("Native S15: %hhd, %hhd, %hhd, %hhd, %hhd, %hhd, %hhd, %hhd, %hhd\n", s.a, s.b, s.c, s.d, s.e, s.f, s.g, s.h, s.i);
+    callback(s);
+    return s;
+}
+EXPORT(S16) InvokeCallback16R(PFNACTION16 callback, S16 s)
+{
+    printf("Native S16: %hhd, %hd\n", s.x, s.y);
+    callback(s);
+    return s;
+}
+EXPORT(S17) InvokeCallback17R(PFNACTION17 callback, S17 s)
+{
+    printf("Native S17: %f, %f\n", s.x, s.y);
+    callback(s);
+    return s;
+}
+EXPORT(S18) InvokeCallback18R(PFNACTION18 callback, S18 s)
+{
+    printf("Native S18: %f, %d, %f\n", s.x, s.y, s.z);
+    callback(s);
+    return s;
+}
+EXPORT(S19) InvokeCallback19R(PFNACTION19 callback, S19 s)
+{
+    printf("Native S19: %d, %f, %d, %f\n", s.x, s.y, s.z, s.w);
+    callback(s);
+    return s;
+}
+
+EXPORT(S20) InvokeCallback20R(PFNACTION20 callback, S20 s)
+{
+#ifdef __clang__
+    printf("Native S20: %lld, %lld, %lld, %lld\n", s.x, s.y, s.z, s.w);
+#else
+    printf("Native S20: %I64d, %I64d, %I64d, %I64d\n", s.x, s.y, s.z, s.w);
+#endif
+    callback(s);
+    return s;
+}
+
+EXPORT(S28) InvokeCallback28R(PFNACTION28 callback, S28 s)
+{
+    printf("Native S28: %X object, %d\n", (unsigned int)s.x, s.y);
+    callback(s);
+    return s;
+}
+EXPORT(S29) InvokeCallback29R(PFNACTION29 callback, S29 s)
+{
+    printf("Native S29: %d, %X object\n", s.x, (unsigned int)s.y);
+    callback(s);
+    return s;
+}
diff --git a/tests/src/JIT/Methodical/structs/systemvbringup/structinregs.csproj b/tests/src/JIT/Methodical/structs/systemvbringup/structinregs.csproj
new file mode 100644 (file)
index 0000000..dc1b9a5
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.props))\dir.props" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <AssemblyName>$(MSBuildProjectName)</AssemblyName>
+    <ProjectGuid>{649A239B-AB4B-4E20-BDCA-3BA736E8B790}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <!-- Default configurations to help VS understand the configurations -->
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="structpasstest.cs" />
+    <Compile Include="structpasstest1.cs" />
+    <Compile Include="structrettest.cs" />
+    <Compile Include="structpinvoketests.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="project.json" />
+    <ProjectReference Include="CMakeLists.txt" />
+  </ItemGroup>
+  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
+</Project>
diff --git a/tests/src/JIT/Methodical/structs/systemvbringup/structinregs.def b/tests/src/JIT/Methodical/structs/systemvbringup/structinregs.def
new file mode 100644 (file)
index 0000000..65437af
--- /dev/null
@@ -0,0 +1,46 @@
+EXPORTS
+    InvokeCallback1
+    InvokeCallback10
+    InvokeCallback10R
+    InvokeCallback11
+    InvokeCallback11R
+    InvokeCallback12
+    InvokeCallback12R
+    InvokeCallback13
+    InvokeCallback13R
+    InvokeCallback14
+    InvokeCallback14R
+    InvokeCallback15
+    InvokeCallback15R
+    InvokeCallback16
+    InvokeCallback16R
+    InvokeCallback17 
+    InvokeCallback17R
+    InvokeCallback18 
+    InvokeCallback18R
+    InvokeCallback19 
+    InvokeCallback19R
+    InvokeCallback1R 
+    InvokeCallback2
+    InvokeCallback20 
+    InvokeCallback20R
+    InvokeCallback28
+    InvokeCallback28R
+    InvokeCallback29
+    InvokeCallback29R
+    InvokeCallback2R
+    InvokeCallback3
+    InvokeCallback30
+    InvokeCallback3R
+    InvokeCallback4
+    InvokeCallback4R
+    InvokeCallback5
+    InvokeCallback5R
+    InvokeCallback6
+    InvokeCallback6R
+    InvokeCallback7
+    InvokeCallback7R
+    InvokeCallback8
+    InvokeCallback8R
+    InvokeCallback9
+    InvokeCallback9R
\ No newline at end of file
diff --git a/tests/src/JIT/Methodical/structs/systemvbringup/structpasstest.cs b/tests/src/JIT/Methodical/structs/systemvbringup/structpasstest.cs
new file mode 100644 (file)
index 0000000..5fcc53c
--- /dev/null
@@ -0,0 +1,230 @@
+using System;
+using System.Runtime.CompilerServices;
+namespace structinreg
+{
+    public class Program
+    {
+        public static int Main()
+        {
+            try
+            {
+                int ret = Program0.Main1();
+                if (ret != 100)
+                {
+                    return ret;
+                }
+
+                ret = Program1.Main1();
+                if (ret != 100)
+                {
+                    return ret;
+                }
+
+                ret = Program2.Main1();
+                if (ret != 100)
+                {
+                    return ret;
+                }
+
+                ret = Program3.Main1();
+                if (ret != 100)
+                {
+                    return ret;
+                }
+            }
+            catch(Exception e)
+            {
+                Console.WriteLine(e.ToString());
+            }
+            return 100;
+        }
+    }
+
+    struct Test20
+    {
+        public int i1;
+        public int i2;
+        public int i3;
+        public int i4;
+        public int i5;
+        public int i6;
+        public int i7;
+        public int i8;
+    }
+
+    struct Test21
+    {
+        public int i1;
+        public double d1;
+    }
+
+    struct Test22
+    {
+        public object o1;
+        public object o2;
+        public object o3;
+        public object o4;
+    }
+    struct Test23
+    {
+        public int i1;
+        public int i2;
+        public int i3;
+        public int i4;
+        public int i5;
+        public int i6;
+        public int i7;
+        public int i8;
+        public int i9;
+        public int i10;
+        public int i11;
+        public int i12;
+        public int i13;
+        public int i14;
+        public int i15;
+        public int i16;
+        public int i17;
+        public int i18;
+        public int i19;
+        public int i20;
+        public int i21;
+        public int i22;
+        public int i23;
+        public int i24;
+    }
+
+    public class Foo1
+    {
+        public int iFoo;
+    }
+
+    public class Program2
+    {
+        [MethodImplAttribute(MethodImplOptions.NoInlining)]
+        static int test20(Test20 t1)
+        {
+            Console.WriteLine("test1Res: {0}", t1.i1 + t1.i2 + t1.i3 + t1.i4 + t1.i5 + t1.i6 + t1.i7 + t1.i8);
+            return t1.i1 + t1.i2 + t1.i3 + t1.i4 + t1.i5 + t1.i6 + t1.i7 + t1.i8;
+        }
+
+        [MethodImplAttribute(MethodImplOptions.NoInlining)]
+        static int test21(Test21 t2)
+        {
+            Console.WriteLine("test2Res: {0}", t2.i1 + t2.d1);
+            return (int)(t2.i1 + t2.d1);
+        }
+
+        [MethodImplAttribute(MethodImplOptions.NoInlining)]
+        static int test22(Test22 t3)
+        {
+            Console.WriteLine("test3Res: {0} {1} {2} {3}", t3.o1, t3.o2, t3.o3, t3.o4);
+            return (int)(t3.o1.GetHashCode() + t3.o2.GetHashCode() + t3.o3.GetHashCode() + t3.o4.GetHashCode());
+        }
+
+        [MethodImplAttribute(MethodImplOptions.NoInlining)]
+        static int test23(Test23 t4)
+        {
+            Console.WriteLine("test4Res: {0}", t4.i1 + t4.i2, +t4.i3 + t4.i4 + t4.i5 + t4.i6 + t4.i7 + t4.i8 +
+                t4.i9 + t4.i10 + t4.i11 + t4.i12 + t4.i13 + t4.i14 +
+                t4.i15 + t4.i16 + t4.i17 + t4.i18 + t4.i19 + t4.i20 + t4.i21 + t4.i22 + t4.i23 + t4.i24);
+            return t4.i1 + t4.i2 + t4.i3 + t4.i4 + t4.i5 + t4.i6 + t4.i7 +
+                t4.i8 + t4.i9 + t4.i10 + t4.i11 + t4.i12 + t4.i13 + t4.i14 +
+                t4.i15 + t4.i16 + t4.i17 + t4.i18 + t4.i19 + t4.i20 + t4.i21 + t4.i22 + t4.i23 + t4.i24;
+        }
+
+        [MethodImplAttribute(MethodImplOptions.NoInlining)]
+        static int test24(int i1, int i2, int i3, int i4, int i5, int i6, int i7, Foo1 foo)
+        {
+            Console.WriteLine("test5Res: {0}", i1 + i2 + i3 + i4 + i5 + i6 + i7 + foo.iFoo);
+            return (i1 + i2 + i3 + i4 + i5 + i6 + i7 + foo.iFoo);
+        }
+
+        [MethodImplAttribute(MethodImplOptions.NoInlining)]
+        public static int Main1()
+        {
+            Test20 t1 = default(Test20);
+            t1.i1 = 1;
+            t1.i2 = 2;
+            t1.i3 = 3;
+            t1.i4 = 4;
+            t1.i5 = 5;
+            t1.i6 = 6;
+            t1.i7 = 7;
+            t1.i8 = 8;
+
+            Test21 t2 = default(Test21);
+            t2.i1 = 9;
+            t2.d1 = 10;
+
+            Test22 t3 = default(Test22);
+            t3.o1 = new object();
+            t3.o2 = new object();
+            t3.o3 = new object();
+            t3.o4 = new object();
+
+            Test23 t4 = default(Test23);
+            t4.i1 = 1;
+            t4.i2 = 2;
+            t4.i3 = 3;
+            t4.i4 = 4;
+            t4.i5 = 5;
+            t4.i6 = 6;
+            t4.i7 = 7;
+            t4.i8 = 8;
+            t4.i9 = 9;
+            t4.i10 = 10;
+            t4.i11 = 11;
+            t4.i12 = 12;
+            t4.i13 = 13;
+            t4.i14 = 14;
+            t4.i15 = 15;
+            t4.i16 = 16;
+            t4.i17 = 17;
+            t4.i18 = 18;
+            t4.i19 = 19;
+            t4.i20 = 20;
+            t4.i21 = 21;
+            t4.i22 = 22;
+            t4.i23 = 23;
+            t4.i24 = 24;
+
+            Foo1 foo = new Foo1();
+            foo.iFoo = 8;
+
+            int t1Res = test20(t1);
+            Console.WriteLine("test1 Result: {0}", t1Res);
+            if (t1Res != 36)
+            {
+                throw new Exception("Failed test1 test!");
+            }
+
+            int t2Res = test21(t2);
+            Console.WriteLine("test2 Result: {0}", t2Res);
+            if (t2Res != 19)
+            {
+                throw new Exception("Failed test2 test!");
+            }
+
+            int t3Res = test22(t3);
+            Console.WriteLine("test3 Result: {0}", t3Res);
+            if (t3Res == 0) // Adding HashCodes should be != 0.
+            {
+                throw new Exception("Failed test3 test!");
+            }
+
+            int t4Res = test23(t4);
+            Console.WriteLine("test4 Result: {0}", t4Res);
+            if (t4Res != 300)
+            {
+                throw new Exception("Failed test4 test!");
+            }
+
+            int t5Res = test24(1, 2, 3, 4, 5, 6, 7, foo);
+            if (t5Res != 36)
+            {
+                throw new Exception("Failed test5 test!");
+            }
+            return 100;
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/src/JIT/Methodical/structs/systemvbringup/structpasstest1.cs b/tests/src/JIT/Methodical/structs/systemvbringup/structpasstest1.cs
new file mode 100644 (file)
index 0000000..11fe997
--- /dev/null
@@ -0,0 +1,372 @@
+using System;
+using System.Runtime.CompilerServices;
+
+namespace structinreg
+{
+    struct Test1
+    {
+        public static int int0;
+        public int i1;
+        public int i2;
+        public int i3;
+        public int i4;
+        public int i5;
+        public int i6;
+        public int i7;
+        public int i8;
+    }
+
+    struct Test2
+    {
+        public int i1;
+        public double d1;
+    }
+
+    struct Test5
+    {
+        public float f1;
+        public Test2 t2;
+        public long l1;
+    }
+    struct Test9
+    {
+        public float f3;
+    }
+
+    struct Test10
+    {
+        public bool b1;
+        public Foo2 obj;
+    }
+
+    struct Test11
+    {
+        public string s1;
+        public Int32 int32;
+    }
+
+    struct Test6
+    {
+        public float f2;
+        public Test9 t9;
+        public int i3;
+    }
+
+    struct Test7
+    {
+        static int staticInt;
+        public Test6 t6;
+        public int i2;
+    }
+
+    struct Test3
+    {
+        public Foo2 o1;
+        public Foo2 o2;
+        public Foo2 o3;
+        public Foo2 o4;
+    }
+    struct Test4
+    {
+        public int i1;
+        public int i2;
+        public int i3;
+        public int i4;
+        public int i5;
+        public int i6;
+        public int i7;
+        public int i8;
+        public int i9;
+        public int i10;
+        public int i11;
+        public int i12;
+        public int i13;
+        public int i14;
+        public int i15;
+        public int i16;
+        public int i17;
+        public int i18;
+        public int i19;
+        public int i20;
+        public int i21;
+        public int i22;
+        public int i23;
+        public int i24;
+    }
+
+    class Foo2
+    {
+        public int iFoo;
+    }
+    struct Test12
+    {
+        public Foo2 foo;
+        public int i;
+    }
+
+    struct Test13
+    {
+        public Foo2 foo1;
+    }
+
+    struct Test14
+    {
+        public Test13 t13;
+    }
+
+    class Program1
+    {
+        [MethodImplAttribute(MethodImplOptions.NoInlining)]
+        static int test1(Test1 t1)
+        {
+            Console.WriteLine("test1: {0}", t1.i1 + t1.i2 + t1.i3 + t1.i4 + t1.i5 + t1.i6 + t1.i7 + t1.i8);
+            return t1.i1 + t1.i2 + t1.i3 + t1.i4 + t1.i5 + t1.i6 + t1.i7 + t1.i8;
+        }
+
+        [MethodImplAttribute(MethodImplOptions.NoInlining)]
+        static double test2(Test2 t2)
+        {
+            Console.WriteLine("test2: {0}", t2.i1 + t2.d1);
+            return t2.i1 + t2.d1;
+        }
+
+        [MethodImplAttribute(MethodImplOptions.NoInlining)]
+        static int test3(Test3 t3)
+        {
+            Console.WriteLine("test3: {0} {1} {2} {3}", t3.o1, t3.o2, t3.o3, t3.o4, t3.o1.iFoo + t3.o2.iFoo + t3.o3.iFoo + t3.o4.iFoo);
+
+            return t3.o1.iFoo + t3.o2.iFoo + t3.o3.iFoo + t3.o4.iFoo;
+        }
+
+        [MethodImplAttribute(MethodImplOptions.NoInlining)]
+        static int test4(Test4 t4)
+        {
+            Console.WriteLine("test4 Res: {0}", t4.i1 + t4.i2 + t4.i3 + t4.i4 + t4.i5 + t4.i6 + t4.i7 +
+                t4.i8 + t4.i9 + t4.i10 + t4.i11 + t4.i12 + t4.i13 + t4.i14 +
+                t4.i15 + t4.i16 + t4.i17 + t4.i18 + t4.i19 + t4.i20 + t4.i21 + t4.i22 + t4.i23 + t4.i24);
+            return t4.i1 + t4.i2 + t4.i3 + t4.i4 + t4.i5 + t4.i6 + t4.i7 +
+                t4.i8 + t4.i9 + t4.i10 + t4.i11 + t4.i12 + t4.i13 + t4.i14 +
+                t4.i15 + t4.i16 + t4.i17 + t4.i18 + t4.i19 + t4.i20 + t4.i21 + t4.i22 + t4.i23 + t4.i24;
+        }
+
+        [MethodImplAttribute(MethodImplOptions.NoInlining)]
+        static double test5(Test5 t5)
+        {
+            Console.WriteLine("test5 Res: {0}", t5.f1 + t5.t2.i1 + t5.t2.d1 + t5.l1);
+            return t5.f1 + t5.t2.i1 + t5.t2.d1 + t5.l1;
+        }
+
+        [MethodImplAttribute(MethodImplOptions.NoInlining)]
+        static float test7(Test7 t7)
+        {
+            Console.WriteLine("t7 Res: {0}", t7.i2 + t7.t6.f2 + t7.t6.i3 + t7.t6.t9.f3);
+            return t7.i2 + t7.t6.f2 + t7.t6.i3 + t7.t6.t9.f3;
+        }
+
+        [MethodImplAttribute(MethodImplOptions.NoInlining)]
+        static int test10(Test10 t10)
+        {
+            Console.WriteLine("t10 Res: {0}, {1}", t10.b1, t10.obj.iFoo);
+            int res = t10.b1 ? 8 : 9;
+            res += t10.obj.iFoo;
+
+            return res;
+        }
+
+        [MethodImplAttribute(MethodImplOptions.NoInlining)]
+        static int test11(Test11 t11)
+        {
+            Console.WriteLine("t11 Res: {0}, {1}", t11.s1, t11.int32);
+            return int.Parse(t11.s1) + t11.int32;
+        }
+
+        static int test12(Test12 t12)
+        {
+            Console.WriteLine("t12Res: {0}", t12.foo.iFoo + t12.i);
+            return t12.foo.iFoo + t12.i;
+        }
+
+        [MethodImplAttribute(MethodImplOptions.NoInlining)]
+        static int test13(Test13 t13)
+        {
+            Console.WriteLine("t13Res: {0}", t13.foo1.iFoo);
+            return t13.foo1.iFoo;
+        }
+
+        [MethodImplAttribute(MethodImplOptions.NoInlining)]
+        static int test14(Test14 t14)
+        {
+            Console.WriteLine("t14 Res: {0}", t14.t13.foo1.iFoo);
+            return t14.t13.foo1.iFoo;
+        }
+
+        [MethodImplAttribute(MethodImplOptions.NoInlining)]
+        public static int Main1()
+        {
+            Console.WriteLine("Foo2:Foo2:Foo2!!!");
+            Test1 t1 = default(Test1);
+            Test1.int0 = 999;
+            t1.i1 = 1;
+            t1.i2 = 2;
+            t1.i3 = 3;
+            t1.i4 = 4;
+            t1.i5 = 5;
+            t1.i6 = 6;
+            t1.i7 = 7;
+            t1.i8 = 8;
+
+            Test2 t2 = default(Test2);
+            t2.i1 = 9;
+            t2.d1 = 10;
+
+            Test3 t3 = default(Test3);
+            t3.o1 = new Foo2();
+            t3.o1.iFoo = 1;
+            t3.o2 = new Foo2();
+            t3.o2.iFoo = 2;
+            t3.o3 = new Foo2();
+            t3.o3.iFoo = 3;
+            t3.o4 = new Foo2();
+            t3.o4.iFoo = 4;
+
+            Test4 t4 = default(Test4);
+            t4.i1 = 1;
+            t4.i2 = 2;
+            t4.i3 = 3;
+            t4.i4 = 4;
+            t4.i5 = 5;
+            t4.i6 = 6;
+            t4.i7 = 7;
+            t4.i8 = 8;
+            t4.i9 = 9;
+            t4.i10 = 10;
+            t4.i11 = 11;
+            t4.i12 = 12;
+            t4.i13 = 13;
+            t4.i14 = 14;
+            t4.i15 = 15;
+            t4.i16 = 16;
+            t4.i17 = 17;
+            t4.i18 = 18;
+            t4.i19 = 19;
+            t4.i20 = 20;
+            t4.i21 = 21;
+            t4.i22 = 22;
+            t4.i23 = 23;
+            t4.i24 = 24;
+
+            Test5 t5 = default(Test5);
+            t5.f1 = 1;
+            t5.t2.i1 = 2;
+            t5.t2.d1 = 3;
+            t5.l1 = 4;
+
+            Test7 t7 = default(Test7);
+            t7.i2 = 31;
+            t7.t6.f2 = 32.0F;
+            t7.t6.i3 = 33;
+            t7.t6.t9.f3 = 34.0F;
+
+            Test10 t10 = default(Test10);
+            t10.b1 = true;
+            t10.obj = new Foo2();
+            t10.obj.iFoo = 7;
+
+            Test11 t11 = default(Test11);
+            t11.s1 = "78";
+            t11.int32 = 87;
+
+            Test12 t12 = default(Test12);
+            t12.foo = new Foo2();
+            t12.foo.iFoo = 45;
+            t12.i = 56;
+
+            Test13 t13 = default(Test13);
+            t13.foo1 = new Foo2();
+            t13.foo1.iFoo = 333;
+
+            Test14 t14 = default(Test14);
+            t14.t13.foo1 = new Foo2();
+            t14.t13.foo1.iFoo = 444;
+
+            int t13Res = test13(t13);
+            Console.WriteLine("test13 Result: {0}", t13Res);
+            if (t13Res != 333)
+            {
+                throw new Exception("Failed test13 test!");
+            }
+
+            int t14Res = test14(t14);
+            Console.WriteLine("test14 Result: {0}", t14Res);
+            if (t14Res != 444)
+            {
+                throw new Exception("Failed test14 test!");
+            }
+
+            int t10Res = test10(t10);
+            Console.WriteLine("test10 Result: {0}", t10Res);
+            if (t10Res != 15)
+            {
+                throw new Exception("Failed test10 test!");
+            }
+
+            int t11Res = test11(t11);
+            Console.WriteLine("test11 Result: {0}", t11Res);
+            if (t11Res != 165)
+            {
+                throw new Exception("Failed test11 test!");
+            }
+
+            int t12Res = test12(t12);
+            Console.WriteLine("test12 Result: {0}", t12Res);
+            if (t12Res != 101)
+            {
+                throw new Exception("Failed test12 test!");
+            }
+
+            int t1Res = test1(t1);
+            Console.WriteLine("test1 Result: {0}", t1Res);
+            if (t1Res != 36)
+            {
+                throw new Exception("Failed test1 test!");
+            }
+
+            double t2Res = test2(t2);
+            Console.WriteLine("test2 Result: {0}", t2Res);
+            if (t2Res != 19.0D)
+            {
+                throw new Exception("Failed test2 test!");
+            }
+
+            int t3Res = test3(t3);
+            Console.WriteLine("test3 Result: {0}", t3Res);
+            if (t3Res != 10)
+            {
+                throw new Exception("Failed test3 test!");
+            }
+
+            int t4Res = test4(t4);
+            Console.WriteLine("test4 Result: {0}", t4Res);
+            if (t4Res != 300)
+            {
+                throw new Exception("Failed test4 test!");
+            }
+
+            double t5Res = test5(t5);
+            Console.WriteLine("test5 Result: {0}", t5Res);
+            if (t5Res != 10.0D)
+            {
+                throw new Exception("Failed test5 test!");
+            }
+
+            float t7Res = test7(t7);
+            Console.WriteLine("test7 Result: {0}", t7Res);
+            if (t7Res != 130.00)
+            {
+                throw new Exception("Failed test7 test!");
+            }
+
+            return 100;
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/src/JIT/Methodical/structs/systemvbringup/structpinvoketests.cs b/tests/src/JIT/Methodical/structs/systemvbringup/structpinvoketests.cs
new file mode 100644 (file)
index 0000000..c28cea0
--- /dev/null
@@ -0,0 +1,1021 @@
+using System;  
+using System.Runtime.InteropServices;  
+
+namespace structinreg
+{
+    class Program3
+    {
+        class TestClass
+        {
+            object w;
+        };
+
+        public struct S1
+        {
+            public int x;
+            public int y;
+            public int z;
+            public int w;
+        }
+
+        public struct S2
+        {
+            public int x;
+            public int y;
+            public float z;
+        }
+
+        public struct S3
+        {
+            public int x;
+            public int y;
+            public double z;
+        }
+
+        public struct S4
+        {
+            public int x;
+            public float y;
+        }
+
+        public struct S5
+        {
+            public int x;
+            public double y;
+        }
+
+        public struct S6
+        {
+            public short x;
+            public short y;
+            public int z;
+            public int w;
+        }
+
+        public struct S7
+        {
+            public double x;
+            public int y;
+            public int z;
+        }
+
+        public struct S8
+        {
+            public double x;
+            public int y;
+        }
+
+        public struct S9
+        {
+            public int x;
+            public int y;
+            public float z;
+            public float w;
+        }
+
+        public struct S10
+        {
+            public byte a;
+            public byte b;
+            public byte c;
+            public byte d;
+            public byte e;
+            public byte f;
+            public byte g;
+            public byte h;
+        }
+        
+        public struct S11
+        {
+            public byte a;
+            public byte b;
+            public byte c;
+            public byte d;
+            public double e;
+        }
+
+        public struct S12
+        {
+            public byte a;
+            public byte b;
+            public byte c;
+            public byte d;
+            public byte e;
+            public byte f;
+            public byte g;
+            public byte h;
+            public long i;
+        }
+
+        public struct S13
+        {
+            public byte hasValue;
+            public int x;
+        }
+
+        public struct S14
+        {
+            public byte x;
+            public long y;
+        }
+
+        public struct S15
+        {
+            public byte a;
+            public byte b;
+            public byte c;
+            public byte d;
+            public byte e;
+            public byte f;
+            public byte g;
+            public byte h;
+            public byte i;
+        }
+
+        public struct S16
+        {
+            public byte x;
+            public short y;
+        }
+
+        public struct S17
+        {
+            public float x;
+            public float y;
+        }
+
+        public struct S18
+        {
+            public float x;
+            public int y;
+            public float z;
+        }
+
+        public struct S19
+        {
+            public int x;
+            public float y;
+            public int z;
+            public float w;
+        }
+
+        // struct that doesn't fit into registers
+        public struct S20
+        {
+            public long x;
+            public long y;
+            public long z;
+            public long w;
+        }
+/* These tests are not working on non Windows CoreCLR. Enable this when GH Issue #2076 is resolved.
+        [StructLayout(LayoutKind.Sequential)]
+        public struct S28
+        {
+            public object x;
+            public int y;
+        }
+
+        [StructLayout(LayoutKind.Sequential)]
+        public struct S29
+        {
+            public int x;
+            public object y;
+        }
+ Enable this when GH Issue #2076 is resolved. */
+        public struct S30
+        {
+            public long x;
+            public long y;
+        }
+
+        public delegate void MyCallback1(S1 s);
+        public delegate void MyCallback2(S2 s);
+        public delegate void MyCallback3(S3 s);
+        public delegate void MyCallback4(S4 s);
+        public delegate void MyCallback5(S5 s);
+        public delegate void MyCallback6(S6 s);
+        public delegate void MyCallback7(S7 s);
+        public delegate void MyCallback8(S8 s);
+        public delegate void MyCallback9(S9 s);
+        public delegate void MyCallback10(S10 s);
+        public delegate void MyCallback11(S11 s);
+        public delegate void MyCallback12(S12 s);
+        public delegate void MyCallback13(S13 s);
+        public delegate void MyCallback14(S14 s);
+        public delegate void MyCallback15(S15 s);
+        public delegate void MyCallback16(S16 s);
+        public delegate void MyCallback17(S17 s);
+        public delegate void MyCallback18(S18 s);
+        public delegate void MyCallback19(S19 s);
+        public delegate void MyCallback20(S20 s);
+        
+/* These tests are not working on non Windows CoreCLR.  Enable this when GH Issue #2076 is resolved.
+        public delegate void MyCallback28(S28 s);
+        public delegate void MyCallback29(S29 s);
+ Enable this when GH Issue #2076 is resolved. */
+        public delegate void MyCallback30(S30 s1, S30 s2, S30 s3);
+        
+        [DllImport("jitstructtests_lib")]
+        public static extern void InvokeCallback1(MyCallback1 callback, S1 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern void InvokeCallback2(MyCallback2 callback, S2 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern void InvokeCallback3(MyCallback3 callback, S3 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern void InvokeCallback4(MyCallback4 callback, S4 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern void InvokeCallback5(MyCallback5 callback, S5 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern void InvokeCallback6(MyCallback6 callback, S6 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern void InvokeCallback7(MyCallback7 callback, S7 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern void InvokeCallback8(MyCallback8 callback, S8 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern void InvokeCallback9(MyCallback9 callback, S9 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern void InvokeCallback10(MyCallback10 callback, S10 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern void InvokeCallback11(MyCallback11 callback, S11 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern void InvokeCallback12(MyCallback12 callback, S12 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern void InvokeCallback13(MyCallback13 callback, S13 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern void InvokeCallback14(MyCallback14 callback, S14 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern void InvokeCallback15(MyCallback15 callback, S15 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern void InvokeCallback16(MyCallback16 callback, S16 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern void InvokeCallback17(MyCallback17 callback, S17 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern void InvokeCallback18(MyCallback18 callback, S18 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern void InvokeCallback19(MyCallback19 callback, S19 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern void InvokeCallback20(MyCallback20 callback, S20 s);
+/* These tests are not working on non Windows CoreCLR.  Enable this when GH Issue #2076 is resolved.
+        
+        [DllImport("jitstructtests_lib")]
+        public static extern void InvokeCallback28(MyCallback28 callback, S28 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern void InvokeCallback29(MyCallback29 callback, S29 s);
+ Enable this when GH Issue #2076 is resolved. */
+        [DllImport("jitstructtests_lib")]
+        public static extern void InvokeCallback30(MyCallback30 callback, S30 s1, S30 s2, S30 s3);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern S1 InvokeCallback1R(MyCallback1 callback, S1 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern S2 InvokeCallback2R(MyCallback2 callback, S2 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern S3 InvokeCallback3R(MyCallback3 callback, S3 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern S4 InvokeCallback4R(MyCallback4 callback, S4 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern S5 InvokeCallback5R(MyCallback5 callback, S5 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern S6 InvokeCallback6R(MyCallback6 callback, S6 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern S7 InvokeCallback7R(MyCallback7 callback, S7 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern S8 InvokeCallback8R(MyCallback8 callback, S8 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern S9 InvokeCallback9R(MyCallback9 callback, S9 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern S10 InvokeCallback10R(MyCallback10 callback, S10 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern S11 InvokeCallback11R(MyCallback11 callback, S11 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern S12 InvokeCallback12R(MyCallback12 callback, S12 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern S13 InvokeCallback13R(MyCallback13 callback, S13 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern S14 InvokeCallback14R(MyCallback14 callback, S14 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern S15 InvokeCallback15R(MyCallback15 callback, S15 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern S16 InvokeCallback16R(MyCallback16 callback, S16 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern S17 InvokeCallback17R(MyCallback17 callback, S17 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern S18 InvokeCallback18R(MyCallback18 callback, S18 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern S19 InvokeCallback19R(MyCallback19 callback, S19 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern S20 InvokeCallback20R(MyCallback20 callback, S20 s);
+/* These tests are not working on non Windows CoreCLR.  Enable this when GH Issue #2076 is resolved.
+
+        [DllImport("jitstructtests_lib")]
+        public static extern S28 InvokeCallback28R(MyCallback28 callback, S28 s);
+
+        [DllImport("jitstructtests_lib")]
+        public static extern S29 InvokeCallback29R(MyCallback29 callback, S29 s);
+ Enable this when GH Issue #2076 is resolved. */        
+        static public int Main1()
+        {
+            Program3 p = new Program3();
+            S1 s1 = new S1();
+            s1.x = 1;
+            s1.y = 2;
+            s1.z = 3;
+            s1.w = 4;
+            
+            InvokeCallback1((par) => {
+                Console.WriteLine("S1: {0}, {1}, {2}, {3}", par.x, par.y, par.z, par.w);
+                if (par.x != 1 || par.y != 2 || par.z != 3 || par.w != 4)
+                {
+                    throw new System.Exception();
+                }
+            }, s1);
+
+            S2 s2;
+            s2.x = 1;
+            s2.y = 2;
+            s2.z = 3;
+            InvokeCallback2((par) => {
+                Console.WriteLine("S2: {0}, {1}, {2}", par.x, par.y, par.z);
+                if (par.x != 1 || par.y != 2 || par.z != 3)
+                {
+                    throw new System.Exception();
+                }
+            }, s2);
+
+            S3 s3;
+            s3.x = 1;
+            s3.y = 2;
+            s3.z = 3;
+            InvokeCallback3((par) => {
+                Console.WriteLine("S3: {0}, {1}, {2}", par.x, par.y, par.z);
+                if (par.x != 1 || par.y != 2 || par.z != 3)
+                {
+                    throw new System.Exception();
+                }
+            }, s3);
+
+            S4 s4;
+            s4.x = 1;
+            s4.y = 2;
+            InvokeCallback4((par) => {
+                Console.WriteLine("S4: {0}, {1}", par.x, par.y);
+                if (par.x != 1 || par.y != 2)
+                {
+                    throw new System.Exception();
+                }
+            }, s4);
+
+            S5 s5;
+            s5.x = 1;
+            s5.y = 2;
+            InvokeCallback5((par) => {
+                Console.WriteLine("S5: {0}, {1}", par.x, par.y);
+                if (par.x != 1 || par.y != 2)
+                {
+                    throw new System.Exception();
+                }
+            }, s5);
+
+            S6 s6;
+            s6.x = 1;
+            s6.y = 2;
+            s6.z = 3;
+            s6.w = 4;
+            InvokeCallback6((par) => {
+                Console.WriteLine("S6: {0}, {1}, {2}, {3}", par.x, par.y, par.z, par.w);
+                if (par.x != 1 || par.y != 2 || par.z != 3 || par.w != 4)
+                {
+                    throw new System.Exception();
+                }
+            }, s6);
+
+            S7 s7;
+            s7.x = 1;
+            s7.y = 2;
+            s7.z = 3;
+            InvokeCallback7((par) => {
+                Console.WriteLine("S7: {0}, {1}, {2}", par.x, par.y, par.z);
+                if (par.x != 1 || par.y != 2 || par.z != 3)
+                {
+                    throw new System.Exception();
+                }
+            }, s7);
+
+            S8 s8;
+            s8.x = 1;
+            s8.y = 2;
+            InvokeCallback8((par) => {
+                Console.WriteLine("S8: {0}, {1}", par.x, par.y);
+                if (par.x != 1 || par.y != 2)
+                {
+                    throw new System.Exception();
+                }
+            }, s8);
+
+            S9 s9;
+            s9.x = 1;
+            s9.y = 2;
+            s9.z = 3;
+            s9.w = 4;
+            InvokeCallback9((par) => {
+                Console.WriteLine("S9: {0}, {1}, {2}, {3}", par.x, par.y, par.z, par.w);
+                if (par.x != 1 || par.y != 2 || par.z != 3 || par.w != 4)
+                {
+                    throw new System.Exception();
+                }
+            }, s9);
+            
+            S10 s10;
+            s10.a = 1;
+            s10.b = 2;
+            s10.c = 3;
+            s10.d = 4;
+            s10.e = 5;
+            s10.f = 6;
+            s10.g = 7;
+            s10.h = 8;
+            InvokeCallback10((par) => {
+                Console.WriteLine("S10: {0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}", par.a, par.b, par.c, par.d, par.e, par.f, par.g, par.h);
+                if (par.a != 1 || par.b != 2 || par.c != 3 || par.d != 4 ||
+                    par.e != 5 || par.f != 6 || par.g != 7 || par.h != 8)
+                {
+                    throw new System.Exception();
+                }
+            }, s10);
+
+            S11 s11;
+            s11.a = 1;
+            s11.b = 2;
+            s11.c = 3;
+            s11.d = 4;
+            s11.e = 5;
+            InvokeCallback11((par) => {
+                Console.WriteLine("S11: {0}, {1}, {2}, {3}, {4}", par.a, par.b, par.c, par.d, par.e);
+                if (par.a != 1 || par.b != 2 || par.c != 3 || par.d != 4 || par.e != 5)
+                {
+                    throw new System.Exception();
+                }
+            }, s11);
+
+            S12 s12;
+            s12.a = 1;
+            s12.b = 2;
+            s12.c = 3;
+            s12.d = 4;
+            s12.e = 5;
+            s12.f = 6;
+            s12.g = 7;
+            s12.h = 8;
+            s12.i = 9;
+            InvokeCallback12((par) => {
+                Console.WriteLine("S12: {0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}", par.a, par.b, par.c, par.d, par.e, par.f, par.g, par.h, par.i);
+                if (par.a != 1 || par.b != 2 || par.c != 3 || par.d != 4 ||
+                    par.e != 5 || par.f != 6 || par.g != 7 || par.h != 8 || par.i != 9)
+                {
+                    throw new System.Exception();
+                }
+            }, s12);
+
+            S13 s13;
+            s13.hasValue = 1;
+            s13.x = 2;
+            InvokeCallback13((par) => {
+                Console.WriteLine("S13: {0}, {1}", par.hasValue, par.x);
+                if (par.hasValue != 1 || par.x != 2)
+                {
+                    throw new System.Exception();
+                }
+            }, s13);
+
+            S14 s14;
+            s14.x = 1;
+            s14.y = 2;
+            InvokeCallback14((par) => {
+                Console.WriteLine("S14: {0}, {1}", par.x, par.y);
+                if (par.x != 1 || par.y != 2)
+                {
+                    throw new System.Exception();
+                }
+            }, s14);
+
+            S15 s15;
+            s15.a = 1;
+            s15.b = 2;
+            s15.c = 3;
+            s15.d = 4;
+            s15.e = 5;
+            s15.f = 6;
+            s15.g = 7;
+            s15.h = 8;
+            s15.i = 9;
+            InvokeCallback15((par) => {
+                Console.WriteLine("S15: {0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}", par.a, par.b, par.c, par.d, par.e, par.f, par.g, par.h, par.i);
+                if (par.a != 1 || par.b != 2 || par.c != 3 || par.d != 4 ||
+                    par.e != 5 || par.f != 6 || par.g != 7 || par.h != 8 || par.i != 9)
+                {
+                    throw new System.Exception();
+                }
+            }, s15);
+
+            S16 s16;
+            s16.x = 1;
+            s16.y = 2;
+            InvokeCallback16((par) => {
+                Console.WriteLine("S16: {0}, {1}", par.x, par.y);
+                if (par.x != 1 || par.y != 2)
+                {
+                    throw new System.Exception();
+                }
+            }, s16);
+
+            S17 s17;
+            s17.x = 1;
+            s17.y = 2;
+            InvokeCallback17((par) => {
+                Console.WriteLine("S17: {0}, {1}", par.x, par.y);
+                if (par.x != 1 || par.y != 2)
+                {
+                    throw new System.Exception();
+                }
+            }, s17);
+
+            S18 s18;
+            s18.x = 1;
+            s18.y = 2;
+            s18.z = 3;
+            InvokeCallback18((par) => {
+                Console.WriteLine("S18: {0}, {1}, {2}", par.x, par.y, par.z);
+                if (par.x != 1 || par.y != 2 || par.z != 3)
+                {
+                    throw new System.Exception();
+                }
+            }, s18);
+
+            S19 s19;
+            s19.x = 1;
+            s19.y = 2;
+            s19.z = 3;
+            s19.w = 4;
+            InvokeCallback19((par) => {
+                Console.WriteLine("S19: {0}, {1}, {2}, {3}", par.x, par.y, par.z, par.w);
+                if (par.x != 1 || par.y != 2 || par.z != 3 || par.w != 4)
+                {
+                    throw new System.Exception();
+                }
+            }, s19);
+
+            S20 s20;
+            s20.x = 1;
+            s20.y = 2;
+            s20.z = 3;
+            s20.w = 4;
+            InvokeCallback20((par) => {
+                Console.WriteLine("S20: {0}, {1}, {2}, {3}", par.x, par.y, par.z, par.w);
+                if (par.x != 1 || par.y != 2 || par.z != 3 || par.w != 4)
+                {
+                    throw new System.Exception();
+                }
+            }, s20);
+
+/* These tests are not working on non Windows CoreCLR.  Enable this when GH Issue #2076 is resolved.
+            TestClass testClass = new TestClass();
+            S28 s28;
+            s28.x = null;
+            s28.y = 1;
+
+            InvokeCallback28((par) => {
+                Console.WriteLine("S28: {0}, {1}", par.x == null ? "Null" : "Not null", par.y);
+                if (par.x != null || par.y != 1)
+                {
+                    throw new System.Exception();
+                }
+            }, s28);
+
+            s28.x = testClass;
+            s28.y = 5;
+
+            InvokeCallback28((par) => {
+                Console.WriteLine("S28: {0}, {1}", par.x == null ? "Null" : "Not null", par.y);
+                if (par.x != testClass || par.y != 5)
+                {
+                    throw new System.Exception();
+                }
+            }, s28);
+
+            S29 s29;
+            s29.x = 1;
+            s29.y = null;
+
+            InvokeCallback29((par) => {
+                Console.WriteLine("S29: {0}, {1}", par.x, par.y == null ? "Null" : "Not null");
+                if (par.x != 1 || par.y != null)
+                {
+                    throw new System.Exception();
+                }
+            }, s29);
+
+            s29.x = 5;
+            s29.y = testClass;
+            
+            InvokeCallback29((par) => {
+                Console.WriteLine("S29: {0}, {1}", par.x, par.y == null ? "Null" : "Not null");
+                if (par.x != 5 || par.y != testClass)
+                {
+                    throw new System.Exception();
+                }
+            }, s29);
+ Enable this when GH Issue #2076 is resolved. */
+            S30 s30;
+            s30.x = 1;
+            s30.y = 2;
+
+            S30 s30_2;
+            s30_2.x = 3;
+            s30_2.y = 4;
+            
+            S30 s30_3;
+            s30_3.x = 5;
+            s30_3.y = 6;
+            
+            // Program p = new Program();
+            InvokeCallback30(p.Test30, s30, s30_2, s30_3);
+            S1 s1r = InvokeCallback1R((par) => {
+                Console.WriteLine("S1: {0}, {1}, {2}, {3}", par.x, par.y, par.z, par.w);
+                if (par.x != 1 || par.y != 2 || par.z != 3 || par.w != 4)
+                {
+                    throw new System.Exception();
+                }
+
+            }, s1);
+            Console.WriteLine("S1R: {0}, {1}, {2}, {3}", s1r.x, s1r.y, s1r.z, s1r.w);
+            if (s1r.x != 1 || s1r.y != 2 || s1r.z != 3 || s1r.w != 4)
+            {
+                throw new System.Exception();
+            }
+
+            S2 s2r = InvokeCallback2R((par) => {
+                Console.WriteLine("S2: {0}, {1}, {2}", par.x, par.y, par.z);
+                if (par.x != 1 || par.y != 2 || par.z != 3)
+                {
+                    throw new System.Exception();
+                }
+            }, s2);
+            Console.WriteLine("S2R: {0}, {1}, {2}", s2r.x, s2r.y, s2r.z);
+            if (s2r.x != 1 || s2r.y != 2 || s2r.z != 3)
+            {
+                throw new System.Exception();
+            }
+
+            S3 s3r = InvokeCallback3R((par) => {
+                Console.WriteLine("S3: {0}, {1}, {2}", par.x, par.y, par.z);
+                if (par.x != 1 || par.y != 2 || par.z != 3)
+                {
+                    throw new System.Exception();
+                }
+            }, s3);
+            Console.WriteLine("S3R: {0}, {1}, {2}", s3r.x, s3r.y, s3r.z);
+            if (s3r.x != 1 || s3r.y != 2 || s3r.z != 3)
+            {
+                throw new System.Exception();
+            }
+
+            S4 s4r = InvokeCallback4R((par) => {
+                Console.WriteLine("S4: {0}, {1}", par.x, par.y);
+                if (par.x != 1 || par.y != 2)
+                {
+                    throw new System.Exception();
+                }
+            }, s4);
+            Console.WriteLine("S4R: {0}, {1}", s4r.x, s4r.y);
+            if (s4r.x != 1 || s4r.y != 2)
+            {
+                throw new System.Exception();
+            }
+
+            S5 s5r = InvokeCallback5R((par) => {
+                Console.WriteLine("S5: {0}, {1}", par.x, par.y);
+                if (par.x != 1 || par.y != 2)
+                {
+                    throw new System.Exception();
+                }
+            }, s5);
+            Console.WriteLine("S5R: {0}, {1}", s5r.x, s5r.y);
+            if (s5r.x != 1 || s5r.y != 2)
+            {
+                throw new System.Exception();
+            }
+
+            S6 s6r = InvokeCallback6R((par) => {
+                Console.WriteLine("S6: {0}, {1}, {2}, {3}", par.x, par.y, par.z, par.w);
+                if (par.x != 1 || par.y != 2 || par.z != 3 || par.w != 4)
+                {
+                    throw new System.Exception();
+                }
+            }, s6);
+            Console.WriteLine("S6R: {0}, {1}, {2}, {3}", s6r.x, s6r.y, s6r.z, s6r.w);
+            if (s6r.x != 1 || s6r.y != 2 || s6r.z != 3 || s6r.w != 4)
+            {
+                throw new System.Exception();
+            }
+
+            S7 s7r = InvokeCallback7R((par) => {
+                Console.WriteLine("S7: {0}, {1}, {2}", par.x, par.y, par.z);
+                if (par.x != 1 || par.y != 2 || par.z != 3)
+                {
+                    throw new System.Exception();
+                }
+            }, s7);
+            Console.WriteLine("S7R: {0}, {1}, {2}", s7r.x, s7r.y, s7r.z);
+            if (s7r.x != 1 || s7r.y != 2 || s7r.z != 3)
+            {
+                throw new System.Exception();
+            }
+
+            S8 s8r = InvokeCallback8R((par) => {
+                Console.WriteLine("S8: {0}, {1}", par.x, par.y);
+                if (par.x != 1 || par.y != 2)
+                {
+                    throw new System.Exception();
+                }
+            }, s8);
+            Console.WriteLine("S8R: {0}, {1}", s8r.x, s8r.y);
+            if (s8r.x != 1 || s8r.y != 2)
+            {
+                throw new System.Exception();
+            }
+
+            S9 s9r = InvokeCallback9R((par) => {
+                Console.WriteLine("S9: {0}, {1}, {2}, {3}", par.x, par.y, par.z, par.w);
+                if (par.x != 1 || par.y != 2 || par.z != 3 || par.w != 4)
+                {
+                    throw new System.Exception();
+                }
+            }, s9);
+            Console.WriteLine("S9R: {0}, {1}, {2}, {3}", s9r.x, s9r.y, s9r.z, s9r.w);
+            if (s9r.x != 1 || s9r.y != 2 || s9r.z != 3 || s9r.w != 4)
+            {
+                throw new System.Exception();
+            }
+            
+            S10 s10r = InvokeCallback10R((par) => {
+                Console.WriteLine("S10: {0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}", par.a, par.b, par.c, par.d, par.e, par.f, par.g, par.h);
+                if (par.a != 1 || par.b != 2 || par.c != 3 || par.d != 4 ||
+                    par.e != 5 || par.f != 6 || par.g != 7 || par.h != 8)
+                {
+                    throw new System.Exception();
+                }
+            }, s10);
+            Console.WriteLine("S10R: {0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}", s10r.a, s10r.b, s10r.c, s10r.d, s10r.e, s10r.f, s10r.g, s10r.h);
+            if (s10r.a != 1 || s10r.b != 2 || s10r.c != 3 || s10r.d != 4 ||
+                s10r.e != 5 || s10r.f != 6 || s10r.g != 7 || s10r.h != 8)
+            {
+                throw new System.Exception();
+            }
+
+            S11 s11r = InvokeCallback11R((par) => {
+                Console.WriteLine("S11: {0}, {1}, {2}, {3}, {4}", par.a, par.b, par.c, par.d, par.e);
+                if (par.a != 1 || par.b != 2 || par.c != 3 || par.d != 4 || par.e != 5)
+                {
+                    throw new System.Exception();
+                }
+            }, s11);
+            Console.WriteLine("S11R: {0}, {1}, {2}, {3}, {4}", s11r.a, s11r.b, s11r.c, s11r.d, s11r.e);
+            if (s11r.a != 1 || s11r.b != 2 || s11r.c != 3 || s11r.d != 4 || s11r.e != 5)
+            {
+                throw new System.Exception();
+            }
+
+            S12 s12r = InvokeCallback12R((par) => {
+                Console.WriteLine("S12: {0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}", par.a, par.b, par.c, par.d, par.e, par.f, par.g, par.h, par.i);
+                if (par.a != 1 || par.b != 2 || par.c != 3 || par.d != 4 ||
+                    par.e != 5 || par.f != 6 || par.g != 7 || par.h != 8 || par.i != 9)
+                {
+                    throw new System.Exception();
+                }
+            }, s12);
+            Console.WriteLine("S12R: {0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}", s12r.a, s12r.b, s12r.c, s12r.d, s12r.e, s12r.f, s12r.g, s12r.h, s12r.i);
+            if (s12r.a != 1 || s12r.b != 2 || s12r.c != 3 || s12r.d != 4 ||
+                s12r.e != 5 || s12r.f != 6 || s12r.g != 7 || s12r.h != 8 || s12r.i != 9)
+            {
+                throw new System.Exception();
+            }
+
+            S13 s13r = InvokeCallback13R((par) => {
+                Console.WriteLine("S13: {0}, {1}", par.hasValue, par.x);
+                if (par.hasValue != 1 || par.x != 2)
+                {
+                    throw new System.Exception();
+                }
+            }, s13);
+            Console.WriteLine("S13R: {0}, {1}", s13r.hasValue, s13r.x);
+            if (s13r.hasValue != 1 || s13r.x != 2)
+            {
+                throw new System.Exception();
+            }
+
+            S14 s14r = InvokeCallback14R((par) => {
+                Console.WriteLine("S14: {0}, {1}", par.x, par.y);
+                if (par.x != 1 || par.y != 2)
+                {
+                    throw new System.Exception();
+                }
+            }, s14);
+            Console.WriteLine("S14R: {0}, {1}", s14r.x, s14r.y);
+            if (s14r.x != 1 || s14r.y != 2)
+            {
+                throw new System.Exception();
+            }
+
+            S15 s15r = InvokeCallback15R((par) => {
+                Console.WriteLine("S15: {0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}", par.a, par.b, par.c, par.d, par.e, par.f, par.g, par.h, par.i);
+                if (par.a != 1 || par.b != 2 || par.c != 3 || par.d != 4 ||
+                    par.e != 5 || par.f != 6 || par.g != 7 || par.h != 8 || par.i != 9)
+                {
+                    throw new System.Exception();
+                }
+            }, s15);
+            Console.WriteLine("S15R: {0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}", s15r.a, s15r.b, s15r.c, s15r.d, s15r.e, s15r.f, s15r.g, s15r.h, s15r.i);
+            if (s15r.a != 1 || s15r.b != 2 || s15r.c != 3 || s15r.d != 4 ||
+                s15r.e != 5 || s15r.f != 6 || s15r.g != 7 || s15r.h != 8 || s15r.i != 9)
+            {
+                throw new System.Exception();
+            }
+
+            S16 s16r = InvokeCallback16R((par) => {
+                Console.WriteLine("S16: {0}, {1}", par.x, par.y);
+                if (par.x != 1 || par.y != 2)
+                {
+                    throw new System.Exception();
+                }
+            }, s16);
+            Console.WriteLine("S16R: {0}, {1}", s16r.x, s16r.y);
+            if (s16r.x != 1 || s16r.y != 2)
+            {
+                throw new System.Exception();
+            }
+
+            S17 s17r = InvokeCallback17R((par) => {
+                Console.WriteLine("S17: {0}, {1}", par.x, par.y);
+                if (par.x != 1 || par.y!= 2)
+                {
+                    throw new System.Exception();
+                }
+            }, s17);
+            Console.WriteLine("S17R: {0}, {1}", s17r.x, s17r.y);
+            if (s17r.x != 1 || s17r.y != 2)
+            {
+                throw new System.Exception();
+            }
+
+            S18 s18r = InvokeCallback18R((par) => {
+                Console.WriteLine("S18: {0}, {1}, {2}", par.x, par.y, par.z);
+                if (par.x != 1 || par.y != 2 || par.z != 3)
+                {
+                    throw new System.Exception();
+                }
+            }, s18);
+            Console.WriteLine("S18R: {0}, {1}, {2}", s18r.x, s18r.y, s18r.z);
+            if (s18r.x != 1 || s18r.y != 2 || s18r.z != 3)
+            {
+                throw new System.Exception();
+            }
+
+            S19 s19r = InvokeCallback19R((par) => {
+                Console.WriteLine("S19: {0}, {1}, {2}, {3}", par.x, par.y, par.z, par.w);
+                if (par.x != 1 || par.y != 2 || par.z != 3 || par.w != 4)
+                {
+                    throw new System.Exception();
+                }
+            }, s19);
+            Console.WriteLine("S19R: {0}, {1}, {2}, {3}", s19r.x, s19r.y, s19r.z, s19r.w);
+            if (s19r.x != 1 || s19r.y != 2 || s19r.z != 3 || s19r.w != 4)
+            {
+                throw new System.Exception();
+            }
+
+            S20 s20r = InvokeCallback20R((par) => {
+                Console.WriteLine("S20: {0}, {1}, {2}, {3}", par.x, par.y, par.z, par.w);
+                if (par.x != 1 || par.y != 2 || par.z != 3 || par.w != 4)
+                {
+                    throw new System.Exception();
+                }
+            }, s20);
+            Console.WriteLine("S20R: {0}, {1}, {2}, {3}", s20r.x, s20r.y, s20r.z, s20r.w);
+            if (s20r.x != 1 || s20r.y != 2 || s20r.z != 3 || s20r.w != 4)
+            {
+                throw new System.Exception();
+            }
+/* These tests are not working on non Windows CoreCLR.  Enable this when GH Issue #2076 is resolved.
+            s28.x = null;
+            S28 s28r = InvokeCallback28R((par) => {
+                Console.WriteLine("S28: {0}, {1}", par.x == null ? "Null" : "Not null", par.y);
+                if (par.x == null || par.y != 5)
+                {
+                    throw new System.Exception();
+                }
+            }, s28);
+            Console.WriteLine("S28R: {0}, {1}", s28r.x == null ? "Null" : "Not null", s28r.y);
+            if (s28r.x == null || s28r.y != 5)
+            {
+                throw new System.Exception();
+            }
+
+            s28.x = testClass;
+            s28.y = 5;
+
+            s28r = InvokeCallback28R((par) => {
+                Console.WriteLine("S28: {0}, {1}", par.x == null ? "Null" : "Not null", par.y);
+                if (par.x != testClass || par.y != 5)
+                {
+                    throw new System.Exception();
+                }
+            }, s28);
+            Console.WriteLine("S28R: {0}, {1}", s28r.x == null ? "Null" : "Not null", s28r.y);
+            if (s28r.x != testClass || s28r.y != 5)
+            {
+                throw new System.Exception();
+            }
+
+            s29.y = null;
+            S29 s29r = InvokeCallback29R((par) => {
+                Console.WriteLine("S29: {0}, {1}", par.x, par.y == null ? "Null" : "Not null");
+                if (par.x != 5 || par.y == null)
+                {
+                    throw new System.Exception();
+                }
+            }, s29);
+            Console.WriteLine("S29R: {0}, {1}", s29r.x, s29r.y == null ? "Null" : "Not null");
+            if (s29r.x != 5 || s29r.y == null)
+            {
+                throw new System.Exception();
+            }
+
+            s29.x = 5;
+            s29.y = testClass;
+            s29r = InvokeCallback29R((par) => {
+                Console.WriteLine("S29: {0}, {1}", par.x, par.y == null ? "Null" : "Not null");
+                if (par.x != 5 || par.y != testClass)
+                {
+                    throw new System.Exception();
+                }
+            }, s29);            
+            Console.WriteLine("S29R: {0}, {1}", s29r.x, s29r.y == null ? "Null" : "Not null");
+            if (s29r.x != 5 || s29r.y != testClass)
+            {
+                throw new System.Exception();
+            }
+ Enable this when GH Issue #2076 is resolved. */
+            return 100;
+        }
+        
+        void Test30(S30 par1, S30 par2, S30 par3)
+        {
+            Console.WriteLine("S30: {0}, {1}, {2}, {3}, {4}, {5}", par1.x, par1.y, par2.x, par2.y, par3.x, par3.y);
+            if (par1.x != 1 || par1.y != 2 || par2.x != 3 || par2.y != 4 ||
+                par3.x != 5 || par3.y != 6)
+            {
+                throw new System.Exception();
+            }
+        }
+    }
+}
diff --git a/tests/src/JIT/Methodical/structs/systemvbringup/structrettest.cs b/tests/src/JIT/Methodical/structs/systemvbringup/structrettest.cs
new file mode 100644 (file)
index 0000000..a5ebce5
--- /dev/null
@@ -0,0 +1,155 @@
+using System;
+using System.Runtime.CompilerServices;
+
+namespace structinreg
+{
+    public class Foo3
+    {
+        public int iFoo;
+    }
+
+    struct Test30
+    {
+        public int i1;
+        public int i2;
+    }
+
+    struct Test31
+    {
+        public Foo3 foo1;
+    }
+
+    struct Test32
+    {
+        public int i1;
+        public Foo3 foo1;
+    }
+
+    struct Test33
+    {
+        public Foo3 foo1;
+        public Foo3 foo2;
+    }
+
+    struct Test34
+    {
+        public int i1;
+        public int i2;
+        public float f1;
+    }
+
+
+    class Program0
+    {
+        [MethodImplAttribute(MethodImplOptions.NoInlining)]
+        Test30 test1()
+        {
+            Test30 test1 = default(Test30);
+            test1.i1 = 1;
+            test1.i2 = 2;
+
+            return test1;
+        }
+
+        [MethodImplAttribute(MethodImplOptions.NoInlining)]
+        Test31 test2()
+        {
+            Test31 test2 = default(Test31);
+            Foo3 foo = new Foo3();
+            foo.iFoo = 3;
+            test2.foo1 = foo;
+            return test2;
+        }
+
+        [MethodImplAttribute(MethodImplOptions.NoInlining)]
+        Test32 test3()
+        {
+            Test32 test3 = default(Test32);
+            Foo3 foo = new Foo3();
+            foo.iFoo = 4;
+            test3.foo1 = foo;
+            test3.i1 = 3;
+            return test3;
+        }
+
+        [MethodImplAttribute(MethodImplOptions.NoInlining)]
+        Test33 test4()
+        {
+            Test33 test4 = default(Test33);
+            Foo3 foo1 = new Foo3();
+            Foo3 foo2 = new Foo3();
+            foo1.iFoo = 5;
+            foo2.iFoo = 6;
+            test4.foo1 = foo1;
+            test4.foo2 = foo2;
+            return test4;
+        }
+
+        [MethodImplAttribute(MethodImplOptions.NoInlining)]
+        Test34 test5(Test34 t5)
+        {
+            float fRes = t5.i1 + t5.i2 + t5.f1;
+            Console.WriteLine("From Test5 members: {0} {1} {2} {3}", t5.i1, t5.i2, t5.f1, fRes);
+            Console.WriteLine("From Test5: Res {0}", fRes);
+            if (fRes != 33.0)
+            {
+                throw new Exception("Failed inside test5 test!");
+            }
+
+            Test34 tst5 = default(Test34);
+            tst5.i1 = 13;
+            tst5.i2 = 14;
+            tst5.f1 = 15;
+            return tst5;
+        }
+
+        [MethodImplAttribute(MethodImplOptions.NoInlining)]
+        public static int Main1()
+        {
+            Program0 p = new Program0();
+
+            Test30 t1Res = p.test1();
+            Console.WriteLine("test1 Result: {0}", t1Res.i1 + t1Res.i2);
+            if ((t1Res.i1 + t1Res.i2) != 3)
+            {
+                throw new Exception("Failed test1 test!");
+            }
+
+            Test31 t2Res = p.test2();
+            Console.WriteLine("test2 Result: {0}", t2Res.foo1.iFoo);
+            if (t2Res.foo1.iFoo != 3)
+            {
+                throw new Exception("Failed test2 test!");
+            }
+
+            Test32 t3Res = p.test3();
+            Console.WriteLine("test3 Result: {0}", t3Res.i1 + t3Res.foo1.iFoo);
+            if ((t3Res.i1 + t3Res.foo1.iFoo) != 7) // Adding HashCodes should be != 0.
+            {
+                throw new Exception("Failed test3 test!");
+            }
+
+            Test33 t4Res = p.test4();
+            Console.WriteLine("test4 Result: {0}", t4Res.foo1.iFoo + t4Res.foo2.iFoo);
+            if ((t4Res.foo1.iFoo + t4Res.foo2.iFoo) != 11)
+            {
+                throw new Exception("Failed test4 test!");
+            }
+
+            Test34 test5 = default(Test34);
+            test5.i1 = 10;
+            test5.i2 = 11;
+            test5.f1 = 12;
+
+            Test34 t5Res = p.test5(test5);
+
+            Console.WriteLine("test5 Result: {0}", t5Res.i1 + t5Res.i2 + t5Res.f1);
+            if ((t5Res.i1 + t5Res.i2 + t5Res.f1) != 42.0)
+            {
+                throw new Exception("Failed test5 test!");
+            }
+
+            return 100;
+        }
+    }
+}
\ No newline at end of file