New dependency management strategy

csharp_library and example WIP
more grpc-web rules
diff --git a/Makefile b/Makefile
index 08176d2..c5b9a79 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,6 @@
-routeguide_compile:
+compiles:
 	bazel build \
+		//android/example/proto:routeguide \
 		//closure/example/proto:routeguide \
 		//cpp/example/proto:routeguide \
 		//csharp/example/proto:routeguide \
@@ -10,29 +11,41 @@
 		//php/example/proto:routeguide \
 		//python/example/proto:routeguide \
 		//ruby/example/proto:routeguide \
+		//rust/example/proto:routeguide \
 		//github.com/improbable-eng/ts-protoc-gen/example/proto:routeguide \
-		//github.com/grpc/grpc-web/example/proto:routeguide \
+		//github.com/grpc/grpc-web/example/proto:routeguide_closure \
+		//github.com/grpc/grpc-web/example/proto:routeguide_commonjs \
+		//github.com/grpc/grpc-web/example/proto:routeguide_dts \
+		//github.com/grpc/grpc-web/example/proto:routeguide_ts \
 
-#		//dart/example/proto:routeguide \
 
-routeguide_clients:
+clients: csharp_client
 	bazel build \
+		//android/example/routeguide:client \
 		//closure/example/routeguide/client \
 		//cpp/example/routeguide:client \
-		//python/example/routeguide:client \
-		//java/example/routeguide:client \
 		//go/example/routeguide/client \
-		//github.com/grpc/grpc-web/example/routeguide/client:bundle \
+		//java/example/routeguide:client \
+		//node/example/routeguide:client \
+		//python/example/routeguide:client \
+		//ruby/example/routeguide:client \
+		//rust/example/routeguide:client \
+		//github.com/grpc/grpc-web/example/routeguide/closure:bundle \
 		//github.com/stackb/grpc.js/example/routeguide/client:bundle 
 
-routeguide_servers:
-	bazel build \
-		//python/example/routeguide:server \
-		//cpp/example/routeguide:server \
-		//java/example/routeguide:server \
-		//go/example/routeguide/server \
+		# //dart/example/routeguide:client \
 
-routeguide_tests:
+servers:
+	bazel build \
+		//cpp/example/routeguide:server \
+		//go/example/routeguide/server \
+		//java/example/routeguide:server \
+		//node/example/routeguide:server \
+		//python/example/routeguide:server \
+		//ruby/example/routeguide:server \
+		//rust/example/routeguide:server \
+
+tests:
 	bazel test \
 		//closure/example/routeguide/... \
 		//github.com/stackb/grpc.js/example/routeguide/... \
@@ -40,3 +53,16 @@
 		//cpp/example/routeguide/... \
 		//java/example/routeguide/... \
 		//go/example/routeguide/... \
+
+
+# This one seems to have an issue with the missing 'qualified_name' pub package,
+# but was working previously
+compile_dart:
+	bazel build \
+		//dart/example/proto:routeguide 
+
+
+# Cannot figure out the assembly reference issue here!
+client_csharp:
+	bazel build --spawn_strategy=standalone \
+		//csharp/example/routeguide:client 
diff --git a/WORKSPACE b/WORKSPACE
index 28d6956..07c6d16 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -6,19 +6,52 @@
 load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
 
 # =========================================
-load("//:deps.bzl", "grpc_deps")
+load("//:deps.bzl", "com_github_grpc_grpc")
 
-grpc_deps()
+com_github_grpc_grpc()
 
 load("@com_github_grpc_grpc//bazel:grpc_deps.bzl", com_github_grpc_grpc_bazel_grpc_deps = "grpc_deps")
 
 com_github_grpc_grpc_bazel_grpc_deps()
 
 # =========================================
+load("//:deps.bzl", "io_grpc_grpc_java")
 
-load("//python:deps.bzl", "py_proto_compile_deps")
+io_grpc_grpc_java()
 
-py_proto_compile_deps()
+load("@io_grpc_grpc_java//:repositories.bzl", "grpc_java_repositories")
+grpc_java_repositories(
+    omit_com_google_protobuf = True,
+)
+
+# =========================================
+
+local_repository(
+    name = "io_bazel_rules_dotnet",
+    path = "/home/pcj/github/bazelbuild/rules_dotnet",
+)
+
+load("//csharp:deps.bzl", "csharp_grpc_library")
+
+csharp_grpc_library()
+
+load("@io_bazel_rules_dotnet//dotnet:defs.bzl", "dotnet_register_toolchains", "dotnet_repositories")
+
+dotnet_register_toolchains("host")
+
+#dotnet_register_toolchains(dotnet_version="4.2.3")
+
+dotnet_repositories()
+
+
+load("//csharp/nuget:packages.bzl", nuget_packages = "packages")
+nuget_packages()
+
+# =========================================
+
+load("//python:deps.bzl", "python_grpc_library")
+
+python_grpc_library()
 
 load("@io_bazel_rules_python//python:pip.bzl", "pip_repositories", "pip_import")
 
@@ -30,19 +63,20 @@
 )
 
 load("@grpc_py_deps//:requirements.bzl", "pip_install")
+
 pip_install()
 
 # =========================================
 
-load("//java:deps.bzl", "java_grpc_library_deps")
+load("//java:deps.bzl", "java_grpc_library")
 
-java_grpc_library_deps()
+java_grpc_library()
 
 # ===========
 
-load("//closure:deps.bzl", "closure_proto_library_deps")
+load("//closure:deps.bzl", "closure_proto_library")
 
-closure_proto_library_deps()
+closure_proto_library()
 
 load("@io_bazel_rules_closure//closure:defs.bzl", "closure_repositories")
 
@@ -52,16 +86,14 @@
 
 # =========================================
 
-load("//node:deps.bzl", "node_proto_library_deps")
+load("//node:deps.bzl", "node_grpc_library")
 
-node_proto_library_deps()
+node_grpc_library()
 
-load("@org_pubref_rules_node//node:rules.bzl", "node_repositories")
+load("@org_pubref_rules_node//node:rules.bzl", "node_repositories", "yarn_modules")
 
 node_repositories()
 
-load("@org_pubref_rules_node//node:rules.bzl", "yarn_modules")
-
 yarn_modules(
     name = "proto_node_modules",
     deps = {
@@ -79,81 +111,61 @@
 
 # =========================================
 
-load("//go:deps.bzl", "go_proto_library_deps")
+load("//go:deps.bzl", "go_grpc_library")
 
-go_proto_library_deps()
+go_grpc_library()
 
 load("@io_bazel_rules_go//go:def.bzl", "go_rules_dependencies", "go_register_toolchains")
+
 go_rules_dependencies()
+
 go_register_toolchains()
 
 # =========================================
 
-load("@io_grpc_grpc_java//:repositories.bzl", "grpc_java_repositories")
-grpc_java_repositories(
-    omit_com_google_protobuf = True,
-)
-
-# =========================================
-
 local_repository(
     name = "io_bazel_rules_dart",
     path = "/home/pcj/github/dart-lang/rules_dart",
 )
 
-load("//dart:deps.bzl", "dart_proto_deps", "dart_pub_deps")
+load("//dart:deps.bzl", "dart_grpc_library")
 
-dart_proto_deps()
+dart_grpc_library()
 
-dart_pub_deps(
-    name = "dart_pub_deps_protoc_plugin",
-    spec = "//dart:pubspec.yaml",
-    override = {
-        "path": "1.6.2",
-        "analyzer": "0.32.5",
-        "crypto": "2.0.6",
-        "async": "2.0.8",
-        "fixnum": "0.10.8",
-        "collection": "1.14.11",
-        "dart_style": "1.1.3",
-        "source_span": "1.4.1",
-        "args": "1.5.0",
-    },
-    verbose = 0,
-)
+load("@dart_pub_deps_protoc_plugin//:deps.bzl", dart_protoc_plugin_deps = "pub_deps")
 
-load("@dart_pub_deps_protoc_plugin//:deps.bzl", "pub_deps")
-pub_deps(verbose = 0)
+dart_protoc_plugin_deps()
 
 load("@io_bazel_rules_dart//dart/build_rules:repositories.bzl", "dart_repositories")
+
 dart_repositories()
 
 load("@io_bazel_rules_dart//dart/build_rules/internal:pub.bzl", "pub_repository")
 
 pub_repository(
-        name = "vendor_isolate",
-        output = ".",
-        package = "isolate",
-        version = "2.0.2",
-    )
+    name = "vendor_isolate",
+    output = ".",
+    package = "isolate",
+    version = "2.0.2",
+)
 
 # =========================================
 
-load("//github.com/stackb/grpc.js:deps.bzl", "grpc_js_deps")
+load("//github.com/stackb/grpc.js:deps.bzl", "closure_grpc_library")
 
-grpc_js_deps()
+closure_grpc_library()
 
 # =========================================
 
-load("//github.com/grpc/grpc-web:deps.bzl", "grpc_web_deps")
+load("//github.com/grpc/grpc-web:deps.bzl", "web_grpc_library")
 
-grpc_web_deps()
+web_grpc_library()
 
 # =========================================
 
-load("//github.com/improbable-eng/ts-protoc-gen:deps.bzl", "ts_proto_deps")
+load("//github.com/improbable-eng/ts-protoc-gen:deps.bzl", "ts_grpc_library")
 
-ts_proto_deps()
+ts_grpc_library()
 
 load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies")
 
@@ -183,15 +195,16 @@
 
 # =======================================
 
-load("//ruby:deps.bzl", "ruby_proto_library_deps")
+load("//ruby:deps.bzl", "ruby_grpc_library")
 
-ruby_proto_library_deps()
+ruby_grpc_library()
 
 load("@com_github_yugui_rules_ruby//ruby:def.bzl", "ruby_register_toolchains")
 
 ruby_register_toolchains()
 
 load("@com_github_yugui_rules_ruby//ruby/private:bundle.bzl", "bundle_install")
+
 bundle_install(
     name = "routeguide_gems_bundle",
     gemfile = "//ruby:Gemfile",
@@ -200,13 +213,41 @@
 
 # =======================================
 
-load("//rust:deps.bzl", "rust_proto_library_deps")
+load("//rust:deps.bzl", "rust_grpc_library")
 
-rust_proto_library_deps()
+rust_grpc_library()
 
 load("@io_bazel_rules_rust//rust:repositories.bzl", "rust_repositories")
 
 rust_repositories()
 
 load("//rust/cargo:crates.bzl", "raze_fetch_remote_crates")
-raze_fetch_remote_crates()
\ No newline at end of file
+
+raze_fetch_remote_crates()
+
+# ========================================
+
+load("//android:deps.bzl", "android_grpc_library")
+
+android_grpc_library()
+
+load("@build_bazel_rules_android//android:sdk_repository.bzl", "android_sdk_repository")
+
+#
+# This version of android_sdk_repository uses the ANDROID_HOME env var.
+#
+# Why is this not a workspace rule?  This is so painful.
+# $ curl -O -J -L https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip
+# $ mkdir ~/android-sdk
+# $ unzip in that dir 
+# $ tools/bin/sdkmanager --list
+# $ tools/bin/sdkmanager "platforms;android-28" "build-tools;28.0.3"
+# $ export ANDROID_HOME="/home/pcj/android-sdk/"
+#
+android_sdk_repository(
+    name = "androidsdk"
+)
+
+load("@gmaven_rules//:gmaven.bzl", "gmaven_rules")
+
+gmaven_rules()
diff --git a/android/compile.bzl b/android/compile.bzl
index 80c74f3..85116f6 100644
--- a/android/compile.bzl
+++ b/android/compile.bzl
@@ -9,7 +9,6 @@
 def android_grpc_compile(**kwargs):
     proto_compile(
         plugins = [str(Label("//android:javalite")), str(Label("//android:grpc_javalite"))],
-        #plugins = [str(Label("//android:grpc_java"))],
         **kwargs
     )
 
diff --git a/android/deps.bzl b/android/deps.bzl
index d836f37..cdbbe55 100644
--- a/android/deps.bzl
+++ b/android/deps.bzl
@@ -1,41 +1,24 @@
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+load("//:deps.bzl", 
+    "build_bazel_rules_android",
+    "com_google_protobuf_lite",
+    "com_google_protobuf", 
+    "gmaven_rules",
+    "io_grpc_grpc_java",
+)
 
-def android_proto_compile_deps(
-    rules_android_version = "60f03a20cefbe1e110ae0ac7f25359822e9ea24a",
-    rules_android_sha256 = "4305b6cf6b098752a19fdb1abdc9ae2e069f5ff61359bfc3c752e4b4c862d18e",
-    protobuf_lite_version = "5e8916e881c573c5d83980197a6f783c132d4276",
-    protobuf_lite_sha256 = "d35902fb3cbe9afa67aad4e615a8224d0a531b8c06d32e100bdb235244748a3d",
-    gmaven_tag = "20180927-1",
-    gmaven_sha256 = "ddaa0f5811253e82f67ee637dc8caf3989e4517bac0368355215b0dcfa9844d6",
-):
-    existing = native.existing_rules()
-    if "build_bazel_rules_android" not in existing:
-        http_archive(
-            name = "build_bazel_rules_android",
-            urls = ["https://github.com/bazelbuild/rules_android/archive/%s.tar.gz" % rules_android_version],
-            strip_prefix = "rules_android-%s" % rules_android_version,
-            sha256 = rules_android_sha256,
-        )
-    if "com_google_protobuf_lite" not in existing:
-        http_archive(
-            name = "com_google_protobuf_lite",
-            urls = ["https://github.com/protocolbuffers/protobuf/archive/%s.tar.gz" % protobuf_lite_version],
-            strip_prefix = "protobuf-%s" % protobuf_lite_version,
-            sha256 = protobuf_lite_sha256,
-        )
+def android_proto_compile(**kwargs):
+    com_google_protobuf(**kwargs)
+    com_google_protobuf_lite(**kwargs)
 
-    # if "android_sdk_tools" not in existing:
-    #     http_archive(
-    #         name = "android_sdk_tools",
-    #         urls = ["https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip"],
-    #         #strip_prefix = "protobuf-%s" % protobuf_lite_version,
-    #         #sha256 = protobuf_lite_sha256,
-    #     )
-    if "gmaven_rules" not in existing:
-        http_archive(
-            name = "gmaven_rules",
-            strip_prefix = "gmaven_rules-%s" % gmaven_tag,
-            urls = ["https://github.com/bazelbuild/gmaven_rules/archive/%s.tar.gz" % gmaven_tag],
-            sha256 = gmaven_sha256,
-        )
+def android_grpc_compile(**kwargs):
+    android_proto_compile(**kwargs)
+    io_grpc_grpc_java(**kwargs)
 
+def android_proto_library(**kwargs):
+    android_proto_compile(**kwargs)
+    build_bazel_rules_android(**kwargs)
+    gmaven_rules(**kwargs)
+
+def android_grpc_library(**kwargs):
+    android_grpc_compile(**kwargs)    
+    android_proto_library(**kwargs)
\ No newline at end of file
diff --git a/closure/deps.bzl b/closure/deps.bzl
index 6868b17..401a06d 100644
--- a/closure/deps.bzl
+++ b/closure/deps.bzl
@@ -1,27 +1,11 @@
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive", "http_file")
-load("//closure:buildozer_http_archive.bzl", "buildozer_http_archive")
+load("//:deps.bzl", 
+    "com_google_protobuf", 
+    "io_bazel_rules_closure",
+)
 
-RULES_CLOSURE_VERSION = "1e12aa5612d758daf2df339991c8d187223a7ee6"
-RULES_CLOSURE_SHA256 = "663424d34fd067a8d066308eb2887fcaba36d73b354669ec1467498726a6b82c"
+def closure_proto_compile(**kwargs):
+    com_google_protobuf(**kwargs)
 
-def closure_proto_library_deps():
-    existing = native.existing_rules()
-
-    if "io_bazel_rules_closure" not in existing:
-        buildozer_http_archive(
-            name = "io_bazel_rules_closure",
-            urls = ["https://github.com/bazelbuild/rules_closure/archive/%s.tar.gz" % RULES_CLOSURE_VERSION],
-            sha256 = RULES_CLOSURE_SHA256,
-            strip_prefix = "rules_closure-" + RULES_CLOSURE_VERSION,
-            label_list = ["//...:%java_binary", "//...:%java_library"],
-            replace_deps = {
-              "@com_google_code_findbugs_jsr305": "@com_google_code_findbugs_jsr305_3_0_0",
-              "@com_google_errorprone_error_prone_annotations": "@com_google_errorprone_error_prone_annotations_2_1_3",
-            },
-            sed_replacements = {
-              "closure/repositories.bzl": [
-                "s|com_google_code_findbugs_jsr305|com_google_code_findbugs_jsr305_3_0_0|g",
-                "s|com_google_errorprone_error_prone_annotations|com_google_errorprone_error_prone_annotations_2_1_3|g",
-              ],
-            },
-        )
+def closure_proto_library(**kwargs):
+    closure_proto_compile(**kwargs)
+    io_bazel_rules_closure(**kwargs)
diff --git a/compile.bzl b/compile.bzl
index fdffcb9..e698ce8 100644
--- a/compile.bzl
+++ b/compile.bzl
@@ -308,4 +308,38 @@
     attrs = proto_compile_attrs,
     outputs = proto_compile_outputs,
     output_to_genfiles = True,
-)
\ No newline at end of file
+)
+
+
+def invoke(proto_compile_rule, name_suffix, kwargs):
+    """Invoke a proto_compile rule using kwargs
+
+    Invoke is a convenience function for library rules that call proto_compile
+    rules.  Rather than having to do the same boilerplate across many different
+    files, this function centralizes the logic of calling proto_compile rules
+    using kwargs.
+
+    Args:
+      proto_compile_rule: the rule function to invoke
+      name_suffix: a suffix for the kwargs.name to use for the rule
+      kwargs: the **kwargs dict, passed directly (not decontucted)
+
+    Returns:
+      The name of the invoked rule. This can be used in the srcs label of a library rule.
+    """ 
+
+    name = kwargs.get("name")
+    deps = kwargs.get("deps")
+    visibility = kwargs.get("visibility")
+    verbose = kwargs.get("verbose")
+    rule_name = name + name_suffix
+
+    proto_compile_rule(
+        name = rule_name,
+        deps = deps,
+        visibility = visibility,
+        verbose = verbose,
+    )
+
+    return rule_name
+
diff --git a/cpp/deps.bzl b/cpp/deps.bzl
index aea884a..035c834 100644
--- a/cpp/deps.bzl
+++ b/cpp/deps.bzl
@@ -1,7 +1,18 @@
-load("//:deps", "grpc_deps")
+load("//:deps.bzl", 
+    "com_github_grpc_grpc",
+    "com_google_protobuf", 
+)
 
-def cpp_grpc_compile_deps():
-    grpc_deps()
+def cpp_proto_compile(**kwargs):
+    com_google_protobuf(**kwargs)
 
-def cpp_grpc_library_deps():
-    cpp_grpc_compile_deps()
\ No newline at end of file
+def cpp_grpc_compile(**kwargs):
+    cpp_proto_compile(**kwargs)
+    com_github_grpc_grpc(**kwargs)
+
+def cpp_proto_library(**kwargs):
+    cpp_proto_compile(**kwargs)
+
+def cpp_grpc_library(**kwargs):
+    cpp_grpc_compile(**kwargs)
+    cpp_proto_library(**kwargs)
diff --git a/csharp/BUILD.bazel b/csharp/BUILD.bazel
index 13007a5..dd46913 100644
--- a/csharp/BUILD.bazel
+++ b/csharp/BUILD.bazel
@@ -3,6 +3,8 @@
 
 proto_plugin(
     name = "csharp",
+    # TODO, figure out how this would work
+    # options = ["base_namespace"],
     outputs = ["@package/{basename|pascal}.cs"],
     visibility = ["//visibility:public"],
 )
diff --git a/csharp/deps.bzl b/csharp/deps.bzl
index 44b7125..c79304d 100644
--- a/csharp/deps.bzl
+++ b/csharp/deps.bzl
@@ -1,4 +1,30 @@
+load("//:deps.bzl", 
+    "com_github_grpc_grpc",
+    "com_google_protobuf", 
+    "io_bazel_rules_dotnet",
+)
 
+load("//csharp/nuget:nuget.bzl", 
+    "nuget_protobuf_packages", 
+)
 
-def csharp_proto_deps():
-  pass
\ No newline at end of file
+load("//csharp/nuget:nuget.bzl", 
+    "nuget_grpc_packages", 
+)
+
+def csharp_proto_compile(**kwargs):
+    com_google_protobuf(**kwargs)
+
+def csharp_grpc_compile(**kwargs):
+    csharp_proto_compile(**kwargs)
+    com_github_grpc_grpc(**kwargs)
+
+def csharp_proto_library(**kwargs):
+    csharp_proto_compile(**kwargs)
+    io_bazel_rules_dotnet(**kwargs)
+    nuget_protobuf_packages(**kwargs)
+
+def csharp_grpc_library(**kwargs):
+    csharp_grpc_compile(**kwargs)
+    csharp_proto_library(**kwargs)
+    nuget_grpc_packages(**kwargs)
diff --git a/csharp/example/routeguide/BUILD.bazel b/csharp/example/routeguide/BUILD.bazel
new file mode 100644
index 0000000..caf555c
--- /dev/null
+++ b/csharp/example/routeguide/BUILD.bazel
@@ -0,0 +1,87 @@
+load("//csharp:library.bzl", "csharp_grpc_library")
+load("@io_bazel_rules_dotnet//dotnet:defs.bzl", "core_binary", "core_library")
+
+csharp_grpc_library(
+    name = "routeguide",
+    deps = ["//example/proto/routeguide:proto_library"],
+    verbose = 3,
+)
+
+core_library(
+    name = "util",
+    srcs = [
+        "RouteGuideUtil.cs",
+    ],
+    deps = [
+        ":routeguide",
+        "@newtonsoft.json//:core",
+    ],
+)
+
+core_binary(
+    name = "class1",
+    srcs = [
+        "Class1.cs",
+    ],
+    deps = [
+        ":routeguide",
+        "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.io.dll",
+        "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.reflection.dll",
+        "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.runtime.dll",
+        "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.runtime.extensions.dll",
+        "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.console.dll",
+        "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.core.dll",
+        "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.dll",
+    ],
+)
+
+core_binary(
+    name = "client",
+    srcs = [
+        "Client.cs",
+        #":routeguide_pb",
+    ],
+    deps = [
+        ":util",
+        ":routeguide",
+        "@google.protobuf//:core",
+        "@system.interactive.async//:core",
+        "@grpc.core//:core",
+        # "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.threading.tasks.dll",
+        # "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.io.dll",
+
+        # "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.runtime.dll",
+        # "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.runtime.extensions.dll",
+        # "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.console.dll",
+        # "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.private.corelib.dll",
+        # "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.xml.linq.dll",
+        # "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.threading.tasks.dll",
+        # "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.io.dll",
+        # "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.io.filesystem.dll",
+        # "@io_bazel_rules_dotnet//dotnet/stdlib.core:netstandard.dll",
+        # "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.collections.dll",
+        # "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.security.cryptography.primitives.dll",
+        # "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.linq.dll",
+        # "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.xml.dll",
+        # "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.xml.xdocument.dll",
+        # "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.text.encoding.dll",
+        # "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.io.filesystem.primitives.dll",       
+        # "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.core.dll",
+        # "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.dll",
+
+        #"@io_bazel_rules_dotnet//dotnet/stdlib:System.Threading.Tasks.Dataflow.dll",
+        #"@io_bazel_rules_dotnet//dotnet/stdlib:System.Reactive.Windows.Threading.dll",
+    ],
+)
+
+core_binary(
+    name = "server",
+    srcs = ["server.cs"],
+    deps = [
+        ":routeguide",
+        "@google.protobuf//:core",
+        "@system.interactive.async//:core",
+        "@grpc.core//:core",
+    ],
+    # data = ["//example/proto/routeguide:features"],
+)
diff --git a/csharp/example/routeguide/Class1.cs b/csharp/example/routeguide/Class1.cs
new file mode 100644
index 0000000..1999548
--- /dev/null
+++ b/csharp/example/routeguide/Class1.cs
@@ -0,0 +1,51 @@
+using System;
+using System.IO;
+using System.Reflection;
+
+public class Class1
+{
+    public static void GetAllClassesAndMethodsOfAssembly(string name)
+    {
+        Assembly assem1 = Assembly.Load(AssemblyName.GetAssemblyName(name));
+        //Another Way
+        Assembly assem2 = Assembly.Load(name);
+        //Get List of Class Name
+
+        Type[] types = assem1.GetTypes();
+        foreach(Type tc in types)
+        {
+            if (tc.IsAbstract)
+            {
+                Console.WriteLine("Abstract Class : " + tc.Name);
+            }
+            else if (tc.IsPublic)
+            {
+                Console.WriteLine("Public Class : " + tc.Name);
+            }
+            else if (tc.IsSealed)
+            {
+                Console.WriteLine("Sealed Class : " + tc.Name);
+            }  
+
+            //Get List of Method Names of Class
+            MemberInfo[] methodName = tc.GetMethods();
+
+            foreach (MemberInfo method in methodName)
+            {
+                if (method.ReflectedType.IsPublic)
+                {
+                    Console.WriteLine("Public Method : " + method.Name.ToString());
+                }
+                else
+                {
+                    Console.WriteLine("Non-Public Method : " + method.Name.ToString());
+                }
+            }
+        }
+    }
+
+    static void Main(string[] args)
+    {
+        GetAllClassesAndMethodsOfAssembly(args[0]);
+    }  
+}
\ No newline at end of file
diff --git a/csharp/example/routeguide/Client.cs b/csharp/example/routeguide/Client.cs
new file mode 100644
index 0000000..e27cb30
--- /dev/null
+++ b/csharp/example/routeguide/Client.cs
@@ -0,0 +1,240 @@
+// Copyright 2015 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using Grpc.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using RouteGuide;
+
+class Program
+{
+    /// <summary>
+    /// Sample client code that makes gRPC calls to the server.
+    /// </summary>
+    public class Client
+    {
+        readonly RouteGuideClient client;
+
+        public Client(RouteGuideClient client)
+        {
+            this.client = client;
+        }
+
+        /// <summary>
+        /// Blocking unary call example.  Calls GetFeature and prints the response.
+        /// </summary>
+        public void GetFeature(int lat, int lon)
+        {
+            try
+            {
+                Log("*** GetFeature: lat={0} lon={1}", lat, lon);
+
+                Point request = new Point { Latitude = lat, Longitude = lon };
+                
+                Feature feature = client.GetFeature(request);
+                if (feature.Exists())
+                {
+                    Log("Found feature called \"{0}\" at {1}, {2}",
+                        feature.Name, feature.Location.GetLatitude(), feature.Location.GetLongitude());
+                }
+                else
+                {
+                    Log("Found no feature at {0}, {1}",
+                        feature.Location.GetLatitude(), feature.Location.GetLongitude());
+                }
+            }
+            catch (RpcException e)
+            {
+                Log("RPC failed " + e);
+                throw;
+            }
+        }
+
+
+        /// <summary>
+        /// Server-streaming example. Calls listFeatures with a rectangle of interest. Prints each response feature as it arrives.
+        /// </summary>
+        public async Task ListFeatures(int lowLat, int lowLon, int hiLat, int hiLon)
+        {
+            try
+            {
+                Log("*** ListFeatures: lowLat={0} lowLon={1} hiLat={2} hiLon={3}", lowLat, lowLon, hiLat,
+                    hiLon);
+
+                Rectangle request = new Rectangle
+                {
+                    Lo = new Point { Latitude = lowLat, Longitude = lowLon },
+                    Hi = new Point { Latitude = hiLat, Longitude = hiLon }
+                };
+                
+                using (var call = client.ListFeatures(request))
+                {
+                    var responseStream = call.ResponseStream;
+                    StringBuilder responseLog = new StringBuilder("Result: ");
+
+                    while (await responseStream.MoveNext())
+                    {
+                        Feature feature = responseStream.Current;
+                        responseLog.Append(feature.ToString());
+                    }
+                    Log(responseLog.ToString());
+                }
+            }
+            catch (RpcException e)
+            {
+                Log("RPC failed " + e); 
+                throw;
+            }
+        }
+
+        /// <summary>
+        /// Client-streaming example. Sends numPoints randomly chosen points from features 
+        /// with a variable delay in between. Prints the statistics when they are sent from the server.
+        /// </summary>
+        public async Task RecordRoute(List<Feature> features, int numPoints)
+        {
+            try
+            {
+                Log("*** RecordRoute");
+                using (var call = client.RecordRoute())
+                {
+                    // Send numPoints points randomly selected from the features list.
+                    StringBuilder numMsg = new StringBuilder();
+                    Random rand = new Random();
+                    for (int i = 0; i < numPoints; ++i)
+                    {
+                        int index = rand.Next(features.Count);
+                        Point point = features[index].Location;
+                        Log("Visiting point {0}, {1}", point.GetLatitude(), point.GetLongitude());
+
+                        await call.RequestStream.WriteAsync(point);
+
+                        // A bit of delay before sending the next one.
+                        await Task.Delay(rand.Next(1000) + 500);    
+                    }
+                    await call.RequestStream.CompleteAsync();
+
+                    RouteSummary summary = await call.ResponseAsync;
+                    Log("Finished trip with {0} points. Passed {1} features. "
+                        + "Travelled {2} meters. It took {3} seconds.", summary.PointCount,
+                        summary.FeatureCount, summary.Distance, summary.ElapsedTime);
+
+                    Log("Finished RecordRoute");
+                }
+            }
+            catch (RpcException e)
+            {
+                Log("RPC failed", e);
+                throw;
+            }
+        }
+
+        /// <summary>
+        /// Bi-directional streaming example. Send some chat messages, and print any
+        /// chat messages that are sent from the server.
+        /// </summary>
+        public async Task RouteChat()
+        {
+            try
+            {
+                Log("*** RouteChat");
+                var requests = new List<RouteNote>
+                {
+                    NewNote("First message", 0, 0),
+                    NewNote("Second message", 0, 1),
+                    NewNote("Third message", 1, 0),
+                    NewNote("Fourth message", 0, 0)
+                };
+
+                using (var call = client.RouteChat())
+                {
+                    var responseReaderTask = Task.Run(async () =>
+                    {
+                        while (await call.ResponseStream.MoveNext())
+                        {
+                            var note = call.ResponseStream.Current;
+                            Log("Got message \"{0}\" at {1}, {2}", note.Message, 
+                                note.Location.Latitude, note.Location.Longitude);
+                        }
+                    });
+
+                    foreach (RouteNote request in requests)
+                    {
+                        Log("Sending message \"{0}\" at {1}, {2}", request.Message,
+                            request.Location.Latitude, request.Location.Longitude);
+
+                        await call.RequestStream.WriteAsync(request);
+                    }
+                    await call.RequestStream.CompleteAsync();
+                    await responseReaderTask;
+
+                    Log("Finished RouteChat");
+                }
+            }
+            catch (RpcException e)
+            {
+                Log("RPC failed", e);
+                throw;
+            }
+        }
+
+        private void Log(string s, params object[] args)
+        {
+            Console.WriteLine(string.Format(s, args));
+        }
+
+        private void Log(string s)
+        {
+            Console.WriteLine(s);
+        }
+
+        private RouteNote NewNote(string message, int lat, int lon)
+        {
+            return new RouteNote
+            {
+                Message = message,
+                Location = new Point { Latitude = lat, Longitude = lon }
+            };
+        }
+    }
+
+    static void Main(string[] args)
+    {
+        var channel = new Channel("127.0.0.1:50052", ChannelCredentials.Insecure);
+        var routeGuideClient = new RouteGuideClient(channel);
+        var client = new Client();
+
+        // // Looking for a valid feature
+        // client.GetFeature(409146138, -746188906);
+
+        // // Feature missing.
+        // client.GetFeature(0, 0);
+
+        // // Looking for features between 40, -75 and 42, -73.
+        // client.ListFeatures(400000000, -750000000, 420000000, -730000000).Wait();
+
+        // // Record a few randomly selected points from the features file.
+        // client.RecordRoute(RouteGuideUtil.ParseFeatures(RouteGuideUtil.DefaultFeaturesFile), 10).Wait();
+
+        // // Send and receive some notes.
+        // client.RouteChat().Wait();
+
+        // channel.ShutdownAsync().Wait();
+        // Console.WriteLine("Press any key to exit...");
+        // Console.ReadKey();
+    }
+}
diff --git a/csharp/example/routeguide/RouteGuideUtil.cs b/csharp/example/routeguide/RouteGuideUtil.cs
new file mode 100644
index 0000000..bcc7394
--- /dev/null
+++ b/csharp/example/routeguide/RouteGuideUtil.cs
@@ -0,0 +1,121 @@
+// Copyright 2015 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using RouteGuide;
+
+/// <summary>
+/// Utility methods for the route guide example.
+/// </summary>
+public static class RouteGuideUtil
+{
+    public const string DefaultFeaturesFile = "route_guide_db.json";
+
+    private const double CoordFactor = 1e7;
+
+    /// <summary>
+    /// Indicates whether the given feature exists (i.e. has a valid name).
+    /// </summary>
+    public static bool Exists(this Feature feature)
+    {
+        return feature != null && (feature.Name.Length != 0);
+    }
+
+    public static double GetLatitude(this Point point)
+    {
+        return point.Latitude / CoordFactor;
+    }
+
+    public static double GetLongitude(this Point point)
+    {
+        return point.Longitude / CoordFactor;
+    }
+
+    /// <summary>
+    /// Calculate the distance between two points using the "haversine" formula.
+    /// The formula is based on http://mathforum.org/library/drmath/view/51879.html
+    /// </summary>
+    /// <param name="start">the starting point</param>
+    /// <param name="end">the end point</param>
+    /// <returns>the distance between the points in meters</returns>
+    public static double GetDistance(this Point start, Point end)
+    {
+        int r = 6371000;  // earth radius in metres
+        double lat1 = ToRadians(start.GetLatitude());
+        double lat2 = ToRadians(end.GetLatitude());
+        double lon1 = ToRadians(start.GetLongitude());
+        double lon2 = ToRadians(end.GetLongitude());
+        double deltalat = lat2 - lat1;
+        double deltalon = lon2 - lon1;
+
+        double a = Math.Sin(deltalat / 2) * Math.Sin(deltalat / 2) + Math.Cos(lat1) * Math.Cos(lat2) * Math.Sin(deltalon / 2) * Math.Sin(deltalon / 2);
+        double c = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a));
+        return r * c;
+    }
+
+    /// <summary>
+    /// Returns <c>true</c> if rectangular area contains given point.
+    /// </summary>
+    public static bool Contains(this Rectangle rectangle, Point point)
+    {
+        int left = Math.Min(rectangle.Lo.Longitude, rectangle.Hi.Longitude);
+        int right = Math.Max(rectangle.Lo.Longitude, rectangle.Hi.Longitude);
+        int top = Math.Max(rectangle.Lo.Latitude, rectangle.Hi.Latitude);
+        int bottom = Math.Min(rectangle.Lo.Latitude, rectangle.Hi.Latitude);
+        return (point.Longitude >= left && point.Longitude <= right && point.Latitude >= bottom && point.Latitude <= top);
+    }
+
+    private static double ToRadians(double val)
+    {
+        return (Math.PI / 180) * val;
+    }
+
+    /// <summary>
+    /// Parses features from a JSON file.
+    /// </summary>
+    public static List<Feature> ParseFeatures(string filename)
+    {
+        var features = new List<Feature>();
+        var jsonFeatures = JsonConvert.DeserializeObject<List<JsonFeature>>(File.ReadAllText(filename));
+
+        foreach(var jsonFeature in jsonFeatures)
+        {
+            features.Add(new Feature
+            {
+                Name = jsonFeature.name,
+                Location = new Point { Longitude = jsonFeature.location.longitude, Latitude = jsonFeature.location.latitude}
+            });
+        }
+        return features;
+    }
+
+    private class JsonFeature
+    {
+        public string name;
+        public JsonLocation location;
+    }
+
+    private class JsonLocation
+    {
+        public int longitude;
+        public int latitude;
+    }
+}
diff --git a/csharp/example/routeguide/server.cs b/csharp/example/routeguide/server.cs
new file mode 100644
index 0000000..c7e5d41
--- /dev/null
+++ b/csharp/example/routeguide/server.cs
@@ -0,0 +1,153 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+extern crate routeguide;
+extern crate grpc;
+extern crate tls_api_stub;
+extern crate futures;
+
+use std::thread;
+use std::env;
+use std::str::FromStr;
+use std::iter;
+use futures::future::{Future};
+use futures::Stream;
+use futures::Async;
+use futures::Poll;
+
+use routeguide::*;
+
+struct RouteGuideImpl;
+
+//
+// NOTE: this is a first step just to get this class to *compile*, much less
+// operate correctly.
+//
+
+impl RouteGuide for RouteGuideImpl {
+  fn list_features(&self, _m: grpc::RequestOptions, _rect: Rectangle) -> grpc::StreamingResponse<Feature> {
+    // Send back 13 dummy list response objects
+    let iter = iter::repeat(()).map(|_| {
+      let s = "MyTestFileName.bin".to_owned();
+      let mut feature = Feature::new();
+      feature.set_name(s);
+      feature
+    }).take(13);
+    grpc::StreamingResponse::iter(iter)
+  }
+
+  fn record_route(&self, _o: grpc::RequestOptions, _p: grpc::StreamingRequest<Point>) -> grpc::SingleResponse<RouteSummary> {
+    // let result = p.into_iter(() -> {
+
+    // });
+    //  {
+    //   let summary = RouteSummary::new();
+    //   summary
+    // };
+    // let iter = iter::repeat(()).map(|_| {
+    //   let mut summary = RouteSummary::new();
+    //   summary
+    // }).take(13);
+
+    // match p.iter() {
+    //   Err(e) => panic!("{:?}", e),
+    //   Ok((_, stream)) => {
+    //     for item in stream {
+    //       let point = item.unwrap();
+    //       println!("> {}", point);
+    //     }
+    //   }
+    // }
+    let summary = RouteSummary::new();
+    let fut = RouteSummaryFuture::new(summary);
+
+    grpc::SingleResponse::no_metadata(fut)
+  }
+
+  fn route_chat(&self, _o: grpc::RequestOptions, _p: grpc::StreamingRequest<RouteNote>) -> grpc::StreamingResponse<RouteNote> {
+    let note = RouteNote::new();
+    let fut = RouteNoteStream::new(note);
+    grpc::StreamingResponse::no_metadata(fut)
+  }
+
+  fn get_feature(&self, _o: grpc::RequestOptions, _p: Point) -> grpc::SingleResponse<Feature> {
+    let mut r = Feature::new();
+    r.set_name(format!("test"));
+    grpc::SingleResponse::completed(r)
+  }
+
+}
+
+fn main() {
+    let mut server = grpc::ServerBuilder::<tls_api_stub::TlsAcceptor>::new();
+    let port = u16::from_str(&env::args().nth(1).unwrap_or("50051".to_owned())).unwrap();
+    server.http.set_port(port);
+    server.add_service(RouteGuideServer::new_service_def(RouteGuideImpl));
+    server.http.set_cpu_pool_threads(4);
+    let server = server.build().expect("server");
+    let port = server.local_addr().port().unwrap();
+    println!("RouteGuide server started on port {}", port);
+
+    loop {
+        thread::park();
+    }
+}
+
+#[derive(Debug)]
+struct RouteSummaryFuture {
+    summary: RouteSummary,
+}
+
+impl RouteSummaryFuture {
+  fn new(summary: RouteSummary) -> RouteSummaryFuture {
+    RouteSummaryFuture {
+      summary: summary,
+    }
+  }
+}
+
+impl Future for RouteSummaryFuture {
+  type Item = RouteSummary;
+  type Error = grpc::Error;
+
+  fn poll(&mut self) -> Poll<RouteSummary, grpc::Error> {
+    Ok(Async::Ready(self.summary.to_owned()))
+  } 
+}
+
+#[derive(Debug)]
+struct RouteNoteStream {
+    note: RouteNote,
+}
+
+impl RouteNoteStream {
+  fn new(note: RouteNote) -> RouteNoteStream {
+    RouteNoteStream {
+      note: note,
+    }
+  }
+}
+
+impl Stream for RouteNoteStream {
+  type Item = RouteNote;
+  type Error = grpc::Error;
+
+  // fn poll(&mut self) -> Poll<RouteNote, grpc::Error> {
+  //   Ok(Async::Ready(self.note))
+  // } 
+
+  fn poll(&mut self) -> Result<Async<Option<RouteNote>>, grpc::Error> {
+    Ok(Async::Ready(std::option::Option::Some(self.note.to_owned())))
+  } 
+}
\ No newline at end of file
diff --git a/csharp/library.bzl b/csharp/library.bzl
new file mode 100644
index 0000000..7d9c40d
--- /dev/null
+++ b/csharp/library.bzl
@@ -0,0 +1,25 @@
+load("//:compile.bzl", "invoke")
+load("//csharp:compile.bzl", "csharp_proto_compile", "csharp_grpc_compile")
+load("@io_bazel_rules_dotnet//dotnet:defs.bzl", "core_library")
+
+def csharp_proto_library(**kwargs):
+    kwargs["srcs"] = [invoke(csharp_proto_compile, "_pb", kwargs)]   
+    kwargs["deps"] = [
+        "@google.protobuf//:core",
+        "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.io.dll",
+    ]
+    kwargs["verbose"] = None
+
+    core_library(**kwargs)
+
+def csharp_grpc_library(**kwargs):
+    kwargs["srcs"] = [invoke(csharp_grpc_compile, "_pb", kwargs)]   
+    kwargs["deps"] = [
+        "@google.protobuf//:core",
+        "@grpc.core//:core",
+        "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.io.dll",
+        "@system.interactive.async//:core",
+    ]
+    kwargs["verbose"] = None
+
+    core_library(**kwargs)
diff --git a/csharp/nuget/BUILD.bazel b/csharp/nuget/BUILD.bazel
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/csharp/nuget/BUILD.bazel
diff --git a/csharp/nuget/grpc.bzl b/csharp/nuget/grpc.bzl
new file mode 100644
index 0000000..ec4e320
--- /dev/null
+++ b/csharp/nuget/grpc.bzl
@@ -0,0 +1,94 @@
+load("io_bazel_rules_dotnet//dotnet:defs.bzl", "nuget_package")
+def packages():
+    
+    
+    ### Generated by the tool
+    nuget_package(
+       name = "system.interactive.async",
+       package = "system.interactive.async",
+       version = "3.2.0",
+       sha256 = "cdc28ac9c99a1e8707b2dde4a41cec1a622349f4a00c7029f9e006a1ac10ebab",
+       core_lib = "lib/netstandard2.0/System.Interactive.Async.dll",
+       net_lib = "lib/net46/System.Interactive.Async.dll",
+       mono_lib = "lib/net46/System.Interactive.Async.dll",
+       core_deps = [
+       ],
+       net_deps = [
+       ],
+       mono_deps = [
+       ],
+       core_files = [
+           "lib/netstandard2.0/System.Interactive.Async.dll",
+           "lib/netstandard2.0/System.Interactive.Async.xml",
+       ],
+       net_files = [
+           "lib/net46/System.Interactive.Async.dll",
+           "lib/net46/System.Interactive.Async.xml",
+       ],
+       mono_files = [
+           "lib/net46/System.Interactive.Async.dll",
+           "lib/net46/System.Interactive.Async.xml",
+       ],
+    )
+    nuget_package(
+       name = "grpc.core",
+       package = "grpc.core",
+       version = "1.15.0",
+       sha256 = "95600de4a33575ceb20abe789f91fc6dec22d306bf5402e5db0685127f502992",
+       core_lib = "lib/netstandard1.5/Grpc.Core.dll",
+       net_lib = "lib/net45/Grpc.Core.dll",
+       mono_lib = "lib/net45/Grpc.Core.dll",
+       core_deps = [
+           "@io_bazel_rules_dotnet//dotnet/stdlib.core:netstandard.library.dll",
+           "@system.interactive.async//:core",
+           "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.runtime.loader.dll",
+           "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.threading.thread.dll",
+           "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.threading.threadpool.dll",
+       ],
+       net_deps = [
+           "@system.interactive.async//:net",
+       ],
+       mono_deps = [
+           "@system.interactive.async//:mono",
+       ],
+       core_files = [
+           "lib/netstandard1.5/Grpc.Core.dll",
+           "lib/netstandard1.5/Grpc.Core.pdb",
+           "lib/netstandard1.5/Grpc.Core.xml",
+       ],
+       net_files = [
+           "lib/net45/Grpc.Core.dll",
+           "lib/net45/Grpc.Core.pdb",
+           "lib/net45/Grpc.Core.xml",
+       ],
+       mono_files = [
+           "lib/net45/Grpc.Core.dll",
+           "lib/net45/Grpc.Core.pdb",
+           "lib/net45/Grpc.Core.xml",
+       ],
+    )
+    nuget_package(
+       name = "grpc",
+       package = "grpc",
+       version = "1.15.0",
+       sha256 = "517894fd7e10fc304dd49e6f98afd4feb1af223f90934303a73580a1b7d2ff72",
+       core_lib = "",
+       net_lib = "",
+       mono_lib = "",
+       core_deps = [
+           "@grpc.core//:core",
+       ],
+       net_deps = [
+           "@grpc.core//:net",
+       ],
+       mono_deps = [
+           "@grpc.core//:mono",
+       ],
+       core_files = [
+       ],
+       net_files = [
+       ],
+       mono_files = [
+       ],
+    )
+    ### End of generated by the tool
diff --git a/csharp/nuget/nuget.bzl b/csharp/nuget/nuget.bzl
new file mode 100644
index 0000000..8454892
--- /dev/null
+++ b/csharp/nuget/nuget.bzl
@@ -0,0 +1,126 @@
+load("@io_bazel_rules_dotnet//dotnet:defs.bzl", "nuget_package")
+def nuget_protobuf_packages():
+    
+    ### Generated by the tool
+    nuget_package(
+       name = "google.protobuf",
+       package = "google.protobuf",
+       version = "3.6.1",
+       sha256 = "bfa7666aa55e60aa2ee65502966336f812702acaaf7c62d12f276a01ab3aa9a4",
+       core_lib = "lib/netstandard1.0/Google.Protobuf.dll",
+       net_lib = "lib/net45/Google.Protobuf.dll",
+       mono_lib = "lib/net45/Google.Protobuf.dll",
+       core_deps = [
+           "@io_bazel_rules_dotnet//dotnet/stdlib.core:netstandard.library.dll",
+       ],
+       net_deps = [
+       ],
+       mono_deps = [
+       ],
+       core_files = [
+           "lib/netstandard1.0/Google.Protobuf.dll",
+           "lib/netstandard1.0/Google.Protobuf.xml",
+       ],
+       net_files = [
+           "lib/net45/Google.Protobuf.dll",
+           "lib/net45/Google.Protobuf.xml",
+       ],
+       mono_files = [
+           "lib/net45/Google.Protobuf.dll",
+           "lib/net45/Google.Protobuf.xml",
+       ],
+    )
+    ### End of generated by the tool
+def nuget_grpc_packages():
+    
+    
+    ### Generated by the tool
+    nuget_package(
+       name = "system.interactive.async",
+       package = "system.interactive.async",
+       version = "3.2.0",
+       sha256 = "cdc28ac9c99a1e8707b2dde4a41cec1a622349f4a00c7029f9e006a1ac10ebab",
+       core_lib = "lib/netstandard2.0/System.Interactive.Async.dll",
+       net_lib = "lib/net46/System.Interactive.Async.dll",
+       mono_lib = "lib/net46/System.Interactive.Async.dll",
+       core_deps = [
+       ],
+       net_deps = [
+       ],
+       mono_deps = [
+       ],
+       core_files = [
+           "lib/netstandard2.0/System.Interactive.Async.dll",
+           "lib/netstandard2.0/System.Interactive.Async.xml",
+       ],
+       net_files = [
+           "lib/net46/System.Interactive.Async.dll",
+           "lib/net46/System.Interactive.Async.xml",
+       ],
+       mono_files = [
+           "lib/net46/System.Interactive.Async.dll",
+           "lib/net46/System.Interactive.Async.xml",
+       ],
+    )
+    nuget_package(
+       name = "grpc.core",
+       package = "grpc.core",
+       version = "1.15.0",
+       sha256 = "95600de4a33575ceb20abe789f91fc6dec22d306bf5402e5db0685127f502992",
+       core_lib = "lib/netstandard1.5/Grpc.Core.dll",
+       net_lib = "lib/net45/Grpc.Core.dll",
+       mono_lib = "lib/net45/Grpc.Core.dll",
+       core_deps = [
+           "@io_bazel_rules_dotnet//dotnet/stdlib.core:netstandard.library.dll",
+           "@system.interactive.async//:core",
+           "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.runtime.loader.dll",
+           "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.threading.thread.dll",
+           "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.threading.threadpool.dll",
+       ],
+       net_deps = [
+           "@system.interactive.async//:net",
+       ],
+       mono_deps = [
+           "@system.interactive.async//:mono",
+       ],
+       core_files = [
+           "lib/netstandard1.5/Grpc.Core.dll",
+           "lib/netstandard1.5/Grpc.Core.pdb",
+           "lib/netstandard1.5/Grpc.Core.xml",
+       ],
+       net_files = [
+           "lib/net45/Grpc.Core.dll",
+           "lib/net45/Grpc.Core.pdb",
+           "lib/net45/Grpc.Core.xml",
+       ],
+       mono_files = [
+           "lib/net45/Grpc.Core.dll",
+           "lib/net45/Grpc.Core.pdb",
+           "lib/net45/Grpc.Core.xml",
+       ],
+    )
+    nuget_package(
+       name = "grpc",
+       package = "grpc",
+       version = "1.15.0",
+       sha256 = "517894fd7e10fc304dd49e6f98afd4feb1af223f90934303a73580a1b7d2ff72",
+       core_lib = "",
+       net_lib = "",
+       mono_lib = "",
+       core_deps = [
+           "@grpc.core//:core",
+       ],
+       net_deps = [
+           "@grpc.core//:net",
+       ],
+       mono_deps = [
+           "@grpc.core//:mono",
+       ],
+       core_files = [
+       ],
+       net_files = [
+       ],
+       mono_files = [
+       ],
+    )
+    ### End of generated by the tool
diff --git a/csharp/nuget/packages.bzl b/csharp/nuget/packages.bzl
new file mode 100644
index 0000000..dc34f68
--- /dev/null
+++ b/csharp/nuget/packages.bzl
@@ -0,0 +1,622 @@
+load("@io_bazel_rules_dotnet//dotnet:defs.bzl", "nuget_package", "net_gac4")
+
+def packages():
+    nuget_package(
+        name = "npgsql",
+        package = "npgsql",
+        version = "4.0.3",
+        sha256 = "4e1f91eb9f0c3dfb8e029edbc325175cd202455df3641bc16155ef422b6bfd6f",
+        core_lib = "lib/netstandard2.0/Npgsql.dll",
+        net_lib = "lib/net451/Npgsql.dll",
+        mono_lib = "lib/net45/Npgsql.dll",
+        core_deps = [],
+        net_deps = [],
+        mono_deps = [],
+        core_files = [
+            "lib/netstandard2.0/Npgsql.dll",
+            "lib/netstandard2.0/Npgsql.pdb",
+            "lib/netstandard2.0/Npgsql.xml",
+        ],
+        net_files = [
+            "lib/net451/Npgsql.dll",
+            "lib/net451/Npgsql.pdb",
+            "lib/net451/Npgsql.xml",
+        ],
+        mono_files = [
+            "lib/net45/Npgsql.dll",
+            "lib/net45/Npgsql.pdb",
+            "lib/net45/Npgsql.xml",
+        ],
+    )
+
+    net_gac4(
+        name = "System.ComponentModel.DataAnnotations",
+        version = "4.0.0.0",
+        token = "31bf3856ad364e35"
+    )
+
+    ### Generated by the tool
+    nuget_package(
+        name = "commandlineparser",
+        package = "commandlineparser",
+        version = "2.3.0",
+        sha256 = "09e60ff23e6953b4fe7d267ef552d8ece76404acf44842012f84430e8b877b13",
+        core_lib = "lib/netstandard1.5/CommandLine.dll",
+        net_lib = "lib/net45/CommandLine.dll",
+        mono_lib = "lib/net45/CommandLine.dll",
+        core_deps = [
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.collections.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.console.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.diagnostics.debug.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.globalization.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.io.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.linq.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.linq.expressions.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.reflection.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.reflection.extensions.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.reflection.typeextensions.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.resources.resourcemanager.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.runtime.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.runtime.extensions.dll",
+        ],
+        net_deps = [
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.collections.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.console.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.diagnostics.debug.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.globalization.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.io.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.linq.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.linq.expressions.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.reflection.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.reflection.extensions.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.reflection.typeextensions.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.resources.resourcemanager.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.runtime.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.runtime.extensions.dll",
+        ],
+        mono_deps = [
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.collections.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.console.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.diagnostics.debug.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.globalization.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.io.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.linq.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.linq.expressions.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.reflection.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.reflection.extensions.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.reflection.typeextensions.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.resources.resourcemanager.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.runtime.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.runtime.extensions.dll",
+        ],
+        core_files = [
+            "lib/netstandard1.5/CommandLine.dll",
+            "lib/netstandard1.5/CommandLine.xml",
+        ],
+        net_files = [
+            "lib/net45/CommandLine.dll",
+            "lib/net45/CommandLine.XML",
+        ],
+        mono_files = [
+            "lib/net45/CommandLine.dll",
+            "lib/net45/CommandLine.XML",
+        ],
+    )
+
+    nuget_package(
+        name = "newtonsoft.json",
+        package = "newtonsoft.json",
+        version = "11.0.2",
+        sha256 = "679e438d5eb7d7e5599aa71b65fd23ee50dabf57579607873b87d34aec11ca1e",
+        core_lib = "lib/netstandard2.0/Newtonsoft.Json.dll",
+        net_lib = "lib/net45/Newtonsoft.Json.dll",
+        mono_lib = "lib/net45/Newtonsoft.Json.dll",
+        core_deps = [
+        ],
+        net_deps = [
+        ],
+        mono_deps = [
+        ],
+        core_files = [
+            "lib/netstandard2.0/Newtonsoft.Json.dll",
+            "lib/netstandard2.0/Newtonsoft.Json.xml",
+        ],
+        net_files = [
+            "lib/net45/Newtonsoft.Json.dll",
+            "lib/net45/Newtonsoft.Json.xml",
+        ],
+        mono_files = [
+            "lib/net45/Newtonsoft.Json.dll",
+            "lib/net45/Newtonsoft.Json.xml",
+        ],
+    )
+
+    nuget_package(
+        name = "nuget.frameworks",
+        package = "nuget.frameworks",
+        version = "4.8.0",
+        sha256 = "0228601ad2becf5ec3825882f556fdd821e2f470e504a659acdeabc908ce9060",
+        core_lib = "lib/netstandard1.6/NuGet.Frameworks.dll",
+        net_lib = "lib/net46/NuGet.Frameworks.dll",
+        mono_lib = "lib/net46/NuGet.Frameworks.dll",
+        core_deps = [
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:netstandard.library.dll",
+        ],
+        net_deps = [
+        ],
+        mono_deps = [
+        ],
+        core_files = [
+            "lib/netstandard1.6/NuGet.Frameworks.dll",
+            "lib/netstandard1.6/NuGet.Frameworks.xml",
+        ],
+        net_files = [
+            "lib/net46/NuGet.Frameworks.dll",
+            "lib/net46/NuGet.Frameworks.xml",
+        ],
+        mono_files = [
+            "lib/net46/NuGet.Frameworks.dll",
+            "lib/net46/NuGet.Frameworks.xml",
+        ],
+    )
+
+    nuget_package(
+        name = "nuget.common",
+        package = "nuget.common",
+        version = "4.8.0",
+        sha256 = "1e1fe6c30798661ee1ee1342c444a4ef0c3113a6ef5e3c4105de70fbcb01562e",
+        core_lib = "lib/netstandard1.6/NuGet.Common.dll",
+        net_lib = "lib/net46/NuGet.Common.dll",
+        mono_lib = "lib/net46/NuGet.Common.dll",
+        core_deps = [
+            "@nuget.frameworks//:core",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:netstandard.library.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.diagnostics.process.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.threading.thread.dll",
+        ],
+        net_deps = [
+            "@nuget.frameworks//:net",
+        ],
+        mono_deps = [
+            "@nuget.frameworks//:mono",
+        ],
+        core_files = [
+            "lib/netstandard1.6/NuGet.Common.dll",
+            "lib/netstandard1.6/NuGet.Common.xml",
+        ],
+        net_files = [
+            "lib/net46/NuGet.Common.dll",
+            "lib/net46/NuGet.Common.xml",
+        ],
+        mono_files = [
+            "lib/net46/NuGet.Common.dll",
+            "lib/net46/NuGet.Common.xml",
+        ],
+    )
+
+    nuget_package(
+        name = "nuget.configuration",
+        package = "nuget.configuration",
+        version = "4.8.0",
+        sha256 = "c6dcd79a03353d3e9296f52f7b0206430aca7ec3332a61424e28dc6d6a03ffc5",
+        core_lib = "lib/netstandard1.6/NuGet.Configuration.dll",
+        net_lib = "lib/net46/NuGet.Configuration.dll",
+        mono_lib = "lib/net46/NuGet.Configuration.dll",
+        core_deps = [
+            "@nuget.common//:core",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:netstandard.library.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.security.cryptography.protecteddata.dll",
+        ],
+        net_deps = [
+            "@nuget.common//:net",
+        ],
+        mono_deps = [
+            "@nuget.common//:mono",
+        ],
+        core_files = [
+            "lib/netstandard1.6/NuGet.Configuration.dll",
+            "lib/netstandard1.6/NuGet.Configuration.xml",
+        ],
+        net_files = [
+            "lib/net46/NuGet.Configuration.dll",
+            "lib/net46/NuGet.Configuration.xml",
+        ],
+        mono_files = [
+            "lib/net46/NuGet.Configuration.dll",
+            "lib/net46/NuGet.Configuration.xml",
+        ],
+    )
+
+    nuget_package(
+        name = "microsoft.web.xdt",
+        package = "microsoft.web.xdt",
+        version = "2.1.2",
+        sha256 = "ba0649bf72baa8e574feaaa366774d8eadfa6f2c65ae11326a45661b5815c88b",
+        core_lib = "lib/net40/Microsoft.Web.XmlTransform.dll",
+        net_lib = "lib/net40/Microsoft.Web.XmlTransform.dll",
+        mono_lib = "lib/net40/Microsoft.Web.XmlTransform.dll",
+        core_deps = [
+        ],
+        net_deps = [
+        ],
+        mono_deps = [
+        ],
+        core_files = [
+        ],
+        net_files = [
+            "lib/net40/Microsoft.Web.XmlTransform.dll",
+        ],
+        mono_files = [
+            "lib/net40/Microsoft.Web.XmlTransform.dll",
+        ],
+    )
+
+    nuget_package(
+        name = "nuget.versioning",
+        package = "nuget.versioning",
+        version = "4.8.0",
+        sha256 = "1595aee52364a56853c8d339eb18354cd1342628a0d1d15bcd296e38509dd534",
+        core_lib = "lib/netstandard1.6/NuGet.Versioning.dll",
+        net_lib = "lib/net46/NuGet.Versioning.dll",
+        mono_lib = "lib/net46/NuGet.Versioning.dll",
+        core_deps = [
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:netstandard.library.dll",
+        ],
+        net_deps = [
+        ],
+        mono_deps = [
+        ],
+        core_files = [
+            "lib/netstandard1.6/NuGet.Versioning.dll",
+            "lib/netstandard1.6/NuGet.Versioning.xml",
+        ],
+        net_files = [
+            "lib/net46/NuGet.Versioning.dll",
+            "lib/net46/NuGet.Versioning.xml",
+        ],
+        mono_files = [
+            "lib/net46/NuGet.Versioning.dll",
+            "lib/net46/NuGet.Versioning.xml",
+        ],
+    )
+
+    nuget_package(
+        name = "nuget.librarymodel",
+        package = "nuget.librarymodel",
+        version = "4.8.0",
+        sha256 = "caf98979fdc9202d610d9fe74204b92b0e4a25e458fab8a6208297b5a78d005d",
+        core_lib = "lib/netstandard1.6/NuGet.LibraryModel.dll",
+        net_lib = "lib/net46/NuGet.LibraryModel.dll",
+        mono_lib = "lib/net46/NuGet.LibraryModel.dll",
+        core_deps = [
+            "@nuget.common//:core",
+            "@nuget.versioning//:core",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:netstandard.library.dll",
+        ],
+        net_deps = [
+            "@nuget.common//:net",
+            "@nuget.versioning//:net",
+        ],
+        mono_deps = [
+            "@nuget.common//:mono",
+            "@nuget.versioning//:mono",
+        ],
+        core_files = [
+            "lib/netstandard1.6/NuGet.LibraryModel.dll",
+            "lib/netstandard1.6/NuGet.LibraryModel.xml",
+        ],
+        net_files = [
+            "lib/net46/NuGet.LibraryModel.dll",
+            "lib/net46/NuGet.LibraryModel.xml",
+        ],
+        mono_files = [
+            "lib/net46/NuGet.LibraryModel.dll",
+            "lib/net46/NuGet.LibraryModel.xml",
+        ],
+    )
+
+    nuget_package(
+        name = "nuget.packaging.core",
+        package = "nuget.packaging.core",
+        version = "4.8.0",
+        sha256 = "3002b9a69887e8452bc21693117c60a0d39c4d0fc55d3e584d9770237b9ba57a",
+        core_lib = "lib/netstandard1.6/NuGet.Packaging.Core.dll",
+        net_lib = "lib/net46/NuGet.Packaging.Core.dll",
+        mono_lib = "lib/net46/NuGet.Packaging.Core.dll",
+        core_deps = [
+            "@nuget.common//:core",
+            "@nuget.versioning//:core",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:netstandard.library.dll",
+        ],
+        net_deps = [
+            "@nuget.common//:net",
+            "@nuget.versioning//:net",
+        ],
+        mono_deps = [
+            "@nuget.common//:mono",
+            "@nuget.versioning//:mono",
+        ],
+        core_files = [
+            "lib/netstandard1.6/NuGet.Packaging.Core.dll",
+            "lib/netstandard1.6/NuGet.Packaging.Core.xml",
+        ],
+        net_files = [
+            "lib/net46/NuGet.Packaging.Core.dll",
+            "lib/net46/NuGet.Packaging.Core.xml",
+        ],
+        mono_files = [
+            "lib/net46/NuGet.Packaging.Core.dll",
+            "lib/net46/NuGet.Packaging.Core.xml",
+        ],
+    )
+
+    nuget_package(
+        name = "nuget.packaging",
+        package = "nuget.packaging",
+        version = "4.8.0",
+        sha256 = "43f8f20c4312de46d44d62411abdb647b739fff451cd0d06534851a55a97228f",
+        core_lib = "lib/netstandard1.6/NuGet.Packaging.dll",
+        net_lib = "lib/net46/NuGet.Packaging.dll",
+        mono_lib = "lib/net46/NuGet.Packaging.dll",
+        core_deps = [
+            "@nuget.packaging.core//:core",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:netstandard.library.dll",
+            "@newtonsoft.json//:core",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.dynamic.runtime.dll",
+        ],
+        net_deps = [
+            "@nuget.packaging.core//:net",
+            "@newtonsoft.json//:net",
+        ],
+        mono_deps = [
+            "@nuget.packaging.core//:mono",
+            "@newtonsoft.json//:mono",
+        ],
+        core_files = [
+            "lib/netstandard1.6/NuGet.Packaging.dll",
+            "lib/netstandard1.6/NuGet.Packaging.xml",
+        ],
+        net_files = [
+            "lib/net46/NuGet.Packaging.dll",
+            "lib/net46/NuGet.Packaging.xml",
+        ],
+        mono_files = [
+            "lib/net46/NuGet.Packaging.dll",
+            "lib/net46/NuGet.Packaging.xml",
+        ],
+    )
+
+    nuget_package(
+        name = "nuget.protocol",
+        package = "nuget.protocol",
+        version = "4.8.0",
+        sha256 = "c48ce771fc8c9b7d3ee736ef79890a43683936b224a89a0fcd9772d94c64f24c",
+        core_lib = "lib/netstandard1.6/NuGet.Protocol.dll",
+        net_lib = "lib/net46/NuGet.Protocol.dll",
+        mono_lib = "lib/net46/NuGet.Protocol.dll",
+        core_deps = [
+            "@nuget.configuration//:core",
+            "@nuget.packaging//:core",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:netstandard.library.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.dynamic.runtime.dll",
+        ],
+        net_deps = [
+            "@nuget.configuration//:net",
+            "@nuget.packaging//:net",
+        ],
+        mono_deps = [
+            "@nuget.configuration//:mono",
+            "@nuget.packaging//:mono",
+        ],
+        core_files = [
+            "lib/netstandard1.6/NuGet.Protocol.dll",
+            "lib/netstandard1.6/NuGet.Protocol.xml",
+        ],
+        net_files = [
+            "lib/net46/NuGet.Protocol.dll",
+            "lib/net46/NuGet.Protocol.xml",
+        ],
+        mono_files = [
+            "lib/net46/NuGet.Protocol.dll",
+            "lib/net46/NuGet.Protocol.xml",
+        ],
+    )
+
+    nuget_package(
+        name = "nuget.credentials",
+        package = "nuget.credentials",
+        version = "4.8.0",
+        sha256 = "06f11610731918ecde42acb683bb0656b74897106e0edcb109cd9b40535f65fd",
+        core_lib = "lib/netstandard1.6/NuGet.Credentials.dll",
+        net_lib = "lib/net46/NuGet.Credentials.dll",
+        mono_lib = "lib/net46/NuGet.Credentials.dll",
+        core_deps = [
+            "@nuget.protocol//:core",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:netstandard.library.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:System.Runtime.Serialization.Formatters.dll",
+        ],
+        net_deps = [
+            "@nuget.protocol//:net",
+        ],
+        mono_deps = [
+            "@nuget.protocol//:mono",
+        ],
+        core_files = [
+            "lib/netstandard1.6/NuGet.Credentials.dll",
+        ],
+        net_files = [
+            "lib/net46/NuGet.Credentials.dll",
+        ],
+        mono_files = [
+            "lib/net46/NuGet.Credentials.dll",
+        ],
+    )
+
+    nuget_package(
+        name = "nuget.dependencyresolver.core",
+        package = "nuget.dependencyresolver.core",
+        version = "4.8.0",
+        sha256 = "d31e1377de8db1d82109b9813587688073f17b4249baeb99a6743eb266753682",
+        core_lib = "lib/netstandard1.6/NuGet.DependencyResolver.Core.dll",
+        net_lib = "lib/net46/NuGet.DependencyResolver.Core.dll",
+        mono_lib = "lib/net46/NuGet.DependencyResolver.Core.dll",
+        core_deps = [
+            "@nuget.librarymodel//:core",
+            "@nuget.protocol//:core",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:netstandard.library.dll",
+        ],
+        net_deps = [
+            "@nuget.librarymodel//:net",
+            "@nuget.protocol//:net",
+        ],
+        mono_deps = [
+            "@nuget.librarymodel//:mono",
+            "@nuget.protocol//:mono",
+        ],
+        core_files = [
+            "lib/netstandard1.6/NuGet.DependencyResolver.Core.dll",
+            "lib/netstandard1.6/NuGet.DependencyResolver.Core.xml",
+        ],
+        net_files = [
+            "lib/net46/NuGet.DependencyResolver.Core.dll",
+            "lib/net46/NuGet.DependencyResolver.Core.xml",
+        ],
+        mono_files = [
+            "lib/net46/NuGet.DependencyResolver.Core.dll",
+            "lib/net46/NuGet.DependencyResolver.Core.xml",
+        ],
+    )
+
+    nuget_package(
+        name = "nuget.projectmodel",
+        package = "nuget.projectmodel",
+        version = "4.8.0",
+        sha256 = "27dd4cb819d95c06e74b0548edf05594e6be96f51fc72d460b9e0bdc12fe4479",
+        core_lib = "lib/netstandard1.6/NuGet.ProjectModel.dll",
+        net_lib = "lib/net46/NuGet.ProjectModel.dll",
+        mono_lib = "lib/net46/NuGet.ProjectModel.dll",
+        core_deps = [
+            "@nuget.dependencyresolver.core//:core",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:netstandard.library.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.dynamic.runtime.dll",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:system.threading.thread.dll",
+        ],
+        net_deps = [
+            "@nuget.dependencyresolver.core//:net",
+        ],
+        mono_deps = [
+            "@nuget.dependencyresolver.core//:mono",
+        ],
+        core_files = [
+            "lib/netstandard1.6/NuGet.ProjectModel.dll",
+            "lib/netstandard1.6/NuGet.ProjectModel.xml",
+        ],
+        net_files = [
+            "lib/net46/NuGet.ProjectModel.dll",
+            "lib/net46/NuGet.ProjectModel.xml",
+        ],
+        mono_files = [
+            "lib/net46/NuGet.ProjectModel.dll",
+            "lib/net46/NuGet.ProjectModel.xml",
+        ],
+    )
+
+    nuget_package(
+        name = "nuget.commands",
+        package = "nuget.commands",
+        version = "4.8.0",
+        sha256 = "56f9396b760a77af914fd9d419bf7c878305301c43ab0268f8b51b86c990394f",
+        core_lib = "lib/netstandard1.6/NuGet.Commands.dll",
+        net_lib = "lib/net46/NuGet.Commands.dll",
+        mono_lib = "lib/net46/NuGet.Commands.dll",
+        core_deps = [
+            "@nuget.credentials//:core",
+            "@nuget.projectmodel//:core",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:netstandard.library.dll",
+        ],
+        net_deps = [
+            "@nuget.credentials//:net",
+            "@nuget.projectmodel//:net",
+        ],
+        mono_deps = [
+            "@nuget.credentials//:mono",
+            "@nuget.projectmodel//:mono",
+        ],
+        core_files = [
+            "lib/netstandard1.6/NuGet.Commands.dll",
+            "lib/netstandard1.6/NuGet.Commands.xml",
+        ],
+        net_files = [
+            "lib/net46/NuGet.Commands.dll",
+            "lib/net46/NuGet.Commands.xml",
+        ],
+        mono_files = [
+            "lib/net46/NuGet.Commands.dll",
+            "lib/net46/NuGet.Commands.xml",
+        ],
+    )
+
+    nuget_package(
+        name = "nuget.resolver",
+        package = "nuget.resolver",
+        version = "4.8.0",
+        sha256 = "d3c69eba7912022e0d5dac08f0a3085b9885fe53ac914ffac8146fe8b4c15468",
+        core_lib = "lib/netstandard1.6/NuGet.Resolver.dll",
+        net_lib = "lib/net46/NuGet.Resolver.dll",
+        mono_lib = "lib/net46/NuGet.Resolver.dll",
+        core_deps = [
+            "@nuget.protocol//:core",
+            "@io_bazel_rules_dotnet//dotnet/stdlib.core:netstandard.library.dll",
+        ],
+        net_deps = [
+            "@nuget.protocol//:net",
+        ],
+        mono_deps = [
+            "@nuget.protocol//:mono",
+        ],
+        core_files = [
+            "lib/netstandard1.6/NuGet.Resolver.dll",
+            "lib/netstandard1.6/NuGet.Resolver.xml",
+        ],
+        net_files = [
+            "lib/net46/NuGet.Resolver.dll",
+            "lib/net46/NuGet.Resolver.xml",
+        ],
+        mono_files = [
+            "lib/net46/NuGet.Resolver.dll",
+            "lib/net46/NuGet.Resolver.xml",
+        ],
+    )
+
+    nuget_package(
+        name = "nuget.packagemanagement",
+        package = "nuget.packagemanagement",
+        version = "4.8.0",
+        sha256 = "386a5f74a2564c6e10f210a8fdb5a40d0f9deb53c3368428da45d96f01889003",
+        core_lib = "lib/net46/NuGet.PackageManagement.dll",
+        net_lib = "lib/net46/NuGet.PackageManagement.dll",
+        mono_lib = "lib/net46/NuGet.PackageManagement.dll",
+        core_deps = [
+        ],
+        net_deps = [
+            "@nuget.commands//:net",
+            "@nuget.resolver//:net",
+            "@microsoft.web.xdt//:net",
+        ],
+        mono_deps = [
+            "@nuget.commands//:mono",
+            "@nuget.resolver//:mono",
+            "@microsoft.web.xdt//:mono",
+        ],
+        core_files = [
+        ],
+        net_files = [
+            "lib/net46/NuGet.PackageManagement.dll",
+            "lib/net46/NuGet.PackageManagement.xml",
+        ],
+        mono_files = [
+            "lib/net46/NuGet.PackageManagement.dll",
+            "lib/net46/NuGet.PackageManagement.xml",
+        ],
+    )
+    ### End of generated by the tool
\ No newline at end of file
diff --git a/csharp/nuget/protobuf.bzl b/csharp/nuget/protobuf.bzl
new file mode 100644
index 0000000..cf62cea
--- /dev/null
+++ b/csharp/nuget/protobuf.bzl
@@ -0,0 +1,33 @@
+load("io_bazel_rules_dotnet//dotnet:defs.bzl", "nuget_package")
+def packages():
+    
+    ### Generated by the tool
+    nuget_package(
+       name = "google.protobuf",
+       package = "google.protobuf",
+       version = "3.6.1",
+       sha256 = "bfa7666aa55e60aa2ee65502966336f812702acaaf7c62d12f276a01ab3aa9a4",
+       core_lib = "lib/netstandard1.0/Google.Protobuf.dll",
+       net_lib = "lib/net45/Google.Protobuf.dll",
+       mono_lib = "lib/net45/Google.Protobuf.dll",
+       core_deps = [
+           "@io_bazel_rules_dotnet//dotnet/stdlib.core:netstandard.library.dll",
+       ],
+       net_deps = [
+       ],
+       mono_deps = [
+       ],
+       core_files = [
+           "lib/netstandard1.0/Google.Protobuf.dll",
+           "lib/netstandard1.0/Google.Protobuf.xml",
+       ],
+       net_files = [
+           "lib/net45/Google.Protobuf.dll",
+           "lib/net45/Google.Protobuf.xml",
+       ],
+       mono_files = [
+           "lib/net45/Google.Protobuf.dll",
+           "lib/net45/Google.Protobuf.xml",
+       ],
+    )
+    ### End of generated by the tool
diff --git a/csharp/nuget/regenerate_packages.sh b/csharp/nuget/regenerate_packages.sh
new file mode 100755
index 0000000..5f2ea80
--- /dev/null
+++ b/csharp/nuget/regenerate_packages.sh
@@ -0,0 +1,42 @@
+#!/bin/bash
+
+#
+# Script is written to be run from the WORKSPACE root
+#
+set -eu
+set -o pipefail
+
+PROTOBUF_VERSION="3.6.1"
+GRPC_VERSION="1.15.0"
+
+TOOL="./bazel-bin/external/io_bazel_rules_dotnet/tools/nuget2bazel/nuget2bazel"
+
+# Compile the tool, cannot use sandboxing
+bazel build --spawn_strategy=standalone @io_bazel_rules_dotnet//tools/nuget2bazel
+
+# Make temp directory
+TMPDIR=$(mktemp -d ${TMPDIR:-/tmp}/nuget.XXXXXXXXXX)
+
+# Tool only works on WORKSPACE files so we have to do these shenanigans
+touch "${TMPDIR}/WORKSPACE"
+
+# Gather protobuf deps
+"${TOOL}" add --path "/${TMPDIR}" Google.Protobuf "${PROTOBUF_VERSION}" 
+
+# Create the nuget.bzl file, indent 4 spaces
+echo 'load("@io_bazel_rules_dotnet//dotnet:defs.bzl", "nuget_package")' > ./csharp/nuget/nuget.bzl
+echo "def nuget_protobuf_packages():" >> csharp/nuget/nuget.bzl
+sed -e 's/^/    /' "${TMPDIR}/WORKSPACE" >> csharp/nuget/nuget.bzl
+
+# Reset the workspace file
+echo "" > "${TMPDIR}/WORKSPACE"
+
+# Rerun it for grpc deps
+"${TOOL}" add --path "/${TMPDIR}" Grpc "${GRPC_VERSION}" 
+
+# Similarly, write the gprc.bzl file
+echo "def nuget_grpc_packages():" >> ./csharp/nuget/nuget.bzl
+sed -e 's/^/    /' "${TMPDIR}/WORKSPACE" >> ./csharp/nuget/nuget.bzl
+
+# Cleanup
+rm -rf "${TMPDIR}"
diff --git a/csharp/nuget/work/WORKSPACE b/csharp/nuget/work/WORKSPACE
new file mode 100644
index 0000000..8d971bd
--- /dev/null
+++ b/csharp/nuget/work/WORKSPACE
@@ -0,0 +1,31 @@
+
+### Generated by the tool
+nuget_package(
+   name = "google.protobuf",
+   package = "google.protobuf",
+   version = "3.6.1",
+   sha256 = "bfa7666aa55e60aa2ee65502966336f812702acaaf7c62d12f276a01ab3aa9a4",
+   core_lib = "lib/netstandard1.0/Google.Protobuf.dll",
+   net_lib = "lib/net45/Google.Protobuf.dll",
+   mono_lib = "lib/net45/Google.Protobuf.dll",
+   core_deps = [
+       "@io_bazel_rules_dotnet//dotnet/stdlib.core:netstandard.library.dll",
+   ],
+   net_deps = [
+   ],
+   mono_deps = [
+   ],
+   core_files = [
+       "lib/netstandard1.0/Google.Protobuf.dll",
+       "lib/netstandard1.0/Google.Protobuf.xml",
+   ],
+   net_files = [
+       "lib/net45/Google.Protobuf.dll",
+       "lib/net45/Google.Protobuf.xml",
+   ],
+   mono_files = [
+       "lib/net45/Google.Protobuf.dll",
+       "lib/net45/Google.Protobuf.xml",
+   ],
+)
+### End of generated by the tool
diff --git a/csharp/nuget/work/packages.json b/csharp/nuget/work/packages.json
new file mode 100644
index 0000000..e1dd3d5
--- /dev/null
+++ b/csharp/nuget/work/packages.json
@@ -0,0 +1,5 @@
+{
+  "dependencies": {
+    "Google.Protobuf": "3.6.1"
+  }
+}
\ No newline at end of file
diff --git a/csharp/nuget/work/packages/Google.Protobuf.3.6.1/.signature.p7s b/csharp/nuget/work/packages/Google.Protobuf.3.6.1/.signature.p7s
new file mode 100755
index 0000000..bb7a5fd
--- /dev/null
+++ b/csharp/nuget/work/packages/Google.Protobuf.3.6.1/.signature.p7s
Binary files differ
diff --git a/csharp/nuget/work/packages/Google.Protobuf.3.6.1/Google.Protobuf.3.6.1.nupkg b/csharp/nuget/work/packages/Google.Protobuf.3.6.1/Google.Protobuf.3.6.1.nupkg
new file mode 100644
index 0000000..f28eb7a
--- /dev/null
+++ b/csharp/nuget/work/packages/Google.Protobuf.3.6.1/Google.Protobuf.3.6.1.nupkg
Binary files differ
diff --git a/csharp/nuget/work/packages/Google.Protobuf.3.6.1/lib/net45/Google.Protobuf.dll b/csharp/nuget/work/packages/Google.Protobuf.3.6.1/lib/net45/Google.Protobuf.dll
new file mode 100755
index 0000000..3683dc8
--- /dev/null
+++ b/csharp/nuget/work/packages/Google.Protobuf.3.6.1/lib/net45/Google.Protobuf.dll
Binary files differ
diff --git a/csharp/nuget/work/packages/Google.Protobuf.3.6.1/lib/net45/Google.Protobuf.xml b/csharp/nuget/work/packages/Google.Protobuf.3.6.1/lib/net45/Google.Protobuf.xml
new file mode 100755
index 0000000..18a593a
--- /dev/null
+++ b/csharp/nuget/work/packages/Google.Protobuf.3.6.1/lib/net45/Google.Protobuf.xml
@@ -0,0 +1,7548 @@
+<?xml version="1.0"?>

+<doc>

+    <assembly>

+        <name>Google.Protobuf</name>

+    </assembly>

+    <members>

+        <member name="T:Google.Protobuf.ByteArray">

+            <summary>

+            Provides a utility routine to copy small arrays much more quickly than Buffer.BlockCopy

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.ByteArray.CopyThreshold">

+            <summary>

+            The threshold above which you should use Buffer.BlockCopy rather than ByteArray.Copy

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.ByteArray.Copy(System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32)">

+            <summary>

+            Determines which copy routine to use based on the number of bytes to be copied.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.ByteArray.Reverse(System.Byte[])">

+            <summary>

+            Reverses the order of bytes in the array

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.ByteString">

+            <summary>

+            Immutable array of bytes.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.ByteString.Unsafe">

+            <summary>

+            Unsafe operations that can cause IO Failure and/or other catestrophic side-effects.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.Unsafe.FromBytes(System.Byte[])">

+            <summary>

+            Constructs a new ByteString from the given byte array. The array is

+            *not* copied, and must not be modified after this constructor is called.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.Unsafe.GetBuffer(Google.Protobuf.ByteString)">

+            <summary>

+            Provides direct, unrestricted access to the bytes contained in this instance.

+            You must not modify or resize the byte array returned by this method.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.AttachBytes(System.Byte[])">

+            <summary>

+            Internal use only.  Ensure that the provided array is not mutated and belongs to this instance.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.#ctor(System.Byte[])">

+            <summary>

+            Constructs a new ByteString from the given byte array. The array is

+            *not* copied, and must not be modified after this constructor is called.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.ByteString.Empty">

+            <summary>

+            Returns an empty ByteString.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.ByteString.Length">

+            <summary>

+            Returns the length of this ByteString in bytes.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.ByteString.IsEmpty">

+            <summary>

+            Returns <c>true</c> if this byte string is empty, <c>false</c> otherwise.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.ToByteArray">

+            <summary>

+            Converts this <see cref="T:Google.Protobuf.ByteString"/> into a byte array.

+            </summary>

+            <remarks>The data is copied - changes to the returned array will not be reflected in this <c>ByteString</c>.</remarks>

+            <returns>A byte array with the same data as this <c>ByteString</c>.</returns>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.ToBase64">

+            <summary>

+            Converts this <see cref="T:Google.Protobuf.ByteString"/> into a standard base64 representation.

+            </summary>

+            <returns>A base64 representation of this <c>ByteString</c>.</returns>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.FromBase64(System.String)">

+            <summary>

+            Constructs a <see cref="T:Google.Protobuf.ByteString" /> from the Base64 Encoded String.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.FromStream(System.IO.Stream)">

+            <summary>

+            Constructs a <see cref="T:Google.Protobuf.ByteString"/> from data in the given stream, synchronously.

+            </summary>

+            <remarks>If successful, <paramref name="stream"/> will be read completely, from the position

+            at the start of the call.</remarks>

+            <param name="stream">The stream to copy into a ByteString.</param>

+            <returns>A ByteString with content read from the given stream.</returns>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.FromStreamAsync(System.IO.Stream,System.Threading.CancellationToken)">

+            <summary>

+            Constructs a <see cref="T:Google.Protobuf.ByteString"/> from data in the given stream, asynchronously.

+            </summary>

+            <remarks>If successful, <paramref name="stream"/> will be read completely, from the position

+            at the start of the call.</remarks>

+            <param name="stream">The stream to copy into a ByteString.</param>

+            <param name="cancellationToken">The cancellation token to use when reading from the stream, if any.</param>

+            <returns>A ByteString with content read from the given stream.</returns>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.CopyFrom(System.Byte[])">

+            <summary>

+            Constructs a <see cref="T:Google.Protobuf.ByteString" /> from the given array. The contents

+            are copied, so further modifications to the array will not

+            be reflected in the returned ByteString.

+            This method can also be invoked in <c>ByteString.CopyFrom(0xaa, 0xbb, ...)</c> form

+            which is primarily useful for testing.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.CopyFrom(System.Byte[],System.Int32,System.Int32)">

+            <summary>

+            Constructs a <see cref="T:Google.Protobuf.ByteString" /> from a portion of a byte array.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.CopyFrom(System.String,System.Text.Encoding)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.ByteString" /> by encoding the specified text with

+            the given encoding.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.CopyFromUtf8(System.String)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.ByteString" /> by encoding the specified text in UTF-8.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.ByteString.Item(System.Int32)">

+            <summary>

+            Retuns the byte at the given index.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.ToString(System.Text.Encoding)">

+            <summary>

+            Converts this <see cref="T:Google.Protobuf.ByteString"/> into a string by applying the given encoding.

+            </summary>

+            <remarks>

+            This method should only be used to convert binary data which was the result of encoding

+            text with the given encoding.

+            </remarks>

+            <param name="encoding">The encoding to use to decode the binary data into text.</param>

+            <returns>The result of decoding the binary data with the given decoding.</returns>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.ToStringUtf8">

+            <summary>

+            Converts this <see cref="T:Google.Protobuf.ByteString"/> into a string by applying the UTF-8 encoding.

+            </summary>

+            <remarks>

+            This method should only be used to convert binary data which was the result of encoding

+            text with UTF-8.

+            </remarks>

+            <returns>The result of decoding the binary data with the given decoding.</returns>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.GetEnumerator">

+            <summary>

+            Returns an iterator over the bytes in this <see cref="T:Google.Protobuf.ByteString"/>.

+            </summary>

+            <returns>An iterator over the bytes in this object.</returns>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.System#Collections#IEnumerable#GetEnumerator">

+            <summary>

+            Returns an iterator over the bytes in this <see cref="T:Google.Protobuf.ByteString"/>.

+            </summary>

+            <returns>An iterator over the bytes in this object.</returns>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.CreateCodedInput">

+            <summary>

+            Creates a CodedInputStream from this ByteString's data.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.op_Equality(Google.Protobuf.ByteString,Google.Protobuf.ByteString)">

+            <summary>

+            Compares two byte strings for equality.

+            </summary>

+            <param name="lhs">The first byte string to compare.</param>

+            <param name="rhs">The second byte string to compare.</param>

+            <returns><c>true</c> if the byte strings are equal; false otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.op_Inequality(Google.Protobuf.ByteString,Google.Protobuf.ByteString)">

+            <summary>

+            Compares two byte strings for inequality.

+            </summary>

+            <param name="lhs">The first byte string to compare.</param>

+            <param name="rhs">The second byte string to compare.</param>

+            <returns><c>false</c> if the byte strings are equal; true otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.Equals(System.Object)">

+            <summary>

+            Compares this byte string with another object.

+            </summary>

+            <param name="obj">The object to compare this with.</param>

+            <returns><c>true</c> if <paramref name="obj"/> refers to an equal <see cref="T:Google.Protobuf.ByteString"/>; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.GetHashCode">

+            <summary>

+            Returns a hash code for this object. Two equal byte strings

+            will return the same hash code.

+            </summary>

+            <returns>A hash code for this object.</returns>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.Equals(Google.Protobuf.ByteString)">

+            <summary>

+            Compares this byte string with another.

+            </summary>

+            <param name="other">The <see cref="T:Google.Protobuf.ByteString"/> to compare this with.</param>

+            <returns><c>true</c> if <paramref name="other"/> refers to an equal byte string; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.WriteRawBytesTo(Google.Protobuf.CodedOutputStream)">

+            <summary>

+            Used internally by CodedOutputStream to avoid creating a copy for the write

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.CopyTo(System.Byte[],System.Int32)">

+            <summary>

+            Copies the entire byte array to the destination array provided at the offset specified.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.WriteTo(System.IO.Stream)">

+            <summary>

+            Writes the entire byte array to the provided stream

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.CodedInputStream">

+            <summary>

+            Reads and decodes protocol message fields.

+            </summary>

+            <remarks>

+            <para>

+            This class is generally used by generated code to read appropriate

+            primitives from the stream. It effectively encapsulates the lowest

+            levels of protocol buffer format.

+            </para>

+            <para>

+            Repeated fields and map fields are not handled by this class; use <see cref="T:Google.Protobuf.Collections.RepeatedField`1"/>

+            and <see cref="T:Google.Protobuf.Collections.MapField`2"/> to serialize such fields.

+            </para>

+            </remarks>

+        </member>

+        <member name="F:Google.Protobuf.CodedInputStream.leaveOpen">

+            <summary>

+            Whether to leave the underlying stream open when disposing of this stream.

+            This is always true when there's no stream.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.CodedInputStream.buffer">

+            <summary>

+            Buffer of data read from the stream or provided at construction time.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.CodedInputStream.bufferSize">

+            <summary>

+            The index of the buffer at which we need to refill from the stream (if there is one).

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.CodedInputStream.bufferPos">

+            <summary>

+            The position within the current buffer (i.e. the next byte to read)

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.CodedInputStream.input">

+            <summary>

+            The stream to read further input from, or null if the byte array buffer was provided

+            directly on construction, with no further data available.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.CodedInputStream.lastTag">

+            <summary>

+            The last tag we read. 0 indicates we've read to the end of the stream

+            (or haven't read anything yet).

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.CodedInputStream.nextTag">

+            <summary>

+            The next tag, used to store the value read by PeekTag.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.CodedInputStream.totalBytesRetired">

+            <summary>

+            The total number of bytes read before the current buffer. The

+            total bytes read up to the current position can be computed as

+            totalBytesRetired + bufferPos.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.CodedInputStream.currentLimit">

+            <summary>

+            The absolute position of the end of the current message.

+            </summary> 

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.#ctor(System.Byte[])">

+            <summary>

+            Creates a new CodedInputStream reading data from the given byte array.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.#ctor(System.Byte[],System.Int32,System.Int32)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.CodedInputStream"/> that reads from the given byte array slice.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.#ctor(System.IO.Stream)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.CodedInputStream"/> reading data from the given stream, which will be disposed

+            when the returned object is disposed.

+            </summary>

+            <param name="input">The stream to read from.</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.#ctor(System.IO.Stream,System.Boolean)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.CodedInputStream"/> reading data from the given stream.

+            </summary>

+            <param name="input">The stream to read from.</param>

+            <param name="leaveOpen"><c>true</c> to leave <paramref name="input"/> open when the returned

+            <c cref="T:Google.Protobuf.CodedInputStream"/> is disposed; <c>false</c> to dispose of the given stream when the

+            returned object is disposed.</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.#ctor(System.IO.Stream,System.Byte[],System.Int32,System.Int32,System.Boolean)">

+            <summary>

+            Creates a new CodedInputStream reading data from the given

+            stream and buffer, using the default limits.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.#ctor(System.IO.Stream,System.Byte[],System.Int32,System.Int32,System.Int32,System.Int32,System.Boolean)">

+            <summary>

+            Creates a new CodedInputStream reading data from the given

+            stream and buffer, using the specified limits.

+            </summary>

+            <remarks>

+            This chains to the version with the default limits instead of vice versa to avoid

+            having to check that the default values are valid every time.

+            </remarks>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.CreateWithLimits(System.IO.Stream,System.Int32,System.Int32)">

+            <summary>

+            Creates a <see cref="T:Google.Protobuf.CodedInputStream"/> with the specified size and recursion limits, reading

+            from an input stream.

+            </summary>

+            <remarks>

+            This method exists separately from the constructor to reduce the number of constructor overloads.

+            It is likely to be used considerably less frequently than the constructors, as the default limits

+            are suitable for most use cases.

+            </remarks>

+            <param name="input">The input stream to read from</param>

+            <param name="sizeLimit">The total limit of data to read from the stream.</param>

+            <param name="recursionLimit">The maximum recursion depth to allow while reading.</param>

+            <returns>A <c>CodedInputStream</c> reading from <paramref name="input"/> with the specified size

+            and recursion limits.</returns>

+        </member>

+        <member name="P:Google.Protobuf.CodedInputStream.Position">

+            <summary>

+            Returns the current position in the input stream, or the position in the input buffer

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.CodedInputStream.LastTag">

+            <summary>

+            Returns the last tag read, or 0 if no tags have been read or we've read beyond

+            the end of the stream.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.CodedInputStream.SizeLimit">

+            <summary>

+            Returns the size limit for this stream.

+            </summary>

+            <remarks>

+            This limit is applied when reading from the underlying stream, as a sanity check. It is

+            not applied when reading from a byte array data source without an underlying stream.

+            The default value is Int32.MaxValue.

+            </remarks>

+            <value>

+            The size limit.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.CodedInputStream.RecursionLimit">

+            <summary>

+            Returns the recursion limit for this stream. This limit is applied whilst reading messages,

+            to avoid maliciously-recursive data.

+            </summary>

+            <remarks>

+            The default limit is 64.

+            </remarks>

+            <value>

+            The recursion limit for this stream.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.CodedInputStream.DiscardUnknownFields">

+            <summary>

+            Internal-only property; when set to true, unknown fields will be discarded while parsing.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.Dispose">

+            <summary>

+            Disposes of this instance, potentially closing any underlying stream.

+            </summary>

+            <remarks>

+            As there is no flushing to perform here, disposing of a <see cref="T:Google.Protobuf.CodedInputStream"/> which

+            was constructed with the <c>leaveOpen</c> option parameter set to <c>true</c> (or one which

+            was constructed to read from a byte array) has no effect.

+            </remarks>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.CheckReadEndOfStreamTag">

+            <summary>

+            Verifies that the last call to ReadTag() returned tag 0 - in other words,

+            we've reached the end of the stream when we expected to.

+            </summary>

+            <exception cref="T:Google.Protobuf.InvalidProtocolBufferException">The 

+            tag read was not the one specified</exception>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.PeekTag">

+            <summary>

+            Peeks at the next field tag. This is like calling <see cref="M:Google.Protobuf.CodedInputStream.ReadTag"/>, but the

+            tag is not consumed. (So a subsequent call to <see cref="M:Google.Protobuf.CodedInputStream.ReadTag"/> will return the

+            same value.)

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadTag">

+            <summary>

+            Reads a field tag, returning the tag of 0 for "end of stream".

+            </summary>

+            <remarks>

+            If this method returns 0, it doesn't necessarily mean the end of all

+            the data in this CodedInputStream; it may be the end of the logical stream

+            for an embedded message, for example.

+            </remarks>

+            <returns>The next field tag, or 0 for end of stream. (0 is never a valid tag.)</returns>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.SkipLastField">

+            <summary>

+            Skips the data for the field with the tag we've just read.

+            This should be called directly after <see cref="M:Google.Protobuf.CodedInputStream.ReadTag"/>, when

+            the caller wishes to skip an unknown field.

+            </summary>

+            <remarks>

+            This method throws <see cref="T:Google.Protobuf.InvalidProtocolBufferException"/> if the last-read tag was an end-group tag.

+            If a caller wishes to skip a group, they should skip the whole group, by calling this method after reading the

+            start-group tag. This behavior allows callers to call this method on any field they don't understand, correctly

+            resulting in an error if an end-group tag has not been paired with an earlier start-group tag.

+            </remarks>

+            <exception cref="T:Google.Protobuf.InvalidProtocolBufferException">The last tag was an end-group tag</exception>

+            <exception cref="T:System.InvalidOperationException">The last read operation read to the end of the logical stream</exception>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.SkipGroup(System.UInt32)">

+            <summary>

+            Skip a group.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadDouble">

+            <summary>

+            Reads a double field from the stream.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadFloat">

+            <summary>

+            Reads a float field from the stream.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadUInt64">

+            <summary>

+            Reads a uint64 field from the stream.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadInt64">

+            <summary>

+            Reads an int64 field from the stream.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadInt32">

+            <summary>

+            Reads an int32 field from the stream.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadFixed64">

+            <summary>

+            Reads a fixed64 field from the stream.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadFixed32">

+            <summary>

+            Reads a fixed32 field from the stream.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadBool">

+            <summary>

+            Reads a bool field from the stream.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadString">

+            <summary>

+            Reads a string field from the stream.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadMessage(Google.Protobuf.IMessage)">

+            <summary>

+            Reads an embedded message field value from the stream.

+            </summary>   

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadBytes">

+            <summary>

+            Reads a bytes field value from the stream.

+            </summary>   

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadUInt32">

+            <summary>

+            Reads a uint32 field value from the stream.

+            </summary>   

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadEnum">

+            <summary>

+            Reads an enum field value from the stream.

+            </summary>   

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadSFixed32">

+            <summary>

+            Reads an sfixed32 field value from the stream.

+            </summary>   

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadSFixed64">

+            <summary>

+            Reads an sfixed64 field value from the stream.

+            </summary>   

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadSInt32">

+            <summary>

+            Reads an sint32 field value from the stream.

+            </summary>   

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadSInt64">

+            <summary>

+            Reads an sint64 field value from the stream.

+            </summary>   

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadLength">

+            <summary>

+            Reads a length for length-delimited data.

+            </summary>

+            <remarks>

+            This is internally just reading a varint, but this method exists

+            to make the calling code clearer.

+            </remarks>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.MaybeConsumeTag(System.UInt32)">

+            <summary>

+            Peeks at the next tag in the stream. If it matches <paramref name="tag"/>,

+            the tag is consumed and the method returns <c>true</c>; otherwise, the

+            stream is left in the original position and the method returns <c>false</c>.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.SlowReadRawVarint32">

+            <summary>

+            Same code as ReadRawVarint32, but read each byte individually, checking for

+            buffer overflow.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadRawVarint32">

+            <summary>

+            Reads a raw Varint from the stream.  If larger than 32 bits, discard the upper bits.

+            This method is optimised for the case where we've got lots of data in the buffer.

+            That means we can check the size just once, then just read directly from the buffer

+            without constant rechecking of the buffer length.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadRawVarint32(System.IO.Stream)">

+            <summary>

+            Reads a varint from the input one byte at a time, so that it does not

+            read any bytes after the end of the varint. If you simply wrapped the

+            stream in a CodedInputStream and used ReadRawVarint32(Stream)

+            then you would probably end up reading past the end of the varint since

+            CodedInputStream buffers its input.

+            </summary>

+            <param name="input"></param>

+            <returns></returns>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadRawVarint64">

+            <summary>

+            Reads a raw varint from the stream.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadRawLittleEndian32">

+            <summary>

+            Reads a 32-bit little-endian integer from the stream.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadRawLittleEndian64">

+            <summary>

+            Reads a 64-bit little-endian integer from the stream.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.DecodeZigZag32(System.UInt32)">

+            <summary>

+            Decode a 32-bit value with ZigZag encoding.

+            </summary>

+            <remarks>

+            ZigZag encodes signed integers into values that can be efficiently

+            encoded with varint.  (Otherwise, negative values must be 

+            sign-extended to 64 bits to be varint encoded, thus always taking

+            10 bytes on the wire.)

+            </remarks>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.DecodeZigZag64(System.UInt64)">

+            <summary>

+            Decode a 32-bit value with ZigZag encoding.

+            </summary>

+            <remarks>

+            ZigZag encodes signed integers into values that can be efficiently

+            encoded with varint.  (Otherwise, negative values must be 

+            sign-extended to 64 bits to be varint encoded, thus always taking

+            10 bytes on the wire.)

+            </remarks>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.PushLimit(System.Int32)">

+            <summary>

+            Sets currentLimit to (current position) + byteLimit. This is called

+            when descending into a length-delimited embedded message. The previous

+            limit is returned.

+            </summary>

+            <returns>The old limit.</returns>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.PopLimit(System.Int32)">

+            <summary>

+            Discards the current limit, returning the previous limit.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.CodedInputStream.ReachedLimit">

+            <summary>

+            Returns whether or not all the data before the limit has been read.

+            </summary>

+            <returns></returns>

+        </member>

+        <member name="P:Google.Protobuf.CodedInputStream.IsAtEnd">

+            <summary>

+            Returns true if the stream has reached the end of the input. This is the

+            case if either the end of the underlying input source has been reached or

+            the stream has reached a limit created using PushLimit.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.RefillBuffer(System.Boolean)">

+            <summary>

+            Called when buffer is empty to read more bytes from the

+            input.  If <paramref name="mustSucceed"/> is true, RefillBuffer() gurantees that

+            either there will be at least one byte in the buffer when it returns

+            or it will throw an exception.  If <paramref name="mustSucceed"/> is false,

+            RefillBuffer() returns false if no more bytes were available.

+            </summary>

+            <param name="mustSucceed"></param>

+            <returns></returns>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadRawByte">

+            <summary>

+            Read one byte from the input.

+            </summary>

+            <exception cref="T:Google.Protobuf.InvalidProtocolBufferException">

+            the end of the stream or the current limit was reached

+            </exception>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadRawBytes(System.Int32)">

+            <summary>

+            Reads a fixed size of bytes from the input.

+            </summary>

+            <exception cref="T:Google.Protobuf.InvalidProtocolBufferException">

+            the end of the stream or the current limit was reached

+            </exception>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.SkipRawBytes(System.Int32)">

+            <summary>

+            Reads and discards <paramref name="size"/> bytes.

+            </summary>

+            <exception cref="T:Google.Protobuf.InvalidProtocolBufferException">the end of the stream

+            or the current limit was reached</exception>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.SkipImpl(System.Int32)">

+            <summary>

+            Abstraction of skipping to cope with streams which can't really skip.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.CodedOutputStream">

+            <summary>

+            Encodes and writes protocol message fields.

+            </summary>

+            <remarks>

+            <para>

+            This class is generally used by generated code to write appropriate

+            primitives to the stream. It effectively encapsulates the lowest

+            levels of protocol buffer format. Unlike some other implementations,

+            this does not include combined "write tag and value" methods. Generated

+            code knows the exact byte representations of the tags they're going to write,

+            so there's no need to re-encode them each time. Manually-written code calling

+            this class should just call one of the <c>WriteTag</c> overloads before each value.

+            </para>

+            <para>

+            Repeated fields and map fields are not handled by this class; use <c>RepeatedField&lt;T&gt;</c>

+            and <c>MapField&lt;TKey, TValue&gt;</c> to serialize such fields.

+            </para>

+            </remarks>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeDoubleSize(System.Double)">

+            <summary>

+            Computes the number of bytes that would be needed to encode a

+            double field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeFloatSize(System.Single)">

+            <summary>

+            Computes the number of bytes that would be needed to encode a

+            float field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeUInt64Size(System.UInt64)">

+            <summary>

+            Computes the number of bytes that would be needed to encode a

+            uint64 field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeInt64Size(System.Int64)">

+            <summary>

+            Computes the number of bytes that would be needed to encode an

+            int64 field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeInt32Size(System.Int32)">

+            <summary>

+            Computes the number of bytes that would be needed to encode an

+            int32 field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeFixed64Size(System.UInt64)">

+            <summary>

+            Computes the number of bytes that would be needed to encode a

+            fixed64 field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeFixed32Size(System.UInt32)">

+            <summary>

+            Computes the number of bytes that would be needed to encode a

+            fixed32 field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeBoolSize(System.Boolean)">

+            <summary>

+            Computes the number of bytes that would be needed to encode a

+            bool field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeStringSize(System.String)">

+            <summary>

+            Computes the number of bytes that would be needed to encode a

+            string field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeGroupSize(Google.Protobuf.IMessage)">

+            <summary>

+            Computes the number of bytes that would be needed to encode a

+            group field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeMessageSize(Google.Protobuf.IMessage)">

+            <summary>

+            Computes the number of bytes that would be needed to encode an

+            embedded message field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeBytesSize(Google.Protobuf.ByteString)">

+            <summary>

+            Computes the number of bytes that would be needed to encode a

+            bytes field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeUInt32Size(System.UInt32)">

+            <summary>

+            Computes the number of bytes that would be needed to encode a

+            uint32 field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeEnumSize(System.Int32)">

+            <summary>

+            Computes the number of bytes that would be needed to encode a

+            enum field, including the tag. The caller is responsible for

+            converting the enum value to its numeric value.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeSFixed32Size(System.Int32)">

+            <summary>

+            Computes the number of bytes that would be needed to encode an

+            sfixed32 field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeSFixed64Size(System.Int64)">

+            <summary>

+            Computes the number of bytes that would be needed to encode an

+            sfixed64 field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeSInt32Size(System.Int32)">

+            <summary>

+            Computes the number of bytes that would be needed to encode an

+            sint32 field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeSInt64Size(System.Int64)">

+            <summary>

+            Computes the number of bytes that would be needed to encode an

+            sint64 field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeLengthSize(System.Int32)">

+            <summary>

+            Computes the number of bytes that would be needed to encode a length,

+            as written by <see cref="M:Google.Protobuf.CodedOutputStream.WriteLength(System.Int32)"/>.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeRawVarint32Size(System.UInt32)">

+            <summary>

+            Computes the number of bytes that would be needed to encode a varint.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeRawVarint64Size(System.UInt64)">

+            <summary>

+            Computes the number of bytes that would be needed to encode a varint.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeTagSize(System.Int32)">

+            <summary>

+            Computes the number of bytes that would be needed to encode a tag.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.CodedOutputStream.DefaultBufferSize">

+            <summary>

+            The buffer size used by CreateInstance(Stream).

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.#ctor(System.Byte[])">

+            <summary>

+            Creates a new CodedOutputStream that writes directly to the given

+            byte array. If more bytes are written than fit in the array,

+            OutOfSpaceException will be thrown.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.#ctor(System.Byte[],System.Int32,System.Int32)">

+            <summary>

+            Creates a new CodedOutputStream that writes directly to the given

+            byte array slice. If more bytes are written than fit in the array,

+            OutOfSpaceException will be thrown.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.#ctor(System.IO.Stream)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.CodedOutputStream" /> which write to the given stream, and disposes of that

+            stream when the returned <c>CodedOutputStream</c> is disposed.

+            </summary>

+            <param name="output">The stream to write to. It will be disposed when the returned <c>CodedOutputStream is disposed.</c></param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.#ctor(System.IO.Stream,System.Int32)">

+            <summary>

+            Creates a new CodedOutputStream which write to the given stream and uses

+            the specified buffer size.

+            </summary>

+            <param name="output">The stream to write to. It will be disposed when the returned <c>CodedOutputStream is disposed.</c></param>

+            <param name="bufferSize">The size of buffer to use internally.</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.#ctor(System.IO.Stream,System.Boolean)">

+            <summary>

+            Creates a new CodedOutputStream which write to the given stream.

+            </summary>

+            <param name="output">The stream to write to.</param>

+            <param name="leaveOpen">If <c>true</c>, <paramref name="output"/> is left open when the returned <c>CodedOutputStream</c> is disposed;

+            if <c>false</c>, the provided stream is disposed as well.</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.#ctor(System.IO.Stream,System.Int32,System.Boolean)">

+            <summary>

+            Creates a new CodedOutputStream which write to the given stream and uses

+            the specified buffer size.

+            </summary>

+            <param name="output">The stream to write to.</param>

+            <param name="bufferSize">The size of buffer to use internally.</param>

+            <param name="leaveOpen">If <c>true</c>, <paramref name="output"/> is left open when the returned <c>CodedOutputStream</c> is disposed;

+            if <c>false</c>, the provided stream is disposed as well.</param>

+        </member>

+        <member name="P:Google.Protobuf.CodedOutputStream.Position">

+            <summary>

+            Returns the current position in the stream, or the position in the output buffer

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteDouble(System.Double)">

+            <summary>

+            Writes a double field value, without a tag, to the stream.

+            </summary>

+            <param name="value">The value to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteFloat(System.Single)">

+            <summary>

+            Writes a float field value, without a tag, to the stream.

+            </summary>

+            <param name="value">The value to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteUInt64(System.UInt64)">

+            <summary>

+            Writes a uint64 field value, without a tag, to the stream.

+            </summary>

+            <param name="value">The value to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteInt64(System.Int64)">

+            <summary>

+            Writes an int64 field value, without a tag, to the stream.

+            </summary>

+            <param name="value">The value to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteInt32(System.Int32)">

+            <summary>

+            Writes an int32 field value, without a tag, to the stream.

+            </summary>

+            <param name="value">The value to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteFixed64(System.UInt64)">

+            <summary>

+            Writes a fixed64 field value, without a tag, to the stream.

+            </summary>

+            <param name="value">The value to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteFixed32(System.UInt32)">

+            <summary>

+            Writes a fixed32 field value, without a tag, to the stream.

+            </summary>

+            <param name="value">The value to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteBool(System.Boolean)">

+            <summary>

+            Writes a bool field value, without a tag, to the stream.

+            </summary>

+            <param name="value">The value to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteString(System.String)">

+            <summary>

+            Writes a string field value, without a tag, to the stream.

+            The data is length-prefixed.

+            </summary>

+            <param name="value">The value to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteMessage(Google.Protobuf.IMessage)">

+            <summary>

+            Writes a message, without a tag, to the stream.

+            The data is length-prefixed.

+            </summary>

+            <param name="value">The value to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteBytes(Google.Protobuf.ByteString)">

+            <summary>

+            Write a byte string, without a tag, to the stream.

+            The data is length-prefixed.

+            </summary>

+            <param name="value">The value to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteUInt32(System.UInt32)">

+            <summary>

+            Writes a uint32 value, without a tag, to the stream.

+            </summary>

+            <param name="value">The value to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteEnum(System.Int32)">

+            <summary>

+            Writes an enum value, without a tag, to the stream.

+            </summary>

+            <param name="value">The value to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteSFixed32(System.Int32)">

+            <summary>

+            Writes an sfixed32 value, without a tag, to the stream.

+            </summary>

+            <param name="value">The value to write.</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteSFixed64(System.Int64)">

+            <summary>

+            Writes an sfixed64 value, without a tag, to the stream.

+            </summary>

+            <param name="value">The value to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteSInt32(System.Int32)">

+            <summary>

+            Writes an sint32 value, without a tag, to the stream.

+            </summary>

+            <param name="value">The value to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteSInt64(System.Int64)">

+            <summary>

+            Writes an sint64 value, without a tag, to the stream.

+            </summary>

+            <param name="value">The value to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteLength(System.Int32)">

+            <summary>

+            Writes a length (in bytes) for length-delimited data.

+            </summary>

+            <remarks>

+            This method simply writes a rawint, but exists for clarity in calling code.

+            </remarks>

+            <param name="length">Length value, in bytes.</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteTag(System.Int32,Google.Protobuf.WireFormat.WireType)">

+            <summary>

+            Encodes and writes a tag.

+            </summary>

+            <param name="fieldNumber">The number of the field to write the tag for</param>

+            <param name="type">The wire format type of the tag to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteTag(System.UInt32)">

+            <summary>

+            Writes an already-encoded tag.

+            </summary>

+            <param name="tag">The encoded tag</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteRawTag(System.Byte)">

+            <summary>

+            Writes the given single-byte tag directly to the stream.

+            </summary>

+            <param name="b1">The encoded tag</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteRawTag(System.Byte,System.Byte)">

+            <summary>

+            Writes the given two-byte tag directly to the stream.

+            </summary>

+            <param name="b1">The first byte of the encoded tag</param>

+            <param name="b2">The second byte of the encoded tag</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteRawTag(System.Byte,System.Byte,System.Byte)">

+            <summary>

+            Writes the given three-byte tag directly to the stream.

+            </summary>

+            <param name="b1">The first byte of the encoded tag</param>

+            <param name="b2">The second byte of the encoded tag</param>

+            <param name="b3">The third byte of the encoded tag</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteRawTag(System.Byte,System.Byte,System.Byte,System.Byte)">

+            <summary>

+            Writes the given four-byte tag directly to the stream.

+            </summary>

+            <param name="b1">The first byte of the encoded tag</param>

+            <param name="b2">The second byte of the encoded tag</param>

+            <param name="b3">The third byte of the encoded tag</param>

+            <param name="b4">The fourth byte of the encoded tag</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteRawTag(System.Byte,System.Byte,System.Byte,System.Byte,System.Byte)">

+            <summary>

+            Writes the given five-byte tag directly to the stream.

+            </summary>

+            <param name="b1">The first byte of the encoded tag</param>

+            <param name="b2">The second byte of the encoded tag</param>

+            <param name="b3">The third byte of the encoded tag</param>

+            <param name="b4">The fourth byte of the encoded tag</param>

+            <param name="b5">The fifth byte of the encoded tag</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteRawVarint32(System.UInt32)">

+            <summary>

+            Writes a 32 bit value as a varint. The fast route is taken when

+            there's enough buffer space left to whizz through without checking

+            for each byte; otherwise, we resort to calling WriteRawByte each time.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteRawBytes(System.Byte[])">

+            <summary>

+            Writes out an array of bytes.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteRawBytes(System.Byte[],System.Int32,System.Int32)">

+            <summary>

+            Writes out part of an array of bytes.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.EncodeZigZag32(System.Int32)">

+            <summary>

+            Encode a 32-bit value with ZigZag encoding.

+            </summary>

+            <remarks>

+            ZigZag encodes signed integers into values that can be efficiently

+            encoded with varint.  (Otherwise, negative values must be 

+            sign-extended to 64 bits to be varint encoded, thus always taking

+            10 bytes on the wire.)

+            </remarks>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.EncodeZigZag64(System.Int64)">

+            <summary>

+            Encode a 64-bit value with ZigZag encoding.

+            </summary>

+            <remarks>

+            ZigZag encodes signed integers into values that can be efficiently

+            encoded with varint.  (Otherwise, negative values must be 

+            sign-extended to 64 bits to be varint encoded, thus always taking

+            10 bytes on the wire.)

+            </remarks>

+        </member>

+        <member name="T:Google.Protobuf.CodedOutputStream.OutOfSpaceException">

+            <summary>

+            Indicates that a CodedOutputStream wrapping a flat byte array

+            ran out of space.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.Dispose">

+            <summary>

+            Flushes any buffered data and optionally closes the underlying stream, if any.

+            </summary>

+            <remarks>

+            <para>

+            By default, any underlying stream is closed by this method. To configure this behaviour,

+            use a constructor overload with a <c>leaveOpen</c> parameter. If this instance does not

+            have an underlying stream, this method does nothing.

+            </para>

+            <para>

+            For the sake of efficiency, calling this method does not prevent future write calls - but

+            if a later write ends up writing to a stream which has been disposed, that is likely to

+            fail. It is recommend that you not call any other methods after this.

+            </para>

+            </remarks>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.Flush">

+            <summary>

+            Flushes any buffered data to the underlying stream (if there is one).

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.CheckNoSpaceLeft">

+            <summary>

+            Verifies that SpaceLeft returns zero. It's common to create a byte array

+            that is exactly big enough to hold a message, then write to it with

+            a CodedOutputStream. Calling CheckNoSpaceLeft after writing verifies that

+            the message was actually as big as expected, which can help bugs.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.CodedOutputStream.SpaceLeft">

+            <summary>

+            If writing to a flat array, returns the space left in the array. Otherwise,

+            throws an InvalidOperationException.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Collections.Lists">

+            <summary>

+            Utility to compare if two Lists are the same, and the hash code

+            of a List.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Collections.Lists.Equals``1(System.Collections.Generic.List{``0},System.Collections.Generic.List{``0})">

+            <summary>

+            Checks if two lists are equal.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Collections.Lists.GetHashCode``1(System.Collections.Generic.List{``0})">

+            <summary>

+            Gets the list's hash code.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Collections.MapField`2">

+            <summary>

+            Representation of a map field in a Protocol Buffer message.

+            </summary>

+            <typeparam name="TKey">Key type in the map. Must be a type supported by Protocol Buffer map keys.</typeparam>

+            <typeparam name="TValue">Value type in the map. Must be a type supported by Protocol Buffers.</typeparam>

+            <remarks>

+            <para>

+            For string keys, the equality comparison is provided by <see cref="P:System.StringComparer.Ordinal" />.

+            </para>

+            <para>

+            Null values are not permitted in the map, either for wrapper types or regular messages.

+            If a map is deserialized from a data stream and the value is missing from an entry, a default value

+            is created instead. For primitive types, that is the regular default value (0, the empty string and so

+            on); for message types, an empty instance of the message is created, as if the map entry contained a 0-length

+            encoded value for the field.

+            </para>

+            <para>

+            This implementation does not generally prohibit the use of key/value types which are not

+            supported by Protocol Buffers (e.g. using a key type of <code>byte</code>) but nor does it guarantee

+            that all operations will work in such cases.

+            </para>

+            <para>

+            The order in which entries are returned when iterating over this object is undefined, and may change

+            in future versions.

+            </para>

+            </remarks>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.Clone">

+            <summary>

+            Creates a deep clone of this object.

+            </summary>

+            <returns>

+            A deep clone of this object.

+            </returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.Add(`0,`1)">

+            <summary>

+            Adds the specified key/value pair to the map.

+            </summary>

+            <remarks>

+            This operation fails if the key already exists in the map. To replace an existing entry, use the indexer.

+            </remarks>

+            <param name="key">The key to add</param>

+            <param name="value">The value to add.</param>

+            <exception cref="T:System.ArgumentException">The given key already exists in map.</exception>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.ContainsKey(`0)">

+            <summary>

+            Determines whether the specified key is present in the map.

+            </summary>

+            <param name="key">The key to check.</param>

+            <returns><c>true</c> if the map contains the given key; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.Remove(`0)">

+            <summary>

+            Removes the entry identified by the given key from the map.

+            </summary>

+            <param name="key">The key indicating the entry to remove from the map.</param>

+            <returns><c>true</c> if the map contained the given key before the entry was removed; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.TryGetValue(`0,`1@)">

+            <summary>

+            Gets the value associated with the specified key.

+            </summary>

+            <param name="key">The key whose value to get.</param>

+            <param name="value">When this method returns, the value associated with the specified key, if the key is found;

+            otherwise, the default value for the type of the <paramref name="value"/> parameter.

+            This parameter is passed uninitialized.</param>

+            <returns><c>true</c> if the map contains an element with the specified key; otherwise, <c>false</c>.</returns>

+        </member>

+        <member name="P:Google.Protobuf.Collections.MapField`2.Item(`0)">

+            <summary>

+            Gets or sets the value associated with the specified key.

+            </summary>

+            <param name="key">The key of the value to get or set.</param>

+            <exception cref="T:System.Collections.Generic.KeyNotFoundException">The property is retrieved and key does not exist in the collection.</exception>

+            <returns>The value associated with the specified key. If the specified key is not found,

+            a get operation throws a <see cref="T:System.Collections.Generic.KeyNotFoundException"/>, and a set operation creates a new element with the specified key.</returns>

+        </member>

+        <member name="P:Google.Protobuf.Collections.MapField`2.Keys">

+            <summary>

+            Gets a collection containing the keys in the map.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Collections.MapField`2.Values">

+            <summary>

+            Gets a collection containing the values in the map.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.Add(System.Collections.Generic.IDictionary{`0,`1})">

+            <summary>

+            Adds the specified entries to the map. The keys and values are not automatically cloned.

+            </summary>

+            <param name="entries">The entries to add to the map.</param>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.GetEnumerator">

+            <summary>

+            Returns an enumerator that iterates through the collection.

+            </summary>

+            <returns>

+            An enumerator that can be used to iterate through the collection.

+            </returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.System#Collections#IEnumerable#GetEnumerator">

+            <summary>

+            Returns an enumerator that iterates through a collection.

+            </summary>

+            <returns>

+            An <see cref="T:System.Collections.IEnumerator" /> object that can be used to iterate through the collection.

+            </returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.System#Collections#Generic#ICollection{System#Collections#Generic#KeyValuePair{TKey,TValue}}#Add(System.Collections.Generic.KeyValuePair{`0,`1})">

+            <summary>

+            Adds the specified item to the map.

+            </summary>

+            <param name="item">The item to add to the map.</param>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.Clear">

+            <summary>

+            Removes all items from the map.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.System#Collections#Generic#ICollection{System#Collections#Generic#KeyValuePair{TKey,TValue}}#Contains(System.Collections.Generic.KeyValuePair{`0,`1})">

+            <summary>

+            Determines whether map contains an entry equivalent to the given key/value pair.

+            </summary>

+            <param name="item">The key/value pair to find.</param>

+            <returns></returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.System#Collections#Generic#ICollection{System#Collections#Generic#KeyValuePair{TKey,TValue}}#CopyTo(System.Collections.Generic.KeyValuePair{`0,`1}[],System.Int32)">

+            <summary>

+            Copies the key/value pairs in this map to an array.

+            </summary>

+            <param name="array">The array to copy the entries into.</param>

+            <param name="arrayIndex">The index of the array at which to start copying values.</param>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.System#Collections#Generic#ICollection{System#Collections#Generic#KeyValuePair{TKey,TValue}}#Remove(System.Collections.Generic.KeyValuePair{`0,`1})">

+            <summary>

+            Removes the specified key/value pair from the map.

+            </summary>

+            <remarks>Both the key and the value must be found for the entry to be removed.</remarks>

+            <param name="item">The key/value pair to remove.</param>

+            <returns><c>true</c> if the key/value pair was found and removed; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="P:Google.Protobuf.Collections.MapField`2.Count">

+            <summary>

+            Gets the number of elements contained in the map.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Collections.MapField`2.IsReadOnly">

+            <summary>

+            Gets a value indicating whether the map is read-only.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.Equals(System.Object)">

+            <summary>

+            Determines whether the specified <see cref="T:System.Object" />, is equal to this instance.

+            </summary>

+            <param name="other">The <see cref="T:System.Object" /> to compare with this instance.</param>

+            <returns>

+              <c>true</c> if the specified <see cref="T:System.Object" /> is equal to this instance; otherwise, <c>false</c>.

+            </returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.GetHashCode">

+            <summary>

+            Returns a hash code for this instance.

+            </summary>

+            <returns>

+            A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. 

+            </returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.Equals(Google.Protobuf.Collections.MapField{`0,`1})">

+            <summary>

+            Compares this map with another for equality.

+            </summary>

+            <remarks>

+            The order of the key/value pairs in the maps is not deemed significant in this comparison.

+            </remarks>

+            <param name="other">The map to compare this with.</param>

+            <returns><c>true</c> if <paramref name="other"/> refers to an equal map; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.AddEntriesFrom(Google.Protobuf.CodedInputStream,Google.Protobuf.Collections.MapField{`0,`1}.Codec)">

+            <summary>

+            Adds entries to the map from the given stream.

+            </summary>

+            <remarks>

+            It is assumed that the stream is initially positioned after the tag specified by the codec.

+            This method will continue reading entries from the stream until the end is reached, or

+            a different tag is encountered.

+            </remarks>

+            <param name="input">Stream to read from</param>

+            <param name="codec">Codec describing how the key/value pairs are encoded</param>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.WriteTo(Google.Protobuf.CodedOutputStream,Google.Protobuf.Collections.MapField{`0,`1}.Codec)">

+            <summary>

+            Writes the contents of this map to the given coded output stream, using the specified codec

+            to encode each entry.

+            </summary>

+            <param name="output">The output stream to write to.</param>

+            <param name="codec">The codec to use for each entry.</param>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.CalculateSize(Google.Protobuf.Collections.MapField{`0,`1}.Codec)">

+            <summary>

+            Calculates the size of this map based on the given entry codec.

+            </summary>

+            <param name="codec">The codec to use to encode each entry.</param>

+            <returns></returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.ToString">

+            <summary>

+            Returns a string representation of this repeated field, in the same

+            way as it would be represented by the default JSON formatter.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Collections.MapField`2.Codec">

+            <summary>

+            A codec for a specific map field. This contains all the information required to encode and

+            decode the nested messages.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.Codec.#ctor(Google.Protobuf.FieldCodec{`0},Google.Protobuf.FieldCodec{`1},System.UInt32)">

+            <summary>

+            Creates a new entry codec based on a separate key codec and value codec,

+            and the tag to use for each map entry.

+            </summary>

+            <param name="keyCodec">The key codec.</param>

+            <param name="valueCodec">The value codec.</param>

+            <param name="mapTag">The map tag to use to introduce each map entry.</param>

+        </member>

+        <member name="P:Google.Protobuf.Collections.MapField`2.Codec.MapTag">

+            <summary>

+            The tag used in the enclosing message to indicate map entries.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Collections.MapField`2.Codec.MessageAdapter">

+            <summary>

+            A mutable message class, used for parsing and serializing. This

+            delegates the work to a codec, but implements the <see cref="T:Google.Protobuf.IMessage"/> interface

+            for interop with <see cref="T:Google.Protobuf.CodedInputStream"/> and <see cref="T:Google.Protobuf.CodedOutputStream"/>.

+            This is nested inside Codec as it's tightly coupled to the associated codec,

+            and it's simpler if it has direct access to all its fields.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Collections.ProtobufEqualityComparers">

+            <summary>

+            Provides a central place to implement equality comparisons, primarily for bitwise float/double equality.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Collections.ProtobufEqualityComparers.GetEqualityComparer``1">

+            <summary>

+            Returns an equality comparer for <typeparamref name="T"/> suitable for Protobuf equality comparisons.

+            This is usually just the default equality comparer for the type, but floating point numbers are compared

+            bitwise.

+            </summary>

+            <typeparam name="T">The type of equality comparer to return.</typeparam>

+            <returns>The equality comparer.</returns>

+        </member>

+        <member name="P:Google.Protobuf.Collections.ProtobufEqualityComparers.BitwiseDoubleEqualityComparer">

+            <summary>

+            Returns an equality comparer suitable for comparing 64-bit floating point values, by bitwise comparison.

+            (NaN values are considered equal, but only when they have the same representation.)

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Collections.ProtobufEqualityComparers.BitwiseSingleEqualityComparer">

+            <summary>

+            Returns an equality comparer suitable for comparing 32-bit floating point values, by bitwise comparison.

+            (NaN values are considered equal, but only when they have the same representation.)

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Collections.ProtobufEqualityComparers.BitwiseNullableDoubleEqualityComparer">

+            <summary>

+            Returns an equality comparer suitable for comparing nullable 64-bit floating point values, by bitwise comparison.

+            (NaN values are considered equal, but only when they have the same representation.)

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Collections.ProtobufEqualityComparers.BitwiseNullableSingleEqualityComparer">

+            <summary>

+            Returns an equality comparer suitable for comparing nullable 32-bit floating point values, by bitwise comparison.

+            (NaN values are considered equal, but only when they have the same representation.)

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Collections.ReadOnlyDictionary`2">

+            <summary>

+            Read-only wrapper around another dictionary.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Collections.RepeatedField`1">

+            <summary>

+            The contents of a repeated field: essentially, a collection with some extra

+            restrictions (no null values) and capabilities (deep cloning).

+            </summary>

+            <remarks>

+            This implementation does not generally prohibit the use of types which are not

+            supported by Protocol Buffers but nor does it guarantee that all operations will work in such cases.

+            </remarks>

+            <typeparam name="T">The element type of the repeated field.</typeparam>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.Clone">

+            <summary>

+            Creates a deep clone of this repeated field.

+            </summary>

+            <remarks>

+            If the field type is

+            a message type, each element is also cloned; otherwise, it is

+            assumed that the field type is primitive (including string and

+            bytes, both of which are immutable) and so a simple copy is

+            equivalent to a deep clone.

+            </remarks>

+            <returns>A deep clone of this repeated field.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.AddEntriesFrom(Google.Protobuf.CodedInputStream,Google.Protobuf.FieldCodec{`0})">

+            <summary>

+            Adds the entries from the given input stream, decoding them with the specified codec.

+            </summary>

+            <param name="input">The input stream to read from.</param>

+            <param name="codec">The codec to use in order to read each entry.</param>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.CalculateSize(Google.Protobuf.FieldCodec{`0})">

+            <summary>

+            Calculates the size of this collection based on the given codec.

+            </summary>

+            <param name="codec">The codec to use when encoding each field.</param>

+            <returns>The number of bytes that would be written to a <see cref="T:Google.Protobuf.CodedOutputStream"/> by <see cref="M:Google.Protobuf.Collections.RepeatedField`1.WriteTo(Google.Protobuf.CodedOutputStream,Google.Protobuf.FieldCodec{`0})"/>,

+            using the same codec.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.WriteTo(Google.Protobuf.CodedOutputStream,Google.Protobuf.FieldCodec{`0})">

+            <summary>

+            Writes the contents of this collection to the given <see cref="T:Google.Protobuf.CodedOutputStream"/>,

+            encoding each value using the specified codec.

+            </summary>

+            <param name="output">The output stream to write to.</param>

+            <param name="codec">The codec to use when encoding each value.</param>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.Add(`0)">

+            <summary>

+            Adds the specified item to the collection.

+            </summary>

+            <param name="item">The item to add.</param>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.Clear">

+            <summary>

+            Removes all items from the collection.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.Contains(`0)">

+            <summary>

+            Determines whether this collection contains the given item.

+            </summary>

+            <param name="item">The item to find.</param>

+            <returns><c>true</c> if this collection contains the given item; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.CopyTo(`0[],System.Int32)">

+            <summary>

+            Copies this collection to the given array.

+            </summary>

+            <param name="array">The array to copy to.</param>

+            <param name="arrayIndex">The first index of the array to copy to.</param>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.Remove(`0)">

+            <summary>

+            Removes the specified item from the collection

+            </summary>

+            <param name="item">The item to remove.</param>

+            <returns><c>true</c> if the item was found and removed; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="P:Google.Protobuf.Collections.RepeatedField`1.Count">

+            <summary>

+            Gets the number of elements contained in the collection.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Collections.RepeatedField`1.IsReadOnly">

+            <summary>

+            Gets a value indicating whether the collection is read-only.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.AddRange(System.Collections.Generic.IEnumerable{`0})">

+            <summary>

+            Adds all of the specified values into this collection.

+            </summary>

+            <param name="values">The values to add to this collection.</param>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.Add(System.Collections.Generic.IEnumerable{`0})">

+            <summary>

+            Adds all of the specified values into this collection. This method is present to

+            allow repeated fields to be constructed from queries within collection initializers.

+            Within non-collection-initializer code, consider using the equivalent <see cref="M:Google.Protobuf.Collections.RepeatedField`1.AddRange(System.Collections.Generic.IEnumerable{`0})"/>

+            method instead for clarity.

+            </summary>

+            <param name="values">The values to add to this collection.</param>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.GetEnumerator">

+            <summary>

+            Returns an enumerator that iterates through the collection.

+            </summary>

+            <returns>

+            An enumerator that can be used to iterate through the collection.

+            </returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.Equals(System.Object)">

+            <summary>

+            Determines whether the specified <see cref="T:System.Object" />, is equal to this instance.

+            </summary>

+            <param name="obj">The <see cref="T:System.Object" /> to compare with this instance.</param>

+            <returns>

+              <c>true</c> if the specified <see cref="T:System.Object" /> is equal to this instance; otherwise, <c>false</c>.

+            </returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.System#Collections#IEnumerable#GetEnumerator">

+            <summary>

+            Returns an enumerator that iterates through a collection.

+            </summary>

+            <returns>

+            An <see cref="T:System.Collections.IEnumerator" /> object that can be used to iterate through the collection.

+            </returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.GetHashCode">

+            <summary>

+            Returns a hash code for this instance.

+            </summary>

+            <returns>

+            A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. 

+            </returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.Equals(Google.Protobuf.Collections.RepeatedField{`0})">

+            <summary>

+            Compares this repeated field with another for equality.

+            </summary>

+            <param name="other">The repeated field to compare this with.</param>

+            <returns><c>true</c> if <paramref name="other"/> refers to an equal repeated field; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.IndexOf(`0)">

+            <summary>

+            Returns the index of the given item within the collection, or -1 if the item is not

+            present.

+            </summary>

+            <param name="item">The item to find in the collection.</param>

+            <returns>The zero-based index of the item, or -1 if it is not found.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.Insert(System.Int32,`0)">

+            <summary>

+            Inserts the given item at the specified index.

+            </summary>

+            <param name="index">The index at which to insert the item.</param>

+            <param name="item">The item to insert.</param>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.RemoveAt(System.Int32)">

+            <summary>

+            Removes the item at the given index.

+            </summary>

+            <param name="index">The zero-based index of the item to remove.</param>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.ToString">

+            <summary>

+            Returns a string representation of this repeated field, in the same

+            way as it would be represented by the default JSON formatter.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Collections.RepeatedField`1.Item(System.Int32)">

+            <summary>

+            Gets or sets the item at the specified index.

+            </summary>

+            <value>

+            The element at the specified index.

+            </value>

+            <param name="index">The zero-based index of the element to get or set.</param>

+            <returns>The item at the specified index.</returns>

+        </member>

+        <member name="T:Google.Protobuf.Compatibility.PropertyInfoExtensions">

+            <summary>

+            Extension methods for <see cref="T:System.Reflection.PropertyInfo"/>, effectively providing

+            the familiar members from previous desktop framework versions while

+            targeting the newer releases, .NET Core etc.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Compatibility.PropertyInfoExtensions.GetGetMethod(System.Reflection.PropertyInfo)">

+            <summary>

+            Returns the public getter of a property, or null if there is no such getter

+            (either because it's read-only, or the getter isn't public).

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Compatibility.PropertyInfoExtensions.GetSetMethod(System.Reflection.PropertyInfo)">

+            <summary>

+            Returns the public setter of a property, or null if there is no such setter

+            (either because it's write-only, or the setter isn't public).

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Compatibility.TypeExtensions">

+            <summary>

+            Provides extension methods on Type that just proxy to TypeInfo.

+            These are used to support the new type system from .NET 4.5, without

+            having calls to GetTypeInfo all over the place. While the methods here are meant to be

+            broadly compatible with the desktop framework, there are some subtle differences in behaviour - but

+            they're not expected to affect our use cases. While the class is internal, that should be fine: we can

+            evaluate each new use appropriately.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Compatibility.TypeExtensions.IsAssignableFrom(System.Type,System.Type)">

+            <summary>

+            See https://msdn.microsoft.com/en-us/library/system.type.isassignablefrom

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Compatibility.TypeExtensions.GetProperty(System.Type,System.String)">

+            <summary>

+            Returns a representation of the public property associated with the given name in the given type,

+            including inherited properties or null if there is no such public property.

+            Here, "public property" means a property where either the getter, or the setter, or both, is public.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Compatibility.TypeExtensions.GetMethod(System.Type,System.String)">

+            <summary>

+            Returns a representation of the public method associated with the given name in the given type,

+            including inherited methods.

+            </summary>

+            <remarks>

+            This has a few differences compared with Type.GetMethod in the desktop framework. It will throw

+            if there is an ambiguous match even between a private method and a public one, but it *won't* throw

+            if there are two overloads at different levels in the type hierarchy (e.g. class Base declares public void Foo(int) and

+            class Child : Base declares public void Foo(long)).

+            </remarks>

+            <exception cref="T:System.Reflection.AmbiguousMatchException">One type in the hierarchy declared more than one method with the same name</exception>

+        </member>

+        <member name="T:Google.Protobuf.FieldCodec">

+            <summary>

+            Factory methods for <see cref="T:Google.Protobuf.FieldCodec`1"/>.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForString(System.UInt32)">

+            <summary>

+            Retrieves a codec suitable for a string field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForBytes(System.UInt32)">

+            <summary>

+            Retrieves a codec suitable for a bytes field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForBool(System.UInt32)">

+            <summary>

+            Retrieves a codec suitable for a bool field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForInt32(System.UInt32)">

+            <summary>

+            Retrieves a codec suitable for an int32 field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForSInt32(System.UInt32)">

+            <summary>

+            Retrieves a codec suitable for an sint32 field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForFixed32(System.UInt32)">

+            <summary>

+            Retrieves a codec suitable for a fixed32 field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForSFixed32(System.UInt32)">

+            <summary>

+            Retrieves a codec suitable for an sfixed32 field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForUInt32(System.UInt32)">

+            <summary>

+            Retrieves a codec suitable for a uint32 field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForInt64(System.UInt32)">

+            <summary>

+            Retrieves a codec suitable for an int64 field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForSInt64(System.UInt32)">

+            <summary>

+            Retrieves a codec suitable for an sint64 field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForFixed64(System.UInt32)">

+            <summary>

+            Retrieves a codec suitable for a fixed64 field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForSFixed64(System.UInt32)">

+            <summary>

+            Retrieves a codec suitable for an sfixed64 field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForUInt64(System.UInt32)">

+            <summary>

+            Retrieves a codec suitable for a uint64 field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForFloat(System.UInt32)">

+            <summary>

+            Retrieves a codec suitable for a float field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForDouble(System.UInt32)">

+            <summary>

+            Retrieves a codec suitable for a double field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForEnum``1(System.UInt32,System.Func{``0,System.Int32},System.Func{System.Int32,``0})">

+            <summary>

+            Retrieves a codec suitable for an enum field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <param name="toInt32">A conversion function from <see cref="T:System.Int32"/> to the enum type.</param>

+            <param name="fromInt32">A conversion function from the enum type to <see cref="T:System.Int32"/>.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForMessage``1(System.UInt32,Google.Protobuf.MessageParser{``0})">

+            <summary>

+            Retrieves a codec suitable for a message field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <param name="parser">A parser to use for the message type.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForClassWrapper``1(System.UInt32)">

+            <summary>

+            Creates a codec for a wrapper type of a class - which must be string or ByteString.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForStructWrapper``1(System.UInt32)">

+            <summary>

+            Creates a codec for a wrapper type of a struct - which must be Int32, Int64, UInt32, UInt64,

+            Bool, Single or Double.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.FieldCodec.WrapperCodecs">

+            <summary>

+            Helper code to create codecs for wrapper types.

+            </summary>

+            <remarks>

+            Somewhat ugly with all the static methods, but the conversions involved to/from nullable types make it

+            slightly tricky to improve. So long as we keep the public API (ForClassWrapper, ForStructWrapper) in place,

+            we can refactor later if we come up with something cleaner.

+            </remarks>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.WrapperCodecs.GetCodec``1">

+            <summary>

+            Returns a field codec which effectively wraps a value of type T in a message.

+            

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.FieldCodec`1">

+            <summary>

+            <para>

+            An encode/decode pair for a single field. This effectively encapsulates

+            all the information needed to read or write the field value from/to a coded

+            stream.

+            </para>

+            <para>

+            This class is public and has to be as it is used by generated code, but its public

+            API is very limited - just what the generated code needs to call directly.

+            </para>

+            </summary>

+            <remarks>

+            This never writes default values to the stream, and does not address "packedness"

+            in repeated fields itself, other than to know whether or not the field *should* be packed.

+            </remarks>

+        </member>

+        <member name="P:Google.Protobuf.FieldCodec`1.ValueWriter">

+            <summary>

+            Returns a delegate to write a value (unconditionally) to a coded output stream.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.FieldCodec`1.ValueSizeCalculator">

+            <summary>

+            Returns the size calculator for just a value.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.FieldCodec`1.ValueReader">

+            <summary>

+            Returns a delegate to read a value from a coded input stream. It is assumed that

+            the stream is already positioned on the appropriate tag.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.FieldCodec`1.FixedSize">

+            <summary>

+            Returns the fixed size for an entry, or 0 if sizes vary.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.FieldCodec`1.Tag">

+            <summary>

+            Gets the tag of the codec.

+            </summary>

+            <value>

+            The tag of the codec.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.FieldCodec`1.DefaultValue">

+            <summary>

+            Default value for this codec. Usually the same for every instance of the same type, but

+            for string/ByteString wrapper fields the codec's default value is null, whereas for

+            other string/ByteString fields it's "" or ByteString.Empty.

+            </summary>

+            <value>

+            The default value of the codec's type.

+            </value>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec`1.WriteTagAndValue(Google.Protobuf.CodedOutputStream,`0)">

+            <summary>

+            Write a tag and the given value, *if* the value is not the default.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec`1.Read(Google.Protobuf.CodedInputStream)">

+            <summary>

+            Reads a value of the codec type from the given <see cref="T:Google.Protobuf.CodedInputStream"/>.

+            </summary>

+            <param name="input">The input stream to read from.</param>

+            <returns>The value read from the stream.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec`1.CalculateSizeWithTag(`0)">

+            <summary>

+            Calculates the size required to write the given value, with a tag,

+            if the value is not the default.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.FrameworkPortability">

+            <summary>

+            Class containing helpful workarounds for various platform compatibility

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.ICustomDiagnosticMessage">

+            <summary>

+            A message type that has a custom string format for diagnostic purposes.

+            </summary>

+            <remarks>

+            <para>

+            Calling <see cref="M:System.Object.ToString"/> on a generated message type normally

+            returns the JSON representation. If a message type implements this interface,

+            then the <see cref="M:Google.Protobuf.ICustomDiagnosticMessage.ToDiagnosticString"/> method will be called instead of the regular

+            JSON formatting code, but only when <c>ToString()</c> is called either on the message itself

+            or on another message which contains it. This does not affect the normal JSON formatting of

+            the message.

+            </para>

+            <para>

+            For example, if you create a proto message representing a GUID, the internal

+            representation may be a <c>bytes</c> field or four <c>fixed32</c> fields. However, when debugging

+            it may be more convenient to see a result in the same format as <see cref="T:System.Guid"/> provides.

+            </para>

+            <para>This interface extends <see cref="T:Google.Protobuf.IMessage"/> to avoid it accidentally being implemented

+            on types other than messages, where it would not be used by anything in the framework.</para>

+            </remarks>

+        </member>

+        <member name="M:Google.Protobuf.ICustomDiagnosticMessage.ToDiagnosticString">

+            <summary>

+            Returns a string representation of this object, for diagnostic purposes.

+            </summary>

+            <remarks>

+            This method is called when a message is formatted as part of a <see cref="M:System.Object.ToString"/>

+            call. It does not affect the JSON representation used by <see cref="T:Google.Protobuf.JsonFormatter"/> other than

+            in calls to <see cref="M:Google.Protobuf.JsonFormatter.ToDiagnosticString(Google.Protobuf.IMessage)"/>. While it is recommended

+            that the result is valid JSON, this is never assumed by the Protobuf library.

+            </remarks>

+            <returns>A string representation of this object, for diagnostic purposes.</returns>

+        </member>

+        <member name="T:Google.Protobuf.IDeepCloneable`1">

+            <summary>

+            Generic interface for a deeply cloneable type.

+            </summary>

+            <remarks>

+            <para>

+            All generated messages implement this interface, but so do some non-message types.

+            Additionally, due to the type constraint on <c>T</c> in <see cref="T:Google.Protobuf.IMessage`1"/>,

+            it is simpler to keep this as a separate interface.

+            </para>

+            </remarks>

+            <typeparam name="T">The type itself, returned by the <see cref="M:Google.Protobuf.IDeepCloneable`1.Clone"/> method.</typeparam>

+        </member>

+        <member name="M:Google.Protobuf.IDeepCloneable`1.Clone">

+            <summary>

+            Creates a deep clone of this object.

+            </summary>

+            <returns>A deep clone of this object.</returns>

+        </member>

+        <member name="T:Google.Protobuf.IMessage">

+            <summary>

+            Interface for a Protocol Buffers message, supporting

+            basic operations required for serialization.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.IMessage.MergeFrom(Google.Protobuf.CodedInputStream)">

+            <summary>

+            Merges the data from the specified coded input stream with the current message.

+            </summary>

+            <remarks>See the user guide for precise merge semantics.</remarks>

+            <param name="input"></param>

+        </member>

+        <member name="M:Google.Protobuf.IMessage.WriteTo(Google.Protobuf.CodedOutputStream)">

+            <summary>

+            Writes the data to the given coded output stream.

+            </summary>

+            <param name="output">Coded output stream to write the data to. Must not be null.</param>

+        </member>

+        <member name="M:Google.Protobuf.IMessage.CalculateSize">

+            <summary>

+            Calculates the size of this message in Protocol Buffer wire format, in bytes.

+            </summary>

+            <returns>The number of bytes required to write this message

+            to a coded output stream.</returns>

+        </member>

+        <member name="P:Google.Protobuf.IMessage.Descriptor">

+            <summary>

+            Descriptor for this message. All instances are expected to return the same descriptor,

+            and for generated types this will be an explicitly-implemented member, returning the

+            same value as the static property declared on the type.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.IMessage`1">

+            <summary>

+            Generic interface for a Protocol Buffers message,

+            where the type parameter is expected to be the same type as

+            the implementation class.

+            </summary>

+            <typeparam name="T">The message type.</typeparam>

+        </member>

+        <member name="M:Google.Protobuf.IMessage`1.MergeFrom(`0)">

+            <summary>

+            Merges the given message into this one.

+            </summary>

+            <remarks>See the user guide for precise merge semantics.</remarks>

+            <param name="message">The message to merge with this one. Must not be null.</param>

+        </member>

+        <member name="T:Google.Protobuf.InvalidJsonException">

+            <summary>

+            Thrown when an attempt is made to parse invalid JSON, e.g. using

+            a non-string property key, or including a redundant comma. Parsing a protocol buffer

+            message represented in JSON using <see cref="T:Google.Protobuf.JsonParser"/> can throw both this

+            exception and <see cref="T:Google.Protobuf.InvalidProtocolBufferException"/> depending on the situation. This

+            exception is only thrown for "pure JSON" errors, whereas <c>InvalidProtocolBufferException</c>

+            is thrown when the JSON may be valid in and of itself, but cannot be parsed as a protocol buffer

+            message.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.InvalidProtocolBufferException">

+            <summary>

+            Thrown when a protocol message being parsed is invalid in some way,

+            e.g. it contains a malformed varint or a negative byte length.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.InvalidProtocolBufferException.InvalidTag">

+            <summary>

+            Creates an exception for an error condition of an invalid tag being encountered.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.JsonFormatter">

+            <summary>

+            Reflection-based converter from messages to JSON.

+            </summary>

+            <remarks>

+            <para>

+            Instances of this class are thread-safe, with no mutable state.

+            </para>

+            <para>

+            This is a simple start to get JSON formatting working. As it's reflection-based,

+            it's not as quick as baking calls into generated messages - but is a simpler implementation.

+            (This code is generally not heavily optimized.)

+            </para>

+            </remarks>

+        </member>

+        <member name="P:Google.Protobuf.JsonFormatter.Default">

+            <summary>

+            Returns a formatter using the default settings.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.JsonFormatter.CommonRepresentations">

+            <summary>

+            The JSON representation of the first 160 characters of Unicode.

+            Empty strings are replaced by the static constructor.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.JsonFormatter.#ctor(Google.Protobuf.JsonFormatter.Settings)">

+            <summary>

+            Creates a new formatted with the given settings.

+            </summary>

+            <param name="settings">The settings.</param>

+        </member>

+        <member name="M:Google.Protobuf.JsonFormatter.Format(Google.Protobuf.IMessage)">

+            <summary>

+            Formats the specified message as JSON.

+            </summary>

+            <param name="message">The message to format.</param>

+            <returns>The formatted message.</returns>

+        </member>

+        <member name="M:Google.Protobuf.JsonFormatter.Format(Google.Protobuf.IMessage,System.IO.TextWriter)">

+            <summary>

+            Formats the specified message as JSON.

+            </summary>

+            <param name="message">The message to format.</param>

+            <param name="writer">The TextWriter to write the formatted message to.</param>

+            <returns>The formatted message.</returns>

+        </member>

+        <member name="M:Google.Protobuf.JsonFormatter.ToDiagnosticString(Google.Protobuf.IMessage)">

+            <summary>

+            Converts a message to JSON for diagnostic purposes with no extra context.

+            </summary>

+            <remarks>

+            <para>

+            This differs from calling <see cref="M:Google.Protobuf.JsonFormatter.Format(Google.Protobuf.IMessage)"/> on the default JSON

+            formatter in its handling of <see cref="T:Google.Protobuf.WellKnownTypes.Any"/>. As no type registry is available

+            in <see cref="M:System.Object.ToString"/> calls, the normal way of resolving the type of

+            an <c>Any</c> message cannot be applied. Instead, a JSON property named <c>@value</c>

+            is included with the base64 data from the <see cref="P:Google.Protobuf.WellKnownTypes.Any.Value"/> property of the message.

+            </para>

+            <para>The value returned by this method is only designed to be used for diagnostic

+            purposes. It may not be parsable by <see cref="T:Google.Protobuf.JsonParser"/>, and may not be parsable

+            by other Protocol Buffer implementations.</para>

+            </remarks>

+            <param name="message">The message to format for diagnostic purposes.</param>

+            <returns>The diagnostic-only JSON representation of the message</returns>

+        </member>

+        <member name="M:Google.Protobuf.JsonFormatter.WriteValue(System.IO.TextWriter,System.Object)">

+            <summary>

+            Writes a single value to the given writer as JSON. Only types understood by

+            Protocol Buffers can be written in this way. This method is only exposed for

+            advanced use cases; most users should be using <see cref="M:Google.Protobuf.JsonFormatter.Format(Google.Protobuf.IMessage)"/>

+            or <see cref="M:Google.Protobuf.JsonFormatter.Format(Google.Protobuf.IMessage,System.IO.TextWriter)"/>.

+            </summary>

+            <param name="writer">The writer to write the value to. Must not be null.</param>

+            <param name="value">The value to write. May be null.</param>

+        </member>

+        <member name="M:Google.Protobuf.JsonFormatter.WriteWellKnownTypeValue(System.IO.TextWriter,Google.Protobuf.Reflection.MessageDescriptor,System.Object)">

+            <summary>

+            Central interception point for well-known type formatting. Any well-known types which

+            don't need special handling can fall back to WriteMessage. We avoid assuming that the

+            values are using the embedded well-known types, in order to allow for dynamic messages

+            in the future.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.JsonFormatter.WriteString(System.IO.TextWriter,System.String)">

+            <summary>

+            Writes a string (including leading and trailing double quotes) to a builder, escaping as required.

+            </summary>

+            <remarks>

+            Other than surrogate pair handling, this code is mostly taken from src/google/protobuf/util/internal/json_escaping.cc.

+            </remarks>

+        </member>

+        <member name="T:Google.Protobuf.JsonFormatter.Settings">

+            <summary>

+            Settings controlling JSON formatting.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.JsonFormatter.Settings.Default">

+            <summary>

+            Default settings, as used by <see cref="P:Google.Protobuf.JsonFormatter.Default"/>

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.JsonFormatter.Settings.FormatDefaultValues">

+            <summary>

+            Whether fields whose values are the default for the field type (e.g. 0 for integers)

+            should be formatted (true) or omitted (false).

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.JsonFormatter.Settings.TypeRegistry">

+            <summary>

+            The type registry used to format <see cref="T:Google.Protobuf.WellKnownTypes.Any"/> messages.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.JsonFormatter.Settings.FormatEnumsAsIntegers">

+            <summary>

+            Whether to format enums as ints. Defaults to false.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.JsonFormatter.Settings.#ctor(System.Boolean)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.JsonFormatter.Settings"/> object with the specified formatting of default values

+            and an empty type registry.

+            </summary>

+            <param name="formatDefaultValues"><c>true</c> if default values (0, empty strings etc) should be formatted; <c>false</c> otherwise.</param>

+        </member>

+        <member name="M:Google.Protobuf.JsonFormatter.Settings.#ctor(System.Boolean,Google.Protobuf.Reflection.TypeRegistry)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.JsonFormatter.Settings"/> object with the specified formatting of default values

+            and type registry.

+            </summary>

+            <param name="formatDefaultValues"><c>true</c> if default values (0, empty strings etc) should be formatted; <c>false</c> otherwise.</param>

+            <param name="typeRegistry">The <see cref="P:Google.Protobuf.JsonFormatter.Settings.TypeRegistry"/> to use when formatting <see cref="T:Google.Protobuf.WellKnownTypes.Any"/> messages.</param>

+        </member>

+        <member name="M:Google.Protobuf.JsonFormatter.Settings.#ctor(System.Boolean,Google.Protobuf.Reflection.TypeRegistry,System.Boolean)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.JsonFormatter.Settings"/> object with the specified parameters.

+            </summary>

+            <param name="formatDefaultValues"><c>true</c> if default values (0, empty strings etc) should be formatted; <c>false</c> otherwise.</param>

+            <param name="typeRegistry">The <see cref="P:Google.Protobuf.JsonFormatter.Settings.TypeRegistry"/> to use when formatting <see cref="T:Google.Protobuf.WellKnownTypes.Any"/> messages. TypeRegistry.Empty will be used if it is null.</param>

+            <param name="formatEnumsAsIntegers"><c>true</c> to format the enums as integers; <c>false</c> to format enums as enum names.</param>

+        </member>

+        <member name="M:Google.Protobuf.JsonFormatter.Settings.WithFormatDefaultValues(System.Boolean)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.JsonFormatter.Settings"/> object with the specified formatting of default values and the current settings.

+            </summary>

+            <param name="formatDefaultValues"><c>true</c> if default values (0, empty strings etc) should be formatted; <c>false</c> otherwise.</param>

+        </member>

+        <member name="M:Google.Protobuf.JsonFormatter.Settings.WithTypeRegistry(Google.Protobuf.Reflection.TypeRegistry)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.JsonFormatter.Settings"/> object with the specified type registry and the current settings.

+            </summary>

+            <param name="typeRegistry">The <see cref="P:Google.Protobuf.JsonFormatter.Settings.TypeRegistry"/> to use when formatting <see cref="T:Google.Protobuf.WellKnownTypes.Any"/> messages.</param>

+        </member>

+        <member name="M:Google.Protobuf.JsonFormatter.Settings.WithFormatEnumsAsIntegers(System.Boolean)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.JsonFormatter.Settings"/> object with the specified enums formatting option and the current settings.

+            </summary>

+            <param name="formatEnumsAsIntegers"><c>true</c> to format the enums as integers; <c>false</c> to format enums as enum names.</param>

+        </member>

+        <member name="T:Google.Protobuf.JsonParser">

+            <summary>

+            Reflection-based converter from JSON to messages.

+            </summary>

+            <remarks>

+            <para>

+            Instances of this class are thread-safe, with no mutable state.

+            </para>

+            <para>

+            This is a simple start to get JSON parsing working. As it's reflection-based,

+            it's not as quick as baking calls into generated messages - but is a simpler implementation.

+            (This code is generally not heavily optimized.)

+            </para>

+            </remarks>

+        </member>

+        <member name="P:Google.Protobuf.JsonParser.Default">

+            <summary>

+            Returns a formatter using the default settings.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.JsonParser.#ctor(Google.Protobuf.JsonParser.Settings)">

+            <summary>

+            Creates a new formatted with the given settings.

+            </summary>

+            <param name="settings">The settings.</param>

+        </member>

+        <member name="M:Google.Protobuf.JsonParser.Merge(Google.Protobuf.IMessage,System.String)">

+            <summary>

+            Parses <paramref name="json"/> and merges the information into the given message.

+            </summary>

+            <param name="message">The message to merge the JSON information into.</param>

+            <param name="json">The JSON to parse.</param>

+        </member>

+        <member name="M:Google.Protobuf.JsonParser.Merge(Google.Protobuf.IMessage,System.IO.TextReader)">

+            <summary>

+            Parses JSON read from <paramref name="jsonReader"/> and merges the information into the given message.

+            </summary>

+            <param name="message">The message to merge the JSON information into.</param>

+            <param name="jsonReader">Reader providing the JSON to parse.</param>

+        </member>

+        <member name="M:Google.Protobuf.JsonParser.Merge(Google.Protobuf.IMessage,Google.Protobuf.JsonTokenizer)">

+            <summary>

+            Merges the given message using data from the given tokenizer. In most cases, the next

+            token should be a "start object" token, but wrapper types and nullity can invalidate

+            that assumption. This is implemented as an LL(1) recursive descent parser over the stream

+            of tokens provided by the tokenizer. This token stream is assumed to be valid JSON, with the

+            tokenizer performing that validation - but not every token stream is valid "protobuf JSON".

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.JsonParser.Parse``1(System.String)">

+            <summary>

+            Parses <paramref name="json"/> into a new message.

+            </summary>

+            <typeparam name="T">The type of message to create.</typeparam>

+            <param name="json">The JSON to parse.</param>

+            <exception cref="T:Google.Protobuf.InvalidJsonException">The JSON does not comply with RFC 7159</exception>

+            <exception cref="T:Google.Protobuf.InvalidProtocolBufferException">The JSON does not represent a Protocol Buffers message correctly</exception>

+        </member>

+        <member name="M:Google.Protobuf.JsonParser.Parse``1(System.IO.TextReader)">

+            <summary>

+            Parses JSON read from <paramref name="jsonReader"/> into a new message.

+            </summary>

+            <typeparam name="T">The type of message to create.</typeparam>

+            <param name="jsonReader">Reader providing the JSON to parse.</param>

+            <exception cref="T:Google.Protobuf.InvalidJsonException">The JSON does not comply with RFC 7159</exception>

+            <exception cref="T:Google.Protobuf.InvalidProtocolBufferException">The JSON does not represent a Protocol Buffers message correctly</exception>

+        </member>

+        <member name="M:Google.Protobuf.JsonParser.Parse(System.String,Google.Protobuf.Reflection.MessageDescriptor)">

+            <summary>

+            Parses <paramref name="json"/> into a new message.

+            </summary>

+            <param name="json">The JSON to parse.</param>

+            <param name="descriptor">Descriptor of message type to parse.</param>

+            <exception cref="T:Google.Protobuf.InvalidJsonException">The JSON does not comply with RFC 7159</exception>

+            <exception cref="T:Google.Protobuf.InvalidProtocolBufferException">The JSON does not represent a Protocol Buffers message correctly</exception>

+        </member>

+        <member name="M:Google.Protobuf.JsonParser.Parse(System.IO.TextReader,Google.Protobuf.Reflection.MessageDescriptor)">

+            <summary>

+            Parses JSON read from <paramref name="jsonReader"/> into a new message.

+            </summary>

+            <param name="jsonReader">Reader providing the JSON to parse.</param>

+            <param name="descriptor">Descriptor of message type to parse.</param>

+            <exception cref="T:Google.Protobuf.InvalidJsonException">The JSON does not comply with RFC 7159</exception>

+            <exception cref="T:Google.Protobuf.InvalidProtocolBufferException">The JSON does not represent a Protocol Buffers message correctly</exception>

+        </member>

+        <member name="M:Google.Protobuf.JsonParser.NewMessageForField(Google.Protobuf.Reflection.FieldDescriptor)">

+            <summary>

+            Creates a new instance of the message type for the given field.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.JsonParser.ValidateInfinityAndNan(System.String,System.Boolean,System.Boolean,System.Boolean)">

+            <summary>

+            Checks that any infinite/NaN values originated from the correct text.

+            This corrects the lenient whitespace handling of double.Parse/float.Parse, as well as the

+            way that Mono parses out-of-range values as infinity.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.JsonParser.Settings">

+            <summary>

+            Settings controlling JSON parsing.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.JsonParser.Settings.Default">

+            <summary>

+            Default settings, as used by <see cref="P:Google.Protobuf.JsonParser.Default"/>. This has the same default

+            recursion limit as <see cref="T:Google.Protobuf.CodedInputStream"/>, and an empty type registry.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.JsonParser.Settings.RecursionLimit">

+            <summary>

+            The maximum depth of messages to parse. Note that this limit only applies to parsing

+            messages, not collections - so a message within a collection within a message only counts as

+            depth 2, not 3.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.JsonParser.Settings.TypeRegistry">

+            <summary>

+            The type registry used to parse <see cref="T:Google.Protobuf.WellKnownTypes.Any"/> messages.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.JsonParser.Settings.IgnoreUnknownFields">

+            <summary>

+            Whether the parser should ignore unknown fields (<c>true</c>) or throw an exception when

+            they are encountered (<c>false</c>).

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.JsonParser.Settings.#ctor(System.Int32)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.JsonParser.Settings"/> object with the specified recursion limit.

+            </summary>

+            <param name="recursionLimit">The maximum depth of messages to parse</param>

+        </member>

+        <member name="M:Google.Protobuf.JsonParser.Settings.#ctor(System.Int32,Google.Protobuf.Reflection.TypeRegistry)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.JsonParser.Settings"/> object with the specified recursion limit and type registry.

+            </summary>

+            <param name="recursionLimit">The maximum depth of messages to parse</param>

+            <param name="typeRegistry">The type registry used to parse <see cref="T:Google.Protobuf.WellKnownTypes.Any"/> messages</param>

+        </member>

+        <member name="M:Google.Protobuf.JsonParser.Settings.WithIgnoreUnknownFields(System.Boolean)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.JsonParser.Settings"/> object set to either ignore unknown fields, or throw an exception

+            when unknown fields are encountered.

+            </summary>

+            <param name="ignoreUnknownFields"><c>true</c> if unknown fields should be ignored when parsing; <c>false</c> to throw an exception.</param>

+        </member>

+        <member name="M:Google.Protobuf.JsonParser.Settings.WithRecursionLimit(System.Int32)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.JsonParser.Settings"/> object based on this one, but with the specified recursion limit.

+            </summary>

+            <param name="recursionLimit">The new recursion limit.</param>

+        </member>

+        <member name="M:Google.Protobuf.JsonParser.Settings.WithTypeRegistry(Google.Protobuf.Reflection.TypeRegistry)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.JsonParser.Settings"/> object based on this one, but with the specified type registry.

+            </summary>

+            <param name="typeRegistry">The new type registry. Must not be null.</param>

+        </member>

+        <member name="T:Google.Protobuf.JsonTokenizer">

+            <summary>

+            Simple but strict JSON tokenizer, rigidly following RFC 7159.

+            </summary>

+            <remarks>

+            <para>

+            This tokenizer is stateful, and only returns "useful" tokens - names, values etc.

+            It does not create tokens for the separator between names and values, or for the comma

+            between values. It validates the token stream as it goes - so callers can assume that the

+            tokens it produces are appropriate. For example, it would never produce "start object, end array."

+            </para>

+            <para>Implementation details: the base class handles single token push-back and </para>

+            <para>Not thread-safe.</para>

+            </remarks>

+        </member>

+        <member name="M:Google.Protobuf.JsonTokenizer.FromTextReader(System.IO.TextReader)">

+            <summary>

+             Creates a tokenizer that reads from the given text reader.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.JsonTokenizer.FromReplayedTokens(System.Collections.Generic.IList{Google.Protobuf.JsonToken},Google.Protobuf.JsonTokenizer)">

+            <summary>

+            Creates a tokenizer that first replays the given list of tokens, then continues reading

+            from another tokenizer. Note that if the returned tokenizer is "pushed back", that does not push back

+            on the continuation tokenizer, or vice versa. Care should be taken when using this method - it was

+            created for the sake of Any parsing.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.JsonTokenizer.ObjectDepth">

+            <summary>

+            Returns the depth of the stack, purely in objects (not collections).

+            Informally, this is the number of remaining unclosed '{' characters we have.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.JsonTokenizer.Next">

+            <summary>

+            Returns the next JSON token in the stream. An EndDocument token is returned to indicate the end of the stream,

+            after which point <c>Next()</c> should not be called again.

+            </summary>

+            <remarks>This implementation provides single-token buffering, and calls <see cref="M:Google.Protobuf.JsonTokenizer.NextImpl"/> if there is no buffered token.</remarks>

+            <returns>The next token in the stream. This is never null.</returns>

+            <exception cref="T:System.InvalidOperationException">This method is called after an EndDocument token has been returned</exception>

+            <exception cref="T:Google.Protobuf.InvalidJsonException">The input text does not comply with RFC 7159</exception>

+        </member>

+        <member name="M:Google.Protobuf.JsonTokenizer.NextImpl">

+            <summary>

+            Returns the next JSON token in the stream, when requested by the base class. (The <see cref="M:Google.Protobuf.JsonTokenizer.Next"/> method delegates

+            to this if it doesn't have a buffered token.)

+            </summary>

+            <exception cref="T:System.InvalidOperationException">This method is called after an EndDocument token has been returned</exception>

+            <exception cref="T:Google.Protobuf.InvalidJsonException">The input text does not comply with RFC 7159</exception>

+        </member>

+        <member name="M:Google.Protobuf.JsonTokenizer.SkipValue">

+            <summary>

+            Skips the value we're about to read. This must only be called immediately after reading a property name.

+            If the value is an object or an array, the complete object/array is skipped.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.JsonTokenizer.JsonReplayTokenizer">

+            <summary>

+            Tokenizer which first exhausts a list of tokens, then consults another tokenizer.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.JsonTokenizer.JsonTextTokenizer">

+            <summary>

+            Tokenizer which does all the *real* work of parsing JSON.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.NextImpl">

+            <remarks>

+            This method essentially just loops through characters skipping whitespace, validating and

+            changing state (e.g. from ObjectBeforeColon to ObjectAfterColon)

+            until it reaches something which will be a genuine token (e.g. a start object, or a value) at which point

+            it returns the token. Although the method is large, it would be relatively hard to break down further... most

+            of it is the large switch statement, which sometimes returns and sometimes doesn't.

+            </remarks>

+        </member>

+        <member name="M:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.ReadString">

+            <summary>

+            Reads a string token. It is assumed that the opening " has already been read.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.ReadEscapedCharacter">

+            <summary>

+            Reads an escaped character. It is assumed that the leading backslash has already been read.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.ReadUnicodeEscape">

+            <summary>

+            Reads an escaped Unicode 4-nybble hex sequence. It is assumed that the leading \u has already been read.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.ConsumeLiteral(System.String)">

+            <summary>

+            Consumes a text-only literal, throwing an exception if the read text doesn't match it.

+            It is assumed that the first letter of the literal has already been read.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.ValidateAndModifyStateForValue(System.String)">

+            <summary>

+            Validates that we're in a valid state to read a value (using the given error prefix if necessary)

+            and changes the state to the appropriate one, e.g. ObjectAfterColon to ObjectAfterProperty.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.PopContainer">

+            <summary>

+            Pops the top-most container, and sets the state to the appropriate one for the end of a value

+            in the parent container.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.State">

+            <summary>

+            Possible states of the tokenizer.

+            </summary>

+            <remarks>

+            <para>This is a flags enum purely so we can simply and efficiently represent a set of valid states

+            for checking.</para>

+            <para>

+            Each is documented with an example,

+            where ^ represents the current position within the text stream. The examples all use string values,

+            but could be any value, including nested objects/arrays.

+            The complete state of the tokenizer also includes a stack to indicate the contexts (arrays/objects).

+            Any additional notional state of "AfterValue" indicates that a value has been completed, at which 

+            point there's an immediate transition to ExpectedEndOfDocument,  ObjectAfterProperty or ArrayAfterValue.

+            </para>

+            <para>

+            These states were derived manually by reading RFC 7159 carefully.

+            </para>

+            </remarks>

+        </member>

+        <member name="F:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.State.StartOfDocument">

+            <summary>

+            ^ { "foo": "bar" }

+            Before the value in a document. Next states: ObjectStart, ArrayStart, "AfterValue"

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.State.ExpectedEndOfDocument">

+            <summary>

+            { "foo": "bar" } ^

+            After the value in a document. Next states: ReaderExhausted

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.State.ReaderExhausted">

+            <summary>

+            { "foo": "bar" } ^ (and already read to the end of the reader)

+            Terminal state.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.State.ObjectStart">

+            <summary>

+            { ^ "foo": "bar" }

+            Before the *first* property in an object.

+            Next states:

+            "AfterValue" (empty object)

+            ObjectBeforeColon (read a name)

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.State.ObjectBeforeColon">

+            <summary>

+            { "foo" ^ : "bar", "x": "y" }

+            Next state: ObjectAfterColon

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.State.ObjectAfterColon">

+            <summary>

+            { "foo" : ^ "bar", "x": "y" }

+            Before any property other than the first in an object.

+            (Equivalently: after any property in an object) 

+            Next states:

+            "AfterValue" (value is simple)

+            ObjectStart (value is object)

+            ArrayStart (value is array)

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.State.ObjectAfterProperty">

+            <summary>

+            { "foo" : "bar" ^ , "x" : "y" }

+            At the end of a property, so expecting either a comma or end-of-object

+            Next states: ObjectAfterComma or "AfterValue"

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.State.ObjectAfterComma">

+            <summary>

+            { "foo":"bar", ^ "x":"y" }

+            Read the comma after the previous property, so expecting another property.

+            This is like ObjectStart, but closing brace isn't valid here

+            Next state: ObjectBeforeColon.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.State.ArrayStart">

+            <summary>

+            [ ^ "foo", "bar" ]

+            Before the *first* value in an array.

+            Next states:

+            "AfterValue" (read a value)

+            "AfterValue" (end of array; will pop stack)

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.State.ArrayAfterValue">

+            <summary>

+            [ "foo" ^ , "bar" ]

+            After any value in an array, so expecting either a comma or end-of-array

+            Next states: ArrayAfterComma or "AfterValue"

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.State.ArrayAfterComma">

+            <summary>

+            [ "foo", ^ "bar" ]

+            After a comma in an array, so there *must* be another value (simple or complex).

+            Next states: "AfterValue" (simple value), StartObject, StartArray

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.PushBackReader">

+            <summary>

+            Wrapper around a text reader allowing small amounts of buffering and location handling.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.PushBackReader.nextChar">

+            <summary>

+            The buffered next character, if we have one.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.PushBackReader.Read">

+            <summary>

+            Returns the next character in the stream, or null if we have reached the end.

+            </summary>

+            <returns></returns>

+        </member>

+        <member name="M:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.PushBackReader.CreateException(System.String)">

+            <summary>

+            Creates a new exception appropriate for the current state of the reader.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.LimitedInputStream">

+            <summary>

+            Stream implementation which proxies another stream, only allowing a certain amount

+            of data to be read. Note that this is only used to read delimited streams, so it

+            doesn't attempt to implement everything.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.MessageExtensions">

+            <summary>

+            Extension methods on <see cref="T:Google.Protobuf.IMessage"/> and <see cref="T:Google.Protobuf.IMessage`1"/>.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.MessageExtensions.MergeFrom(Google.Protobuf.IMessage,System.Byte[])">

+            <summary>

+            Merges data from the given byte array into an existing message.

+            </summary>

+            <param name="message">The message to merge the data into.</param>

+            <param name="data">The data to merge, which must be protobuf-encoded binary data.</param>

+        </member>

+        <member name="M:Google.Protobuf.MessageExtensions.MergeFrom(Google.Protobuf.IMessage,System.Byte[],System.Int32,System.Int32)">

+            <summary>

+            Merges data from the given byte array slice into an existing message.

+            </summary>

+            <param name="message">The message to merge the data into.</param>

+            <param name="data">The data containing the slice to merge, which must be protobuf-encoded binary data.</param>

+            <param name="offset">The offset of the slice to merge.</param>

+            <param name="length">The length of the slice to merge.</param>

+        </member>

+        <member name="M:Google.Protobuf.MessageExtensions.MergeFrom(Google.Protobuf.IMessage,Google.Protobuf.ByteString)">

+            <summary>

+            Merges data from the given byte string into an existing message.

+            </summary>

+            <param name="message">The message to merge the data into.</param>

+            <param name="data">The data to merge, which must be protobuf-encoded binary data.</param>

+        </member>

+        <member name="M:Google.Protobuf.MessageExtensions.MergeFrom(Google.Protobuf.IMessage,System.IO.Stream)">

+            <summary>

+            Merges data from the given stream into an existing message.

+            </summary>

+            <param name="message">The message to merge the data into.</param>

+            <param name="input">Stream containing the data to merge, which must be protobuf-encoded binary data.</param>

+        </member>

+        <member name="M:Google.Protobuf.MessageExtensions.MergeDelimitedFrom(Google.Protobuf.IMessage,System.IO.Stream)">

+            <summary>

+            Merges length-delimited data from the given stream into an existing message.

+            </summary>

+            <remarks>

+            The stream is expected to contain a length and then the data. Only the amount of data

+            specified by the length will be consumed.

+            </remarks>

+            <param name="message">The message to merge the data into.</param>

+            <param name="input">Stream containing the data to merge, which must be protobuf-encoded binary data.</param>

+        </member>

+        <member name="M:Google.Protobuf.MessageExtensions.ToByteArray(Google.Protobuf.IMessage)">

+            <summary>

+            Converts the given message into a byte array in protobuf encoding.

+            </summary>

+            <param name="message">The message to convert.</param>

+            <returns>The message data as a byte array.</returns>

+        </member>

+        <member name="M:Google.Protobuf.MessageExtensions.WriteTo(Google.Protobuf.IMessage,System.IO.Stream)">

+            <summary>

+            Writes the given message data to the given stream in protobuf encoding.

+            </summary>

+            <param name="message">The message to write to the stream.</param>

+            <param name="output">The stream to write to.</param>

+        </member>

+        <member name="M:Google.Protobuf.MessageExtensions.WriteDelimitedTo(Google.Protobuf.IMessage,System.IO.Stream)">

+            <summary>

+            Writes the length and then data of the given message to a stream.

+            </summary>

+            <param name="message">The message to write.</param>

+            <param name="output">The output stream to write to.</param>

+        </member>

+        <member name="M:Google.Protobuf.MessageExtensions.ToByteString(Google.Protobuf.IMessage)">

+            <summary>

+            Converts the given message into a byte string in protobuf encoding.

+            </summary>

+            <param name="message">The message to convert.</param>

+            <returns>The message data as a byte string.</returns>

+        </member>

+        <member name="T:Google.Protobuf.MessageParser">

+            <summary>

+            A general message parser, typically used by reflection-based code as all the methods

+            return simple <see cref="T:Google.Protobuf.IMessage"/>.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser.CreateTemplate">

+            <summary>

+            Creates a template instance ready for population.

+            </summary>

+            <returns>An empty message.</returns>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser.ParseFrom(System.Byte[])">

+            <summary>

+            Parses a message from a byte array.

+            </summary>

+            <param name="data">The byte array containing the message. Must not be null.</param>

+            <returns>The newly parsed message.</returns>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser.ParseFrom(System.Byte[],System.Int32,System.Int32)">

+            <summary>

+            Parses a message from a byte array slice.

+            </summary>

+            <param name="data">The byte array containing the message. Must not be null.</param>

+            <param name="offset">The offset of the slice to parse.</param>

+            <param name="length">The length of the slice to parse.</param>

+            <returns>The newly parsed message.</returns>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser.ParseFrom(Google.Protobuf.ByteString)">

+            <summary>

+            Parses a message from the given byte string.

+            </summary>

+            <param name="data">The data to parse.</param>

+            <returns>The parsed message.</returns>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser.ParseFrom(System.IO.Stream)">

+            <summary>

+            Parses a message from the given stream.

+            </summary>

+            <param name="input">The stream to parse.</param>

+            <returns>The parsed message.</returns>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser.ParseDelimitedFrom(System.IO.Stream)">

+            <summary>

+            Parses a length-delimited message from the given stream.

+            </summary>

+            <remarks>

+            The stream is expected to contain a length and then the data. Only the amount of data

+            specified by the length will be consumed.

+            </remarks>

+            <param name="input">The stream to parse.</param>

+            <returns>The parsed message.</returns>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser.ParseFrom(Google.Protobuf.CodedInputStream)">

+            <summary>

+            Parses a message from the given coded input stream.

+            </summary>

+            <param name="input">The stream to parse.</param>

+            <returns>The parsed message.</returns>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser.ParseJson(System.String)">

+            <summary>

+            Parses a message from the given JSON.

+            </summary>

+            <param name="json">The JSON to parse.</param>

+            <returns>The parsed message.</returns>

+            <exception cref="T:Google.Protobuf.InvalidJsonException">The JSON does not comply with RFC 7159</exception>

+            <exception cref="T:Google.Protobuf.InvalidProtocolBufferException">The JSON does not represent a Protocol Buffers message correctly</exception>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser.WithDiscardUnknownFields(System.Boolean)">

+            <summary>

+            Creates a new message parser which optionally discards unknown fields when parsing.

+            </summary>

+            <param name="discardUnknownFields">Whether or not to discard unknown fields when parsing.</param>

+            <returns>A newly configured message parser.</returns>

+        </member>

+        <member name="T:Google.Protobuf.MessageParser`1">

+            <summary>

+            A parser for a specific message type.

+            </summary>

+            <remarks>

+            <p>

+            This delegates most behavior to the

+            <see cref="M:Google.Protobuf.IMessage.MergeFrom(Google.Protobuf.CodedInputStream)"/> implementation within the original type, but

+            provides convenient overloads to parse from a variety of sources.

+            </p>

+            <p>

+            Most applications will never need to create their own instances of this type;

+            instead, use the static <c>Parser</c> property of a generated message type to obtain a

+            parser for that type.

+            </p>

+            </remarks>

+            <typeparam name="T">The type of message to be parsed.</typeparam>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser`1.#ctor(System.Func{`0})">

+            <summary>

+            Creates a new parser.

+            </summary>

+            <remarks>

+            The factory method is effectively an optimization over using a generic constraint

+            to require a parameterless constructor: delegates are significantly faster to execute.

+            </remarks>

+            <param name="factory">Function to invoke when a new, empty message is required.</param>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser`1.CreateTemplate">

+            <summary>

+            Creates a template instance ready for population.

+            </summary>

+            <returns>An empty message.</returns>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser`1.ParseFrom(System.Byte[])">

+            <summary>

+            Parses a message from a byte array.

+            </summary>

+            <param name="data">The byte array containing the message. Must not be null.</param>

+            <returns>The newly parsed message.</returns>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser`1.ParseFrom(System.Byte[],System.Int32,System.Int32)">

+            <summary>

+            Parses a message from a byte array slice.

+            </summary>

+            <param name="data">The byte array containing the message. Must not be null.</param>

+            <param name="offset">The offset of the slice to parse.</param>

+            <param name="length">The length of the slice to parse.</param>

+            <returns>The newly parsed message.</returns>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser`1.ParseFrom(Google.Protobuf.ByteString)">

+            <summary>

+            Parses a message from the given byte string.

+            </summary>

+            <param name="data">The data to parse.</param>

+            <returns>The parsed message.</returns>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser`1.ParseFrom(System.IO.Stream)">

+            <summary>

+            Parses a message from the given stream.

+            </summary>

+            <param name="input">The stream to parse.</param>

+            <returns>The parsed message.</returns>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser`1.ParseDelimitedFrom(System.IO.Stream)">

+            <summary>

+            Parses a length-delimited message from the given stream.

+            </summary>

+            <remarks>

+            The stream is expected to contain a length and then the data. Only the amount of data

+            specified by the length will be consumed.

+            </remarks>

+            <param name="input">The stream to parse.</param>

+            <returns>The parsed message.</returns>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser`1.ParseFrom(Google.Protobuf.CodedInputStream)">

+            <summary>

+            Parses a message from the given coded input stream.

+            </summary>

+            <param name="input">The stream to parse.</param>

+            <returns>The parsed message.</returns>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser`1.ParseJson(System.String)">

+            <summary>

+            Parses a message from the given JSON.

+            </summary>

+            <param name="json">The JSON to parse.</param>

+            <returns>The parsed message.</returns>

+            <exception cref="T:Google.Protobuf.InvalidJsonException">The JSON does not comply with RFC 7159</exception>

+            <exception cref="T:Google.Protobuf.InvalidProtocolBufferException">The JSON does not represent a Protocol Buffers message correctly</exception>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser`1.WithDiscardUnknownFields(System.Boolean)">

+            <summary>

+            Creates a new message parser which optionally discards unknown fields when parsing.

+            </summary>

+            <param name="discardUnknownFields">Whether or not to discard unknown fields when parsing.</param>

+            <returns>A newly configured message parser.</returns>

+        </member>

+        <member name="T:Google.Protobuf.ProtoPreconditions">

+            <summary>

+            Helper methods for throwing exceptions when preconditions are not met.

+            </summary>

+            <remarks>

+            This class is used internally and by generated code; it is not particularly

+            expected to be used from application code, although nothing prevents it

+            from being used that way.

+            </remarks>

+        </member>

+        <member name="M:Google.Protobuf.ProtoPreconditions.CheckNotNull``1(``0,System.String)">

+            <summary>

+            Throws an ArgumentNullException if the given value is null, otherwise

+            return the value to the caller.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.ProtoPreconditions.CheckNotNullUnconstrained``1(``0,System.String)">

+            <summary>

+            Throws an ArgumentNullException if the given value is null, otherwise

+            return the value to the caller.

+            </summary>

+            <remarks>

+            This is equivalent to <see cref="M:Google.Protobuf.ProtoPreconditions.CheckNotNull``1(``0,System.String)"/> but without the type parameter

+            constraint. In most cases, the constraint is useful to prevent you from calling CheckNotNull

+            with a value type - but it gets in the way if either you want to use it with a nullable

+            value type, or you want to use it with an unconstrained type parameter.

+            </remarks>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.CustomOptions">

+            <summary>

+            Container for a set of custom options specified within a message, field etc.

+            </summary>

+            <remarks>

+            <para>

+            This type is publicly immutable, but internally mutable. It is only populated

+            by the descriptor parsing code - by the time any user code is able to see an instance,

+            it will be fully initialized.

+            </para>

+            <para>

+            If an option is requested using the incorrect method, an answer may still be returned: all

+            of the numeric types are represented internally using 64-bit integers, for example. It is up to

+            the caller to ensure that they make the appropriate method call for the option they're interested in.

+            Note that enum options are simply stored as integers, so the value should be fetched using

+            <see cref="M:Google.Protobuf.Reflection.CustomOptions.TryGetInt32(System.Int32,System.Int32@)"/> and then cast appropriately.

+            </para>

+            <para>

+            Repeated options are currently not supported. Asking for a single value of an option

+            which was actually repeated will return the last value, except for message types where

+            all the set values are merged together.

+            </para>

+            </remarks>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.CustomOptions.Empty">

+            <summary>

+            Singleton for all descriptors with an empty set of options.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.CustomOptions.valuesByField">

+            <summary>

+            A sequence of values per field. This needs to be per field rather than per tag to allow correct deserialization

+            of repeated fields which could be "int, ByteString, int" - unlikely as that is. The fact that values are boxed

+            is unfortunate; we might be able to use a struct instead, and we could combine uint and ulong values.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.TryGetBool(System.Int32,System.Boolean@)">

+            <summary>

+            Retrieves a Boolean value for the specified option field.

+            </summary>

+            <param name="field">The field to fetch the value for.</param>

+            <param name="value">The output variable to populate.</param>

+            <returns><c>true</c> if a suitable value for the field was found; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.TryGetInt32(System.Int32,System.Int32@)">

+            <summary>

+            Retrieves a signed 32-bit integer value for the specified option field.

+            </summary>

+            <param name="field">The field to fetch the value for.</param>

+            <param name="value">The output variable to populate.</param>

+            <returns><c>true</c> if a suitable value for the field was found; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.TryGetInt64(System.Int32,System.Int64@)">

+            <summary>

+            Retrieves a signed 64-bit integer value for the specified option field.

+            </summary>

+            <param name="field">The field to fetch the value for.</param>

+            <param name="value">The output variable to populate.</param>

+            <returns><c>true</c> if a suitable value for the field was found; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.TryGetFixed32(System.Int32,System.UInt32@)">

+            <summary>

+            Retrieves an unsigned 32-bit integer value for the specified option field,

+            assuming a fixed-length representation.

+            </summary>

+            <param name="field">The field to fetch the value for.</param>

+            <param name="value">The output variable to populate.</param>

+            <returns><c>true</c> if a suitable value for the field was found; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.TryGetFixed64(System.Int32,System.UInt64@)">

+            <summary>

+            Retrieves an unsigned 64-bit integer value for the specified option field,

+            assuming a fixed-length representation.

+            </summary>

+            <param name="field">The field to fetch the value for.</param>

+            <param name="value">The output variable to populate.</param>

+            <returns><c>true</c> if a suitable value for the field was found; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.TryGetSFixed32(System.Int32,System.Int32@)">

+            <summary>

+            Retrieves a signed 32-bit integer value for the specified option field,

+            assuming a fixed-length representation.

+            </summary>

+            <param name="field">The field to fetch the value for.</param>

+            <param name="value">The output variable to populate.</param>

+            <returns><c>true</c> if a suitable value for the field was found; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.TryGetSFixed64(System.Int32,System.Int64@)">

+            <summary>

+            Retrieves a signed 64-bit integer value for the specified option field,

+            assuming a fixed-length representation.

+            </summary>

+            <param name="field">The field to fetch the value for.</param>

+            <param name="value">The output variable to populate.</param>

+            <returns><c>true</c> if a suitable value for the field was found; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.TryGetSInt32(System.Int32,System.Int32@)">

+            <summary>

+            Retrieves a signed 32-bit integer value for the specified option field,

+            assuming a zigzag encoding.

+            </summary>

+            <param name="field">The field to fetch the value for.</param>

+            <param name="value">The output variable to populate.</param>

+            <returns><c>true</c> if a suitable value for the field was found; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.TryGetSInt64(System.Int32,System.Int64@)">

+            <summary>

+            Retrieves a signed 64-bit integer value for the specified option field,

+            assuming a zigzag encoding.

+            </summary>

+            <param name="field">The field to fetch the value for.</param>

+            <param name="value">The output variable to populate.</param>

+            <returns><c>true</c> if a suitable value for the field was found; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.TryGetUInt32(System.Int32,System.UInt32@)">

+            <summary>

+            Retrieves an unsigned 32-bit integer value for the specified option field.

+            </summary>

+            <param name="field">The field to fetch the value for.</param>

+            <param name="value">The output variable to populate.</param>

+            <returns><c>true</c> if a suitable value for the field was found; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.TryGetUInt64(System.Int32,System.UInt64@)">

+            <summary>

+            Retrieves an unsigned 64-bit integer value for the specified option field.

+            </summary>

+            <param name="field">The field to fetch the value for.</param>

+            <param name="value">The output variable to populate.</param>

+            <returns><c>true</c> if a suitable value for the field was found; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.TryGetFloat(System.Int32,System.Single@)">

+            <summary>

+            Retrieves a 32-bit floating point value for the specified option field.

+            </summary>

+            <param name="field">The field to fetch the value for.</param>

+            <param name="value">The output variable to populate.</param>

+            <returns><c>true</c> if a suitable value for the field was found; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.TryGetDouble(System.Int32,System.Double@)">

+            <summary>

+            Retrieves a 64-bit floating point value for the specified option field.

+            </summary>

+            <param name="field">The field to fetch the value for.</param>

+            <param name="value">The output variable to populate.</param>

+            <returns><c>true</c> if a suitable value for the field was found; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.TryGetString(System.Int32,System.String@)">

+            <summary>

+            Retrieves a string value for the specified option field.

+            </summary>

+            <param name="field">The field to fetch the value for.</param>

+            <param name="value">The output variable to populate.</param>

+            <returns><c>true</c> if a suitable value for the field was found; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.TryGetBytes(System.Int32,Google.Protobuf.ByteString@)">

+            <summary>

+            Retrieves a bytes value for the specified option field.

+            </summary>

+            <param name="field">The field to fetch the value for.</param>

+            <param name="value">The output variable to populate.</param>

+            <returns><c>true</c> if a suitable value for the field was found; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.TryGetMessage``1(System.Int32,``0@)">

+            <summary>

+            Retrieves a message value for the specified option field.

+            </summary>

+            <param name="field">The field to fetch the value for.</param>

+            <param name="value">The output variable to populate.</param>

+            <returns><c>true</c> if a suitable value for the field was found; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.ReadOrSkipUnknownField(Google.Protobuf.CodedInputStream)">

+            <summary>

+            Reads an unknown field, either parsing it and storing it or skipping it.

+            </summary>

+            <remarks>

+            If the current set of options is empty and we manage to read a field, a new set of options

+            will be created and returned. Otherwise, the return value is <c>this</c>. This allows

+            us to start with a singleton empty set of options and just create new ones where necessary.

+            </remarks>

+            <param name="input">Input stream to read from. </param>

+            <returns>The resulting set of custom options, either <c>this</c> or a new set.</returns>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.CustomOptions.FieldValue">

+            <summary>

+            All field values can be stored as a byte string or a 64-bit integer.

+            This struct avoids unnecessary boxing.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.DescriptorReflection">

+            <summary>Holder for reflection information generated from google/protobuf/descriptor.proto</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.DescriptorReflection.Descriptor">

+            <summary>File descriptor for google/protobuf/descriptor.proto</summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.FileDescriptorSet">

+            <summary>

+            The protocol compiler can output a FileDescriptorSet containing the .proto

+            files it parses.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileDescriptorSet.FileFieldNumber">

+            <summary>Field number for the "file" field.</summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.FileDescriptorProto">

+            <summary>

+            Describes a complete .proto file.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileDescriptorProto.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptorProto.Name">

+            <summary>

+            file name, relative to root of source tree

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileDescriptorProto.PackageFieldNumber">

+            <summary>Field number for the "package" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptorProto.Package">

+            <summary>

+            e.g. "foo", "foo.bar", etc.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileDescriptorProto.DependencyFieldNumber">

+            <summary>Field number for the "dependency" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptorProto.Dependency">

+            <summary>

+            Names of files imported by this file.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileDescriptorProto.PublicDependencyFieldNumber">

+            <summary>Field number for the "public_dependency" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptorProto.PublicDependency">

+            <summary>

+            Indexes of the public imported files in the dependency list above.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileDescriptorProto.WeakDependencyFieldNumber">

+            <summary>Field number for the "weak_dependency" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptorProto.WeakDependency">

+            <summary>

+            Indexes of the weak imported files in the dependency list.

+            For Google-internal migration only. Do not use.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileDescriptorProto.MessageTypeFieldNumber">

+            <summary>Field number for the "message_type" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptorProto.MessageType">

+            <summary>

+            All top-level definitions in this file.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileDescriptorProto.EnumTypeFieldNumber">

+            <summary>Field number for the "enum_type" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileDescriptorProto.ServiceFieldNumber">

+            <summary>Field number for the "service" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileDescriptorProto.ExtensionFieldNumber">

+            <summary>Field number for the "extension" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileDescriptorProto.OptionsFieldNumber">

+            <summary>Field number for the "options" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileDescriptorProto.SourceCodeInfoFieldNumber">

+            <summary>Field number for the "source_code_info" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptorProto.SourceCodeInfo">

+            <summary>

+            This field contains optional information about the original source code.

+            You may safely remove this entire field without harming runtime

+            functionality of the descriptors -- the information is needed only by

+            development tools.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileDescriptorProto.SyntaxFieldNumber">

+            <summary>Field number for the "syntax" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptorProto.Syntax">

+            <summary>

+            The syntax of the proto file.

+            The supported values are "proto2" and "proto3".

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.DescriptorProto">

+            <summary>

+            Describes a message type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.DescriptorProto.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.DescriptorProto.FieldFieldNumber">

+            <summary>Field number for the "field" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.DescriptorProto.ExtensionFieldNumber">

+            <summary>Field number for the "extension" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.DescriptorProto.NestedTypeFieldNumber">

+            <summary>Field number for the "nested_type" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.DescriptorProto.EnumTypeFieldNumber">

+            <summary>Field number for the "enum_type" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.DescriptorProto.ExtensionRangeFieldNumber">

+            <summary>Field number for the "extension_range" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.DescriptorProto.OneofDeclFieldNumber">

+            <summary>Field number for the "oneof_decl" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.DescriptorProto.OptionsFieldNumber">

+            <summary>Field number for the "options" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.DescriptorProto.ReservedRangeFieldNumber">

+            <summary>Field number for the "reserved_range" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.DescriptorProto.ReservedNameFieldNumber">

+            <summary>Field number for the "reserved_name" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.DescriptorProto.ReservedName">

+            <summary>

+            Reserved field names, which may not be used by fields in the same message.

+            A given name may only be reserved once.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.DescriptorProto.Types">

+            <summary>Container for nested types declared in the DescriptorProto message type.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.DescriptorProto.Types.ExtensionRange.StartFieldNumber">

+            <summary>Field number for the "start" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.DescriptorProto.Types.ExtensionRange.EndFieldNumber">

+            <summary>Field number for the "end" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.DescriptorProto.Types.ExtensionRange.OptionsFieldNumber">

+            <summary>Field number for the "options" field.</summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.DescriptorProto.Types.ReservedRange">

+            <summary>

+            Range of reserved tag numbers. Reserved tag numbers may not be used by

+            fields or extension ranges in the same message. Reserved ranges may

+            not overlap.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.DescriptorProto.Types.ReservedRange.StartFieldNumber">

+            <summary>Field number for the "start" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.DescriptorProto.Types.ReservedRange.Start">

+            <summary>

+            Inclusive.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.DescriptorProto.Types.ReservedRange.EndFieldNumber">

+            <summary>Field number for the "end" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.DescriptorProto.Types.ReservedRange.End">

+            <summary>

+            Exclusive.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.ExtensionRangeOptions.UninterpretedOptionFieldNumber">

+            <summary>Field number for the "uninterpreted_option" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.ExtensionRangeOptions.UninterpretedOption">

+            <summary>

+            The parser stores options it doesn't recognize here. See above.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.FieldDescriptorProto">

+            <summary>

+            Describes a field within a message.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.NumberFieldNumber">

+            <summary>Field number for the "number" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.LabelFieldNumber">

+            <summary>Field number for the "label" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.TypeFieldNumber">

+            <summary>Field number for the "type" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptorProto.Type">

+            <summary>

+            If type_name is set, this need not be set.  If both this and type_name

+            are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.TypeNameFieldNumber">

+            <summary>Field number for the "type_name" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptorProto.TypeName">

+            <summary>

+            For message and enum types, this is the name of the type.  If the name

+            starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping

+            rules are used to find the type (i.e. first the nested types within this

+            message are searched, then within the parent, on up to the root

+            namespace).

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.ExtendeeFieldNumber">

+            <summary>Field number for the "extendee" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptorProto.Extendee">

+            <summary>

+            For extensions, this is the name of the type being extended.  It is

+            resolved in the same manner as type_name.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.DefaultValueFieldNumber">

+            <summary>Field number for the "default_value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptorProto.DefaultValue">

+            <summary>

+            For numeric types, contains the original text representation of the value.

+            For booleans, "true" or "false".

+            For strings, contains the default text contents (not escaped in any way).

+            For bytes, contains the C escaped value.  All bytes >= 128 are escaped.

+            TODO(kenton):  Base-64 encode?

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.OneofIndexFieldNumber">

+            <summary>Field number for the "oneof_index" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptorProto.OneofIndex">

+            <summary>

+            If set, gives the index of a oneof in the containing type's oneof_decl

+            list.  This field is a member of that oneof.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.JsonNameFieldNumber">

+            <summary>Field number for the "json_name" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptorProto.JsonName">

+            <summary>

+            JSON name of this field. The value is set by protocol compiler. If the

+            user has set a "json_name" option on this field, that option's value

+            will be used. Otherwise, it's deduced from the field's name by converting

+            it to camelCase.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.OptionsFieldNumber">

+            <summary>Field number for the "options" field.</summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.FieldDescriptorProto.Types">

+            <summary>Container for nested types declared in the FieldDescriptorProto message type.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.Double">

+            <summary>

+            0 is reserved for errors.

+            Order is weird for historical reasons.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.Int64">

+            <summary>

+            Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if

+            negative values are likely.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.Int32">

+            <summary>

+            Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if

+            negative values are likely.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.Group">

+            <summary>

+            Tag-delimited aggregate.

+            Group type is deprecated and not supported in proto3. However, Proto3

+            implementations should still be able to parse the group wire format and

+            treat group fields as unknown fields.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.Message">

+            <summary>

+            Length-delimited aggregate.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.Bytes">

+            <summary>

+            New in version 2.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.Sint32">

+            <summary>

+            Uses ZigZag encoding.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.Sint64">

+            <summary>

+            Uses ZigZag encoding.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label.Optional">

+            <summary>

+            0 is reserved for errors

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.OneofDescriptorProto">

+            <summary>

+            Describes a oneof.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.OneofDescriptorProto.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.OneofDescriptorProto.OptionsFieldNumber">

+            <summary>Field number for the "options" field.</summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.EnumDescriptorProto">

+            <summary>

+            Describes an enum type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.EnumDescriptorProto.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.EnumDescriptorProto.ValueFieldNumber">

+            <summary>Field number for the "value" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.EnumDescriptorProto.OptionsFieldNumber">

+            <summary>Field number for the "options" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.EnumDescriptorProto.ReservedRangeFieldNumber">

+            <summary>Field number for the "reserved_range" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumDescriptorProto.ReservedRange">

+            <summary>

+            Range of reserved numeric values. Reserved numeric values may not be used

+            by enum values in the same enum declaration. Reserved ranges may not

+            overlap.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.EnumDescriptorProto.ReservedNameFieldNumber">

+            <summary>Field number for the "reserved_name" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumDescriptorProto.ReservedName">

+            <summary>

+            Reserved enum value names, which may not be reused. A given name may only

+            be reserved once.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.EnumDescriptorProto.Types">

+            <summary>Container for nested types declared in the EnumDescriptorProto message type.</summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.EnumDescriptorProto.Types.EnumReservedRange">

+             <summary>

+             Range of reserved numeric values. Reserved values may not be used by

+             entries in the same enum. Reserved ranges may not overlap.

+            

+             Note that this is distinct from DescriptorProto.ReservedRange in that it

+             is inclusive such that it can appropriately represent the entire int32

+             domain.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.EnumDescriptorProto.Types.EnumReservedRange.StartFieldNumber">

+            <summary>Field number for the "start" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumDescriptorProto.Types.EnumReservedRange.Start">

+            <summary>

+            Inclusive.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.EnumDescriptorProto.Types.EnumReservedRange.EndFieldNumber">

+            <summary>Field number for the "end" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumDescriptorProto.Types.EnumReservedRange.End">

+            <summary>

+            Inclusive.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.EnumValueDescriptorProto">

+            <summary>

+            Describes a value within an enum.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.EnumValueDescriptorProto.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.EnumValueDescriptorProto.NumberFieldNumber">

+            <summary>Field number for the "number" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.EnumValueDescriptorProto.OptionsFieldNumber">

+            <summary>Field number for the "options" field.</summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.ServiceDescriptorProto">

+            <summary>

+            Describes a service.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.ServiceDescriptorProto.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.ServiceDescriptorProto.MethodFieldNumber">

+            <summary>Field number for the "method" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.ServiceDescriptorProto.OptionsFieldNumber">

+            <summary>Field number for the "options" field.</summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.MethodDescriptorProto">

+            <summary>

+            Describes a method of a service.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.MethodDescriptorProto.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.MethodDescriptorProto.InputTypeFieldNumber">

+            <summary>Field number for the "input_type" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MethodDescriptorProto.InputType">

+            <summary>

+            Input and output type names.  These are resolved in the same way as

+            FieldDescriptorProto.type_name, but must refer to a message type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.MethodDescriptorProto.OutputTypeFieldNumber">

+            <summary>Field number for the "output_type" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.MethodDescriptorProto.OptionsFieldNumber">

+            <summary>Field number for the "options" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.MethodDescriptorProto.ClientStreamingFieldNumber">

+            <summary>Field number for the "client_streaming" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MethodDescriptorProto.ClientStreaming">

+            <summary>

+            Identifies if client streams multiple client messages

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.MethodDescriptorProto.ServerStreamingFieldNumber">

+            <summary>Field number for the "server_streaming" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MethodDescriptorProto.ServerStreaming">

+            <summary>

+            Identifies if server streams multiple server messages

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.JavaPackageFieldNumber">

+            <summary>Field number for the "java_package" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.JavaPackage">

+            <summary>

+            Sets the Java package where classes generated from this .proto will be

+            placed.  By default, the proto package is used, but this is often

+            inappropriate because proto packages do not normally start with backwards

+            domain names.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.JavaOuterClassnameFieldNumber">

+            <summary>Field number for the "java_outer_classname" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.JavaOuterClassname">

+            <summary>

+            If set, all the classes from the .proto file are wrapped in a single

+            outer class with the given name.  This applies to both Proto1

+            (equivalent to the old "--one_java_file" option) and Proto2 (where

+            a .proto always translates to a single class, but you may want to

+            explicitly choose the class name).

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.JavaMultipleFilesFieldNumber">

+            <summary>Field number for the "java_multiple_files" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.JavaMultipleFiles">

+            <summary>

+            If set true, then the Java code generator will generate a separate .java

+            file for each top-level message, enum, and service defined in the .proto

+            file.  Thus, these types will *not* be nested inside the outer class

+            named by java_outer_classname.  However, the outer class will still be

+            generated to contain the file's getDescriptor() method as well as any

+            top-level extensions defined in the file.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.JavaGenerateEqualsAndHashFieldNumber">

+            <summary>Field number for the "java_generate_equals_and_hash" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.JavaGenerateEqualsAndHash">

+            <summary>

+            This option does nothing.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.JavaStringCheckUtf8FieldNumber">

+            <summary>Field number for the "java_string_check_utf8" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.JavaStringCheckUtf8">

+            <summary>

+            If set true, then the Java2 code generator will generate code that

+            throws an exception whenever an attempt is made to assign a non-UTF-8

+            byte sequence to a string field.

+            Message reflection will do the same.

+            However, an extension field still accepts non-UTF-8 byte sequences.

+            This option has no effect on when used with the lite runtime.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.OptimizeForFieldNumber">

+            <summary>Field number for the "optimize_for" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.GoPackageFieldNumber">

+            <summary>Field number for the "go_package" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.GoPackage">

+            <summary>

+            Sets the Go package where structs generated from this .proto will be

+            placed. If omitted, the Go package will be derived from the following:

+              - The basename of the package import path, if provided.

+              - Otherwise, the package statement in the .proto file, if present.

+              - Otherwise, the basename of the .proto file, without extension.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.CcGenericServicesFieldNumber">

+            <summary>Field number for the "cc_generic_services" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.CcGenericServices">

+             <summary>

+             Should generic services be generated in each language?  "Generic" services

+             are not specific to any particular RPC system.  They are generated by the

+             main code generators in each language (without additional plugins).

+             Generic services were the only kind of service generation supported by

+             early versions of google.protobuf.

+            

+             Generic services are now considered deprecated in favor of using plugins

+             that generate code specific to your particular RPC system.  Therefore,

+             these default to false.  Old code which depends on generic services should

+             explicitly set them to true.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.JavaGenericServicesFieldNumber">

+            <summary>Field number for the "java_generic_services" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.PyGenericServicesFieldNumber">

+            <summary>Field number for the "py_generic_services" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.PhpGenericServicesFieldNumber">

+            <summary>Field number for the "php_generic_services" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.DeprecatedFieldNumber">

+            <summary>Field number for the "deprecated" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.Deprecated">

+            <summary>

+            Is this file deprecated?

+            Depending on the target platform, this can emit Deprecated annotations

+            for everything in the file, or it will be completely ignored; in the very

+            least, this is a formalization for deprecating files.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.CcEnableArenasFieldNumber">

+            <summary>Field number for the "cc_enable_arenas" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.CcEnableArenas">

+            <summary>

+            Enables the use of arenas for the proto messages in this file. This applies

+            only to generated classes for C++.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.ObjcClassPrefixFieldNumber">

+            <summary>Field number for the "objc_class_prefix" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.ObjcClassPrefix">

+            <summary>

+            Sets the objective c class prefix which is prepended to all objective c

+            generated classes from this .proto. There is no default.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.CsharpNamespaceFieldNumber">

+            <summary>Field number for the "csharp_namespace" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.CsharpNamespace">

+            <summary>

+            Namespace for generated classes; defaults to the package.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.SwiftPrefixFieldNumber">

+            <summary>Field number for the "swift_prefix" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.SwiftPrefix">

+            <summary>

+            By default Swift generators will take the proto package and CamelCase it

+            replacing '.' with underscore and use that to prefix the types/symbols

+            defined. When this options is provided, they will use this value instead

+            to prefix the types/symbols defined.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.PhpClassPrefixFieldNumber">

+            <summary>Field number for the "php_class_prefix" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.PhpClassPrefix">

+            <summary>

+            Sets the php class prefix which is prepended to all php generated classes

+            from this .proto. Default is empty.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.PhpNamespaceFieldNumber">

+            <summary>Field number for the "php_namespace" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.PhpNamespace">

+            <summary>

+            Use this option to change the namespace of php generated classes. Default

+            is empty. When this option is empty, the package name will be used for

+            determining the namespace.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.PhpMetadataNamespaceFieldNumber">

+            <summary>Field number for the "php_metadata_namespace" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.PhpMetadataNamespace">

+            <summary>

+            Use this option to change the namespace of php generated metadata classes.

+            Default is empty. When this option is empty, the proto file name will be used

+            for determining the namespace.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.RubyPackageFieldNumber">

+            <summary>Field number for the "ruby_package" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.RubyPackage">

+            <summary>

+            Use this option to change the package of ruby generated classes. Default

+            is empty. When this option is not set, the package name will be used for

+            determining the ruby package.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.UninterpretedOptionFieldNumber">

+            <summary>Field number for the "uninterpreted_option" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.UninterpretedOption">

+            <summary>

+            The parser stores options it doesn't recognize here.

+            See the documentation for the "Options" section above.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.FileOptions.Types">

+            <summary>Container for nested types declared in the FileOptions message type.</summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode">

+            <summary>

+            Generated classes can be optimized for speed or code size.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode.Speed">

+            <summary>

+            Generate complete code for parsing, serialization,

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode.CodeSize">

+            <summary>

+            etc.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode.LiteRuntime">

+            <summary>

+            Generate code using MessageLite and the lite runtime.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.MessageOptions.MessageSetWireFormatFieldNumber">

+            <summary>Field number for the "message_set_wire_format" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageOptions.MessageSetWireFormat">

+             <summary>

+             Set true to use the old proto1 MessageSet wire format for extensions.

+             This is provided for backwards-compatibility with the MessageSet wire

+             format.  You should not use this for any other reason:  It's less

+             efficient, has fewer features, and is more complicated.

+            

+             The message must be defined exactly as follows:

+               message Foo {

+                 option message_set_wire_format = true;

+                 extensions 4 to max;

+               }

+             Note that the message cannot have any defined fields; MessageSets only

+             have extensions.

+            

+             All extensions of your type must be singular messages; e.g. they cannot

+             be int32s, enums, or repeated messages.

+            

+             Because this is an option, the above two restrictions are not enforced by

+             the protocol compiler.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.MessageOptions.NoStandardDescriptorAccessorFieldNumber">

+            <summary>Field number for the "no_standard_descriptor_accessor" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageOptions.NoStandardDescriptorAccessor">

+            <summary>

+            Disables the generation of the standard "descriptor()" accessor, which can

+            conflict with a field of the same name.  This is meant to make migration

+            from proto1 easier; new code should avoid fields named "descriptor".

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.MessageOptions.DeprecatedFieldNumber">

+            <summary>Field number for the "deprecated" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageOptions.Deprecated">

+            <summary>

+            Is this message deprecated?

+            Depending on the target platform, this can emit Deprecated annotations

+            for the message, or it will be completely ignored; in the very least,

+            this is a formalization for deprecating messages.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.MessageOptions.MapEntryFieldNumber">

+            <summary>Field number for the "map_entry" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageOptions.MapEntry">

+             <summary>

+             Whether the message is an automatically generated map entry type for the

+             maps field.

+            

+             For maps fields:

+                 map&lt;KeyType, ValueType> map_field = 1;

+             The parsed descriptor looks like:

+                 message MapFieldEntry {

+                     option map_entry = true;

+                     optional KeyType key = 1;

+                     optional ValueType value = 2;

+                 }

+                 repeated MapFieldEntry map_field = 1;

+            

+             Implementations may choose not to generate the map_entry=true message, but

+             use a native map in the target language to hold the keys and values.

+             The reflection APIs in such implementions still need to work as

+             if the field is a repeated message field.

+            

+             NOTE: Do not set the option in .proto files. Always use the maps syntax

+             instead. The option should only be implicitly set by the proto compiler

+             parser.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.MessageOptions.UninterpretedOptionFieldNumber">

+            <summary>Field number for the "uninterpreted_option" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageOptions.UninterpretedOption">

+            <summary>

+            The parser stores options it doesn't recognize here. See above.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldOptions.CtypeFieldNumber">

+            <summary>Field number for the "ctype" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldOptions.Ctype">

+            <summary>

+            The ctype option instructs the C++ code generator to use a different

+            representation of the field than it normally would.  See the specific

+            options below.  This option is not yet implemented in the open source

+            release -- sorry, we'll try to include it in a future version!

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldOptions.PackedFieldNumber">

+            <summary>Field number for the "packed" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldOptions.Packed">

+            <summary>

+            The packed option can be enabled for repeated primitive fields to enable

+            a more efficient representation on the wire. Rather than repeatedly

+            writing the tag and type for each element, the entire array is encoded as

+            a single length-delimited blob. In proto3, only explicit setting it to

+            false will avoid using packed encoding.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldOptions.JstypeFieldNumber">

+            <summary>Field number for the "jstype" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldOptions.Jstype">

+             <summary>

+             The jstype option determines the JavaScript type used for values of the

+             field.  The option is permitted only for 64 bit integral and fixed types

+             (int64, uint64, sint64, fixed64, sfixed64).  A field with jstype JS_STRING

+             is represented as JavaScript string, which avoids loss of precision that

+             can happen when a large value is converted to a floating point JavaScript.

+             Specifying JS_NUMBER for the jstype causes the generated JavaScript code to

+             use the JavaScript "number" type.  The behavior of the default option

+             JS_NORMAL is implementation dependent.

+            

+             This option is an enum to permit additional types to be added, e.g.

+             goog.math.Integer.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldOptions.LazyFieldNumber">

+            <summary>Field number for the "lazy" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldOptions.Lazy">

+             <summary>

+             Should this field be parsed lazily?  Lazy applies only to message-type

+             fields.  It means that when the outer message is initially parsed, the

+             inner message's contents will not be parsed but instead stored in encoded

+             form.  The inner message will actually be parsed when it is first accessed.

+            

+             This is only a hint.  Implementations are free to choose whether to use

+             eager or lazy parsing regardless of the value of this option.  However,

+             setting this option true suggests that the protocol author believes that

+             using lazy parsing on this field is worth the additional bookkeeping

+             overhead typically needed to implement it.

+            

+             This option does not affect the public interface of any generated code;

+             all method signatures remain the same.  Furthermore, thread-safety of the

+             interface is not affected by this option; const methods remain safe to

+             call from multiple threads concurrently, while non-const methods continue

+             to require exclusive access.

+            

+             Note that implementations may choose not to check required fields within

+             a lazy sub-message.  That is, calling IsInitialized() on the outer message

+             may return true even if the inner message has missing required fields.

+             This is necessary because otherwise the inner message would have to be

+             parsed in order to perform the check, defeating the purpose of lazy

+             parsing.  An implementation which chooses not to check required fields

+             must be consistent about it.  That is, for any particular sub-message, the

+             implementation must either *always* check its required fields, or *never*

+             check its required fields, regardless of whether or not the message has

+             been parsed.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldOptions.DeprecatedFieldNumber">

+            <summary>Field number for the "deprecated" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldOptions.Deprecated">

+            <summary>

+            Is this field deprecated?

+            Depending on the target platform, this can emit Deprecated annotations

+            for accessors, or it will be completely ignored; in the very least, this

+            is a formalization for deprecating fields.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldOptions.WeakFieldNumber">

+            <summary>Field number for the "weak" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldOptions.Weak">

+            <summary>

+            For Google-internal migration only. Do not use.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldOptions.UninterpretedOptionFieldNumber">

+            <summary>Field number for the "uninterpreted_option" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldOptions.UninterpretedOption">

+            <summary>

+            The parser stores options it doesn't recognize here. See above.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.FieldOptions.Types">

+            <summary>Container for nested types declared in the FieldOptions message type.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldOptions.Types.CType.String">

+            <summary>

+            Default mode.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldOptions.Types.JSType.JsNormal">

+            <summary>

+            Use the default type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldOptions.Types.JSType.JsString">

+            <summary>

+            Use JavaScript strings.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldOptions.Types.JSType.JsNumber">

+            <summary>

+            Use JavaScript numbers.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.OneofOptions.UninterpretedOptionFieldNumber">

+            <summary>Field number for the "uninterpreted_option" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.OneofOptions.UninterpretedOption">

+            <summary>

+            The parser stores options it doesn't recognize here. See above.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.EnumOptions.AllowAliasFieldNumber">

+            <summary>Field number for the "allow_alias" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumOptions.AllowAlias">

+            <summary>

+            Set this option to true to allow mapping different tag names to the same

+            value.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.EnumOptions.DeprecatedFieldNumber">

+            <summary>Field number for the "deprecated" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumOptions.Deprecated">

+            <summary>

+            Is this enum deprecated?

+            Depending on the target platform, this can emit Deprecated annotations

+            for the enum, or it will be completely ignored; in the very least, this

+            is a formalization for deprecating enums.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.EnumOptions.UninterpretedOptionFieldNumber">

+            <summary>Field number for the "uninterpreted_option" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumOptions.UninterpretedOption">

+            <summary>

+            The parser stores options it doesn't recognize here. See above.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.EnumValueOptions.DeprecatedFieldNumber">

+            <summary>Field number for the "deprecated" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumValueOptions.Deprecated">

+            <summary>

+            Is this enum value deprecated?

+            Depending on the target platform, this can emit Deprecated annotations

+            for the enum value, or it will be completely ignored; in the very least,

+            this is a formalization for deprecating enum values.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.EnumValueOptions.UninterpretedOptionFieldNumber">

+            <summary>Field number for the "uninterpreted_option" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumValueOptions.UninterpretedOption">

+            <summary>

+            The parser stores options it doesn't recognize here. See above.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.ServiceOptions.DeprecatedFieldNumber">

+            <summary>Field number for the "deprecated" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.ServiceOptions.Deprecated">

+            <summary>

+            Is this service deprecated?

+            Depending on the target platform, this can emit Deprecated annotations

+            for the service, or it will be completely ignored; in the very least,

+            this is a formalization for deprecating services.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.ServiceOptions.UninterpretedOptionFieldNumber">

+            <summary>Field number for the "uninterpreted_option" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.ServiceOptions.UninterpretedOption">

+            <summary>

+            The parser stores options it doesn't recognize here. See above.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.MethodOptions.DeprecatedFieldNumber">

+            <summary>Field number for the "deprecated" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MethodOptions.Deprecated">

+            <summary>

+            Is this method deprecated?

+            Depending on the target platform, this can emit Deprecated annotations

+            for the method, or it will be completely ignored; in the very least,

+            this is a formalization for deprecating methods.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.MethodOptions.IdempotencyLevelFieldNumber">

+            <summary>Field number for the "idempotency_level" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.MethodOptions.UninterpretedOptionFieldNumber">

+            <summary>Field number for the "uninterpreted_option" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MethodOptions.UninterpretedOption">

+            <summary>

+            The parser stores options it doesn't recognize here. See above.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.MethodOptions.Types">

+            <summary>Container for nested types declared in the MethodOptions message type.</summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.MethodOptions.Types.IdempotencyLevel">

+            <summary>

+            Is this method side-effect-free (or safe in HTTP parlance), or idempotent,

+            or neither? HTTP based RPC implementation may choose GET verb for safe

+            methods, and PUT verb for idempotent methods instead of the default POST.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.MethodOptions.Types.IdempotencyLevel.NoSideEffects">

+            <summary>

+            implies idempotent

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.MethodOptions.Types.IdempotencyLevel.Idempotent">

+            <summary>

+            idempotent, but may have side effects

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.UninterpretedOption">

+            <summary>

+            A message representing a option the parser does not recognize. This only

+            appears in options protos created by the compiler::Parser class.

+            DescriptorPool resolves these when building Descriptor objects. Therefore,

+            options protos in descriptor objects (e.g. returned by Descriptor::options(),

+            or produced by Descriptor::CopyTo()) will never have UninterpretedOptions

+            in them.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.UninterpretedOption.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.UninterpretedOption.IdentifierValueFieldNumber">

+            <summary>Field number for the "identifier_value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.UninterpretedOption.IdentifierValue">

+            <summary>

+            The value of the uninterpreted option, in whatever type the tokenizer

+            identified it as during parsing. Exactly one of these should be set.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.UninterpretedOption.PositiveIntValueFieldNumber">

+            <summary>Field number for the "positive_int_value" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.UninterpretedOption.NegativeIntValueFieldNumber">

+            <summary>Field number for the "negative_int_value" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.UninterpretedOption.DoubleValueFieldNumber">

+            <summary>Field number for the "double_value" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.UninterpretedOption.StringValueFieldNumber">

+            <summary>Field number for the "string_value" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.UninterpretedOption.AggregateValueFieldNumber">

+            <summary>Field number for the "aggregate_value" field.</summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.UninterpretedOption.Types">

+            <summary>Container for nested types declared in the UninterpretedOption message type.</summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.UninterpretedOption.Types.NamePart">

+            <summary>

+            The name of the uninterpreted option.  Each string represents a segment in

+            a dot-separated name.  is_extension is true iff a segment represents an

+            extension (denoted with parentheses in options specs in .proto files).

+            E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents

+            "foo.(bar.baz).qux".

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.UninterpretedOption.Types.NamePart.NamePart_FieldNumber">

+            <summary>Field number for the "name_part" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.UninterpretedOption.Types.NamePart.IsExtensionFieldNumber">

+            <summary>Field number for the "is_extension" field.</summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.SourceCodeInfo">

+            <summary>

+            Encapsulates information about the original source file from which a

+            FileDescriptorProto was generated.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.SourceCodeInfo.LocationFieldNumber">

+            <summary>Field number for the "location" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.SourceCodeInfo.Location">

+             <summary>

+             A Location identifies a piece of source code in a .proto file which

+             corresponds to a particular definition.  This information is intended

+             to be useful to IDEs, code indexers, documentation generators, and similar

+             tools.

+            

+             For example, say we have a file like:

+               message Foo {

+                 optional string foo = 1;

+               }

+             Let's look at just the field definition:

+               optional string foo = 1;

+               ^       ^^     ^^  ^  ^^^

+               a       bc     de  f  ghi

+             We have the following locations:

+               span   path               represents

+               [a,i)  [ 4, 0, 2, 0 ]     The whole field definition.

+               [a,b)  [ 4, 0, 2, 0, 4 ]  The label (optional).

+               [c,d)  [ 4, 0, 2, 0, 5 ]  The type (string).

+               [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).

+               [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).

+            

+             Notes:

+             - A location may refer to a repeated field itself (i.e. not to any

+               particular index within it).  This is used whenever a set of elements are

+               logically enclosed in a single code segment.  For example, an entire

+               extend block (possibly containing multiple extension definitions) will

+               have an outer location whose path refers to the "extensions" repeated

+               field without an index.

+             - Multiple locations may have the same path.  This happens when a single

+               logical declaration is spread out across multiple places.  The most

+               obvious example is the "extend" block again -- there may be multiple

+               extend blocks in the same scope, each of which will have the same path.

+             - A location's span is not always a subset of its parent's span.  For

+               example, the "extendee" of an extension declaration appears at the

+               beginning of the "extend" block and is shared by all extensions within

+               the block.

+             - Just because a location's span is a subset of some other location's span

+               does not mean that it is a descendent.  For example, a "group" defines

+               both a type and a field in a single declaration.  Thus, the locations

+               corresponding to the type and field and their components will overlap.

+             - Code which tries to interpret locations should probably be designed to

+               ignore those that it doesn't understand, as more types of locations could

+               be recorded in the future.

+             </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.SourceCodeInfo.Types">

+            <summary>Container for nested types declared in the SourceCodeInfo message type.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.SourceCodeInfo.Types.Location.PathFieldNumber">

+            <summary>Field number for the "path" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.SourceCodeInfo.Types.Location.Path">

+             <summary>

+             Identifies which part of the FileDescriptorProto was defined at this

+             location.

+            

+             Each element is a field number or an index.  They form a path from

+             the root FileDescriptorProto to the place where the definition.  For

+             example, this path:

+               [ 4, 3, 2, 7, 1 ]

+             refers to:

+               file.message_type(3)  // 4, 3

+                   .field(7)         // 2, 7

+                   .name()           // 1

+             This is because FileDescriptorProto.message_type has field number 4:

+               repeated DescriptorProto message_type = 4;

+             and DescriptorProto.field has field number 2:

+               repeated FieldDescriptorProto field = 2;

+             and FieldDescriptorProto.name has field number 1:

+               optional string name = 1;

+            

+             Thus, the above path gives the location of a field name.  If we removed

+             the last element:

+               [ 4, 3, 2, 7 ]

+             this path refers to the whole field declaration (from the beginning

+             of the label to the terminating semicolon).

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.SourceCodeInfo.Types.Location.SpanFieldNumber">

+            <summary>Field number for the "span" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.SourceCodeInfo.Types.Location.Span">

+            <summary>

+            Always has exactly three or four elements: start line, start column,

+            end line (optional, otherwise assumed same as start line), end column.

+            These are packed into a single field for efficiency.  Note that line

+            and column numbers are zero-based -- typically you will want to add

+            1 to each before displaying to a user.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.SourceCodeInfo.Types.Location.LeadingCommentsFieldNumber">

+            <summary>Field number for the "leading_comments" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.SourceCodeInfo.Types.Location.LeadingComments">

+             <summary>

+             If this SourceCodeInfo represents a complete declaration, these are any

+             comments appearing before and after the declaration which appear to be

+             attached to the declaration.

+            

+             A series of line comments appearing on consecutive lines, with no other

+             tokens appearing on those lines, will be treated as a single comment.

+            

+             leading_detached_comments will keep paragraphs of comments that appear

+             before (but not connected to) the current element. Each paragraph,

+             separated by empty lines, will be one comment element in the repeated

+             field.

+            

+             Only the comment content is provided; comment markers (e.g. //) are

+             stripped out.  For block comments, leading whitespace and an asterisk

+             will be stripped from the beginning of each line other than the first.

+             Newlines are included in the output.

+            

+             Examples:

+            

+               optional int32 foo = 1;  // Comment attached to foo.

+               // Comment attached to bar.

+               optional int32 bar = 2;

+            

+               optional string baz = 3;

+               // Comment attached to baz.

+               // Another line attached to baz.

+            

+               // Comment attached to qux.

+               //

+               // Another line attached to qux.

+               optional double qux = 4;

+            

+               // Detached comment for corge. This is not leading or trailing comments

+               // to qux or corge because there are blank lines separating it from

+               // both.

+            

+               // Detached comment for corge paragraph 2.

+            

+               optional string corge = 5;

+               /* Block comment attached

+                * to corge.  Leading asterisks

+                * will be removed. */

+               /* Block comment attached to

+                * grault. */

+               optional int32 grault = 6;

+            

+               // ignored detached comments.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.SourceCodeInfo.Types.Location.TrailingCommentsFieldNumber">

+            <summary>Field number for the "trailing_comments" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.SourceCodeInfo.Types.Location.LeadingDetachedCommentsFieldNumber">

+            <summary>Field number for the "leading_detached_comments" field.</summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.GeneratedCodeInfo">

+            <summary>

+            Describes the relationship between generated code and its original source

+            file. A GeneratedCodeInfo message is associated with only one generated

+            source file, but may contain references to different source .proto files.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.GeneratedCodeInfo.AnnotationFieldNumber">

+            <summary>Field number for the "annotation" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.GeneratedCodeInfo.Annotation">

+            <summary>

+            An Annotation connects some span of text in generated code to an element

+            of its generating .proto file.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.GeneratedCodeInfo.Types">

+            <summary>Container for nested types declared in the GeneratedCodeInfo message type.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.GeneratedCodeInfo.Types.Annotation.PathFieldNumber">

+            <summary>Field number for the "path" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.GeneratedCodeInfo.Types.Annotation.Path">

+            <summary>

+            Identifies the element in the original source .proto file. This field

+            is formatted the same as SourceCodeInfo.Location.path.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.GeneratedCodeInfo.Types.Annotation.SourceFileFieldNumber">

+            <summary>Field number for the "source_file" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.GeneratedCodeInfo.Types.Annotation.SourceFile">

+            <summary>

+            Identifies the filesystem path to the original source .proto.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.GeneratedCodeInfo.Types.Annotation.BeginFieldNumber">

+            <summary>Field number for the "begin" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.GeneratedCodeInfo.Types.Annotation.Begin">

+            <summary>

+            Identifies the starting offset in bytes in the generated code

+            that relates to the identified object.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.GeneratedCodeInfo.Types.Annotation.EndFieldNumber">

+            <summary>Field number for the "end" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.GeneratedCodeInfo.Types.Annotation.End">

+            <summary>

+            Identifies the ending offset in bytes in the generated code that

+            relates to the identified offset. The end offset should be one past

+            the last relevant byte (so the length of the text = end - begin).

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.DescriptorBase">

+            <summary>

+            Base class for nearly all descriptors, providing common functionality.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.DescriptorBase.Index">

+            <value>

+            The index of this descriptor within its parent descriptor. 

+            </value>

+            <remarks>

+            This returns the index of this descriptor within its parent, for

+            this descriptor's type. (There can be duplicate values for different

+            types, e.g. one enum type with index 0 and one message type with index 0.)

+            </remarks>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.DescriptorBase.Name">

+            <summary>

+            Returns the name of the entity (field, message etc) being described.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.DescriptorBase.FullName">

+            <summary>

+            The fully qualified name of the descriptor's target.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.DescriptorBase.File">

+            <value>

+            The file this descriptor was declared in.

+            </value>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.DescriptorPool">

+            <summary>

+            Contains lookup tables containing all the descriptors defined in a particular file.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.DescriptorPool.FindSymbol``1(System.String)">

+            <summary>

+            Finds a symbol of the given name within the pool.

+            </summary>

+            <typeparam name="T">The type of symbol to look for</typeparam>

+            <param name="fullName">Fully-qualified name to look up</param>

+            <returns>The symbol with the given name and type,

+            or null if the symbol doesn't exist or has the wrong type</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.DescriptorPool.AddPackage(System.String,Google.Protobuf.Reflection.FileDescriptor)">

+            <summary>

+            Adds a package to the symbol tables. If a package by the same name

+            already exists, that is fine, but if some other kind of symbol

+            exists under the same name, an exception is thrown. If the package

+            has multiple components, this also adds the parent package(s).

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.DescriptorPool.AddSymbol(Google.Protobuf.Reflection.IDescriptor)">

+            <summary>

+            Adds a symbol to the symbol table.

+            </summary>

+            <exception cref="T:Google.Protobuf.Reflection.DescriptorValidationException">The symbol already existed

+            in the symbol table.</exception>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.DescriptorPool.ValidateSymbolName(Google.Protobuf.Reflection.IDescriptor)">

+            <summary>

+            Verifies that the descriptor's name is valid (i.e. it contains

+            only letters, digits and underscores, and does not start with a digit).

+            </summary>

+            <param name="descriptor"></param>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.DescriptorPool.FindFieldByNumber(Google.Protobuf.Reflection.MessageDescriptor,System.Int32)">

+            <summary>

+            Returns the field with the given number in the given descriptor,

+            or null if it can't be found.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.DescriptorPool.AddFieldByNumber(Google.Protobuf.Reflection.FieldDescriptor)">

+            <summary>

+            Adds a field to the fieldsByNumber table.

+            </summary>

+            <exception cref="T:Google.Protobuf.Reflection.DescriptorValidationException">A field with the same

+            containing type and number already exists.</exception>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.DescriptorPool.AddEnumValueByNumber(Google.Protobuf.Reflection.EnumValueDescriptor)">

+            <summary>

+            Adds an enum value to the enumValuesByNumber table. If an enum value

+            with the same type and number already exists, this method does nothing.

+            (This is allowed; the first value defined with the number takes precedence.)

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.DescriptorPool.LookupSymbol(System.String,Google.Protobuf.Reflection.IDescriptor)">

+            <summary>

+            Looks up a descriptor by name, relative to some other descriptor.

+            The name may be fully-qualified (with a leading '.'), partially-qualified,

+            or unqualified. C++-like name lookup semantics are used to search for the

+            matching descriptor.

+            </summary>

+            <remarks>

+            This isn't heavily optimized, but it's only used during cross linking anyway.

+            If it starts being used more widely, we should look at performance more carefully.

+            </remarks>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.DescriptorPool.DescriptorIntPair">

+            <summary>

+            Struct used to hold the keys for the fieldByNumber table.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.DescriptorUtil">

+            <summary>

+            Internal class containing utility methods when working with descriptors.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.DescriptorUtil.IndexedConverter`2">

+            <summary>

+            Equivalent to Func[TInput, int, TOutput] but usable in .NET 2.0. Only used to convert

+            arrays.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.DescriptorUtil.ConvertAndMakeReadOnly``2(System.Collections.Generic.IList{``0},Google.Protobuf.Reflection.DescriptorUtil.IndexedConverter{``0,``1})">

+            <summary>

+            Converts the given array into a read-only list, applying the specified conversion to

+            each input element.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.DescriptorValidationException">

+            <summary>

+            Thrown when building descriptors fails because the source DescriptorProtos

+            are not valid.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.DescriptorValidationException.ProblemSymbolName">

+            <value>

+            The full name of the descriptor where the error occurred.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.DescriptorValidationException.Description">

+            <value>

+            A human-readable description of the error. (The Message property

+            is made up of the descriptor's name and this description.)

+            </value>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.EnumDescriptor">

+            <summary>

+            Descriptor for an enum type in a .proto file.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumDescriptor.Name">

+            <summary>

+            The brief name of the descriptor's target.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumDescriptor.ClrType">

+            <summary>

+            The CLR type for this enum. For generated code, this will be a CLR enum type.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumDescriptor.ContainingType">

+            <value>

+            If this is a nested type, get the outer descriptor, otherwise null.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumDescriptor.Values">

+            <value>

+            An unmodifiable list of defined value descriptors for this enum.

+            </value>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.EnumDescriptor.FindValueByNumber(System.Int32)">

+            <summary>

+            Finds an enum value by number. If multiple enum values have the

+            same number, this returns the first defined value with that number.

+            If there is no value for the given number, this returns <c>null</c>.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.EnumDescriptor.FindValueByName(System.String)">

+            <summary>

+            Finds an enum value by name.

+            </summary>

+            <param name="name">The unqualified name of the value (e.g. "FOO").</param>

+            <returns>The value's descriptor, or null if not found.</returns>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumDescriptor.CustomOptions">

+            <summary>

+            The (possibly empty) set of custom options for this enum.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.EnumValueDescriptor">

+            <summary>

+            Descriptor for a single enum value within an enum in a .proto file.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumValueDescriptor.Name">

+            <summary>

+            Returns the name of the enum value described by this object.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumValueDescriptor.Number">

+            <summary>

+            Returns the number associated with this enum value.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumValueDescriptor.EnumDescriptor">

+            <summary>

+            Returns the enum descriptor that this value is part of.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumValueDescriptor.CustomOptions">

+            <summary>

+            The (possibly empty) set of custom options for this enum value.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.FieldAccessorBase">

+            <summary>

+            Base class for field accessors.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.FieldDescriptor">

+            <summary>

+            Descriptor for a field or extension within a message in a .proto file.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptor.ContainingType">

+            <summary>

+            Get the field's containing message type.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptor.ContainingOneof">

+            <summary>

+            Returns the oneof containing this field, or <c>null</c> if it is not part of a oneof.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptor.JsonName">

+            <summary>

+            The effective JSON name for this field. This is usually the lower-camel-cased form of the field name,

+            but can be overridden using the <c>json_name</c> option in the .proto file.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptor.Name">

+            <summary>

+            The brief name of the descriptor's target.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptor.Accessor">

+            <summary>

+            Returns the accessor for this field.

+            </summary>

+            <remarks>

+            <para>

+            While a <see cref="T:Google.Protobuf.Reflection.FieldDescriptor"/> describes the field, it does not provide

+            any way of obtaining or changing the value of the field within a specific message;

+            that is the responsibility of the accessor.

+            </para>

+            <para>

+            The value returned by this property will be non-null for all regular fields. However,

+            if a message containing a map field is introspected, the list of nested messages will include

+            an auto-generated nested key/value pair message for the field. This is not represented in any

+            generated type, and the value of the map field itself is represented by a dictionary in the

+            reflection API. There are never instances of those "hidden" messages, so no accessor is provided

+            and this property will return null.

+            </para>

+            </remarks>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.FieldDescriptor.GetFieldTypeFromProtoType(Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type)">

+            <summary>

+            Maps a field type as included in the .proto file to a FieldType.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptor.IsRepeated">

+            <summary>

+            Returns <c>true</c> if this field is a repeated field; <c>false</c> otherwise.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptor.IsMap">

+            <summary>

+            Returns <c>true</c> if this field is a map field; <c>false</c> otherwise.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptor.IsPacked">

+            <summary>

+            Returns <c>true</c> if this field is a packed, repeated field; <c>false</c> otherwise.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptor.FieldType">

+            <summary>

+            Returns the type of the field.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptor.FieldNumber">

+            <summary>

+            Returns the field number declared in the proto file.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.FieldDescriptor.CompareTo(Google.Protobuf.Reflection.FieldDescriptor)">

+            <summary>

+            Compares this descriptor with another one, ordering in "canonical" order

+            which simply means ascending order by field number. <paramref name="other"/>

+            must be a field of the same type, i.e. the <see cref="P:Google.Protobuf.Reflection.FieldDescriptor.ContainingType"/> of

+            both fields must be the same.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptor.EnumType">

+            <summary>

+            For enum fields, returns the field's type.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptor.MessageType">

+            <summary>

+            For embedded message and group fields, returns the field's type.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptor.CustomOptions">

+            <summary>

+            The (possibly empty) set of custom options for this field.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.FieldDescriptor.CrossLink">

+            <summary>

+            Look up and cross-link all field types etc.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.FieldType">

+            <summary>

+            Enumeration of all the possible field types.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.Double">

+            <summary>

+            The <c>double</c> field type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.Float">

+            <summary>

+            The <c>float</c> field type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.Int64">

+            <summary>

+            The <c>int64</c> field type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.UInt64">

+            <summary>

+            The <c>uint64</c> field type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.Int32">

+            <summary>

+            The <c>int32</c> field type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.Fixed64">

+            <summary>

+            The <c>fixed64</c> field type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.Fixed32">

+            <summary>

+            The <c>fixed32</c> field type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.Bool">

+            <summary>

+            The <c>bool</c> field type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.String">

+            <summary>

+            The <c>string</c> field type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.Group">

+            <summary>

+            The field type used for groups (not supported in this implementation).

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.Message">

+            <summary>

+            The field type used for message fields.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.Bytes">

+            <summary>

+            The <c>bytes</c> field type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.UInt32">

+            <summary>

+            The <c>uint32</c> field type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.SFixed32">

+            <summary>

+            The <c>sfixed32</c> field type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.SFixed64">

+            <summary>

+            The <c>sfixed64</c> field type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.SInt32">

+            <summary>

+            The <c>sint32</c> field type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.SInt64">

+            <summary>

+            The <c>sint64</c> field type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.Enum">

+            <summary>

+            The field type used for enum fields.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.FileDescriptor">

+            <summary>

+            Describes a .proto file, including everything defined within.

+            IDescriptor is implemented such that the File property returns this descriptor,

+            and the FullName is the same as the Name.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.FileDescriptor.ComputeFullName(Google.Protobuf.Reflection.MessageDescriptor,System.String)">

+            <summary>

+            Computes the full name of a descriptor within this file, with an optional parent message.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.FileDescriptor.DeterminePublicDependencies(Google.Protobuf.Reflection.FileDescriptor,Google.Protobuf.Reflection.FileDescriptorProto,Google.Protobuf.Reflection.FileDescriptor[],System.Boolean)">

+            <summary>

+            Extracts public dependencies from direct dependencies. This is a static method despite its

+            first parameter, as the value we're in the middle of constructing is only used for exceptions.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptor.Proto">

+            <value>

+            The descriptor in its protocol message representation.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptor.Name">

+            <value>

+            The file name.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptor.Package">

+            <summary>

+            The package as declared in the .proto file. This may or may not

+            be equivalent to the .NET namespace of the generated classes.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptor.MessageTypes">

+            <value>

+            Unmodifiable list of top-level message types declared in this file.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptor.EnumTypes">

+            <value>

+            Unmodifiable list of top-level enum types declared in this file.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptor.Services">

+            <value>

+            Unmodifiable list of top-level services declared in this file.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptor.Dependencies">

+            <value>

+            Unmodifiable list of this file's dependencies (imports).

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptor.PublicDependencies">

+            <value>

+            Unmodifiable list of this file's public dependencies (public imports).

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptor.SerializedData">

+            <value>

+            The original serialized binary form of this descriptor.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptor.Google#Protobuf#Reflection#IDescriptor#FullName">

+            <value>

+            Implementation of IDescriptor.FullName - just returns the same as Name.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptor.Google#Protobuf#Reflection#IDescriptor#File">

+            <value>

+            Implementation of IDescriptor.File - just returns this descriptor.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptor.DescriptorPool">

+            <value>

+            Pool containing symbol descriptors.

+            </value>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.FileDescriptor.FindTypeByName``1(System.String)">

+            <summary>

+            Finds a type (message, enum, service or extension) in the file by name. Does not find nested types.

+            </summary>

+            <param name="name">The unqualified type name to look for.</param>

+            <typeparam name="T">The type of descriptor to look for</typeparam>

+            <returns>The type's descriptor, or null if not found.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.FileDescriptor.BuildFrom(Google.Protobuf.ByteString,Google.Protobuf.Reflection.FileDescriptorProto,Google.Protobuf.Reflection.FileDescriptor[],System.Boolean,Google.Protobuf.Reflection.GeneratedClrTypeInfo)">

+            <summary>

+            Builds a FileDescriptor from its protocol buffer representation.

+            </summary>

+            <param name="descriptorData">The original serialized descriptor data.

+            We have only limited proto2 support, so serializing FileDescriptorProto

+            would not necessarily give us this.</param>

+            <param name="proto">The protocol message form of the FileDescriptor.</param>

+            <param name="dependencies">FileDescriptors corresponding to all of the

+            file's dependencies, in the exact order listed in the .proto file. May be null,

+            in which case it is treated as an empty array.</param>

+            <param name="allowUnknownDependencies">Whether unknown dependencies are ignored (true) or cause an exception to be thrown (false).</param>

+            <param name="generatedCodeInfo">Details about generated code, for the purposes of reflection.</param>

+            <exception cref="T:Google.Protobuf.Reflection.DescriptorValidationException">If <paramref name="proto"/> is not

+            a valid descriptor. This can occur for a number of reasons, such as a field

+            having an undefined type or because two messages were defined with the same name.</exception>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.FileDescriptor.FromGeneratedCode(System.Byte[],Google.Protobuf.Reflection.FileDescriptor[],Google.Protobuf.Reflection.GeneratedClrTypeInfo)">

+            <summary>

+            Creates a descriptor for generated code.

+            </summary>

+            <remarks>

+            This method is only designed to be used by the results of generating code with protoc,

+            which creates the appropriate dependencies etc. It has to be public because the generated

+            code is "external", but should not be called directly by end users.

+            </remarks>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.FileDescriptor.ToString">

+            <summary>

+            Returns a <see cref="T:System.String" /> that represents this instance.

+            </summary>

+            <returns>

+            A <see cref="T:System.String" /> that represents this instance.

+            </returns>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptor.DescriptorProtoFileDescriptor">

+            <summary>

+            Returns the file descriptor for descriptor.proto.

+            </summary>

+            <remarks>

+            This is used for protos which take a direct dependency on <c>descriptor.proto</c>, typically for

+            annotations. While <c>descriptor.proto</c> is a proto2 file, it is built into the Google.Protobuf

+            runtime for reflection purposes. The messages are internal to the runtime as they would require

+            proto2 semantics for full support, but the file descriptor is available via this property. The

+            C# codegen in protoc automatically uses this property when it detects a dependency on <c>descriptor.proto</c>.

+            </remarks>

+            <value>

+            The file descriptor for <c>descriptor.proto</c>.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptor.CustomOptions">

+            <summary>

+            The (possibly empty) set of custom options for this file.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.FileDescriptor.ForceReflectionInitialization``1">

+            <summary>

+            Performs initialization for the given generic type argument.

+            </summary>

+            <remarks>

+            This method is present for the sake of AOT compilers. It allows code (whether handwritten or generated)

+            to make calls into the reflection machinery of this library to express an intention to use that type

+            reflectively (e.g. for JSON parsing and formatting). The call itself does almost nothing, but AOT compilers

+            attempting to determine which generic type arguments need to be handled will spot the code path and act

+            accordingly.

+            </remarks>

+            <typeparam name="T">The type to force initialization for.</typeparam>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.GeneratedClrTypeInfo">

+            <summary>

+            Extra information provided by generated code when initializing a message or file descriptor.

+            These are constructed as required, and are not long-lived. Hand-written code should

+            never need to use this type.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.GeneratedClrTypeInfo.ClrType">

+            <summary>

+            Irrelevant for file descriptors; the CLR type for the message for message descriptors.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.GeneratedClrTypeInfo.Parser">

+            <summary>

+            Irrelevant for file descriptors; the parser for message descriptors.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.GeneratedClrTypeInfo.PropertyNames">

+            <summary>

+            Irrelevant for file descriptors; the CLR property names (in message descriptor field order)

+            for fields in the message for message descriptors.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.GeneratedClrTypeInfo.OneofNames">

+            <summary>

+            Irrelevant for file descriptors; the CLR property "base" names (in message descriptor oneof order)

+            for oneofs in the message for message descriptors. It is expected that for a oneof name of "Foo",

+            there will be a "FooCase" property and a "ClearFoo" method.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.GeneratedClrTypeInfo.NestedTypes">

+            <summary>

+            The reflection information for types within this file/message descriptor. Elements may be null

+            if there is no corresponding generated type, e.g. for map entry types.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.GeneratedClrTypeInfo.NestedEnums">

+            <summary>

+            The CLR types for enums within this file/message descriptor.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.GeneratedClrTypeInfo.#ctor(System.Type,Google.Protobuf.MessageParser,System.String[],System.String[],System.Type[],Google.Protobuf.Reflection.GeneratedClrTypeInfo[])">

+            <summary>

+            Creates a GeneratedClrTypeInfo for a message descriptor, with nested types, nested enums, the CLR type, property names and oneof names.

+            Each array parameter may be null, to indicate a lack of values.

+            The parameter order is designed to make it feasible to format the generated code readably.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.GeneratedClrTypeInfo.#ctor(System.Type[],Google.Protobuf.Reflection.GeneratedClrTypeInfo[])">

+            <summary>

+            Creates a GeneratedClrTypeInfo for a file descriptor, with only types and enums.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.IDescriptor">

+            <summary>

+            Interface implemented by all descriptor types.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.IDescriptor.Name">

+            <summary>

+            Returns the name of the entity (message, field etc) being described.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.IDescriptor.FullName">

+            <summary>

+            Returns the fully-qualified name of the entity being described.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.IDescriptor.File">

+            <summary>

+            Returns the descriptor for the .proto file that this entity is part of.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.IFieldAccessor">

+            <summary>

+            Allows fields to be reflectively accessed.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.IFieldAccessor.Descriptor">

+            <summary>

+            Returns the descriptor associated with this field.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.IFieldAccessor.Clear(Google.Protobuf.IMessage)">

+            <summary>

+            Clears the field in the specified message. (For repeated fields,

+            this clears the list.)

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.IFieldAccessor.GetValue(Google.Protobuf.IMessage)">

+            <summary>

+            Fetches the field value. For repeated values, this will be an

+            <see cref="T:System.Collections.IList"/> implementation. For map values, this will be an

+            <see cref="T:System.Collections.IDictionary"/> implementation.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.IFieldAccessor.SetValue(Google.Protobuf.IMessage,System.Object)">

+            <summary>

+            Mutator for single "simple" fields only.

+            </summary>

+            <remarks>

+            Repeated fields are mutated by fetching the value and manipulating it as a list.

+            Map fields are mutated by fetching the value and manipulating it as a dictionary.

+            </remarks>

+            <exception cref="T:System.InvalidOperationException">The field is not a "simple" field.</exception>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.MapFieldAccessor">

+            <summary>

+            Accessor for map fields.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.MessageDescriptor">

+            <summary>

+            Describes a message type.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageDescriptor.Name">

+            <summary>

+            The brief name of the descriptor's target.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageDescriptor.ClrType">

+            <summary>

+            The CLR type used to represent message instances from this descriptor.

+            </summary>

+            <remarks>

+            <para>

+            The value returned by this property will be non-null for all regular fields. However,

+            if a message containing a map field is introspected, the list of nested messages will include

+            an auto-generated nested key/value pair message for the field. This is not represented in any

+            generated type, so this property will return null in such cases.

+            </para>

+            <para>

+            For wrapper types (<see cref="T:Google.Protobuf.WellKnownTypes.StringValue"/> and the like), the type returned here

+            will be the generated message type, not the native type used by reflection for fields of those types. Code

+            using reflection should call <see cref="P:Google.Protobuf.Reflection.MessageDescriptor.IsWrapperType"/> to determine whether a message descriptor represents

+            a wrapper type, and handle the result appropriately.

+            </para>

+            </remarks>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageDescriptor.Parser">

+            <summary>

+            A parser for this message type.

+            </summary>

+            <remarks>

+            <para>

+            As <see cref="T:Google.Protobuf.Reflection.MessageDescriptor"/> is not generic, this cannot be statically

+            typed to the relevant type, but it should produce objects of a type compatible with <see cref="P:Google.Protobuf.Reflection.MessageDescriptor.ClrType"/>.

+            </para>

+            <para>

+            The value returned by this property will be non-null for all regular fields. However,

+            if a message containing a map field is introspected, the list of nested messages will include

+            an auto-generated nested key/value pair message for the field. No message parser object is created for

+            such messages, so this property will return null in such cases.

+            </para>

+            <para>

+            For wrapper types (<see cref="T:Google.Protobuf.WellKnownTypes.StringValue"/> and the like), the parser returned here

+            will be the generated message type, not the native type used by reflection for fields of those types. Code

+            using reflection should call <see cref="P:Google.Protobuf.Reflection.MessageDescriptor.IsWrapperType"/> to determine whether a message descriptor represents

+            a wrapper type, and handle the result appropriately.

+            </para>

+            </remarks>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageDescriptor.IsWellKnownType">

+            <summary>

+            Returns whether this message is one of the "well known types" which may have runtime/protoc support.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageDescriptor.IsWrapperType">

+            <summary>

+            Returns whether this message is one of the "wrapper types" used for fields which represent primitive values

+            with the addition of presence.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageDescriptor.ContainingType">

+            <value>

+            If this is a nested type, get the outer descriptor, otherwise null.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageDescriptor.Fields">

+            <value>

+            A collection of fields, which can be retrieved by name or field number.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageDescriptor.NestedTypes">

+            <value>

+            An unmodifiable list of this message type's nested types.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageDescriptor.EnumTypes">

+            <value>

+            An unmodifiable list of this message type's enum types.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageDescriptor.Oneofs">

+            <value>

+            An unmodifiable list of the "oneof" field collections in this message type.

+            </value>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.MessageDescriptor.FindFieldByName(System.String)">

+            <summary>

+            Finds a field by field name.

+            </summary>

+            <param name="name">The unqualified name of the field (e.g. "foo").</param>

+            <returns>The field's descriptor, or null if not found.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.MessageDescriptor.FindFieldByNumber(System.Int32)">

+            <summary>

+            Finds a field by field number.

+            </summary>

+            <param name="number">The field number within this message type.</param>

+            <returns>The field's descriptor, or null if not found.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.MessageDescriptor.FindDescriptor``1(System.String)">

+            <summary>

+            Finds a nested descriptor by name. The is valid for fields, nested

+            message types, oneofs and enums.

+            </summary>

+            <param name="name">The unqualified name of the descriptor, e.g. "Foo"</param>

+            <returns>The descriptor, or null if not found.</returns>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageDescriptor.CustomOptions">

+            <summary>

+            The (possibly empty) set of custom options for this message.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.MessageDescriptor.CrossLink">

+            <summary>

+            Looks up and cross-links all fields and nested types.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.MessageDescriptor.FieldCollection">

+            <summary>

+            A collection to simplify retrieving the field accessor for a particular field.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.MessageDescriptor.FieldCollection.InDeclarationOrder">

+            <value>

+            Returns the fields in the message as an immutable list, in the order in which they

+            are declared in the source .proto file.

+            </value>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.MessageDescriptor.FieldCollection.InFieldNumberOrder">

+            <value>

+            Returns the fields in the message as an immutable list, in ascending field number

+            order. Field numbers need not be contiguous, so there is no direct mapping from the

+            index in the list to the field number; to retrieve a field by field number, it is better

+            to use the <see cref="T:Google.Protobuf.Reflection.MessageDescriptor.FieldCollection"/> indexer.

+            </value>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.MessageDescriptor.FieldCollection.ByJsonName">

+            <value>

+            Returns a read-only dictionary mapping the field names in this message as they're available

+            in the JSON representation to the field descriptors. For example, a field <c>foo_bar</c>

+            in the message would result two entries, one with a key <c>fooBar</c> and one with a key

+            <c>foo_bar</c>, both referring to the same field.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageDescriptor.FieldCollection.Item(System.Int32)">

+            <summary>

+            Retrieves the descriptor for the field with the given number.

+            </summary>

+            <param name="number">Number of the field to retrieve the descriptor for</param>

+            <returns>The accessor for the given field</returns>

+            <exception cref="T:System.Collections.Generic.KeyNotFoundException">The message descriptor does not contain a field

+            with the given number</exception>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageDescriptor.FieldCollection.Item(System.String)">

+            <summary>

+            Retrieves the descriptor for the field with the given name.

+            </summary>

+            <param name="name">Name of the field to retrieve the descriptor for</param>

+            <returns>The descriptor for the given field</returns>

+            <exception cref="T:System.Collections.Generic.KeyNotFoundException">The message descriptor does not contain a field

+            with the given name</exception>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.MethodDescriptor">

+            <summary>

+            Describes a single method in a service.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MethodDescriptor.Service">

+            <value>

+            The service this method belongs to.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MethodDescriptor.InputType">

+            <value>

+            The method's input type.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MethodDescriptor.OutputType">

+            <value>

+            The method's input type.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MethodDescriptor.IsClientStreaming">

+            <value>

+            Indicates if client streams multiple requests.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MethodDescriptor.IsServerStreaming">

+            <value>

+            Indicates if server streams multiple responses.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MethodDescriptor.CustomOptions">

+            <summary>

+            The (possibly empty) set of custom options for this method.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MethodDescriptor.Name">

+            <summary>

+            The brief name of the descriptor's target.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.OneofAccessor">

+            <summary>

+            Reflection access for a oneof, allowing clear and "get case" actions.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.OneofAccessor.Descriptor">

+            <summary>

+            Gets the descriptor for this oneof.

+            </summary>

+            <value>

+            The descriptor of the oneof.

+            </value>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.OneofAccessor.Clear(Google.Protobuf.IMessage)">

+            <summary>

+            Clears the oneof in the specified message.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.OneofAccessor.GetCaseFieldDescriptor(Google.Protobuf.IMessage)">

+            <summary>

+            Indicates which field in the oneof is set for specified message

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.OneofDescriptor">

+            <summary>

+            Describes a "oneof" field collection in a message type: a set of

+            fields of which at most one can be set in any particular message.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.OneofDescriptor.Name">

+            <summary>

+            The brief name of the descriptor's target.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.OneofDescriptor.ContainingType">

+            <summary>

+            Gets the message type containing this oneof.

+            </summary>

+            <value>

+            The message type containing this oneof.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.OneofDescriptor.Fields">

+            <summary>

+            Gets the fields within this oneof, in declaration order.

+            </summary>

+            <value>

+            The fields within this oneof, in declaration order.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.OneofDescriptor.Accessor">

+            <summary>

+            Gets an accessor for reflective access to the values associated with the oneof

+            in a particular message.

+            </summary>

+            <value>

+            The accessor used for reflective access.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.OneofDescriptor.CustomOptions">

+            <summary>

+            The (possibly empty) set of custom options for this oneof.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.OriginalNameAttribute">

+            <summary>

+            Specifies the original name (in the .proto file) of a named element,

+            such as an enum value.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.OriginalNameAttribute.Name">

+            <summary>

+            The name of the element in the .proto file.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.OriginalNameAttribute.PreferredAlias">

+            <summary>

+            If the name is preferred in the .proto file.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.OriginalNameAttribute.#ctor(System.String)">

+            <summary>

+            Constructs a new attribute instance for the given name.

+            </summary>

+            <param name="name">The name of the element in the .proto file.</param>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.PackageDescriptor">

+            <summary>

+            Represents a package in the symbol table.  We use PackageDescriptors

+            just as placeholders so that someone cannot define, say, a message type

+            that has the same name as an existing package.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.ReflectionUtil">

+            <summary>

+            The methods in this class are somewhat evil, and should not be tampered with lightly.

+            Basically they allow the creation of relatively weakly typed delegates from MethodInfos

+            which are more strongly typed. They do this by creating an appropriate strongly typed

+            delegate from the MethodInfo, and then calling that within an anonymous method.

+            Mind-bending stuff (at least to your humble narrator) but the resulting delegates are

+            very fast compared with calling Invoke later on.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.ReflectionUtil.EmptyTypes">

+            <summary>

+            Empty Type[] used when calling GetProperty to force property instead of indexer fetching.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.ReflectionUtil.CreateFuncIMessageObject(System.Reflection.MethodInfo)">

+            <summary>

+            Creates a delegate which will cast the argument to the type that declares the method,

+            call the method on it, then convert the result to object.

+            </summary>

+            <param name="method">The method to create a delegate for, which must be declared in an IMessage

+            implementation.</param>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.ReflectionUtil.CreateFuncIMessageInt32(System.Reflection.MethodInfo)">

+            <summary>

+            Creates a delegate which will cast the argument to the type that declares the method,

+            call the method on it, then convert the result to the specified type. The method is expected

+            to actually return an enum (because of where we're calling it - for oneof cases). Sometimes that

+            means we need some extra work to perform conversions.

+            </summary>

+            <param name="method">The method to create a delegate for, which must be declared in an IMessage

+            implementation.</param>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.ReflectionUtil.CreateActionIMessageObject(System.Reflection.MethodInfo)">

+            <summary>

+            Creates a delegate which will execute the given method after casting the first argument to

+            the type that declares the method, and the second argument to the first parameter type of the method.

+            </summary>

+            <param name="method">The method to create a delegate for, which must be declared in an IMessage

+            implementation.</param>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.ReflectionUtil.CreateActionIMessage(System.Reflection.MethodInfo)">

+            <summary>

+            Creates a delegate which will execute the given method after casting the first argument to

+            type that declares the method.

+            </summary>

+            <param name="method">The method to create a delegate for, which must be declared in an IMessage

+            implementation.</param>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.ReflectionUtil.GetReflectionHelper(System.Type,System.Type)">

+            <summary>

+            Creates a reflection helper for the given type arguments. Currently these are created on demand

+            rather than cached; this will be "busy" when initially loading a message's descriptor, but after that

+            they can be garbage collected. We could cache them by type if that proves to be important, but creating

+            an object is pretty cheap.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.RepeatedFieldAccessor">

+            <summary>

+            Accessor for repeated fields.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.ServiceDescriptor">

+            <summary>

+            Describes a service type.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.ServiceDescriptor.Name">

+            <summary>

+            The brief name of the descriptor's target.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.ServiceDescriptor.Methods">

+            <value>

+            An unmodifiable list of methods in this service.

+            </value>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.ServiceDescriptor.FindMethodByName(System.String)">

+            <summary>

+            Finds a method by name.

+            </summary>

+            <param name="name">The unqualified name of the method (e.g. "Foo").</param>

+            <returns>The method's decsriptor, or null if not found.</returns>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.ServiceDescriptor.CustomOptions">

+            <summary>

+            The (possibly empty) set of custom options for this service.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.SingleFieldAccessor">

+            <summary>

+            Accessor for single fields.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.TypeRegistry">

+            <summary>

+            An immutable registry of types which can be looked up by their full name.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.TypeRegistry.Empty">

+            <summary>

+            An empty type registry, containing no types.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.TypeRegistry.Find(System.String)">

+            <summary>

+            Attempts to find a message descriptor by its full name.

+            </summary>

+            <param name="fullName">The full name of the message, which is the dot-separated

+            combination of package, containing messages and message name</param>

+            <returns>The message descriptor corresponding to <paramref name="fullName"/> or null

+            if there is no such message descriptor.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.TypeRegistry.FromFiles(Google.Protobuf.Reflection.FileDescriptor[])">

+            <summary>

+            Creates a type registry from the specified set of file descriptors.

+            </summary>

+            <remarks>

+            This is a convenience overload for <see cref="M:Google.Protobuf.Reflection.TypeRegistry.FromFiles(System.Collections.Generic.IEnumerable{Google.Protobuf.Reflection.FileDescriptor})"/>

+            to allow calls such as <c>TypeRegistry.FromFiles(descriptor1, descriptor2)</c>.

+            </remarks>

+            <param name="fileDescriptors">The set of files to include in the registry. Must not contain null values.</param>

+            <returns>A type registry for the given files.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.TypeRegistry.FromFiles(System.Collections.Generic.IEnumerable{Google.Protobuf.Reflection.FileDescriptor})">

+            <summary>

+            Creates a type registry from the specified set of file descriptors.

+            </summary>

+            <remarks>

+            All message types within all the specified files are added to the registry, and

+            the dependencies of the specified files are also added, recursively.

+            </remarks>

+            <param name="fileDescriptors">The set of files to include in the registry. Must not contain null values.</param>

+            <returns>A type registry for the given files.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.TypeRegistry.FromMessages(Google.Protobuf.Reflection.MessageDescriptor[])">

+            <summary>

+            Creates a type registry from the file descriptor parents of the specified set of message descriptors.

+            </summary>

+            <remarks>

+            This is a convenience overload for <see cref="M:Google.Protobuf.Reflection.TypeRegistry.FromMessages(System.Collections.Generic.IEnumerable{Google.Protobuf.Reflection.MessageDescriptor})"/>

+            to allow calls such as <c>TypeRegistry.FromFiles(descriptor1, descriptor2)</c>.

+            </remarks>

+            <param name="messageDescriptors">The set of message descriptors to use to identify file descriptors to include in the registry.

+            Must not contain null values.</param>

+            <returns>A type registry for the given files.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.TypeRegistry.FromMessages(System.Collections.Generic.IEnumerable{Google.Protobuf.Reflection.MessageDescriptor})">

+            <summary>

+            Creates a type registry from the file descriptor parents of the specified set of message descriptors.

+            </summary>

+            <remarks>

+            The specified message descriptors are only used to identify their file descriptors; the returned registry

+            contains all the types within the file descriptors which contain the specified message descriptors (and

+            the dependencies of those files), not just the specified messages.

+            </remarks>

+            <param name="messageDescriptors">The set of message descriptors to use to identify file descriptors to include in the registry.

+            Must not contain null values.</param>

+            <returns>A type registry for the given files.</returns>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.TypeRegistry.Builder">

+            <summary>

+            Builder class which isn't exposed, but acts as a convenient alternative to passing round two dictionaries in recursive calls.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.UnknownField">

+             <summary>

+             Represents a single field in an UnknownFieldSet.

+            

+             An UnknownField consists of four lists of values. The lists correspond

+             to the four "wire types" used in the protocol buffer binary format.

+             Normally, only one of the four lists will contain any values, since it

+             is impossible to define a valid message type that declares two different

+             types for the same field number. However, the code is designed to allow

+             for the case where the same unknown field number is encountered using

+             multiple different wire types.

+            

+             </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownField.#ctor">

+            <summary>

+            Creates a new UnknownField.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownField.Equals(System.Object)">

+            <summary>

+            Checks if two unknown field are equal.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownField.GetHashCode">

+            <summary>

+            Get the hash code of the unknown field.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownField.WriteTo(System.Int32,Google.Protobuf.CodedOutputStream)">

+            <summary>

+            Serializes the field, including the field number, and writes it to

+            <paramref name="output"/>

+            </summary>

+            <param name="fieldNumber">The unknown field number.</param>

+            <param name="output">The CodedOutputStream to write to.</param>

+        </member>

+        <member name="M:Google.Protobuf.UnknownField.GetSerializedSize(System.Int32)">

+            <summary>

+            Computes the number of bytes required to encode this field, including field

+            number.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownField.MergeFrom(Google.Protobuf.UnknownField)">

+            <summary>

+            Merge the values in <paramref name="other" /> into this field.  For each list

+            of values, <paramref name="other"/>'s values are append to the ones in this

+            field.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownField.AddAll``1(System.Collections.Generic.List{``0},System.Collections.Generic.IList{``0})">

+            <summary>

+            Returns a new list containing all of the given specified values from

+            both the <paramref name="current"/> and <paramref name="extras"/> lists.

+            If <paramref name="current" /> is null and <paramref name="extras"/> is empty,

+            null is returned. Otherwise, either a new list is created (if <paramref name="current" />

+            is null) or the elements of <paramref name="extras"/> are added to <paramref name="current" />.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownField.AddVarint(System.UInt64)">

+            <summary>

+            Adds a varint value.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownField.AddFixed32(System.UInt32)">

+            <summary>

+            Adds a fixed32 value.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownField.AddFixed64(System.UInt64)">

+            <summary>

+            Adds a fixed64 value.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownField.AddLengthDelimited(Google.Protobuf.ByteString)">

+            <summary>

+            Adds a length-delimited value.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownField.Add``1(System.Collections.Generic.List{``0},``0)">

+            <summary>

+            Adds <paramref name="value"/> to the <paramref name="list"/>, creating

+            a new list if <paramref name="list"/> is null. The list is returned - either

+            the original reference or the new list.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.UnknownFieldSet">

+             <summary>

+             Used to keep track of fields which were seen when parsing a protocol message

+             but whose field numbers or types are unrecognized. This most frequently

+             occurs when new fields are added to a message type and then messages containing

+             those fields are read by old software that was built before the new types were

+             added.

+            

+             Most users will never need to use this class directly.

+             </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownFieldSet.#ctor">

+            <summary>

+            Creates a new UnknownFieldSet.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownFieldSet.HasField(System.Int32)">

+            <summary>

+            Checks whether or not the given field number is present in the set.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownFieldSet.WriteTo(Google.Protobuf.CodedOutputStream)">

+            <summary>

+            Serializes the set and writes it to <paramref name="output"/>.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownFieldSet.CalculateSize">

+            <summary>

+            Gets the number of bytes required to encode this set.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownFieldSet.Equals(System.Object)">

+            <summary>

+            Checks if two unknown field sets are equal.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownFieldSet.GetHashCode">

+            <summary>

+            Gets the unknown field set's hash code.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownFieldSet.AddOrReplaceField(System.Int32,Google.Protobuf.UnknownField)">

+            <summary>

+            Adds a field to the set. If a field with the same number already exists, it

+            is replaced.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownFieldSet.MergeFieldFrom(Google.Protobuf.CodedInputStream)">

+            <summary>

+            Parse a single field from <paramref name="input"/> and merge it

+            into this set.

+            </summary>

+            <param name="input">The coded input stream containing the field</param>

+            <returns>false if the tag is an "end group" tag, true otherwise</returns>

+        </member>

+        <member name="M:Google.Protobuf.UnknownFieldSet.MergeFieldFrom(Google.Protobuf.UnknownFieldSet,Google.Protobuf.CodedInputStream)">

+            <summary>

+            Create a new UnknownFieldSet if unknownFields is null.

+            Parse a single field from <paramref name="input"/> and merge it

+            into unknownFields. If <paramref name="input"/> is configured to discard unknown fields,

+            <paramref name="unknownFields"/> will be returned as-is and the field will be skipped.

+            </summary>

+            <param name="unknownFields">The UnknownFieldSet which need to be merged</param>

+            <param name="input">The coded input stream containing the field</param>

+            <returns>The merged UnknownFieldSet</returns>

+        </member>

+        <member name="M:Google.Protobuf.UnknownFieldSet.MergeFrom(Google.Protobuf.UnknownFieldSet)">

+            <summary>

+            Merges the fields from <paramref name="other"/> into this set.

+            If a field number exists in both sets, the values in <paramref name="other"/>

+            will be appended to the values in this set.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownFieldSet.MergeFrom(Google.Protobuf.UnknownFieldSet,Google.Protobuf.UnknownFieldSet)">

+            <summary>

+            Created a new UnknownFieldSet to <paramref name="unknownFields"/> if

+            needed and merges the fields from <paramref name="other"/> into the first set.

+            If a field number exists in both sets, the values in <paramref name="other"/>

+            will be appended to the values in this set.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownFieldSet.MergeField(System.Int32,Google.Protobuf.UnknownField)">

+            <summary>

+            Adds a field to the unknown field set. If a field with the same

+            number already exists, the two are merged.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownFieldSet.Clone(Google.Protobuf.UnknownFieldSet)">

+            <summary>

+            Clone an unknown field set from <paramref name="other"/>.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.AnyReflection">

+            <summary>Holder for reflection information generated from google/protobuf/any.proto</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.AnyReflection.Descriptor">

+            <summary>File descriptor for google/protobuf/any.proto</summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Any">

+             <summary>

+             `Any` contains an arbitrary serialized protocol buffer message along with a

+             URL that describes the type of the serialized message.

+            

+             Protobuf library provides support to pack/unpack Any values in the form

+             of utility functions or additional generated methods of the Any type.

+            

+             Example 1: Pack and unpack a message in C++.

+            

+                 Foo foo = ...;

+                 Any any;

+                 any.PackFrom(foo);

+                 ...

+                 if (any.UnpackTo(&amp;foo)) {

+                   ...

+                 }

+            

+             Example 2: Pack and unpack a message in Java.

+            

+                 Foo foo = ...;

+                 Any any = Any.pack(foo);

+                 ...

+                 if (any.is(Foo.class)) {

+                   foo = any.unpack(Foo.class);

+                 }

+            

+              Example 3: Pack and unpack a message in Python.

+            

+                 foo = Foo(...)

+                 any = Any()

+                 any.Pack(foo)

+                 ...

+                 if any.Is(Foo.DESCRIPTOR):

+                   any.Unpack(foo)

+                   ...

+            

+              Example 4: Pack and unpack a message in Go

+            

+                  foo := &amp;pb.Foo{...}

+                  any, err := ptypes.MarshalAny(foo)

+                  ...

+                  foo := &amp;pb.Foo{}

+                  if err := ptypes.UnmarshalAny(any, foo); err != nil {

+                    ...

+                  }

+            

+             The pack methods provided by protobuf library will by default use

+             'type.googleapis.com/full.type.name' as the type URL and the unpack

+             methods only use the fully qualified type name after the last '/'

+             in the type URL, for example "foo.bar.com/x/y.z" will yield type

+             name "y.z".

+            

+             JSON

+             ====

+             The JSON representation of an `Any` value uses the regular

+             representation of the deserialized, embedded message, with an

+             additional field `@type` which contains the type URL. Example:

+            

+                 package google.profile;

+                 message Person {

+                   string first_name = 1;

+                   string last_name = 2;

+                 }

+            

+                 {

+                   "@type": "type.googleapis.com/google.profile.Person",

+                   "firstName": &lt;string>,

+                   "lastName": &lt;string>

+                 }

+            

+             If the embedded message type is well-known and has a custom JSON

+             representation, that representation will be embedded adding a field

+             `value` which holds the custom JSON in addition to the `@type`

+             field. Example (for message [google.protobuf.Duration][]):

+            

+                 {

+                   "@type": "type.googleapis.com/google.protobuf.Duration",

+                   "value": "1.212s"

+                 }

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Any.TypeUrlFieldNumber">

+            <summary>Field number for the "type_url" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Any.TypeUrl">

+             <summary>

+             A URL/resource name that uniquely identifies the type of the serialized

+             protocol buffer message. The last segment of the URL's path must represent

+             the fully qualified name of the type (as in

+             `path/google.protobuf.Duration`). The name should be in a canonical form

+             (e.g., leading "." is not accepted).

+            

+             In practice, teams usually precompile into the binary all types that they

+             expect it to use in the context of Any. However, for URLs which use the

+             scheme `http`, `https`, or no scheme, one can optionally set up a type

+             server that maps type URLs to message definitions as follows:

+            

+             * If no scheme is provided, `https` is assumed.

+             * An HTTP GET on the URL must yield a [google.protobuf.Type][]

+               value in binary format, or produce an error.

+             * Applications are allowed to cache lookup results based on the

+               URL, or have them precompiled into a binary to avoid any

+               lookup. Therefore, binary compatibility needs to be preserved

+               on changes to types. (Use versioned type names to manage

+               breaking changes.)

+            

+             Note: this functionality is not currently available in the official

+             protobuf release, and it is not used for type URLs beginning with

+             type.googleapis.com.

+            

+             Schemes other than `http`, `https` (or the empty scheme) might be

+             used with implementation specific semantics.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Any.ValueFieldNumber">

+            <summary>Field number for the "value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Any.Value">

+            <summary>

+            Must be a valid serialized protocol buffer of the above specified type.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Any.GetTypeName(System.String)">

+            <summary>

+            Retrieves the type name for a type URL, matching the <see cref="P:Google.Protobuf.Reflection.DescriptorBase.FullName"/>

+            of the packed message type.

+            </summary>

+            <remarks>

+            <para>

+            This is always just the last part of the URL, after the final slash. No validation of 

+            anything before the trailing slash is performed. If the type URL does not include a slash,

+            an empty string is returned rather than an exception being thrown; this won't match any types,

+            and the calling code is probably in a better position to give a meaningful error.

+            </para>

+            <para>

+            There is no handling of fragments or queries  at the moment.

+            </para>

+            </remarks>

+            <param name="typeUrl">The URL to extract the type name from</param>

+            <returns>The type name</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Any.Unpack``1">

+            <summary>

+            Unpacks the content of this Any message into the target message type,

+            which must match the type URL within this Any message.

+            </summary>

+            <typeparam name="T">The type of message to unpack the content into.</typeparam>

+            <returns>The unpacked message.</returns>

+            <exception cref="T:Google.Protobuf.InvalidProtocolBufferException">The target message type doesn't match the type URL in this message</exception>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Any.TryUnpack``1(``0@)">

+            <summary>

+            Attempts to unpack the content of this Any message into the target message type,

+            if it matches the type URL within this Any message.

+            </summary>

+            <typeparam name="T">The type of message to attempt to unpack the content into.</typeparam>

+            <returns><c>true</c> if the message was successfully unpacked; <c>false</c> if the type name didn't match</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Any.Pack(Google.Protobuf.IMessage)">

+            <summary>

+            Packs the specified message into an Any message using a type URL prefix of "type.googleapis.com".

+            </summary>

+            <param name="message">The message to pack.</param>

+            <returns>An Any message with the content and type URL of <paramref name="message"/>.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Any.Pack(Google.Protobuf.IMessage,System.String)">

+            <summary>

+            Packs the specified message into an Any message using the specified type URL prefix.

+            </summary>

+            <param name="message">The message to pack.</param>

+            <param name="typeUrlPrefix">The prefix for the type URL.</param>

+            <returns>An Any message with the content and type URL of <paramref name="message"/>.</returns>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.ApiReflection">

+            <summary>Holder for reflection information generated from google/protobuf/api.proto</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.ApiReflection.Descriptor">

+            <summary>File descriptor for google/protobuf/api.proto</summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Api">

+             <summary>

+             Api is a light-weight descriptor for an API Interface.

+            

+             Interfaces are also described as "protocol buffer services" in some contexts,

+             such as by the "service" keyword in a .proto file, but they are different

+             from API Services, which represent a concrete implementation of an interface

+             as opposed to simply a description of methods and bindings. They are also

+             sometimes simply referred to as "APIs" in other contexts, such as the name of

+             this message itself. See https://cloud.google.com/apis/design/glossary for

+             detailed terminology.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Api.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Api.Name">

+            <summary>

+            The fully qualified name of this interface, including package name

+            followed by the interface's simple name.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Api.MethodsFieldNumber">

+            <summary>Field number for the "methods" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Api.Methods">

+            <summary>

+            The methods of this interface, in unspecified order.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Api.OptionsFieldNumber">

+            <summary>Field number for the "options" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Api.Options">

+            <summary>

+            Any metadata attached to the interface.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Api.VersionFieldNumber">

+            <summary>Field number for the "version" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Api.Version">

+             <summary>

+             A version string for this interface. If specified, must have the form

+             `major-version.minor-version`, as in `1.10`. If the minor version is

+             omitted, it defaults to zero. If the entire version field is empty, the

+             major version is derived from the package name, as outlined below. If the

+             field is not empty, the version in the package name will be verified to be

+             consistent with what is provided here.

+            

+             The versioning schema uses [semantic

+             versioning](http://semver.org) where the major version number

+             indicates a breaking change and the minor version an additive,

+             non-breaking change. Both version numbers are signals to users

+             what to expect from different versions, and should be carefully

+             chosen based on the product plan.

+            

+             The major version is also reflected in the package name of the

+             interface, which must end in `v&lt;major-version>`, as in

+             `google.feature.v1`. For major versions 0 and 1, the suffix can

+             be omitted. Zero major versions must only be used for

+             experimental, non-GA interfaces.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Api.SourceContextFieldNumber">

+            <summary>Field number for the "source_context" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Api.SourceContext">

+            <summary>

+            Source context for the protocol buffer service represented by this

+            message.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Api.MixinsFieldNumber">

+            <summary>Field number for the "mixins" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Api.Mixins">

+            <summary>

+            Included interfaces. See [Mixin][].

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Api.SyntaxFieldNumber">

+            <summary>Field number for the "syntax" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Api.Syntax">

+            <summary>

+            The source syntax of the service.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Method">

+            <summary>

+            Method represents a method of an API interface.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Method.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Method.Name">

+            <summary>

+            The simple name of this method.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Method.RequestTypeUrlFieldNumber">

+            <summary>Field number for the "request_type_url" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Method.RequestTypeUrl">

+            <summary>

+            A URL of the input message type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Method.RequestStreamingFieldNumber">

+            <summary>Field number for the "request_streaming" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Method.RequestStreaming">

+            <summary>

+            If true, the request is streamed.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Method.ResponseTypeUrlFieldNumber">

+            <summary>Field number for the "response_type_url" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Method.ResponseTypeUrl">

+            <summary>

+            The URL of the output message type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Method.ResponseStreamingFieldNumber">

+            <summary>Field number for the "response_streaming" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Method.ResponseStreaming">

+            <summary>

+            If true, the response is streamed.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Method.OptionsFieldNumber">

+            <summary>Field number for the "options" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Method.Options">

+            <summary>

+            Any metadata attached to the method.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Method.SyntaxFieldNumber">

+            <summary>Field number for the "syntax" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Method.Syntax">

+            <summary>

+            The source syntax of this method.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Mixin">

+             <summary>

+             Declares an API Interface to be included in this interface. The including

+             interface must redeclare all the methods from the included interface, but

+             documentation and options are inherited as follows:

+            

+             - If after comment and whitespace stripping, the documentation

+               string of the redeclared method is empty, it will be inherited

+               from the original method.

+            

+             - Each annotation belonging to the service config (http,

+               visibility) which is not set in the redeclared method will be

+               inherited.

+            

+             - If an http annotation is inherited, the path pattern will be

+               modified as follows. Any version prefix will be replaced by the

+               version of the including interface plus the [root][] path if

+               specified.

+            

+             Example of a simple mixin:

+            

+                 package google.acl.v1;

+                 service AccessControl {

+                   // Get the underlying ACL object.

+                   rpc GetAcl(GetAclRequest) returns (Acl) {

+                     option (google.api.http).get = "/v1/{resource=**}:getAcl";

+                   }

+                 }

+            

+                 package google.storage.v2;

+                 service Storage {

+                   rpc GetAcl(GetAclRequest) returns (Acl);

+            

+                   // Get a data record.

+                   rpc GetData(GetDataRequest) returns (Data) {

+                     option (google.api.http).get = "/v2/{resource=**}";

+                   }

+                 }

+            

+             Example of a mixin configuration:

+            

+                 apis:

+                 - name: google.storage.v2.Storage

+                   mixins:

+                   - name: google.acl.v1.AccessControl

+            

+             The mixin construct implies that all methods in `AccessControl` are

+             also declared with same name and request/response types in

+             `Storage`. A documentation generator or annotation processor will

+             see the effective `Storage.GetAcl` method after inherting

+             documentation and annotations as follows:

+            

+                 service Storage {

+                   // Get the underlying ACL object.

+                   rpc GetAcl(GetAclRequest) returns (Acl) {

+                     option (google.api.http).get = "/v2/{resource=**}:getAcl";

+                   }

+                   ...

+                 }

+            

+             Note how the version in the path pattern changed from `v1` to `v2`.

+            

+             If the `root` field in the mixin is specified, it should be a

+             relative path under which inherited HTTP paths are placed. Example:

+            

+                 apis:

+                 - name: google.storage.v2.Storage

+                   mixins:

+                   - name: google.acl.v1.AccessControl

+                     root: acls

+            

+             This implies the following inherited HTTP annotation:

+            

+                 service Storage {

+                   // Get the underlying ACL object.

+                   rpc GetAcl(GetAclRequest) returns (Acl) {

+                     option (google.api.http).get = "/v2/acls/{resource=**}:getAcl";

+                   }

+                   ...

+                 }

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Mixin.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Mixin.Name">

+            <summary>

+            The fully qualified name of the interface which is included.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Mixin.RootFieldNumber">

+            <summary>Field number for the "root" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Mixin.Root">

+            <summary>

+            If non-empty specifies a path under which inherited HTTP paths

+            are rooted.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.DurationReflection">

+            <summary>Holder for reflection information generated from google/protobuf/duration.proto</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.DurationReflection.Descriptor">

+            <summary>File descriptor for google/protobuf/duration.proto</summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Duration">

+             <summary>

+             A Duration represents a signed, fixed-length span of time represented

+             as a count of seconds and fractions of seconds at nanosecond

+             resolution. It is independent of any calendar and concepts like "day"

+             or "month". It is related to Timestamp in that the difference between

+             two Timestamp values is a Duration and it can be added or subtracted

+             from a Timestamp. Range is approximately +-10,000 years.

+            

+             # Examples

+            

+             Example 1: Compute Duration from two Timestamps in pseudo code.

+            

+                 Timestamp start = ...;

+                 Timestamp end = ...;

+                 Duration duration = ...;

+            

+                 duration.seconds = end.seconds - start.seconds;

+                 duration.nanos = end.nanos - start.nanos;

+            

+                 if (duration.seconds &lt; 0 &amp;&amp; duration.nanos > 0) {

+                   duration.seconds += 1;

+                   duration.nanos -= 1000000000;

+                 } else if (durations.seconds > 0 &amp;&amp; duration.nanos &lt; 0) {

+                   duration.seconds -= 1;

+                   duration.nanos += 1000000000;

+                 }

+            

+             Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.

+            

+                 Timestamp start = ...;

+                 Duration duration = ...;

+                 Timestamp end = ...;

+            

+                 end.seconds = start.seconds + duration.seconds;

+                 end.nanos = start.nanos + duration.nanos;

+            

+                 if (end.nanos &lt; 0) {

+                   end.seconds -= 1;

+                   end.nanos += 1000000000;

+                 } else if (end.nanos >= 1000000000) {

+                   end.seconds += 1;

+                   end.nanos -= 1000000000;

+                 }

+            

+             Example 3: Compute Duration from datetime.timedelta in Python.

+            

+                 td = datetime.timedelta(days=3, minutes=10)

+                 duration = Duration()

+                 duration.FromTimedelta(td)

+            

+             # JSON Mapping

+            

+             In JSON format, the Duration type is encoded as a string rather than an

+             object, where the string ends in the suffix "s" (indicating seconds) and

+             is preceded by the number of seconds, with nanoseconds expressed as

+             fractional seconds. For example, 3 seconds with 0 nanoseconds should be

+             encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should

+             be expressed in JSON format as "3.000000001s", and 3 seconds and 1

+             microsecond should be expressed in JSON format as "3.000001s".

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Duration.SecondsFieldNumber">

+            <summary>Field number for the "seconds" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Duration.Seconds">

+            <summary>

+            Signed seconds of the span of time. Must be from -315,576,000,000

+            to +315,576,000,000 inclusive. Note: these bounds are computed from:

+            60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Duration.NanosFieldNumber">

+            <summary>Field number for the "nanos" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Duration.Nanos">

+            <summary>

+            Signed fractions of a second at nanosecond resolution of the span

+            of time. Durations less than one second are represented with a 0

+            `seconds` field and a positive or negative `nanos` field. For durations

+            of one second or more, a non-zero value for the `nanos` field must be

+            of the same sign as the `seconds` field. Must be from -999,999,999

+            to +999,999,999 inclusive.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Duration.NanosecondsPerSecond">

+            <summary>

+            The number of nanoseconds in a second.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Duration.NanosecondsPerTick">

+            <summary>

+            The number of nanoseconds in a BCL tick (as used by <see cref="T:System.TimeSpan"/> and <see cref="T:System.DateTime"/>).

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Duration.MaxSeconds">

+            <summary>

+            The maximum permitted number of seconds.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Duration.MinSeconds">

+            <summary>

+            The minimum permitted number of seconds.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Duration.ToTimeSpan">

+            <summary>

+            Converts this <see cref="T:Google.Protobuf.WellKnownTypes.Duration"/> to a <see cref="T:System.TimeSpan"/>.

+            </summary>

+            <remarks>If the duration is not a precise number of ticks, it is truncated towards 0.</remarks>

+            <returns>The value of this duration, as a <c>TimeSpan</c>.</returns>

+            <exception cref="T:System.InvalidOperationException">This value isn't a valid normalized duration, as

+            described in the documentation.</exception>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Duration.FromTimeSpan(System.TimeSpan)">

+            <summary>

+            Converts the given <see cref="T:System.TimeSpan"/> to a <see cref="T:Google.Protobuf.WellKnownTypes.Duration"/>.

+            </summary>

+            <param name="timeSpan">The <c>TimeSpan</c> to convert.</param>

+            <returns>The value of the given <c>TimeSpan</c>, as a <c>Duration</c>.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Duration.op_UnaryNegation(Google.Protobuf.WellKnownTypes.Duration)">

+            <summary>

+            Returns the result of negating the duration. For example, the negation of 5 minutes is -5 minutes.

+            </summary>

+            <param name="value">The duration to negate. Must not be null.</param>

+            <returns>The negated value of this duration.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Duration.op_Addition(Google.Protobuf.WellKnownTypes.Duration,Google.Protobuf.WellKnownTypes.Duration)">

+            <summary>

+            Adds the two specified <see cref="T:Google.Protobuf.WellKnownTypes.Duration"/> values together.

+            </summary>

+            <param name="lhs">The first value to add. Must not be null.</param>

+            <param name="rhs">The second value to add. Must not be null.</param>

+            <returns></returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Duration.op_Subtraction(Google.Protobuf.WellKnownTypes.Duration,Google.Protobuf.WellKnownTypes.Duration)">

+            <summary>

+            Subtracts one <see cref="T:Google.Protobuf.WellKnownTypes.Duration"/> from another.

+            </summary>

+            <param name="lhs">The duration to subtract from. Must not be null.</param>

+            <param name="rhs">The duration to subtract. Must not be null.</param>

+            <returns>The difference between the two specified durations.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Duration.Normalize(System.Int64,System.Int32)">

+            <summary>

+            Creates a duration with the normalized values from the given number of seconds and

+            nanoseconds, conforming with the description in the proto file.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Duration.ToJson(System.Int64,System.Int32,System.Boolean)">

+            <summary>

+            Converts a duration specified in seconds/nanoseconds to a string.

+            </summary>

+            <remarks>

+            If the value is a normalized duration in the range described in <c>duration.proto</c>,

+            <paramref name="diagnosticOnly"/> is ignored. Otherwise, if the parameter is <c>true</c>,

+            a JSON object with a warning is returned; if it is <c>false</c>, an <see cref="T:System.InvalidOperationException"/> is thrown.

+            </remarks>

+            <param name="seconds">Seconds portion of the duration.</param>

+            <param name="nanoseconds">Nanoseconds portion of the duration.</param>

+            <param name="diagnosticOnly">Determines the handling of non-normalized values</param>

+            <exception cref="T:System.InvalidOperationException">The represented duration is invalid, and <paramref name="diagnosticOnly"/> is <c>false</c>.</exception>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Duration.ToDiagnosticString">

+            <summary>

+            Returns a string representation of this <see cref="T:Google.Protobuf.WellKnownTypes.Duration"/> for diagnostic purposes.

+            </summary>

+            <remarks>

+            Normally the returned value will be a JSON string value (including leading and trailing quotes) but

+            when the value is non-normalized or out of range, a JSON object representation will be returned

+            instead, including a warning. This is to avoid exceptions being thrown when trying to

+            diagnose problems - the regular JSON formatter will still throw an exception for non-normalized

+            values.

+            </remarks>

+            <returns>A string representation of this value.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Duration.AppendNanoseconds(System.Text.StringBuilder,System.Int32)">

+            <summary>

+            Appends a number of nanoseconds to a StringBuilder. Either 0 digits are added (in which

+            case no "." is appended), or 3 6 or 9 digits. This is internal for use in Timestamp as well

+            as Duration.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.EmptyReflection">

+            <summary>Holder for reflection information generated from google/protobuf/empty.proto</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.EmptyReflection.Descriptor">

+            <summary>File descriptor for google/protobuf/empty.proto</summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Empty">

+             <summary>

+             A generic empty message that you can re-use to avoid defining duplicated

+             empty messages in your APIs. A typical example is to use it as the request

+             or the response type of an API method. For instance:

+            

+                 service Foo {

+                   rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);

+                 }

+            

+             The JSON representation for `Empty` is empty JSON object `{}`.

+             </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.FieldMaskReflection">

+            <summary>Holder for reflection information generated from google/protobuf/field_mask.proto</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.FieldMaskReflection.Descriptor">

+            <summary>File descriptor for google/protobuf/field_mask.proto</summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.FieldMask">

+             <summary>

+             `FieldMask` represents a set of symbolic field paths, for example:

+            

+                 paths: "f.a"

+                 paths: "f.b.d"

+            

+             Here `f` represents a field in some root message, `a` and `b`

+             fields in the message found in `f`, and `d` a field found in the

+             message in `f.b`.

+            

+             Field masks are used to specify a subset of fields that should be

+             returned by a get operation or modified by an update operation.

+             Field masks also have a custom JSON encoding (see below).

+            

+             # Field Masks in Projections

+            

+             When used in the context of a projection, a response message or

+             sub-message is filtered by the API to only contain those fields as

+             specified in the mask. For example, if the mask in the previous

+             example is applied to a response message as follows:

+            

+                 f {

+                   a : 22

+                   b {

+                     d : 1

+                     x : 2

+                   }

+                   y : 13

+                 }

+                 z: 8

+            

+             The result will not contain specific values for fields x,y and z

+             (their value will be set to the default, and omitted in proto text

+             output):

+            

+                 f {

+                   a : 22

+                   b {

+                     d : 1

+                   }

+                 }

+            

+             A repeated field is not allowed except at the last position of a

+             paths string.

+            

+             If a FieldMask object is not present in a get operation, the

+             operation applies to all fields (as if a FieldMask of all fields

+             had been specified).

+            

+             Note that a field mask does not necessarily apply to the

+             top-level response message. In case of a REST get operation, the

+             field mask applies directly to the response, but in case of a REST

+             list operation, the mask instead applies to each individual message

+             in the returned resource list. In case of a REST custom method,

+             other definitions may be used. Where the mask applies will be

+             clearly documented together with its declaration in the API.  In

+             any case, the effect on the returned resource/resources is required

+             behavior for APIs.

+            

+             # Field Masks in Update Operations

+            

+             A field mask in update operations specifies which fields of the

+             targeted resource are going to be updated. The API is required

+             to only change the values of the fields as specified in the mask

+             and leave the others untouched. If a resource is passed in to

+             describe the updated values, the API ignores the values of all

+             fields not covered by the mask.

+            

+             If a repeated field is specified for an update operation, the existing

+             repeated values in the target resource will be overwritten by the new values.

+             Note that a repeated field is only allowed in the last position of a `paths`

+             string.

+            

+             If a sub-message is specified in the last position of the field mask for an

+             update operation, then the existing sub-message in the target resource is

+             overwritten. Given the target message:

+            

+                 f {

+                   b {

+                     d : 1

+                     x : 2

+                   }

+                   c : 1

+                 }

+            

+             And an update message:

+            

+                 f {

+                   b {

+                     d : 10

+                   }

+                 }

+            

+             then if the field mask is:

+            

+              paths: "f.b"

+            

+             then the result will be:

+            

+                 f {

+                   b {

+                     d : 10

+                   }

+                   c : 1

+                 }

+            

+             However, if the update mask was:

+            

+              paths: "f.b.d"

+            

+             then the result would be:

+            

+                 f {

+                   b {

+                     d : 10

+                     x : 2

+                   }

+                   c : 1

+                 }

+            

+             In order to reset a field's value to the default, the field must

+             be in the mask and set to the default value in the provided resource.

+             Hence, in order to reset all fields of a resource, provide a default

+             instance of the resource and set all fields in the mask, or do

+             not provide a mask as described below.

+            

+             If a field mask is not present on update, the operation applies to

+             all fields (as if a field mask of all fields has been specified).

+             Note that in the presence of schema evolution, this may mean that

+             fields the client does not know and has therefore not filled into

+             the request will be reset to their default. If this is unwanted

+             behavior, a specific service may require a client to always specify

+             a field mask, producing an error if not.

+            

+             As with get operations, the location of the resource which

+             describes the updated values in the request message depends on the

+             operation kind. In any case, the effect of the field mask is

+             required to be honored by the API.

+            

+             ## Considerations for HTTP REST

+            

+             The HTTP kind of an update operation which uses a field mask must

+             be set to PATCH instead of PUT in order to satisfy HTTP semantics

+             (PUT must only be used for full updates).

+            

+             # JSON Encoding of Field Masks

+            

+             In JSON, a field mask is encoded as a single string where paths are

+             separated by a comma. Fields name in each path are converted

+             to/from lower-camel naming conventions.

+            

+             As an example, consider the following message declarations:

+            

+                 message Profile {

+                   User user = 1;

+                   Photo photo = 2;

+                 }

+                 message User {

+                   string display_name = 1;

+                   string address = 2;

+                 }

+            

+             In proto a field mask for `Profile` may look as such:

+            

+                 mask {

+                   paths: "user.display_name"

+                   paths: "photo"

+                 }

+            

+             In JSON, the same mask is represented as below:

+            

+                 {

+                   mask: "user.displayName,photo"

+                 }

+            

+             # Field Masks and Oneof Fields

+            

+             Field masks treat fields in oneofs just as regular fields. Consider the

+             following message:

+            

+                 message SampleMessage {

+                   oneof test_oneof {

+                     string name = 4;

+                     SubMessage sub_message = 9;

+                   }

+                 }

+            

+             The field mask can be:

+            

+                 mask {

+                   paths: "name"

+                 }

+            

+             Or:

+            

+                 mask {

+                   paths: "sub_message"

+                 }

+            

+             Note that oneof type names ("test_oneof" in this case) cannot be used in

+             paths.

+            

+             ## Field Mask Verification

+            

+             The implementation of any API method which has a FieldMask type field in the

+             request should verify the included field paths, and return an

+             `INVALID_ARGUMENT` error if any path is duplicated or unmappable.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.FieldMask.PathsFieldNumber">

+            <summary>Field number for the "paths" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.FieldMask.Paths">

+            <summary>

+            The set of field mask paths.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.FieldMask.ToJson(System.Collections.Generic.IList{System.String},System.Boolean)">

+            <summary>

+            Converts a timestamp  specified in seconds/nanoseconds to a string.

+            </summary>

+            <remarks>

+            If the value is a normalized duration in the range described in <c>field_mask.proto</c>,

+            <paramref name="diagnosticOnly"/> is ignored. Otherwise, if the parameter is <c>true</c>,

+            a JSON object with a warning is returned; if it is <c>false</c>, an <see cref="T:System.InvalidOperationException"/> is thrown.

+            </remarks>

+            <param name="paths">Paths in the field mask</param>

+            <param name="diagnosticOnly">Determines the handling of non-normalized values</param>

+            <exception cref="T:System.InvalidOperationException">The represented field mask is invalid, and <paramref name="diagnosticOnly"/> is <c>false</c>.</exception>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.FieldMask.ValidatePath(System.String)">

+            <summary>

+            Checks whether the given path is valid for a field mask.

+            </summary>

+            <returns>true if the path is valid; false otherwise</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.FieldMask.ToDiagnosticString">

+            <summary>

+            Returns a string representation of this <see cref="T:Google.Protobuf.WellKnownTypes.FieldMask"/> for diagnostic purposes.

+            </summary>

+            <remarks>

+            Normally the returned value will be a JSON string value (including leading and trailing quotes) but

+            when the value is non-normalized or out of range, a JSON object representation will be returned

+            instead, including a warning. This is to avoid exceptions being thrown when trying to

+            diagnose problems - the regular JSON formatter will still throw an exception for non-normalized

+            values.

+            </remarks>

+            <returns>A string representation of this value.</returns>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.SourceContextReflection">

+            <summary>Holder for reflection information generated from google/protobuf/source_context.proto</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.SourceContextReflection.Descriptor">

+            <summary>File descriptor for google/protobuf/source_context.proto</summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.SourceContext">

+            <summary>

+            `SourceContext` represents information about the source of a

+            protobuf element, like the file in which it is defined.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.SourceContext.FileNameFieldNumber">

+            <summary>Field number for the "file_name" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.SourceContext.FileName">

+            <summary>

+            The path-qualified name of the .proto file that contained the associated

+            protobuf element.  For example: `"google/protobuf/source_context.proto"`.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.StructReflection">

+            <summary>Holder for reflection information generated from google/protobuf/struct.proto</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.StructReflection.Descriptor">

+            <summary>File descriptor for google/protobuf/struct.proto</summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.NullValue">

+             <summary>

+             `NullValue` is a singleton enumeration to represent the null value for the

+             `Value` type union.

+            

+              The JSON representation for `NullValue` is JSON `null`.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.NullValue.NullValue">

+            <summary>

+            Null value.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Struct">

+             <summary>

+             `Struct` represents a structured data value, consisting of fields

+             which map to dynamically typed values. In some languages, `Struct`

+             might be supported by a native representation. For example, in

+             scripting languages like JS a struct is represented as an

+             object. The details of that representation are described together

+             with the proto support for the language.

+            

+             The JSON representation for `Struct` is JSON object.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Struct.FieldsFieldNumber">

+            <summary>Field number for the "fields" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Struct.Fields">

+            <summary>

+            Unordered map of dynamically typed values.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Value">

+             <summary>

+             `Value` represents a dynamically typed value which can be either

+             null, a number, a string, a boolean, a recursive struct value, or a

+             list of values. A producer of value is expected to set one of that

+             variants, absence of any variant indicates an error.

+            

+             The JSON representation for `Value` is JSON value.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Value.NullValueFieldNumber">

+            <summary>Field number for the "null_value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Value.NullValue">

+            <summary>

+            Represents a null value.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Value.NumberValueFieldNumber">

+            <summary>Field number for the "number_value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Value.NumberValue">

+            <summary>

+            Represents a double value.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Value.StringValueFieldNumber">

+            <summary>Field number for the "string_value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Value.StringValue">

+            <summary>

+            Represents a string value.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Value.BoolValueFieldNumber">

+            <summary>Field number for the "bool_value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Value.BoolValue">

+            <summary>

+            Represents a boolean value.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Value.StructValueFieldNumber">

+            <summary>Field number for the "struct_value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Value.StructValue">

+            <summary>

+            Represents a structured value.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Value.ListValueFieldNumber">

+            <summary>Field number for the "list_value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Value.ListValue">

+            <summary>

+            Represents a repeated `Value`.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Value.KindOneofCase">

+            <summary>Enum of possible cases for the "kind" oneof.</summary>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Value.ForString(System.String)">

+            <summary>

+            Convenience method to create a Value message with a string value.

+            </summary>

+            <param name="value">Value to set for the StringValue property.</param>

+            <returns>A newly-created Value message with the given value.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Value.ForNumber(System.Double)">

+            <summary>

+            Convenience method to create a Value message with a number value.

+            </summary>

+            <param name="value">Value to set for the NumberValue property.</param>

+            <returns>A newly-created Value message with the given value.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Value.ForBool(System.Boolean)">

+            <summary>

+            Convenience method to create a Value message with a Boolean value.

+            </summary>

+            <param name="value">Value to set for the BoolValue property.</param>

+            <returns>A newly-created Value message with the given value.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Value.ForNull">

+            <summary>

+            Convenience method to create a Value message with a null initial value.

+            </summary>

+            <returns>A newly-created Value message a null initial value.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Value.ForList(Google.Protobuf.WellKnownTypes.Value[])">

+            <summary>

+            Convenience method to create a Value message with an initial list of values.

+            </summary>

+            <remarks>The values provided are not cloned; the references are copied directly.</remarks>

+            <returns>A newly-created Value message an initial list value.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Value.ForStruct(Google.Protobuf.WellKnownTypes.Struct)">

+            <summary>

+            Convenience method to create a Value message with an initial struct value

+            </summary>

+            <remarks>The value provided is not cloned; the reference is copied directly.</remarks>

+            <returns>A newly-created Value message an initial struct value.</returns>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.ListValue">

+             <summary>

+             `ListValue` is a wrapper around a repeated field of values.

+            

+             The JSON representation for `ListValue` is JSON array.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.ListValue.ValuesFieldNumber">

+            <summary>Field number for the "values" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.ListValue.Values">

+            <summary>

+            Repeated field of dynamically typed values.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.TimeExtensions">

+            <summary>

+            Extension methods on BCL time-related types, converting to protobuf types.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.TimeExtensions.ToTimestamp(System.DateTime)">

+            <summary>

+            Converts the given <see cref="T:System.DateTime"/> to a <see cref="T:Google.Protobuf.WellKnownTypes.Timestamp"/>.

+            </summary>

+            <param name="dateTime">The date and time to convert to a timestamp.</param>

+            <exception cref="T:System.ArgumentException">The <paramref name="dateTime"/> value has a <see cref="P:System.DateTime.Kind"/>other than <c>Utc</c>.</exception>

+            <returns>The converted timestamp.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.TimeExtensions.ToTimestamp(System.DateTimeOffset)">

+            <summary>

+            Converts the given <see cref="T:System.DateTimeOffset"/> to a <see cref="T:Google.Protobuf.WellKnownTypes.Timestamp"/>

+            </summary>

+            <remarks>The offset is taken into consideration when converting the value (so the same instant in time

+            is represented) but is not a separate part of the resulting value. In other words, there is no

+            roundtrip operation to retrieve the original <c>DateTimeOffset</c>.</remarks>

+            <param name="dateTimeOffset">The date and time (with UTC offset) to convert to a timestamp.</param>

+            <returns>The converted timestamp.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.TimeExtensions.ToDuration(System.TimeSpan)">

+            <summary>

+            Converts the given <see cref="T:System.TimeSpan"/> to a <see cref="T:Google.Protobuf.WellKnownTypes.Duration"/>.

+            </summary>

+            <param name="timeSpan">The time span to convert.</param>

+            <returns>The converted duration.</returns>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.TimestampReflection">

+            <summary>Holder for reflection information generated from google/protobuf/timestamp.proto</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.TimestampReflection.Descriptor">

+            <summary>File descriptor for google/protobuf/timestamp.proto</summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Timestamp">

+             <summary>

+             A Timestamp represents a point in time independent of any time zone

+             or calendar, represented as seconds and fractions of seconds at

+             nanosecond resolution in UTC Epoch time. It is encoded using the

+             Proleptic Gregorian Calendar which extends the Gregorian calendar

+             backwards to year one. It is encoded assuming all minutes are 60

+             seconds long, i.e. leap seconds are "smeared" so that no leap second

+             table is needed for interpretation. Range is from

+             0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z.

+             By restricting to that range, we ensure that we can convert to

+             and from  RFC 3339 date strings.

+             See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.txt).

+            

+             # Examples

+            

+             Example 1: Compute Timestamp from POSIX `time()`.

+            

+                 Timestamp timestamp;

+                 timestamp.set_seconds(time(NULL));

+                 timestamp.set_nanos(0);

+            

+             Example 2: Compute Timestamp from POSIX `gettimeofday()`.

+            

+                 struct timeval tv;

+                 gettimeofday(&amp;tv, NULL);

+            

+                 Timestamp timestamp;

+                 timestamp.set_seconds(tv.tv_sec);

+                 timestamp.set_nanos(tv.tv_usec * 1000);

+            

+             Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.

+            

+                 FILETIME ft;

+                 GetSystemTimeAsFileTime(&amp;ft);

+                 UINT64 ticks = (((UINT64)ft.dwHighDateTime) &lt;&lt; 32) | ft.dwLowDateTime;

+            

+                 // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z

+                 // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.

+                 Timestamp timestamp;

+                 timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));

+                 timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));

+            

+             Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.

+            

+                 long millis = System.currentTimeMillis();

+            

+                 Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)

+                     .setNanos((int) ((millis % 1000) * 1000000)).build();

+            

+             Example 5: Compute Timestamp from current time in Python.

+            

+                 timestamp = Timestamp()

+                 timestamp.GetCurrentTime()

+            

+             # JSON Mapping

+            

+             In JSON format, the Timestamp type is encoded as a string in the

+             [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the

+             format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"

+             where {year} is always expressed using four digits while {month}, {day},

+             {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional

+             seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),

+             are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone

+             is required. A proto3 JSON serializer should always use UTC (as indicated by

+             "Z") when printing the Timestamp type and a proto3 JSON parser should be

+             able to accept both UTC and other timezones (as indicated by an offset).

+            

+             For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past

+             01:30 UTC on January 15, 2017.

+            

+             In JavaScript, one can convert a Date object to this format using the

+             standard [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString]

+             method. In Python, a standard `datetime.datetime` object can be converted

+             to this format using [`strftime`](https://docs.python.org/2/library/time.html#time.strftime)

+             with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one

+             can use the Joda Time's [`ISODateTimeFormat.dateTime()`](

+             http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime--

+             ) to obtain a formatter capable of generating timestamps in this format.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Timestamp.SecondsFieldNumber">

+            <summary>Field number for the "seconds" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Timestamp.Seconds">

+            <summary>

+            Represents seconds of UTC time since Unix epoch

+            1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to

+            9999-12-31T23:59:59Z inclusive.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Timestamp.NanosFieldNumber">

+            <summary>Field number for the "nanos" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Timestamp.Nanos">

+            <summary>

+            Non-negative fractions of a second at nanosecond resolution. Negative

+            second values with fractions must still have non-negative nanos values

+            that count forward in time. Must be from 0 to 999,999,999

+            inclusive.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Timestamp.op_Subtraction(Google.Protobuf.WellKnownTypes.Timestamp,Google.Protobuf.WellKnownTypes.Timestamp)">

+            <summary>

+            Returns the difference between one <see cref="T:Google.Protobuf.WellKnownTypes.Timestamp"/> and another, as a <see cref="T:Google.Protobuf.WellKnownTypes.Duration"/>.

+            </summary>

+            <param name="lhs">The timestamp to subtract from. Must not be null.</param>

+            <param name="rhs">The timestamp to subtract. Must not be null.</param>

+            <returns>The difference between the two specified timestamps.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Timestamp.op_Addition(Google.Protobuf.WellKnownTypes.Timestamp,Google.Protobuf.WellKnownTypes.Duration)">

+            <summary>

+            Adds a <see cref="T:Google.Protobuf.WellKnownTypes.Duration"/> to a <see cref="T:Google.Protobuf.WellKnownTypes.Timestamp"/>, to obtain another <c>Timestamp</c>.

+            </summary>

+            <param name="lhs">The timestamp to add the duration to. Must not be null.</param>

+            <param name="rhs">The duration to add. Must not be null.</param>

+            <returns>The result of adding the duration to the timestamp.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Timestamp.op_Subtraction(Google.Protobuf.WellKnownTypes.Timestamp,Google.Protobuf.WellKnownTypes.Duration)">

+            <summary>

+            Subtracts a <see cref="T:Google.Protobuf.WellKnownTypes.Duration"/> from a <see cref="T:Google.Protobuf.WellKnownTypes.Timestamp"/>, to obtain another <c>Timestamp</c>.

+            </summary>

+            <param name="lhs">The timestamp to subtract the duration from. Must not be null.</param>

+            <param name="rhs">The duration to subtract.</param>

+            <returns>The result of subtracting the duration from the timestamp.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Timestamp.ToDateTime">

+            <summary>

+            Converts this timestamp into a <see cref="T:System.DateTime"/>.

+            </summary>

+            <remarks>

+            The resulting <c>DateTime</c> will always have a <c>Kind</c> of <c>Utc</c>.

+            If the timestamp is not a precise number of ticks, it will be truncated towards the start

+            of time. For example, a timestamp with a <see cref="P:Google.Protobuf.WellKnownTypes.Timestamp.Nanos"/> value of 99 will result in a

+            <see cref="T:System.DateTime"/> value precisely on a second.

+            </remarks>

+            <returns>This timestamp as a <c>DateTime</c>.</returns>

+            <exception cref="T:System.InvalidOperationException">The timestamp contains invalid values; either it is

+            incorrectly normalized or is outside the valid range.</exception>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Timestamp.ToDateTimeOffset">

+            <summary>

+            Converts this timestamp into a <see cref="T:System.DateTimeOffset"/>.

+            </summary>

+            <remarks>

+            The resulting <c>DateTimeOffset</c> will always have an <c>Offset</c> of zero.

+            If the timestamp is not a precise number of ticks, it will be truncated towards the start

+            of time. For example, a timestamp with a <see cref="P:Google.Protobuf.WellKnownTypes.Timestamp.Nanos"/> value of 99 will result in a

+            <see cref="T:System.DateTimeOffset"/> value precisely on a second.

+            </remarks>

+            <returns>This timestamp as a <c>DateTimeOffset</c>.</returns>

+            <exception cref="T:System.InvalidOperationException">The timestamp contains invalid values; either it is

+            incorrectly normalized or is outside the valid range.</exception>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Timestamp.FromDateTime(System.DateTime)">

+            <summary>

+            Converts the specified <see cref="T:System.DateTime"/> to a <see cref="T:Google.Protobuf.WellKnownTypes.Timestamp"/>.

+            </summary>

+            <param name="dateTime"></param>

+            <exception cref="T:System.ArgumentException">The <c>Kind</c> of <paramref name="dateTime"/> is not <c>DateTimeKind.Utc</c>.</exception>

+            <returns>The converted timestamp.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Timestamp.FromDateTimeOffset(System.DateTimeOffset)">

+            <summary>

+            Converts the given <see cref="T:System.DateTimeOffset"/> to a <see cref="T:Google.Protobuf.WellKnownTypes.Timestamp"/>

+            </summary>

+            <remarks>The offset is taken into consideration when converting the value (so the same instant in time

+            is represented) but is not a separate part of the resulting value. In other words, there is no

+            roundtrip operation to retrieve the original <c>DateTimeOffset</c>.</remarks>

+            <param name="dateTimeOffset">The date and time (with UTC offset) to convert to a timestamp.</param>

+            <returns>The converted timestamp.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Timestamp.ToJson(System.Int64,System.Int32,System.Boolean)">

+            <summary>

+            Converts a timestamp specified in seconds/nanoseconds to a string.

+            </summary>

+            <remarks>

+            If the value is a normalized duration in the range described in <c>timestamp.proto</c>,

+            <paramref name="diagnosticOnly"/> is ignored. Otherwise, if the parameter is <c>true</c>,

+            a JSON object with a warning is returned; if it is <c>false</c>, an <see cref="T:System.InvalidOperationException"/> is thrown.

+            </remarks>

+            <param name="seconds">Seconds portion of the duration.</param>

+            <param name="nanoseconds">Nanoseconds portion of the duration.</param>

+            <param name="diagnosticOnly">Determines the handling of non-normalized values</param>

+            <exception cref="T:System.InvalidOperationException">The represented duration is invalid, and <paramref name="diagnosticOnly"/> is <c>false</c>.</exception>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Timestamp.ToDiagnosticString">

+            <summary>

+            Returns a string representation of this <see cref="T:Google.Protobuf.WellKnownTypes.Timestamp"/> for diagnostic purposes.

+            </summary>

+            <remarks>

+            Normally the returned value will be a JSON string value (including leading and trailing quotes) but

+            when the value is non-normalized or out of range, a JSON object representation will be returned

+            instead, including a warning. This is to avoid exceptions being thrown when trying to

+            diagnose problems - the regular JSON formatter will still throw an exception for non-normalized

+            values.

+            </remarks>

+            <returns>A string representation of this value.</returns>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.TypeReflection">

+            <summary>Holder for reflection information generated from google/protobuf/type.proto</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.TypeReflection.Descriptor">

+            <summary>File descriptor for google/protobuf/type.proto</summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Syntax">

+            <summary>

+            The syntax in which a protocol buffer element is defined.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Syntax.Proto2">

+            <summary>

+            Syntax `proto2`.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Syntax.Proto3">

+            <summary>

+            Syntax `proto3`.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Type">

+            <summary>

+            A protocol buffer message type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Type.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Type.Name">

+            <summary>

+            The fully qualified message name.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Type.FieldsFieldNumber">

+            <summary>Field number for the "fields" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Type.Fields">

+            <summary>

+            The list of fields.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Type.OneofsFieldNumber">

+            <summary>Field number for the "oneofs" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Type.Oneofs">

+            <summary>

+            The list of types appearing in `oneof` definitions in this type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Type.OptionsFieldNumber">

+            <summary>Field number for the "options" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Type.Options">

+            <summary>

+            The protocol buffer options.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Type.SourceContextFieldNumber">

+            <summary>Field number for the "source_context" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Type.SourceContext">

+            <summary>

+            The source context.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Type.SyntaxFieldNumber">

+            <summary>Field number for the "syntax" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Type.Syntax">

+            <summary>

+            The source syntax.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Field">

+            <summary>

+            A single field of a message type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.KindFieldNumber">

+            <summary>Field number for the "kind" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Field.Kind">

+            <summary>

+            The field type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.CardinalityFieldNumber">

+            <summary>Field number for the "cardinality" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Field.Cardinality">

+            <summary>

+            The field cardinality.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.NumberFieldNumber">

+            <summary>Field number for the "number" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Field.Number">

+            <summary>

+            The field number.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Field.Name">

+            <summary>

+            The field name.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.TypeUrlFieldNumber">

+            <summary>Field number for the "type_url" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Field.TypeUrl">

+            <summary>

+            The field type URL, without the scheme, for message or enumeration

+            types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.OneofIndexFieldNumber">

+            <summary>Field number for the "oneof_index" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Field.OneofIndex">

+            <summary>

+            The index of the field type in `Type.oneofs`, for message or enumeration

+            types. The first type has index 1; zero means the type is not in the list.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.PackedFieldNumber">

+            <summary>Field number for the "packed" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Field.Packed">

+            <summary>

+            Whether to use alternative packed wire representation.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.OptionsFieldNumber">

+            <summary>Field number for the "options" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Field.Options">

+            <summary>

+            The protocol buffer options.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.JsonNameFieldNumber">

+            <summary>Field number for the "json_name" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Field.JsonName">

+            <summary>

+            The field JSON name.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.DefaultValueFieldNumber">

+            <summary>Field number for the "default_value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Field.DefaultValue">

+            <summary>

+            The string value of the default value of this field. Proto2 syntax only.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Field.Types">

+            <summary>Container for nested types declared in the Field message type.</summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Field.Types.Kind">

+            <summary>

+            Basic field types.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeUnknown">

+            <summary>

+            Field type unknown.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeDouble">

+            <summary>

+            Field type double.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeFloat">

+            <summary>

+            Field type float.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeInt64">

+            <summary>

+            Field type int64.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeUint64">

+            <summary>

+            Field type uint64.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeInt32">

+            <summary>

+            Field type int32.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeFixed64">

+            <summary>

+            Field type fixed64.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeFixed32">

+            <summary>

+            Field type fixed32.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeBool">

+            <summary>

+            Field type bool.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeString">

+            <summary>

+            Field type string.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeGroup">

+            <summary>

+            Field type group. Proto2 syntax only, and deprecated.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeMessage">

+            <summary>

+            Field type message.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeBytes">

+            <summary>

+            Field type bytes.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeUint32">

+            <summary>

+            Field type uint32.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeEnum">

+            <summary>

+            Field type enum.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeSfixed32">

+            <summary>

+            Field type sfixed32.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeSfixed64">

+            <summary>

+            Field type sfixed64.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeSint32">

+            <summary>

+            Field type sint32.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeSint64">

+            <summary>

+            Field type sint64.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Field.Types.Cardinality">

+            <summary>

+            Whether a field is optional, required, or repeated.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Cardinality.Unknown">

+            <summary>

+            For fields with unknown cardinality.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Cardinality.Optional">

+            <summary>

+            For optional fields.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Cardinality.Required">

+            <summary>

+            For required fields. Proto2 syntax only.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Cardinality.Repeated">

+            <summary>

+            For repeated fields.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Enum">

+            <summary>

+            Enum type definition.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Enum.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Enum.Name">

+            <summary>

+            Enum type name.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Enum.EnumvalueFieldNumber">

+            <summary>Field number for the "enumvalue" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Enum.Enumvalue">

+            <summary>

+            Enum value definitions.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Enum.OptionsFieldNumber">

+            <summary>Field number for the "options" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Enum.Options">

+            <summary>

+            Protocol buffer options.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Enum.SourceContextFieldNumber">

+            <summary>Field number for the "source_context" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Enum.SourceContext">

+            <summary>

+            The source context.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Enum.SyntaxFieldNumber">

+            <summary>Field number for the "syntax" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Enum.Syntax">

+            <summary>

+            The source syntax.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.EnumValue">

+            <summary>

+            Enum value definition.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.EnumValue.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.EnumValue.Name">

+            <summary>

+            Enum value name.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.EnumValue.NumberFieldNumber">

+            <summary>Field number for the "number" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.EnumValue.Number">

+            <summary>

+            Enum value number.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.EnumValue.OptionsFieldNumber">

+            <summary>Field number for the "options" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.EnumValue.Options">

+            <summary>

+            Protocol buffer options.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Option">

+            <summary>

+            A protocol buffer option, which can be attached to a message, field,

+            enumeration, etc.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Option.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Option.Name">

+            <summary>

+            The option's name. For protobuf built-in options (options defined in

+            descriptor.proto), this is the short name. For example, `"map_entry"`.

+            For custom options, it should be the fully-qualified name. For example,

+            `"google.api.http"`.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Option.ValueFieldNumber">

+            <summary>Field number for the "value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Option.Value">

+            <summary>

+            The option's value packed in an Any message. If the value is a primitive,

+            the corresponding wrapper type defined in google/protobuf/wrappers.proto

+            should be used. If the value is an enum, it should be stored as an int32

+            value using the google.protobuf.Int32Value type.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.WrappersReflection">

+            <summary>Holder for reflection information generated from google/protobuf/wrappers.proto</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.WrappersReflection.Descriptor">

+            <summary>File descriptor for google/protobuf/wrappers.proto</summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.WrappersReflection.WrapperValueFieldNumber">

+            <summary>

+            Field number for the single "value" field in all wrapper types.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.DoubleValue">

+             <summary>

+             Wrapper message for `double`.

+            

+             The JSON representation for `DoubleValue` is JSON number.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.DoubleValue.ValueFieldNumber">

+            <summary>Field number for the "value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.DoubleValue.Value">

+            <summary>

+            The double value.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.FloatValue">

+             <summary>

+             Wrapper message for `float`.

+            

+             The JSON representation for `FloatValue` is JSON number.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.FloatValue.ValueFieldNumber">

+            <summary>Field number for the "value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.FloatValue.Value">

+            <summary>

+            The float value.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Int64Value">

+             <summary>

+             Wrapper message for `int64`.

+            

+             The JSON representation for `Int64Value` is JSON string.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Int64Value.ValueFieldNumber">

+            <summary>Field number for the "value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Int64Value.Value">

+            <summary>

+            The int64 value.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.UInt64Value">

+             <summary>

+             Wrapper message for `uint64`.

+            

+             The JSON representation for `UInt64Value` is JSON string.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.UInt64Value.ValueFieldNumber">

+            <summary>Field number for the "value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.UInt64Value.Value">

+            <summary>

+            The uint64 value.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Int32Value">

+             <summary>

+             Wrapper message for `int32`.

+            

+             The JSON representation for `Int32Value` is JSON number.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Int32Value.ValueFieldNumber">

+            <summary>Field number for the "value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Int32Value.Value">

+            <summary>

+            The int32 value.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.UInt32Value">

+             <summary>

+             Wrapper message for `uint32`.

+            

+             The JSON representation for `UInt32Value` is JSON number.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.UInt32Value.ValueFieldNumber">

+            <summary>Field number for the "value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.UInt32Value.Value">

+            <summary>

+            The uint32 value.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.BoolValue">

+             <summary>

+             Wrapper message for `bool`.

+            

+             The JSON representation for `BoolValue` is JSON `true` and `false`.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.BoolValue.ValueFieldNumber">

+            <summary>Field number for the "value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.BoolValue.Value">

+            <summary>

+            The bool value.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.StringValue">

+             <summary>

+             Wrapper message for `string`.

+            

+             The JSON representation for `StringValue` is JSON string.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.StringValue.ValueFieldNumber">

+            <summary>Field number for the "value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.StringValue.Value">

+            <summary>

+            The string value.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.BytesValue">

+             <summary>

+             Wrapper message for `bytes`.

+            

+             The JSON representation for `BytesValue` is JSON string.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.BytesValue.ValueFieldNumber">

+            <summary>Field number for the "value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.BytesValue.Value">

+            <summary>

+            The bytes value.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WireFormat">

+            <summary>

+            This class is used internally by the Protocol Buffer Library and generated

+            message implementations. It is public only for the sake of those generated

+            messages. Others should not use this class directly.

+            <para>

+            This class contains constants and helper functions useful for dealing with

+            the Protocol Buffer wire format.

+            </para>

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WireFormat.WireType">

+            <summary>

+            Wire types within protobuf encoding.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WireFormat.WireType.Varint">

+            <summary>

+            Variable-length integer.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WireFormat.WireType.Fixed64">

+            <summary>

+            A fixed-length 64-bit value.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WireFormat.WireType.LengthDelimited">

+            <summary>

+            A length-delimited value, i.e. a length followed by that many bytes of data.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WireFormat.WireType.StartGroup">

+            <summary>

+            A "start group" value - not supported by this implementation.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WireFormat.WireType.EndGroup">

+            <summary>

+            An "end group" value - not supported by this implementation.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WireFormat.WireType.Fixed32">

+            <summary>

+            A fixed-length 32-bit value.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.WireFormat.GetTagWireType(System.UInt32)">

+            <summary>

+            Given a tag value, determines the wire type (lower 3 bits).

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.WireFormat.GetTagFieldNumber(System.UInt32)">

+            <summary>

+            Given a tag value, determines the field number (the upper 29 bits).

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.WireFormat.MakeTag(System.Int32,Google.Protobuf.WireFormat.WireType)">

+            <summary>

+            Makes a tag value given a field number and wire type.

+            </summary>

+        </member>

+    </members>

+</doc>

diff --git a/csharp/nuget/work/packages/Google.Protobuf.3.6.1/lib/netstandard1.0/Google.Protobuf.dll b/csharp/nuget/work/packages/Google.Protobuf.3.6.1/lib/netstandard1.0/Google.Protobuf.dll
new file mode 100755
index 0000000..4efae0d
--- /dev/null
+++ b/csharp/nuget/work/packages/Google.Protobuf.3.6.1/lib/netstandard1.0/Google.Protobuf.dll
Binary files differ
diff --git a/csharp/nuget/work/packages/Google.Protobuf.3.6.1/lib/netstandard1.0/Google.Protobuf.xml b/csharp/nuget/work/packages/Google.Protobuf.3.6.1/lib/netstandard1.0/Google.Protobuf.xml
new file mode 100755
index 0000000..18a593a
--- /dev/null
+++ b/csharp/nuget/work/packages/Google.Protobuf.3.6.1/lib/netstandard1.0/Google.Protobuf.xml
@@ -0,0 +1,7548 @@
+<?xml version="1.0"?>

+<doc>

+    <assembly>

+        <name>Google.Protobuf</name>

+    </assembly>

+    <members>

+        <member name="T:Google.Protobuf.ByteArray">

+            <summary>

+            Provides a utility routine to copy small arrays much more quickly than Buffer.BlockCopy

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.ByteArray.CopyThreshold">

+            <summary>

+            The threshold above which you should use Buffer.BlockCopy rather than ByteArray.Copy

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.ByteArray.Copy(System.Byte[],System.Int32,System.Byte[],System.Int32,System.Int32)">

+            <summary>

+            Determines which copy routine to use based on the number of bytes to be copied.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.ByteArray.Reverse(System.Byte[])">

+            <summary>

+            Reverses the order of bytes in the array

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.ByteString">

+            <summary>

+            Immutable array of bytes.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.ByteString.Unsafe">

+            <summary>

+            Unsafe operations that can cause IO Failure and/or other catestrophic side-effects.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.Unsafe.FromBytes(System.Byte[])">

+            <summary>

+            Constructs a new ByteString from the given byte array. The array is

+            *not* copied, and must not be modified after this constructor is called.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.Unsafe.GetBuffer(Google.Protobuf.ByteString)">

+            <summary>

+            Provides direct, unrestricted access to the bytes contained in this instance.

+            You must not modify or resize the byte array returned by this method.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.AttachBytes(System.Byte[])">

+            <summary>

+            Internal use only.  Ensure that the provided array is not mutated and belongs to this instance.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.#ctor(System.Byte[])">

+            <summary>

+            Constructs a new ByteString from the given byte array. The array is

+            *not* copied, and must not be modified after this constructor is called.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.ByteString.Empty">

+            <summary>

+            Returns an empty ByteString.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.ByteString.Length">

+            <summary>

+            Returns the length of this ByteString in bytes.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.ByteString.IsEmpty">

+            <summary>

+            Returns <c>true</c> if this byte string is empty, <c>false</c> otherwise.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.ToByteArray">

+            <summary>

+            Converts this <see cref="T:Google.Protobuf.ByteString"/> into a byte array.

+            </summary>

+            <remarks>The data is copied - changes to the returned array will not be reflected in this <c>ByteString</c>.</remarks>

+            <returns>A byte array with the same data as this <c>ByteString</c>.</returns>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.ToBase64">

+            <summary>

+            Converts this <see cref="T:Google.Protobuf.ByteString"/> into a standard base64 representation.

+            </summary>

+            <returns>A base64 representation of this <c>ByteString</c>.</returns>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.FromBase64(System.String)">

+            <summary>

+            Constructs a <see cref="T:Google.Protobuf.ByteString" /> from the Base64 Encoded String.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.FromStream(System.IO.Stream)">

+            <summary>

+            Constructs a <see cref="T:Google.Protobuf.ByteString"/> from data in the given stream, synchronously.

+            </summary>

+            <remarks>If successful, <paramref name="stream"/> will be read completely, from the position

+            at the start of the call.</remarks>

+            <param name="stream">The stream to copy into a ByteString.</param>

+            <returns>A ByteString with content read from the given stream.</returns>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.FromStreamAsync(System.IO.Stream,System.Threading.CancellationToken)">

+            <summary>

+            Constructs a <see cref="T:Google.Protobuf.ByteString"/> from data in the given stream, asynchronously.

+            </summary>

+            <remarks>If successful, <paramref name="stream"/> will be read completely, from the position

+            at the start of the call.</remarks>

+            <param name="stream">The stream to copy into a ByteString.</param>

+            <param name="cancellationToken">The cancellation token to use when reading from the stream, if any.</param>

+            <returns>A ByteString with content read from the given stream.</returns>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.CopyFrom(System.Byte[])">

+            <summary>

+            Constructs a <see cref="T:Google.Protobuf.ByteString" /> from the given array. The contents

+            are copied, so further modifications to the array will not

+            be reflected in the returned ByteString.

+            This method can also be invoked in <c>ByteString.CopyFrom(0xaa, 0xbb, ...)</c> form

+            which is primarily useful for testing.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.CopyFrom(System.Byte[],System.Int32,System.Int32)">

+            <summary>

+            Constructs a <see cref="T:Google.Protobuf.ByteString" /> from a portion of a byte array.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.CopyFrom(System.String,System.Text.Encoding)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.ByteString" /> by encoding the specified text with

+            the given encoding.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.CopyFromUtf8(System.String)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.ByteString" /> by encoding the specified text in UTF-8.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.ByteString.Item(System.Int32)">

+            <summary>

+            Retuns the byte at the given index.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.ToString(System.Text.Encoding)">

+            <summary>

+            Converts this <see cref="T:Google.Protobuf.ByteString"/> into a string by applying the given encoding.

+            </summary>

+            <remarks>

+            This method should only be used to convert binary data which was the result of encoding

+            text with the given encoding.

+            </remarks>

+            <param name="encoding">The encoding to use to decode the binary data into text.</param>

+            <returns>The result of decoding the binary data with the given decoding.</returns>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.ToStringUtf8">

+            <summary>

+            Converts this <see cref="T:Google.Protobuf.ByteString"/> into a string by applying the UTF-8 encoding.

+            </summary>

+            <remarks>

+            This method should only be used to convert binary data which was the result of encoding

+            text with UTF-8.

+            </remarks>

+            <returns>The result of decoding the binary data with the given decoding.</returns>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.GetEnumerator">

+            <summary>

+            Returns an iterator over the bytes in this <see cref="T:Google.Protobuf.ByteString"/>.

+            </summary>

+            <returns>An iterator over the bytes in this object.</returns>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.System#Collections#IEnumerable#GetEnumerator">

+            <summary>

+            Returns an iterator over the bytes in this <see cref="T:Google.Protobuf.ByteString"/>.

+            </summary>

+            <returns>An iterator over the bytes in this object.</returns>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.CreateCodedInput">

+            <summary>

+            Creates a CodedInputStream from this ByteString's data.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.op_Equality(Google.Protobuf.ByteString,Google.Protobuf.ByteString)">

+            <summary>

+            Compares two byte strings for equality.

+            </summary>

+            <param name="lhs">The first byte string to compare.</param>

+            <param name="rhs">The second byte string to compare.</param>

+            <returns><c>true</c> if the byte strings are equal; false otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.op_Inequality(Google.Protobuf.ByteString,Google.Protobuf.ByteString)">

+            <summary>

+            Compares two byte strings for inequality.

+            </summary>

+            <param name="lhs">The first byte string to compare.</param>

+            <param name="rhs">The second byte string to compare.</param>

+            <returns><c>false</c> if the byte strings are equal; true otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.Equals(System.Object)">

+            <summary>

+            Compares this byte string with another object.

+            </summary>

+            <param name="obj">The object to compare this with.</param>

+            <returns><c>true</c> if <paramref name="obj"/> refers to an equal <see cref="T:Google.Protobuf.ByteString"/>; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.GetHashCode">

+            <summary>

+            Returns a hash code for this object. Two equal byte strings

+            will return the same hash code.

+            </summary>

+            <returns>A hash code for this object.</returns>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.Equals(Google.Protobuf.ByteString)">

+            <summary>

+            Compares this byte string with another.

+            </summary>

+            <param name="other">The <see cref="T:Google.Protobuf.ByteString"/> to compare this with.</param>

+            <returns><c>true</c> if <paramref name="other"/> refers to an equal byte string; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.WriteRawBytesTo(Google.Protobuf.CodedOutputStream)">

+            <summary>

+            Used internally by CodedOutputStream to avoid creating a copy for the write

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.CopyTo(System.Byte[],System.Int32)">

+            <summary>

+            Copies the entire byte array to the destination array provided at the offset specified.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.ByteString.WriteTo(System.IO.Stream)">

+            <summary>

+            Writes the entire byte array to the provided stream

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.CodedInputStream">

+            <summary>

+            Reads and decodes protocol message fields.

+            </summary>

+            <remarks>

+            <para>

+            This class is generally used by generated code to read appropriate

+            primitives from the stream. It effectively encapsulates the lowest

+            levels of protocol buffer format.

+            </para>

+            <para>

+            Repeated fields and map fields are not handled by this class; use <see cref="T:Google.Protobuf.Collections.RepeatedField`1"/>

+            and <see cref="T:Google.Protobuf.Collections.MapField`2"/> to serialize such fields.

+            </para>

+            </remarks>

+        </member>

+        <member name="F:Google.Protobuf.CodedInputStream.leaveOpen">

+            <summary>

+            Whether to leave the underlying stream open when disposing of this stream.

+            This is always true when there's no stream.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.CodedInputStream.buffer">

+            <summary>

+            Buffer of data read from the stream or provided at construction time.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.CodedInputStream.bufferSize">

+            <summary>

+            The index of the buffer at which we need to refill from the stream (if there is one).

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.CodedInputStream.bufferPos">

+            <summary>

+            The position within the current buffer (i.e. the next byte to read)

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.CodedInputStream.input">

+            <summary>

+            The stream to read further input from, or null if the byte array buffer was provided

+            directly on construction, with no further data available.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.CodedInputStream.lastTag">

+            <summary>

+            The last tag we read. 0 indicates we've read to the end of the stream

+            (or haven't read anything yet).

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.CodedInputStream.nextTag">

+            <summary>

+            The next tag, used to store the value read by PeekTag.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.CodedInputStream.totalBytesRetired">

+            <summary>

+            The total number of bytes read before the current buffer. The

+            total bytes read up to the current position can be computed as

+            totalBytesRetired + bufferPos.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.CodedInputStream.currentLimit">

+            <summary>

+            The absolute position of the end of the current message.

+            </summary> 

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.#ctor(System.Byte[])">

+            <summary>

+            Creates a new CodedInputStream reading data from the given byte array.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.#ctor(System.Byte[],System.Int32,System.Int32)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.CodedInputStream"/> that reads from the given byte array slice.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.#ctor(System.IO.Stream)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.CodedInputStream"/> reading data from the given stream, which will be disposed

+            when the returned object is disposed.

+            </summary>

+            <param name="input">The stream to read from.</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.#ctor(System.IO.Stream,System.Boolean)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.CodedInputStream"/> reading data from the given stream.

+            </summary>

+            <param name="input">The stream to read from.</param>

+            <param name="leaveOpen"><c>true</c> to leave <paramref name="input"/> open when the returned

+            <c cref="T:Google.Protobuf.CodedInputStream"/> is disposed; <c>false</c> to dispose of the given stream when the

+            returned object is disposed.</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.#ctor(System.IO.Stream,System.Byte[],System.Int32,System.Int32,System.Boolean)">

+            <summary>

+            Creates a new CodedInputStream reading data from the given

+            stream and buffer, using the default limits.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.#ctor(System.IO.Stream,System.Byte[],System.Int32,System.Int32,System.Int32,System.Int32,System.Boolean)">

+            <summary>

+            Creates a new CodedInputStream reading data from the given

+            stream and buffer, using the specified limits.

+            </summary>

+            <remarks>

+            This chains to the version with the default limits instead of vice versa to avoid

+            having to check that the default values are valid every time.

+            </remarks>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.CreateWithLimits(System.IO.Stream,System.Int32,System.Int32)">

+            <summary>

+            Creates a <see cref="T:Google.Protobuf.CodedInputStream"/> with the specified size and recursion limits, reading

+            from an input stream.

+            </summary>

+            <remarks>

+            This method exists separately from the constructor to reduce the number of constructor overloads.

+            It is likely to be used considerably less frequently than the constructors, as the default limits

+            are suitable for most use cases.

+            </remarks>

+            <param name="input">The input stream to read from</param>

+            <param name="sizeLimit">The total limit of data to read from the stream.</param>

+            <param name="recursionLimit">The maximum recursion depth to allow while reading.</param>

+            <returns>A <c>CodedInputStream</c> reading from <paramref name="input"/> with the specified size

+            and recursion limits.</returns>

+        </member>

+        <member name="P:Google.Protobuf.CodedInputStream.Position">

+            <summary>

+            Returns the current position in the input stream, or the position in the input buffer

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.CodedInputStream.LastTag">

+            <summary>

+            Returns the last tag read, or 0 if no tags have been read or we've read beyond

+            the end of the stream.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.CodedInputStream.SizeLimit">

+            <summary>

+            Returns the size limit for this stream.

+            </summary>

+            <remarks>

+            This limit is applied when reading from the underlying stream, as a sanity check. It is

+            not applied when reading from a byte array data source without an underlying stream.

+            The default value is Int32.MaxValue.

+            </remarks>

+            <value>

+            The size limit.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.CodedInputStream.RecursionLimit">

+            <summary>

+            Returns the recursion limit for this stream. This limit is applied whilst reading messages,

+            to avoid maliciously-recursive data.

+            </summary>

+            <remarks>

+            The default limit is 64.

+            </remarks>

+            <value>

+            The recursion limit for this stream.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.CodedInputStream.DiscardUnknownFields">

+            <summary>

+            Internal-only property; when set to true, unknown fields will be discarded while parsing.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.Dispose">

+            <summary>

+            Disposes of this instance, potentially closing any underlying stream.

+            </summary>

+            <remarks>

+            As there is no flushing to perform here, disposing of a <see cref="T:Google.Protobuf.CodedInputStream"/> which

+            was constructed with the <c>leaveOpen</c> option parameter set to <c>true</c> (or one which

+            was constructed to read from a byte array) has no effect.

+            </remarks>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.CheckReadEndOfStreamTag">

+            <summary>

+            Verifies that the last call to ReadTag() returned tag 0 - in other words,

+            we've reached the end of the stream when we expected to.

+            </summary>

+            <exception cref="T:Google.Protobuf.InvalidProtocolBufferException">The 

+            tag read was not the one specified</exception>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.PeekTag">

+            <summary>

+            Peeks at the next field tag. This is like calling <see cref="M:Google.Protobuf.CodedInputStream.ReadTag"/>, but the

+            tag is not consumed. (So a subsequent call to <see cref="M:Google.Protobuf.CodedInputStream.ReadTag"/> will return the

+            same value.)

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadTag">

+            <summary>

+            Reads a field tag, returning the tag of 0 for "end of stream".

+            </summary>

+            <remarks>

+            If this method returns 0, it doesn't necessarily mean the end of all

+            the data in this CodedInputStream; it may be the end of the logical stream

+            for an embedded message, for example.

+            </remarks>

+            <returns>The next field tag, or 0 for end of stream. (0 is never a valid tag.)</returns>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.SkipLastField">

+            <summary>

+            Skips the data for the field with the tag we've just read.

+            This should be called directly after <see cref="M:Google.Protobuf.CodedInputStream.ReadTag"/>, when

+            the caller wishes to skip an unknown field.

+            </summary>

+            <remarks>

+            This method throws <see cref="T:Google.Protobuf.InvalidProtocolBufferException"/> if the last-read tag was an end-group tag.

+            If a caller wishes to skip a group, they should skip the whole group, by calling this method after reading the

+            start-group tag. This behavior allows callers to call this method on any field they don't understand, correctly

+            resulting in an error if an end-group tag has not been paired with an earlier start-group tag.

+            </remarks>

+            <exception cref="T:Google.Protobuf.InvalidProtocolBufferException">The last tag was an end-group tag</exception>

+            <exception cref="T:System.InvalidOperationException">The last read operation read to the end of the logical stream</exception>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.SkipGroup(System.UInt32)">

+            <summary>

+            Skip a group.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadDouble">

+            <summary>

+            Reads a double field from the stream.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadFloat">

+            <summary>

+            Reads a float field from the stream.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadUInt64">

+            <summary>

+            Reads a uint64 field from the stream.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadInt64">

+            <summary>

+            Reads an int64 field from the stream.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadInt32">

+            <summary>

+            Reads an int32 field from the stream.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadFixed64">

+            <summary>

+            Reads a fixed64 field from the stream.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadFixed32">

+            <summary>

+            Reads a fixed32 field from the stream.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadBool">

+            <summary>

+            Reads a bool field from the stream.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadString">

+            <summary>

+            Reads a string field from the stream.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadMessage(Google.Protobuf.IMessage)">

+            <summary>

+            Reads an embedded message field value from the stream.

+            </summary>   

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadBytes">

+            <summary>

+            Reads a bytes field value from the stream.

+            </summary>   

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadUInt32">

+            <summary>

+            Reads a uint32 field value from the stream.

+            </summary>   

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadEnum">

+            <summary>

+            Reads an enum field value from the stream.

+            </summary>   

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadSFixed32">

+            <summary>

+            Reads an sfixed32 field value from the stream.

+            </summary>   

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadSFixed64">

+            <summary>

+            Reads an sfixed64 field value from the stream.

+            </summary>   

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadSInt32">

+            <summary>

+            Reads an sint32 field value from the stream.

+            </summary>   

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadSInt64">

+            <summary>

+            Reads an sint64 field value from the stream.

+            </summary>   

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadLength">

+            <summary>

+            Reads a length for length-delimited data.

+            </summary>

+            <remarks>

+            This is internally just reading a varint, but this method exists

+            to make the calling code clearer.

+            </remarks>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.MaybeConsumeTag(System.UInt32)">

+            <summary>

+            Peeks at the next tag in the stream. If it matches <paramref name="tag"/>,

+            the tag is consumed and the method returns <c>true</c>; otherwise, the

+            stream is left in the original position and the method returns <c>false</c>.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.SlowReadRawVarint32">

+            <summary>

+            Same code as ReadRawVarint32, but read each byte individually, checking for

+            buffer overflow.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadRawVarint32">

+            <summary>

+            Reads a raw Varint from the stream.  If larger than 32 bits, discard the upper bits.

+            This method is optimised for the case where we've got lots of data in the buffer.

+            That means we can check the size just once, then just read directly from the buffer

+            without constant rechecking of the buffer length.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadRawVarint32(System.IO.Stream)">

+            <summary>

+            Reads a varint from the input one byte at a time, so that it does not

+            read any bytes after the end of the varint. If you simply wrapped the

+            stream in a CodedInputStream and used ReadRawVarint32(Stream)

+            then you would probably end up reading past the end of the varint since

+            CodedInputStream buffers its input.

+            </summary>

+            <param name="input"></param>

+            <returns></returns>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadRawVarint64">

+            <summary>

+            Reads a raw varint from the stream.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadRawLittleEndian32">

+            <summary>

+            Reads a 32-bit little-endian integer from the stream.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadRawLittleEndian64">

+            <summary>

+            Reads a 64-bit little-endian integer from the stream.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.DecodeZigZag32(System.UInt32)">

+            <summary>

+            Decode a 32-bit value with ZigZag encoding.

+            </summary>

+            <remarks>

+            ZigZag encodes signed integers into values that can be efficiently

+            encoded with varint.  (Otherwise, negative values must be 

+            sign-extended to 64 bits to be varint encoded, thus always taking

+            10 bytes on the wire.)

+            </remarks>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.DecodeZigZag64(System.UInt64)">

+            <summary>

+            Decode a 32-bit value with ZigZag encoding.

+            </summary>

+            <remarks>

+            ZigZag encodes signed integers into values that can be efficiently

+            encoded with varint.  (Otherwise, negative values must be 

+            sign-extended to 64 bits to be varint encoded, thus always taking

+            10 bytes on the wire.)

+            </remarks>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.PushLimit(System.Int32)">

+            <summary>

+            Sets currentLimit to (current position) + byteLimit. This is called

+            when descending into a length-delimited embedded message. The previous

+            limit is returned.

+            </summary>

+            <returns>The old limit.</returns>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.PopLimit(System.Int32)">

+            <summary>

+            Discards the current limit, returning the previous limit.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.CodedInputStream.ReachedLimit">

+            <summary>

+            Returns whether or not all the data before the limit has been read.

+            </summary>

+            <returns></returns>

+        </member>

+        <member name="P:Google.Protobuf.CodedInputStream.IsAtEnd">

+            <summary>

+            Returns true if the stream has reached the end of the input. This is the

+            case if either the end of the underlying input source has been reached or

+            the stream has reached a limit created using PushLimit.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.RefillBuffer(System.Boolean)">

+            <summary>

+            Called when buffer is empty to read more bytes from the

+            input.  If <paramref name="mustSucceed"/> is true, RefillBuffer() gurantees that

+            either there will be at least one byte in the buffer when it returns

+            or it will throw an exception.  If <paramref name="mustSucceed"/> is false,

+            RefillBuffer() returns false if no more bytes were available.

+            </summary>

+            <param name="mustSucceed"></param>

+            <returns></returns>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadRawByte">

+            <summary>

+            Read one byte from the input.

+            </summary>

+            <exception cref="T:Google.Protobuf.InvalidProtocolBufferException">

+            the end of the stream or the current limit was reached

+            </exception>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.ReadRawBytes(System.Int32)">

+            <summary>

+            Reads a fixed size of bytes from the input.

+            </summary>

+            <exception cref="T:Google.Protobuf.InvalidProtocolBufferException">

+            the end of the stream or the current limit was reached

+            </exception>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.SkipRawBytes(System.Int32)">

+            <summary>

+            Reads and discards <paramref name="size"/> bytes.

+            </summary>

+            <exception cref="T:Google.Protobuf.InvalidProtocolBufferException">the end of the stream

+            or the current limit was reached</exception>

+        </member>

+        <member name="M:Google.Protobuf.CodedInputStream.SkipImpl(System.Int32)">

+            <summary>

+            Abstraction of skipping to cope with streams which can't really skip.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.CodedOutputStream">

+            <summary>

+            Encodes and writes protocol message fields.

+            </summary>

+            <remarks>

+            <para>

+            This class is generally used by generated code to write appropriate

+            primitives to the stream. It effectively encapsulates the lowest

+            levels of protocol buffer format. Unlike some other implementations,

+            this does not include combined "write tag and value" methods. Generated

+            code knows the exact byte representations of the tags they're going to write,

+            so there's no need to re-encode them each time. Manually-written code calling

+            this class should just call one of the <c>WriteTag</c> overloads before each value.

+            </para>

+            <para>

+            Repeated fields and map fields are not handled by this class; use <c>RepeatedField&lt;T&gt;</c>

+            and <c>MapField&lt;TKey, TValue&gt;</c> to serialize such fields.

+            </para>

+            </remarks>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeDoubleSize(System.Double)">

+            <summary>

+            Computes the number of bytes that would be needed to encode a

+            double field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeFloatSize(System.Single)">

+            <summary>

+            Computes the number of bytes that would be needed to encode a

+            float field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeUInt64Size(System.UInt64)">

+            <summary>

+            Computes the number of bytes that would be needed to encode a

+            uint64 field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeInt64Size(System.Int64)">

+            <summary>

+            Computes the number of bytes that would be needed to encode an

+            int64 field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeInt32Size(System.Int32)">

+            <summary>

+            Computes the number of bytes that would be needed to encode an

+            int32 field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeFixed64Size(System.UInt64)">

+            <summary>

+            Computes the number of bytes that would be needed to encode a

+            fixed64 field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeFixed32Size(System.UInt32)">

+            <summary>

+            Computes the number of bytes that would be needed to encode a

+            fixed32 field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeBoolSize(System.Boolean)">

+            <summary>

+            Computes the number of bytes that would be needed to encode a

+            bool field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeStringSize(System.String)">

+            <summary>

+            Computes the number of bytes that would be needed to encode a

+            string field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeGroupSize(Google.Protobuf.IMessage)">

+            <summary>

+            Computes the number of bytes that would be needed to encode a

+            group field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeMessageSize(Google.Protobuf.IMessage)">

+            <summary>

+            Computes the number of bytes that would be needed to encode an

+            embedded message field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeBytesSize(Google.Protobuf.ByteString)">

+            <summary>

+            Computes the number of bytes that would be needed to encode a

+            bytes field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeUInt32Size(System.UInt32)">

+            <summary>

+            Computes the number of bytes that would be needed to encode a

+            uint32 field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeEnumSize(System.Int32)">

+            <summary>

+            Computes the number of bytes that would be needed to encode a

+            enum field, including the tag. The caller is responsible for

+            converting the enum value to its numeric value.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeSFixed32Size(System.Int32)">

+            <summary>

+            Computes the number of bytes that would be needed to encode an

+            sfixed32 field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeSFixed64Size(System.Int64)">

+            <summary>

+            Computes the number of bytes that would be needed to encode an

+            sfixed64 field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeSInt32Size(System.Int32)">

+            <summary>

+            Computes the number of bytes that would be needed to encode an

+            sint32 field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeSInt64Size(System.Int64)">

+            <summary>

+            Computes the number of bytes that would be needed to encode an

+            sint64 field, including the tag.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeLengthSize(System.Int32)">

+            <summary>

+            Computes the number of bytes that would be needed to encode a length,

+            as written by <see cref="M:Google.Protobuf.CodedOutputStream.WriteLength(System.Int32)"/>.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeRawVarint32Size(System.UInt32)">

+            <summary>

+            Computes the number of bytes that would be needed to encode a varint.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeRawVarint64Size(System.UInt64)">

+            <summary>

+            Computes the number of bytes that would be needed to encode a varint.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.ComputeTagSize(System.Int32)">

+            <summary>

+            Computes the number of bytes that would be needed to encode a tag.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.CodedOutputStream.DefaultBufferSize">

+            <summary>

+            The buffer size used by CreateInstance(Stream).

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.#ctor(System.Byte[])">

+            <summary>

+            Creates a new CodedOutputStream that writes directly to the given

+            byte array. If more bytes are written than fit in the array,

+            OutOfSpaceException will be thrown.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.#ctor(System.Byte[],System.Int32,System.Int32)">

+            <summary>

+            Creates a new CodedOutputStream that writes directly to the given

+            byte array slice. If more bytes are written than fit in the array,

+            OutOfSpaceException will be thrown.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.#ctor(System.IO.Stream)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.CodedOutputStream" /> which write to the given stream, and disposes of that

+            stream when the returned <c>CodedOutputStream</c> is disposed.

+            </summary>

+            <param name="output">The stream to write to. It will be disposed when the returned <c>CodedOutputStream is disposed.</c></param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.#ctor(System.IO.Stream,System.Int32)">

+            <summary>

+            Creates a new CodedOutputStream which write to the given stream and uses

+            the specified buffer size.

+            </summary>

+            <param name="output">The stream to write to. It will be disposed when the returned <c>CodedOutputStream is disposed.</c></param>

+            <param name="bufferSize">The size of buffer to use internally.</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.#ctor(System.IO.Stream,System.Boolean)">

+            <summary>

+            Creates a new CodedOutputStream which write to the given stream.

+            </summary>

+            <param name="output">The stream to write to.</param>

+            <param name="leaveOpen">If <c>true</c>, <paramref name="output"/> is left open when the returned <c>CodedOutputStream</c> is disposed;

+            if <c>false</c>, the provided stream is disposed as well.</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.#ctor(System.IO.Stream,System.Int32,System.Boolean)">

+            <summary>

+            Creates a new CodedOutputStream which write to the given stream and uses

+            the specified buffer size.

+            </summary>

+            <param name="output">The stream to write to.</param>

+            <param name="bufferSize">The size of buffer to use internally.</param>

+            <param name="leaveOpen">If <c>true</c>, <paramref name="output"/> is left open when the returned <c>CodedOutputStream</c> is disposed;

+            if <c>false</c>, the provided stream is disposed as well.</param>

+        </member>

+        <member name="P:Google.Protobuf.CodedOutputStream.Position">

+            <summary>

+            Returns the current position in the stream, or the position in the output buffer

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteDouble(System.Double)">

+            <summary>

+            Writes a double field value, without a tag, to the stream.

+            </summary>

+            <param name="value">The value to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteFloat(System.Single)">

+            <summary>

+            Writes a float field value, without a tag, to the stream.

+            </summary>

+            <param name="value">The value to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteUInt64(System.UInt64)">

+            <summary>

+            Writes a uint64 field value, without a tag, to the stream.

+            </summary>

+            <param name="value">The value to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteInt64(System.Int64)">

+            <summary>

+            Writes an int64 field value, without a tag, to the stream.

+            </summary>

+            <param name="value">The value to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteInt32(System.Int32)">

+            <summary>

+            Writes an int32 field value, without a tag, to the stream.

+            </summary>

+            <param name="value">The value to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteFixed64(System.UInt64)">

+            <summary>

+            Writes a fixed64 field value, without a tag, to the stream.

+            </summary>

+            <param name="value">The value to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteFixed32(System.UInt32)">

+            <summary>

+            Writes a fixed32 field value, without a tag, to the stream.

+            </summary>

+            <param name="value">The value to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteBool(System.Boolean)">

+            <summary>

+            Writes a bool field value, without a tag, to the stream.

+            </summary>

+            <param name="value">The value to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteString(System.String)">

+            <summary>

+            Writes a string field value, without a tag, to the stream.

+            The data is length-prefixed.

+            </summary>

+            <param name="value">The value to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteMessage(Google.Protobuf.IMessage)">

+            <summary>

+            Writes a message, without a tag, to the stream.

+            The data is length-prefixed.

+            </summary>

+            <param name="value">The value to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteBytes(Google.Protobuf.ByteString)">

+            <summary>

+            Write a byte string, without a tag, to the stream.

+            The data is length-prefixed.

+            </summary>

+            <param name="value">The value to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteUInt32(System.UInt32)">

+            <summary>

+            Writes a uint32 value, without a tag, to the stream.

+            </summary>

+            <param name="value">The value to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteEnum(System.Int32)">

+            <summary>

+            Writes an enum value, without a tag, to the stream.

+            </summary>

+            <param name="value">The value to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteSFixed32(System.Int32)">

+            <summary>

+            Writes an sfixed32 value, without a tag, to the stream.

+            </summary>

+            <param name="value">The value to write.</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteSFixed64(System.Int64)">

+            <summary>

+            Writes an sfixed64 value, without a tag, to the stream.

+            </summary>

+            <param name="value">The value to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteSInt32(System.Int32)">

+            <summary>

+            Writes an sint32 value, without a tag, to the stream.

+            </summary>

+            <param name="value">The value to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteSInt64(System.Int64)">

+            <summary>

+            Writes an sint64 value, without a tag, to the stream.

+            </summary>

+            <param name="value">The value to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteLength(System.Int32)">

+            <summary>

+            Writes a length (in bytes) for length-delimited data.

+            </summary>

+            <remarks>

+            This method simply writes a rawint, but exists for clarity in calling code.

+            </remarks>

+            <param name="length">Length value, in bytes.</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteTag(System.Int32,Google.Protobuf.WireFormat.WireType)">

+            <summary>

+            Encodes and writes a tag.

+            </summary>

+            <param name="fieldNumber">The number of the field to write the tag for</param>

+            <param name="type">The wire format type of the tag to write</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteTag(System.UInt32)">

+            <summary>

+            Writes an already-encoded tag.

+            </summary>

+            <param name="tag">The encoded tag</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteRawTag(System.Byte)">

+            <summary>

+            Writes the given single-byte tag directly to the stream.

+            </summary>

+            <param name="b1">The encoded tag</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteRawTag(System.Byte,System.Byte)">

+            <summary>

+            Writes the given two-byte tag directly to the stream.

+            </summary>

+            <param name="b1">The first byte of the encoded tag</param>

+            <param name="b2">The second byte of the encoded tag</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteRawTag(System.Byte,System.Byte,System.Byte)">

+            <summary>

+            Writes the given three-byte tag directly to the stream.

+            </summary>

+            <param name="b1">The first byte of the encoded tag</param>

+            <param name="b2">The second byte of the encoded tag</param>

+            <param name="b3">The third byte of the encoded tag</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteRawTag(System.Byte,System.Byte,System.Byte,System.Byte)">

+            <summary>

+            Writes the given four-byte tag directly to the stream.

+            </summary>

+            <param name="b1">The first byte of the encoded tag</param>

+            <param name="b2">The second byte of the encoded tag</param>

+            <param name="b3">The third byte of the encoded tag</param>

+            <param name="b4">The fourth byte of the encoded tag</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteRawTag(System.Byte,System.Byte,System.Byte,System.Byte,System.Byte)">

+            <summary>

+            Writes the given five-byte tag directly to the stream.

+            </summary>

+            <param name="b1">The first byte of the encoded tag</param>

+            <param name="b2">The second byte of the encoded tag</param>

+            <param name="b3">The third byte of the encoded tag</param>

+            <param name="b4">The fourth byte of the encoded tag</param>

+            <param name="b5">The fifth byte of the encoded tag</param>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteRawVarint32(System.UInt32)">

+            <summary>

+            Writes a 32 bit value as a varint. The fast route is taken when

+            there's enough buffer space left to whizz through without checking

+            for each byte; otherwise, we resort to calling WriteRawByte each time.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteRawBytes(System.Byte[])">

+            <summary>

+            Writes out an array of bytes.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.WriteRawBytes(System.Byte[],System.Int32,System.Int32)">

+            <summary>

+            Writes out part of an array of bytes.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.EncodeZigZag32(System.Int32)">

+            <summary>

+            Encode a 32-bit value with ZigZag encoding.

+            </summary>

+            <remarks>

+            ZigZag encodes signed integers into values that can be efficiently

+            encoded with varint.  (Otherwise, negative values must be 

+            sign-extended to 64 bits to be varint encoded, thus always taking

+            10 bytes on the wire.)

+            </remarks>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.EncodeZigZag64(System.Int64)">

+            <summary>

+            Encode a 64-bit value with ZigZag encoding.

+            </summary>

+            <remarks>

+            ZigZag encodes signed integers into values that can be efficiently

+            encoded with varint.  (Otherwise, negative values must be 

+            sign-extended to 64 bits to be varint encoded, thus always taking

+            10 bytes on the wire.)

+            </remarks>

+        </member>

+        <member name="T:Google.Protobuf.CodedOutputStream.OutOfSpaceException">

+            <summary>

+            Indicates that a CodedOutputStream wrapping a flat byte array

+            ran out of space.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.Dispose">

+            <summary>

+            Flushes any buffered data and optionally closes the underlying stream, if any.

+            </summary>

+            <remarks>

+            <para>

+            By default, any underlying stream is closed by this method. To configure this behaviour,

+            use a constructor overload with a <c>leaveOpen</c> parameter. If this instance does not

+            have an underlying stream, this method does nothing.

+            </para>

+            <para>

+            For the sake of efficiency, calling this method does not prevent future write calls - but

+            if a later write ends up writing to a stream which has been disposed, that is likely to

+            fail. It is recommend that you not call any other methods after this.

+            </para>

+            </remarks>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.Flush">

+            <summary>

+            Flushes any buffered data to the underlying stream (if there is one).

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.CodedOutputStream.CheckNoSpaceLeft">

+            <summary>

+            Verifies that SpaceLeft returns zero. It's common to create a byte array

+            that is exactly big enough to hold a message, then write to it with

+            a CodedOutputStream. Calling CheckNoSpaceLeft after writing verifies that

+            the message was actually as big as expected, which can help bugs.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.CodedOutputStream.SpaceLeft">

+            <summary>

+            If writing to a flat array, returns the space left in the array. Otherwise,

+            throws an InvalidOperationException.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Collections.Lists">

+            <summary>

+            Utility to compare if two Lists are the same, and the hash code

+            of a List.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Collections.Lists.Equals``1(System.Collections.Generic.List{``0},System.Collections.Generic.List{``0})">

+            <summary>

+            Checks if two lists are equal.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Collections.Lists.GetHashCode``1(System.Collections.Generic.List{``0})">

+            <summary>

+            Gets the list's hash code.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Collections.MapField`2">

+            <summary>

+            Representation of a map field in a Protocol Buffer message.

+            </summary>

+            <typeparam name="TKey">Key type in the map. Must be a type supported by Protocol Buffer map keys.</typeparam>

+            <typeparam name="TValue">Value type in the map. Must be a type supported by Protocol Buffers.</typeparam>

+            <remarks>

+            <para>

+            For string keys, the equality comparison is provided by <see cref="P:System.StringComparer.Ordinal" />.

+            </para>

+            <para>

+            Null values are not permitted in the map, either for wrapper types or regular messages.

+            If a map is deserialized from a data stream and the value is missing from an entry, a default value

+            is created instead. For primitive types, that is the regular default value (0, the empty string and so

+            on); for message types, an empty instance of the message is created, as if the map entry contained a 0-length

+            encoded value for the field.

+            </para>

+            <para>

+            This implementation does not generally prohibit the use of key/value types which are not

+            supported by Protocol Buffers (e.g. using a key type of <code>byte</code>) but nor does it guarantee

+            that all operations will work in such cases.

+            </para>

+            <para>

+            The order in which entries are returned when iterating over this object is undefined, and may change

+            in future versions.

+            </para>

+            </remarks>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.Clone">

+            <summary>

+            Creates a deep clone of this object.

+            </summary>

+            <returns>

+            A deep clone of this object.

+            </returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.Add(`0,`1)">

+            <summary>

+            Adds the specified key/value pair to the map.

+            </summary>

+            <remarks>

+            This operation fails if the key already exists in the map. To replace an existing entry, use the indexer.

+            </remarks>

+            <param name="key">The key to add</param>

+            <param name="value">The value to add.</param>

+            <exception cref="T:System.ArgumentException">The given key already exists in map.</exception>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.ContainsKey(`0)">

+            <summary>

+            Determines whether the specified key is present in the map.

+            </summary>

+            <param name="key">The key to check.</param>

+            <returns><c>true</c> if the map contains the given key; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.Remove(`0)">

+            <summary>

+            Removes the entry identified by the given key from the map.

+            </summary>

+            <param name="key">The key indicating the entry to remove from the map.</param>

+            <returns><c>true</c> if the map contained the given key before the entry was removed; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.TryGetValue(`0,`1@)">

+            <summary>

+            Gets the value associated with the specified key.

+            </summary>

+            <param name="key">The key whose value to get.</param>

+            <param name="value">When this method returns, the value associated with the specified key, if the key is found;

+            otherwise, the default value for the type of the <paramref name="value"/> parameter.

+            This parameter is passed uninitialized.</param>

+            <returns><c>true</c> if the map contains an element with the specified key; otherwise, <c>false</c>.</returns>

+        </member>

+        <member name="P:Google.Protobuf.Collections.MapField`2.Item(`0)">

+            <summary>

+            Gets or sets the value associated with the specified key.

+            </summary>

+            <param name="key">The key of the value to get or set.</param>

+            <exception cref="T:System.Collections.Generic.KeyNotFoundException">The property is retrieved and key does not exist in the collection.</exception>

+            <returns>The value associated with the specified key. If the specified key is not found,

+            a get operation throws a <see cref="T:System.Collections.Generic.KeyNotFoundException"/>, and a set operation creates a new element with the specified key.</returns>

+        </member>

+        <member name="P:Google.Protobuf.Collections.MapField`2.Keys">

+            <summary>

+            Gets a collection containing the keys in the map.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Collections.MapField`2.Values">

+            <summary>

+            Gets a collection containing the values in the map.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.Add(System.Collections.Generic.IDictionary{`0,`1})">

+            <summary>

+            Adds the specified entries to the map. The keys and values are not automatically cloned.

+            </summary>

+            <param name="entries">The entries to add to the map.</param>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.GetEnumerator">

+            <summary>

+            Returns an enumerator that iterates through the collection.

+            </summary>

+            <returns>

+            An enumerator that can be used to iterate through the collection.

+            </returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.System#Collections#IEnumerable#GetEnumerator">

+            <summary>

+            Returns an enumerator that iterates through a collection.

+            </summary>

+            <returns>

+            An <see cref="T:System.Collections.IEnumerator" /> object that can be used to iterate through the collection.

+            </returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.System#Collections#Generic#ICollection{System#Collections#Generic#KeyValuePair{TKey,TValue}}#Add(System.Collections.Generic.KeyValuePair{`0,`1})">

+            <summary>

+            Adds the specified item to the map.

+            </summary>

+            <param name="item">The item to add to the map.</param>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.Clear">

+            <summary>

+            Removes all items from the map.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.System#Collections#Generic#ICollection{System#Collections#Generic#KeyValuePair{TKey,TValue}}#Contains(System.Collections.Generic.KeyValuePair{`0,`1})">

+            <summary>

+            Determines whether map contains an entry equivalent to the given key/value pair.

+            </summary>

+            <param name="item">The key/value pair to find.</param>

+            <returns></returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.System#Collections#Generic#ICollection{System#Collections#Generic#KeyValuePair{TKey,TValue}}#CopyTo(System.Collections.Generic.KeyValuePair{`0,`1}[],System.Int32)">

+            <summary>

+            Copies the key/value pairs in this map to an array.

+            </summary>

+            <param name="array">The array to copy the entries into.</param>

+            <param name="arrayIndex">The index of the array at which to start copying values.</param>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.System#Collections#Generic#ICollection{System#Collections#Generic#KeyValuePair{TKey,TValue}}#Remove(System.Collections.Generic.KeyValuePair{`0,`1})">

+            <summary>

+            Removes the specified key/value pair from the map.

+            </summary>

+            <remarks>Both the key and the value must be found for the entry to be removed.</remarks>

+            <param name="item">The key/value pair to remove.</param>

+            <returns><c>true</c> if the key/value pair was found and removed; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="P:Google.Protobuf.Collections.MapField`2.Count">

+            <summary>

+            Gets the number of elements contained in the map.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Collections.MapField`2.IsReadOnly">

+            <summary>

+            Gets a value indicating whether the map is read-only.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.Equals(System.Object)">

+            <summary>

+            Determines whether the specified <see cref="T:System.Object" />, is equal to this instance.

+            </summary>

+            <param name="other">The <see cref="T:System.Object" /> to compare with this instance.</param>

+            <returns>

+              <c>true</c> if the specified <see cref="T:System.Object" /> is equal to this instance; otherwise, <c>false</c>.

+            </returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.GetHashCode">

+            <summary>

+            Returns a hash code for this instance.

+            </summary>

+            <returns>

+            A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. 

+            </returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.Equals(Google.Protobuf.Collections.MapField{`0,`1})">

+            <summary>

+            Compares this map with another for equality.

+            </summary>

+            <remarks>

+            The order of the key/value pairs in the maps is not deemed significant in this comparison.

+            </remarks>

+            <param name="other">The map to compare this with.</param>

+            <returns><c>true</c> if <paramref name="other"/> refers to an equal map; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.AddEntriesFrom(Google.Protobuf.CodedInputStream,Google.Protobuf.Collections.MapField{`0,`1}.Codec)">

+            <summary>

+            Adds entries to the map from the given stream.

+            </summary>

+            <remarks>

+            It is assumed that the stream is initially positioned after the tag specified by the codec.

+            This method will continue reading entries from the stream until the end is reached, or

+            a different tag is encountered.

+            </remarks>

+            <param name="input">Stream to read from</param>

+            <param name="codec">Codec describing how the key/value pairs are encoded</param>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.WriteTo(Google.Protobuf.CodedOutputStream,Google.Protobuf.Collections.MapField{`0,`1}.Codec)">

+            <summary>

+            Writes the contents of this map to the given coded output stream, using the specified codec

+            to encode each entry.

+            </summary>

+            <param name="output">The output stream to write to.</param>

+            <param name="codec">The codec to use for each entry.</param>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.CalculateSize(Google.Protobuf.Collections.MapField{`0,`1}.Codec)">

+            <summary>

+            Calculates the size of this map based on the given entry codec.

+            </summary>

+            <param name="codec">The codec to use to encode each entry.</param>

+            <returns></returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.ToString">

+            <summary>

+            Returns a string representation of this repeated field, in the same

+            way as it would be represented by the default JSON formatter.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Collections.MapField`2.Codec">

+            <summary>

+            A codec for a specific map field. This contains all the information required to encode and

+            decode the nested messages.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Collections.MapField`2.Codec.#ctor(Google.Protobuf.FieldCodec{`0},Google.Protobuf.FieldCodec{`1},System.UInt32)">

+            <summary>

+            Creates a new entry codec based on a separate key codec and value codec,

+            and the tag to use for each map entry.

+            </summary>

+            <param name="keyCodec">The key codec.</param>

+            <param name="valueCodec">The value codec.</param>

+            <param name="mapTag">The map tag to use to introduce each map entry.</param>

+        </member>

+        <member name="P:Google.Protobuf.Collections.MapField`2.Codec.MapTag">

+            <summary>

+            The tag used in the enclosing message to indicate map entries.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Collections.MapField`2.Codec.MessageAdapter">

+            <summary>

+            A mutable message class, used for parsing and serializing. This

+            delegates the work to a codec, but implements the <see cref="T:Google.Protobuf.IMessage"/> interface

+            for interop with <see cref="T:Google.Protobuf.CodedInputStream"/> and <see cref="T:Google.Protobuf.CodedOutputStream"/>.

+            This is nested inside Codec as it's tightly coupled to the associated codec,

+            and it's simpler if it has direct access to all its fields.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Collections.ProtobufEqualityComparers">

+            <summary>

+            Provides a central place to implement equality comparisons, primarily for bitwise float/double equality.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Collections.ProtobufEqualityComparers.GetEqualityComparer``1">

+            <summary>

+            Returns an equality comparer for <typeparamref name="T"/> suitable for Protobuf equality comparisons.

+            This is usually just the default equality comparer for the type, but floating point numbers are compared

+            bitwise.

+            </summary>

+            <typeparam name="T">The type of equality comparer to return.</typeparam>

+            <returns>The equality comparer.</returns>

+        </member>

+        <member name="P:Google.Protobuf.Collections.ProtobufEqualityComparers.BitwiseDoubleEqualityComparer">

+            <summary>

+            Returns an equality comparer suitable for comparing 64-bit floating point values, by bitwise comparison.

+            (NaN values are considered equal, but only when they have the same representation.)

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Collections.ProtobufEqualityComparers.BitwiseSingleEqualityComparer">

+            <summary>

+            Returns an equality comparer suitable for comparing 32-bit floating point values, by bitwise comparison.

+            (NaN values are considered equal, but only when they have the same representation.)

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Collections.ProtobufEqualityComparers.BitwiseNullableDoubleEqualityComparer">

+            <summary>

+            Returns an equality comparer suitable for comparing nullable 64-bit floating point values, by bitwise comparison.

+            (NaN values are considered equal, but only when they have the same representation.)

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Collections.ProtobufEqualityComparers.BitwiseNullableSingleEqualityComparer">

+            <summary>

+            Returns an equality comparer suitable for comparing nullable 32-bit floating point values, by bitwise comparison.

+            (NaN values are considered equal, but only when they have the same representation.)

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Collections.ReadOnlyDictionary`2">

+            <summary>

+            Read-only wrapper around another dictionary.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Collections.RepeatedField`1">

+            <summary>

+            The contents of a repeated field: essentially, a collection with some extra

+            restrictions (no null values) and capabilities (deep cloning).

+            </summary>

+            <remarks>

+            This implementation does not generally prohibit the use of types which are not

+            supported by Protocol Buffers but nor does it guarantee that all operations will work in such cases.

+            </remarks>

+            <typeparam name="T">The element type of the repeated field.</typeparam>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.Clone">

+            <summary>

+            Creates a deep clone of this repeated field.

+            </summary>

+            <remarks>

+            If the field type is

+            a message type, each element is also cloned; otherwise, it is

+            assumed that the field type is primitive (including string and

+            bytes, both of which are immutable) and so a simple copy is

+            equivalent to a deep clone.

+            </remarks>

+            <returns>A deep clone of this repeated field.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.AddEntriesFrom(Google.Protobuf.CodedInputStream,Google.Protobuf.FieldCodec{`0})">

+            <summary>

+            Adds the entries from the given input stream, decoding them with the specified codec.

+            </summary>

+            <param name="input">The input stream to read from.</param>

+            <param name="codec">The codec to use in order to read each entry.</param>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.CalculateSize(Google.Protobuf.FieldCodec{`0})">

+            <summary>

+            Calculates the size of this collection based on the given codec.

+            </summary>

+            <param name="codec">The codec to use when encoding each field.</param>

+            <returns>The number of bytes that would be written to a <see cref="T:Google.Protobuf.CodedOutputStream"/> by <see cref="M:Google.Protobuf.Collections.RepeatedField`1.WriteTo(Google.Protobuf.CodedOutputStream,Google.Protobuf.FieldCodec{`0})"/>,

+            using the same codec.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.WriteTo(Google.Protobuf.CodedOutputStream,Google.Protobuf.FieldCodec{`0})">

+            <summary>

+            Writes the contents of this collection to the given <see cref="T:Google.Protobuf.CodedOutputStream"/>,

+            encoding each value using the specified codec.

+            </summary>

+            <param name="output">The output stream to write to.</param>

+            <param name="codec">The codec to use when encoding each value.</param>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.Add(`0)">

+            <summary>

+            Adds the specified item to the collection.

+            </summary>

+            <param name="item">The item to add.</param>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.Clear">

+            <summary>

+            Removes all items from the collection.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.Contains(`0)">

+            <summary>

+            Determines whether this collection contains the given item.

+            </summary>

+            <param name="item">The item to find.</param>

+            <returns><c>true</c> if this collection contains the given item; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.CopyTo(`0[],System.Int32)">

+            <summary>

+            Copies this collection to the given array.

+            </summary>

+            <param name="array">The array to copy to.</param>

+            <param name="arrayIndex">The first index of the array to copy to.</param>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.Remove(`0)">

+            <summary>

+            Removes the specified item from the collection

+            </summary>

+            <param name="item">The item to remove.</param>

+            <returns><c>true</c> if the item was found and removed; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="P:Google.Protobuf.Collections.RepeatedField`1.Count">

+            <summary>

+            Gets the number of elements contained in the collection.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Collections.RepeatedField`1.IsReadOnly">

+            <summary>

+            Gets a value indicating whether the collection is read-only.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.AddRange(System.Collections.Generic.IEnumerable{`0})">

+            <summary>

+            Adds all of the specified values into this collection.

+            </summary>

+            <param name="values">The values to add to this collection.</param>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.Add(System.Collections.Generic.IEnumerable{`0})">

+            <summary>

+            Adds all of the specified values into this collection. This method is present to

+            allow repeated fields to be constructed from queries within collection initializers.

+            Within non-collection-initializer code, consider using the equivalent <see cref="M:Google.Protobuf.Collections.RepeatedField`1.AddRange(System.Collections.Generic.IEnumerable{`0})"/>

+            method instead for clarity.

+            </summary>

+            <param name="values">The values to add to this collection.</param>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.GetEnumerator">

+            <summary>

+            Returns an enumerator that iterates through the collection.

+            </summary>

+            <returns>

+            An enumerator that can be used to iterate through the collection.

+            </returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.Equals(System.Object)">

+            <summary>

+            Determines whether the specified <see cref="T:System.Object" />, is equal to this instance.

+            </summary>

+            <param name="obj">The <see cref="T:System.Object" /> to compare with this instance.</param>

+            <returns>

+              <c>true</c> if the specified <see cref="T:System.Object" /> is equal to this instance; otherwise, <c>false</c>.

+            </returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.System#Collections#IEnumerable#GetEnumerator">

+            <summary>

+            Returns an enumerator that iterates through a collection.

+            </summary>

+            <returns>

+            An <see cref="T:System.Collections.IEnumerator" /> object that can be used to iterate through the collection.

+            </returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.GetHashCode">

+            <summary>

+            Returns a hash code for this instance.

+            </summary>

+            <returns>

+            A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. 

+            </returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.Equals(Google.Protobuf.Collections.RepeatedField{`0})">

+            <summary>

+            Compares this repeated field with another for equality.

+            </summary>

+            <param name="other">The repeated field to compare this with.</param>

+            <returns><c>true</c> if <paramref name="other"/> refers to an equal repeated field; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.IndexOf(`0)">

+            <summary>

+            Returns the index of the given item within the collection, or -1 if the item is not

+            present.

+            </summary>

+            <param name="item">The item to find in the collection.</param>

+            <returns>The zero-based index of the item, or -1 if it is not found.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.Insert(System.Int32,`0)">

+            <summary>

+            Inserts the given item at the specified index.

+            </summary>

+            <param name="index">The index at which to insert the item.</param>

+            <param name="item">The item to insert.</param>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.RemoveAt(System.Int32)">

+            <summary>

+            Removes the item at the given index.

+            </summary>

+            <param name="index">The zero-based index of the item to remove.</param>

+        </member>

+        <member name="M:Google.Protobuf.Collections.RepeatedField`1.ToString">

+            <summary>

+            Returns a string representation of this repeated field, in the same

+            way as it would be represented by the default JSON formatter.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Collections.RepeatedField`1.Item(System.Int32)">

+            <summary>

+            Gets or sets the item at the specified index.

+            </summary>

+            <value>

+            The element at the specified index.

+            </value>

+            <param name="index">The zero-based index of the element to get or set.</param>

+            <returns>The item at the specified index.</returns>

+        </member>

+        <member name="T:Google.Protobuf.Compatibility.PropertyInfoExtensions">

+            <summary>

+            Extension methods for <see cref="T:System.Reflection.PropertyInfo"/>, effectively providing

+            the familiar members from previous desktop framework versions while

+            targeting the newer releases, .NET Core etc.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Compatibility.PropertyInfoExtensions.GetGetMethod(System.Reflection.PropertyInfo)">

+            <summary>

+            Returns the public getter of a property, or null if there is no such getter

+            (either because it's read-only, or the getter isn't public).

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Compatibility.PropertyInfoExtensions.GetSetMethod(System.Reflection.PropertyInfo)">

+            <summary>

+            Returns the public setter of a property, or null if there is no such setter

+            (either because it's write-only, or the setter isn't public).

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Compatibility.TypeExtensions">

+            <summary>

+            Provides extension methods on Type that just proxy to TypeInfo.

+            These are used to support the new type system from .NET 4.5, without

+            having calls to GetTypeInfo all over the place. While the methods here are meant to be

+            broadly compatible with the desktop framework, there are some subtle differences in behaviour - but

+            they're not expected to affect our use cases. While the class is internal, that should be fine: we can

+            evaluate each new use appropriately.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Compatibility.TypeExtensions.IsAssignableFrom(System.Type,System.Type)">

+            <summary>

+            See https://msdn.microsoft.com/en-us/library/system.type.isassignablefrom

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Compatibility.TypeExtensions.GetProperty(System.Type,System.String)">

+            <summary>

+            Returns a representation of the public property associated with the given name in the given type,

+            including inherited properties or null if there is no such public property.

+            Here, "public property" means a property where either the getter, or the setter, or both, is public.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Compatibility.TypeExtensions.GetMethod(System.Type,System.String)">

+            <summary>

+            Returns a representation of the public method associated with the given name in the given type,

+            including inherited methods.

+            </summary>

+            <remarks>

+            This has a few differences compared with Type.GetMethod in the desktop framework. It will throw

+            if there is an ambiguous match even between a private method and a public one, but it *won't* throw

+            if there are two overloads at different levels in the type hierarchy (e.g. class Base declares public void Foo(int) and

+            class Child : Base declares public void Foo(long)).

+            </remarks>

+            <exception cref="T:System.Reflection.AmbiguousMatchException">One type in the hierarchy declared more than one method with the same name</exception>

+        </member>

+        <member name="T:Google.Protobuf.FieldCodec">

+            <summary>

+            Factory methods for <see cref="T:Google.Protobuf.FieldCodec`1"/>.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForString(System.UInt32)">

+            <summary>

+            Retrieves a codec suitable for a string field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForBytes(System.UInt32)">

+            <summary>

+            Retrieves a codec suitable for a bytes field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForBool(System.UInt32)">

+            <summary>

+            Retrieves a codec suitable for a bool field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForInt32(System.UInt32)">

+            <summary>

+            Retrieves a codec suitable for an int32 field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForSInt32(System.UInt32)">

+            <summary>

+            Retrieves a codec suitable for an sint32 field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForFixed32(System.UInt32)">

+            <summary>

+            Retrieves a codec suitable for a fixed32 field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForSFixed32(System.UInt32)">

+            <summary>

+            Retrieves a codec suitable for an sfixed32 field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForUInt32(System.UInt32)">

+            <summary>

+            Retrieves a codec suitable for a uint32 field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForInt64(System.UInt32)">

+            <summary>

+            Retrieves a codec suitable for an int64 field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForSInt64(System.UInt32)">

+            <summary>

+            Retrieves a codec suitable for an sint64 field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForFixed64(System.UInt32)">

+            <summary>

+            Retrieves a codec suitable for a fixed64 field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForSFixed64(System.UInt32)">

+            <summary>

+            Retrieves a codec suitable for an sfixed64 field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForUInt64(System.UInt32)">

+            <summary>

+            Retrieves a codec suitable for a uint64 field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForFloat(System.UInt32)">

+            <summary>

+            Retrieves a codec suitable for a float field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForDouble(System.UInt32)">

+            <summary>

+            Retrieves a codec suitable for a double field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForEnum``1(System.UInt32,System.Func{``0,System.Int32},System.Func{System.Int32,``0})">

+            <summary>

+            Retrieves a codec suitable for an enum field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <param name="toInt32">A conversion function from <see cref="T:System.Int32"/> to the enum type.</param>

+            <param name="fromInt32">A conversion function from the enum type to <see cref="T:System.Int32"/>.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForMessage``1(System.UInt32,Google.Protobuf.MessageParser{``0})">

+            <summary>

+            Retrieves a codec suitable for a message field with the given tag.

+            </summary>

+            <param name="tag">The tag.</param>

+            <param name="parser">A parser to use for the message type.</param>

+            <returns>A codec for the given tag.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForClassWrapper``1(System.UInt32)">

+            <summary>

+            Creates a codec for a wrapper type of a class - which must be string or ByteString.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.ForStructWrapper``1(System.UInt32)">

+            <summary>

+            Creates a codec for a wrapper type of a struct - which must be Int32, Int64, UInt32, UInt64,

+            Bool, Single or Double.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.FieldCodec.WrapperCodecs">

+            <summary>

+            Helper code to create codecs for wrapper types.

+            </summary>

+            <remarks>

+            Somewhat ugly with all the static methods, but the conversions involved to/from nullable types make it

+            slightly tricky to improve. So long as we keep the public API (ForClassWrapper, ForStructWrapper) in place,

+            we can refactor later if we come up with something cleaner.

+            </remarks>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec.WrapperCodecs.GetCodec``1">

+            <summary>

+            Returns a field codec which effectively wraps a value of type T in a message.

+            

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.FieldCodec`1">

+            <summary>

+            <para>

+            An encode/decode pair for a single field. This effectively encapsulates

+            all the information needed to read or write the field value from/to a coded

+            stream.

+            </para>

+            <para>

+            This class is public and has to be as it is used by generated code, but its public

+            API is very limited - just what the generated code needs to call directly.

+            </para>

+            </summary>

+            <remarks>

+            This never writes default values to the stream, and does not address "packedness"

+            in repeated fields itself, other than to know whether or not the field *should* be packed.

+            </remarks>

+        </member>

+        <member name="P:Google.Protobuf.FieldCodec`1.ValueWriter">

+            <summary>

+            Returns a delegate to write a value (unconditionally) to a coded output stream.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.FieldCodec`1.ValueSizeCalculator">

+            <summary>

+            Returns the size calculator for just a value.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.FieldCodec`1.ValueReader">

+            <summary>

+            Returns a delegate to read a value from a coded input stream. It is assumed that

+            the stream is already positioned on the appropriate tag.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.FieldCodec`1.FixedSize">

+            <summary>

+            Returns the fixed size for an entry, or 0 if sizes vary.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.FieldCodec`1.Tag">

+            <summary>

+            Gets the tag of the codec.

+            </summary>

+            <value>

+            The tag of the codec.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.FieldCodec`1.DefaultValue">

+            <summary>

+            Default value for this codec. Usually the same for every instance of the same type, but

+            for string/ByteString wrapper fields the codec's default value is null, whereas for

+            other string/ByteString fields it's "" or ByteString.Empty.

+            </summary>

+            <value>

+            The default value of the codec's type.

+            </value>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec`1.WriteTagAndValue(Google.Protobuf.CodedOutputStream,`0)">

+            <summary>

+            Write a tag and the given value, *if* the value is not the default.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec`1.Read(Google.Protobuf.CodedInputStream)">

+            <summary>

+            Reads a value of the codec type from the given <see cref="T:Google.Protobuf.CodedInputStream"/>.

+            </summary>

+            <param name="input">The input stream to read from.</param>

+            <returns>The value read from the stream.</returns>

+        </member>

+        <member name="M:Google.Protobuf.FieldCodec`1.CalculateSizeWithTag(`0)">

+            <summary>

+            Calculates the size required to write the given value, with a tag,

+            if the value is not the default.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.FrameworkPortability">

+            <summary>

+            Class containing helpful workarounds for various platform compatibility

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.ICustomDiagnosticMessage">

+            <summary>

+            A message type that has a custom string format for diagnostic purposes.

+            </summary>

+            <remarks>

+            <para>

+            Calling <see cref="M:System.Object.ToString"/> on a generated message type normally

+            returns the JSON representation. If a message type implements this interface,

+            then the <see cref="M:Google.Protobuf.ICustomDiagnosticMessage.ToDiagnosticString"/> method will be called instead of the regular

+            JSON formatting code, but only when <c>ToString()</c> is called either on the message itself

+            or on another message which contains it. This does not affect the normal JSON formatting of

+            the message.

+            </para>

+            <para>

+            For example, if you create a proto message representing a GUID, the internal

+            representation may be a <c>bytes</c> field or four <c>fixed32</c> fields. However, when debugging

+            it may be more convenient to see a result in the same format as <see cref="T:System.Guid"/> provides.

+            </para>

+            <para>This interface extends <see cref="T:Google.Protobuf.IMessage"/> to avoid it accidentally being implemented

+            on types other than messages, where it would not be used by anything in the framework.</para>

+            </remarks>

+        </member>

+        <member name="M:Google.Protobuf.ICustomDiagnosticMessage.ToDiagnosticString">

+            <summary>

+            Returns a string representation of this object, for diagnostic purposes.

+            </summary>

+            <remarks>

+            This method is called when a message is formatted as part of a <see cref="M:System.Object.ToString"/>

+            call. It does not affect the JSON representation used by <see cref="T:Google.Protobuf.JsonFormatter"/> other than

+            in calls to <see cref="M:Google.Protobuf.JsonFormatter.ToDiagnosticString(Google.Protobuf.IMessage)"/>. While it is recommended

+            that the result is valid JSON, this is never assumed by the Protobuf library.

+            </remarks>

+            <returns>A string representation of this object, for diagnostic purposes.</returns>

+        </member>

+        <member name="T:Google.Protobuf.IDeepCloneable`1">

+            <summary>

+            Generic interface for a deeply cloneable type.

+            </summary>

+            <remarks>

+            <para>

+            All generated messages implement this interface, but so do some non-message types.

+            Additionally, due to the type constraint on <c>T</c> in <see cref="T:Google.Protobuf.IMessage`1"/>,

+            it is simpler to keep this as a separate interface.

+            </para>

+            </remarks>

+            <typeparam name="T">The type itself, returned by the <see cref="M:Google.Protobuf.IDeepCloneable`1.Clone"/> method.</typeparam>

+        </member>

+        <member name="M:Google.Protobuf.IDeepCloneable`1.Clone">

+            <summary>

+            Creates a deep clone of this object.

+            </summary>

+            <returns>A deep clone of this object.</returns>

+        </member>

+        <member name="T:Google.Protobuf.IMessage">

+            <summary>

+            Interface for a Protocol Buffers message, supporting

+            basic operations required for serialization.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.IMessage.MergeFrom(Google.Protobuf.CodedInputStream)">

+            <summary>

+            Merges the data from the specified coded input stream with the current message.

+            </summary>

+            <remarks>See the user guide for precise merge semantics.</remarks>

+            <param name="input"></param>

+        </member>

+        <member name="M:Google.Protobuf.IMessage.WriteTo(Google.Protobuf.CodedOutputStream)">

+            <summary>

+            Writes the data to the given coded output stream.

+            </summary>

+            <param name="output">Coded output stream to write the data to. Must not be null.</param>

+        </member>

+        <member name="M:Google.Protobuf.IMessage.CalculateSize">

+            <summary>

+            Calculates the size of this message in Protocol Buffer wire format, in bytes.

+            </summary>

+            <returns>The number of bytes required to write this message

+            to a coded output stream.</returns>

+        </member>

+        <member name="P:Google.Protobuf.IMessage.Descriptor">

+            <summary>

+            Descriptor for this message. All instances are expected to return the same descriptor,

+            and for generated types this will be an explicitly-implemented member, returning the

+            same value as the static property declared on the type.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.IMessage`1">

+            <summary>

+            Generic interface for a Protocol Buffers message,

+            where the type parameter is expected to be the same type as

+            the implementation class.

+            </summary>

+            <typeparam name="T">The message type.</typeparam>

+        </member>

+        <member name="M:Google.Protobuf.IMessage`1.MergeFrom(`0)">

+            <summary>

+            Merges the given message into this one.

+            </summary>

+            <remarks>See the user guide for precise merge semantics.</remarks>

+            <param name="message">The message to merge with this one. Must not be null.</param>

+        </member>

+        <member name="T:Google.Protobuf.InvalidJsonException">

+            <summary>

+            Thrown when an attempt is made to parse invalid JSON, e.g. using

+            a non-string property key, or including a redundant comma. Parsing a protocol buffer

+            message represented in JSON using <see cref="T:Google.Protobuf.JsonParser"/> can throw both this

+            exception and <see cref="T:Google.Protobuf.InvalidProtocolBufferException"/> depending on the situation. This

+            exception is only thrown for "pure JSON" errors, whereas <c>InvalidProtocolBufferException</c>

+            is thrown when the JSON may be valid in and of itself, but cannot be parsed as a protocol buffer

+            message.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.InvalidProtocolBufferException">

+            <summary>

+            Thrown when a protocol message being parsed is invalid in some way,

+            e.g. it contains a malformed varint or a negative byte length.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.InvalidProtocolBufferException.InvalidTag">

+            <summary>

+            Creates an exception for an error condition of an invalid tag being encountered.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.JsonFormatter">

+            <summary>

+            Reflection-based converter from messages to JSON.

+            </summary>

+            <remarks>

+            <para>

+            Instances of this class are thread-safe, with no mutable state.

+            </para>

+            <para>

+            This is a simple start to get JSON formatting working. As it's reflection-based,

+            it's not as quick as baking calls into generated messages - but is a simpler implementation.

+            (This code is generally not heavily optimized.)

+            </para>

+            </remarks>

+        </member>

+        <member name="P:Google.Protobuf.JsonFormatter.Default">

+            <summary>

+            Returns a formatter using the default settings.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.JsonFormatter.CommonRepresentations">

+            <summary>

+            The JSON representation of the first 160 characters of Unicode.

+            Empty strings are replaced by the static constructor.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.JsonFormatter.#ctor(Google.Protobuf.JsonFormatter.Settings)">

+            <summary>

+            Creates a new formatted with the given settings.

+            </summary>

+            <param name="settings">The settings.</param>

+        </member>

+        <member name="M:Google.Protobuf.JsonFormatter.Format(Google.Protobuf.IMessage)">

+            <summary>

+            Formats the specified message as JSON.

+            </summary>

+            <param name="message">The message to format.</param>

+            <returns>The formatted message.</returns>

+        </member>

+        <member name="M:Google.Protobuf.JsonFormatter.Format(Google.Protobuf.IMessage,System.IO.TextWriter)">

+            <summary>

+            Formats the specified message as JSON.

+            </summary>

+            <param name="message">The message to format.</param>

+            <param name="writer">The TextWriter to write the formatted message to.</param>

+            <returns>The formatted message.</returns>

+        </member>

+        <member name="M:Google.Protobuf.JsonFormatter.ToDiagnosticString(Google.Protobuf.IMessage)">

+            <summary>

+            Converts a message to JSON for diagnostic purposes with no extra context.

+            </summary>

+            <remarks>

+            <para>

+            This differs from calling <see cref="M:Google.Protobuf.JsonFormatter.Format(Google.Protobuf.IMessage)"/> on the default JSON

+            formatter in its handling of <see cref="T:Google.Protobuf.WellKnownTypes.Any"/>. As no type registry is available

+            in <see cref="M:System.Object.ToString"/> calls, the normal way of resolving the type of

+            an <c>Any</c> message cannot be applied. Instead, a JSON property named <c>@value</c>

+            is included with the base64 data from the <see cref="P:Google.Protobuf.WellKnownTypes.Any.Value"/> property of the message.

+            </para>

+            <para>The value returned by this method is only designed to be used for diagnostic

+            purposes. It may not be parsable by <see cref="T:Google.Protobuf.JsonParser"/>, and may not be parsable

+            by other Protocol Buffer implementations.</para>

+            </remarks>

+            <param name="message">The message to format for diagnostic purposes.</param>

+            <returns>The diagnostic-only JSON representation of the message</returns>

+        </member>

+        <member name="M:Google.Protobuf.JsonFormatter.WriteValue(System.IO.TextWriter,System.Object)">

+            <summary>

+            Writes a single value to the given writer as JSON. Only types understood by

+            Protocol Buffers can be written in this way. This method is only exposed for

+            advanced use cases; most users should be using <see cref="M:Google.Protobuf.JsonFormatter.Format(Google.Protobuf.IMessage)"/>

+            or <see cref="M:Google.Protobuf.JsonFormatter.Format(Google.Protobuf.IMessage,System.IO.TextWriter)"/>.

+            </summary>

+            <param name="writer">The writer to write the value to. Must not be null.</param>

+            <param name="value">The value to write. May be null.</param>

+        </member>

+        <member name="M:Google.Protobuf.JsonFormatter.WriteWellKnownTypeValue(System.IO.TextWriter,Google.Protobuf.Reflection.MessageDescriptor,System.Object)">

+            <summary>

+            Central interception point for well-known type formatting. Any well-known types which

+            don't need special handling can fall back to WriteMessage. We avoid assuming that the

+            values are using the embedded well-known types, in order to allow for dynamic messages

+            in the future.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.JsonFormatter.WriteString(System.IO.TextWriter,System.String)">

+            <summary>

+            Writes a string (including leading and trailing double quotes) to a builder, escaping as required.

+            </summary>

+            <remarks>

+            Other than surrogate pair handling, this code is mostly taken from src/google/protobuf/util/internal/json_escaping.cc.

+            </remarks>

+        </member>

+        <member name="T:Google.Protobuf.JsonFormatter.Settings">

+            <summary>

+            Settings controlling JSON formatting.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.JsonFormatter.Settings.Default">

+            <summary>

+            Default settings, as used by <see cref="P:Google.Protobuf.JsonFormatter.Default"/>

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.JsonFormatter.Settings.FormatDefaultValues">

+            <summary>

+            Whether fields whose values are the default for the field type (e.g. 0 for integers)

+            should be formatted (true) or omitted (false).

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.JsonFormatter.Settings.TypeRegistry">

+            <summary>

+            The type registry used to format <see cref="T:Google.Protobuf.WellKnownTypes.Any"/> messages.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.JsonFormatter.Settings.FormatEnumsAsIntegers">

+            <summary>

+            Whether to format enums as ints. Defaults to false.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.JsonFormatter.Settings.#ctor(System.Boolean)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.JsonFormatter.Settings"/> object with the specified formatting of default values

+            and an empty type registry.

+            </summary>

+            <param name="formatDefaultValues"><c>true</c> if default values (0, empty strings etc) should be formatted; <c>false</c> otherwise.</param>

+        </member>

+        <member name="M:Google.Protobuf.JsonFormatter.Settings.#ctor(System.Boolean,Google.Protobuf.Reflection.TypeRegistry)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.JsonFormatter.Settings"/> object with the specified formatting of default values

+            and type registry.

+            </summary>

+            <param name="formatDefaultValues"><c>true</c> if default values (0, empty strings etc) should be formatted; <c>false</c> otherwise.</param>

+            <param name="typeRegistry">The <see cref="P:Google.Protobuf.JsonFormatter.Settings.TypeRegistry"/> to use when formatting <see cref="T:Google.Protobuf.WellKnownTypes.Any"/> messages.</param>

+        </member>

+        <member name="M:Google.Protobuf.JsonFormatter.Settings.#ctor(System.Boolean,Google.Protobuf.Reflection.TypeRegistry,System.Boolean)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.JsonFormatter.Settings"/> object with the specified parameters.

+            </summary>

+            <param name="formatDefaultValues"><c>true</c> if default values (0, empty strings etc) should be formatted; <c>false</c> otherwise.</param>

+            <param name="typeRegistry">The <see cref="P:Google.Protobuf.JsonFormatter.Settings.TypeRegistry"/> to use when formatting <see cref="T:Google.Protobuf.WellKnownTypes.Any"/> messages. TypeRegistry.Empty will be used if it is null.</param>

+            <param name="formatEnumsAsIntegers"><c>true</c> to format the enums as integers; <c>false</c> to format enums as enum names.</param>

+        </member>

+        <member name="M:Google.Protobuf.JsonFormatter.Settings.WithFormatDefaultValues(System.Boolean)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.JsonFormatter.Settings"/> object with the specified formatting of default values and the current settings.

+            </summary>

+            <param name="formatDefaultValues"><c>true</c> if default values (0, empty strings etc) should be formatted; <c>false</c> otherwise.</param>

+        </member>

+        <member name="M:Google.Protobuf.JsonFormatter.Settings.WithTypeRegistry(Google.Protobuf.Reflection.TypeRegistry)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.JsonFormatter.Settings"/> object with the specified type registry and the current settings.

+            </summary>

+            <param name="typeRegistry">The <see cref="P:Google.Protobuf.JsonFormatter.Settings.TypeRegistry"/> to use when formatting <see cref="T:Google.Protobuf.WellKnownTypes.Any"/> messages.</param>

+        </member>

+        <member name="M:Google.Protobuf.JsonFormatter.Settings.WithFormatEnumsAsIntegers(System.Boolean)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.JsonFormatter.Settings"/> object with the specified enums formatting option and the current settings.

+            </summary>

+            <param name="formatEnumsAsIntegers"><c>true</c> to format the enums as integers; <c>false</c> to format enums as enum names.</param>

+        </member>

+        <member name="T:Google.Protobuf.JsonParser">

+            <summary>

+            Reflection-based converter from JSON to messages.

+            </summary>

+            <remarks>

+            <para>

+            Instances of this class are thread-safe, with no mutable state.

+            </para>

+            <para>

+            This is a simple start to get JSON parsing working. As it's reflection-based,

+            it's not as quick as baking calls into generated messages - but is a simpler implementation.

+            (This code is generally not heavily optimized.)

+            </para>

+            </remarks>

+        </member>

+        <member name="P:Google.Protobuf.JsonParser.Default">

+            <summary>

+            Returns a formatter using the default settings.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.JsonParser.#ctor(Google.Protobuf.JsonParser.Settings)">

+            <summary>

+            Creates a new formatted with the given settings.

+            </summary>

+            <param name="settings">The settings.</param>

+        </member>

+        <member name="M:Google.Protobuf.JsonParser.Merge(Google.Protobuf.IMessage,System.String)">

+            <summary>

+            Parses <paramref name="json"/> and merges the information into the given message.

+            </summary>

+            <param name="message">The message to merge the JSON information into.</param>

+            <param name="json">The JSON to parse.</param>

+        </member>

+        <member name="M:Google.Protobuf.JsonParser.Merge(Google.Protobuf.IMessage,System.IO.TextReader)">

+            <summary>

+            Parses JSON read from <paramref name="jsonReader"/> and merges the information into the given message.

+            </summary>

+            <param name="message">The message to merge the JSON information into.</param>

+            <param name="jsonReader">Reader providing the JSON to parse.</param>

+        </member>

+        <member name="M:Google.Protobuf.JsonParser.Merge(Google.Protobuf.IMessage,Google.Protobuf.JsonTokenizer)">

+            <summary>

+            Merges the given message using data from the given tokenizer. In most cases, the next

+            token should be a "start object" token, but wrapper types and nullity can invalidate

+            that assumption. This is implemented as an LL(1) recursive descent parser over the stream

+            of tokens provided by the tokenizer. This token stream is assumed to be valid JSON, with the

+            tokenizer performing that validation - but not every token stream is valid "protobuf JSON".

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.JsonParser.Parse``1(System.String)">

+            <summary>

+            Parses <paramref name="json"/> into a new message.

+            </summary>

+            <typeparam name="T">The type of message to create.</typeparam>

+            <param name="json">The JSON to parse.</param>

+            <exception cref="T:Google.Protobuf.InvalidJsonException">The JSON does not comply with RFC 7159</exception>

+            <exception cref="T:Google.Protobuf.InvalidProtocolBufferException">The JSON does not represent a Protocol Buffers message correctly</exception>

+        </member>

+        <member name="M:Google.Protobuf.JsonParser.Parse``1(System.IO.TextReader)">

+            <summary>

+            Parses JSON read from <paramref name="jsonReader"/> into a new message.

+            </summary>

+            <typeparam name="T">The type of message to create.</typeparam>

+            <param name="jsonReader">Reader providing the JSON to parse.</param>

+            <exception cref="T:Google.Protobuf.InvalidJsonException">The JSON does not comply with RFC 7159</exception>

+            <exception cref="T:Google.Protobuf.InvalidProtocolBufferException">The JSON does not represent a Protocol Buffers message correctly</exception>

+        </member>

+        <member name="M:Google.Protobuf.JsonParser.Parse(System.String,Google.Protobuf.Reflection.MessageDescriptor)">

+            <summary>

+            Parses <paramref name="json"/> into a new message.

+            </summary>

+            <param name="json">The JSON to parse.</param>

+            <param name="descriptor">Descriptor of message type to parse.</param>

+            <exception cref="T:Google.Protobuf.InvalidJsonException">The JSON does not comply with RFC 7159</exception>

+            <exception cref="T:Google.Protobuf.InvalidProtocolBufferException">The JSON does not represent a Protocol Buffers message correctly</exception>

+        </member>

+        <member name="M:Google.Protobuf.JsonParser.Parse(System.IO.TextReader,Google.Protobuf.Reflection.MessageDescriptor)">

+            <summary>

+            Parses JSON read from <paramref name="jsonReader"/> into a new message.

+            </summary>

+            <param name="jsonReader">Reader providing the JSON to parse.</param>

+            <param name="descriptor">Descriptor of message type to parse.</param>

+            <exception cref="T:Google.Protobuf.InvalidJsonException">The JSON does not comply with RFC 7159</exception>

+            <exception cref="T:Google.Protobuf.InvalidProtocolBufferException">The JSON does not represent a Protocol Buffers message correctly</exception>

+        </member>

+        <member name="M:Google.Protobuf.JsonParser.NewMessageForField(Google.Protobuf.Reflection.FieldDescriptor)">

+            <summary>

+            Creates a new instance of the message type for the given field.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.JsonParser.ValidateInfinityAndNan(System.String,System.Boolean,System.Boolean,System.Boolean)">

+            <summary>

+            Checks that any infinite/NaN values originated from the correct text.

+            This corrects the lenient whitespace handling of double.Parse/float.Parse, as well as the

+            way that Mono parses out-of-range values as infinity.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.JsonParser.Settings">

+            <summary>

+            Settings controlling JSON parsing.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.JsonParser.Settings.Default">

+            <summary>

+            Default settings, as used by <see cref="P:Google.Protobuf.JsonParser.Default"/>. This has the same default

+            recursion limit as <see cref="T:Google.Protobuf.CodedInputStream"/>, and an empty type registry.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.JsonParser.Settings.RecursionLimit">

+            <summary>

+            The maximum depth of messages to parse. Note that this limit only applies to parsing

+            messages, not collections - so a message within a collection within a message only counts as

+            depth 2, not 3.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.JsonParser.Settings.TypeRegistry">

+            <summary>

+            The type registry used to parse <see cref="T:Google.Protobuf.WellKnownTypes.Any"/> messages.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.JsonParser.Settings.IgnoreUnknownFields">

+            <summary>

+            Whether the parser should ignore unknown fields (<c>true</c>) or throw an exception when

+            they are encountered (<c>false</c>).

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.JsonParser.Settings.#ctor(System.Int32)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.JsonParser.Settings"/> object with the specified recursion limit.

+            </summary>

+            <param name="recursionLimit">The maximum depth of messages to parse</param>

+        </member>

+        <member name="M:Google.Protobuf.JsonParser.Settings.#ctor(System.Int32,Google.Protobuf.Reflection.TypeRegistry)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.JsonParser.Settings"/> object with the specified recursion limit and type registry.

+            </summary>

+            <param name="recursionLimit">The maximum depth of messages to parse</param>

+            <param name="typeRegistry">The type registry used to parse <see cref="T:Google.Protobuf.WellKnownTypes.Any"/> messages</param>

+        </member>

+        <member name="M:Google.Protobuf.JsonParser.Settings.WithIgnoreUnknownFields(System.Boolean)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.JsonParser.Settings"/> object set to either ignore unknown fields, or throw an exception

+            when unknown fields are encountered.

+            </summary>

+            <param name="ignoreUnknownFields"><c>true</c> if unknown fields should be ignored when parsing; <c>false</c> to throw an exception.</param>

+        </member>

+        <member name="M:Google.Protobuf.JsonParser.Settings.WithRecursionLimit(System.Int32)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.JsonParser.Settings"/> object based on this one, but with the specified recursion limit.

+            </summary>

+            <param name="recursionLimit">The new recursion limit.</param>

+        </member>

+        <member name="M:Google.Protobuf.JsonParser.Settings.WithTypeRegistry(Google.Protobuf.Reflection.TypeRegistry)">

+            <summary>

+            Creates a new <see cref="T:Google.Protobuf.JsonParser.Settings"/> object based on this one, but with the specified type registry.

+            </summary>

+            <param name="typeRegistry">The new type registry. Must not be null.</param>

+        </member>

+        <member name="T:Google.Protobuf.JsonTokenizer">

+            <summary>

+            Simple but strict JSON tokenizer, rigidly following RFC 7159.

+            </summary>

+            <remarks>

+            <para>

+            This tokenizer is stateful, and only returns "useful" tokens - names, values etc.

+            It does not create tokens for the separator between names and values, or for the comma

+            between values. It validates the token stream as it goes - so callers can assume that the

+            tokens it produces are appropriate. For example, it would never produce "start object, end array."

+            </para>

+            <para>Implementation details: the base class handles single token push-back and </para>

+            <para>Not thread-safe.</para>

+            </remarks>

+        </member>

+        <member name="M:Google.Protobuf.JsonTokenizer.FromTextReader(System.IO.TextReader)">

+            <summary>

+             Creates a tokenizer that reads from the given text reader.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.JsonTokenizer.FromReplayedTokens(System.Collections.Generic.IList{Google.Protobuf.JsonToken},Google.Protobuf.JsonTokenizer)">

+            <summary>

+            Creates a tokenizer that first replays the given list of tokens, then continues reading

+            from another tokenizer. Note that if the returned tokenizer is "pushed back", that does not push back

+            on the continuation tokenizer, or vice versa. Care should be taken when using this method - it was

+            created for the sake of Any parsing.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.JsonTokenizer.ObjectDepth">

+            <summary>

+            Returns the depth of the stack, purely in objects (not collections).

+            Informally, this is the number of remaining unclosed '{' characters we have.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.JsonTokenizer.Next">

+            <summary>

+            Returns the next JSON token in the stream. An EndDocument token is returned to indicate the end of the stream,

+            after which point <c>Next()</c> should not be called again.

+            </summary>

+            <remarks>This implementation provides single-token buffering, and calls <see cref="M:Google.Protobuf.JsonTokenizer.NextImpl"/> if there is no buffered token.</remarks>

+            <returns>The next token in the stream. This is never null.</returns>

+            <exception cref="T:System.InvalidOperationException">This method is called after an EndDocument token has been returned</exception>

+            <exception cref="T:Google.Protobuf.InvalidJsonException">The input text does not comply with RFC 7159</exception>

+        </member>

+        <member name="M:Google.Protobuf.JsonTokenizer.NextImpl">

+            <summary>

+            Returns the next JSON token in the stream, when requested by the base class. (The <see cref="M:Google.Protobuf.JsonTokenizer.Next"/> method delegates

+            to this if it doesn't have a buffered token.)

+            </summary>

+            <exception cref="T:System.InvalidOperationException">This method is called after an EndDocument token has been returned</exception>

+            <exception cref="T:Google.Protobuf.InvalidJsonException">The input text does not comply with RFC 7159</exception>

+        </member>

+        <member name="M:Google.Protobuf.JsonTokenizer.SkipValue">

+            <summary>

+            Skips the value we're about to read. This must only be called immediately after reading a property name.

+            If the value is an object or an array, the complete object/array is skipped.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.JsonTokenizer.JsonReplayTokenizer">

+            <summary>

+            Tokenizer which first exhausts a list of tokens, then consults another tokenizer.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.JsonTokenizer.JsonTextTokenizer">

+            <summary>

+            Tokenizer which does all the *real* work of parsing JSON.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.NextImpl">

+            <remarks>

+            This method essentially just loops through characters skipping whitespace, validating and

+            changing state (e.g. from ObjectBeforeColon to ObjectAfterColon)

+            until it reaches something which will be a genuine token (e.g. a start object, or a value) at which point

+            it returns the token. Although the method is large, it would be relatively hard to break down further... most

+            of it is the large switch statement, which sometimes returns and sometimes doesn't.

+            </remarks>

+        </member>

+        <member name="M:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.ReadString">

+            <summary>

+            Reads a string token. It is assumed that the opening " has already been read.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.ReadEscapedCharacter">

+            <summary>

+            Reads an escaped character. It is assumed that the leading backslash has already been read.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.ReadUnicodeEscape">

+            <summary>

+            Reads an escaped Unicode 4-nybble hex sequence. It is assumed that the leading \u has already been read.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.ConsumeLiteral(System.String)">

+            <summary>

+            Consumes a text-only literal, throwing an exception if the read text doesn't match it.

+            It is assumed that the first letter of the literal has already been read.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.ValidateAndModifyStateForValue(System.String)">

+            <summary>

+            Validates that we're in a valid state to read a value (using the given error prefix if necessary)

+            and changes the state to the appropriate one, e.g. ObjectAfterColon to ObjectAfterProperty.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.PopContainer">

+            <summary>

+            Pops the top-most container, and sets the state to the appropriate one for the end of a value

+            in the parent container.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.State">

+            <summary>

+            Possible states of the tokenizer.

+            </summary>

+            <remarks>

+            <para>This is a flags enum purely so we can simply and efficiently represent a set of valid states

+            for checking.</para>

+            <para>

+            Each is documented with an example,

+            where ^ represents the current position within the text stream. The examples all use string values,

+            but could be any value, including nested objects/arrays.

+            The complete state of the tokenizer also includes a stack to indicate the contexts (arrays/objects).

+            Any additional notional state of "AfterValue" indicates that a value has been completed, at which 

+            point there's an immediate transition to ExpectedEndOfDocument,  ObjectAfterProperty or ArrayAfterValue.

+            </para>

+            <para>

+            These states were derived manually by reading RFC 7159 carefully.

+            </para>

+            </remarks>

+        </member>

+        <member name="F:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.State.StartOfDocument">

+            <summary>

+            ^ { "foo": "bar" }

+            Before the value in a document. Next states: ObjectStart, ArrayStart, "AfterValue"

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.State.ExpectedEndOfDocument">

+            <summary>

+            { "foo": "bar" } ^

+            After the value in a document. Next states: ReaderExhausted

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.State.ReaderExhausted">

+            <summary>

+            { "foo": "bar" } ^ (and already read to the end of the reader)

+            Terminal state.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.State.ObjectStart">

+            <summary>

+            { ^ "foo": "bar" }

+            Before the *first* property in an object.

+            Next states:

+            "AfterValue" (empty object)

+            ObjectBeforeColon (read a name)

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.State.ObjectBeforeColon">

+            <summary>

+            { "foo" ^ : "bar", "x": "y" }

+            Next state: ObjectAfterColon

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.State.ObjectAfterColon">

+            <summary>

+            { "foo" : ^ "bar", "x": "y" }

+            Before any property other than the first in an object.

+            (Equivalently: after any property in an object) 

+            Next states:

+            "AfterValue" (value is simple)

+            ObjectStart (value is object)

+            ArrayStart (value is array)

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.State.ObjectAfterProperty">

+            <summary>

+            { "foo" : "bar" ^ , "x" : "y" }

+            At the end of a property, so expecting either a comma or end-of-object

+            Next states: ObjectAfterComma or "AfterValue"

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.State.ObjectAfterComma">

+            <summary>

+            { "foo":"bar", ^ "x":"y" }

+            Read the comma after the previous property, so expecting another property.

+            This is like ObjectStart, but closing brace isn't valid here

+            Next state: ObjectBeforeColon.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.State.ArrayStart">

+            <summary>

+            [ ^ "foo", "bar" ]

+            Before the *first* value in an array.

+            Next states:

+            "AfterValue" (read a value)

+            "AfterValue" (end of array; will pop stack)

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.State.ArrayAfterValue">

+            <summary>

+            [ "foo" ^ , "bar" ]

+            After any value in an array, so expecting either a comma or end-of-array

+            Next states: ArrayAfterComma or "AfterValue"

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.State.ArrayAfterComma">

+            <summary>

+            [ "foo", ^ "bar" ]

+            After a comma in an array, so there *must* be another value (simple or complex).

+            Next states: "AfterValue" (simple value), StartObject, StartArray

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.PushBackReader">

+            <summary>

+            Wrapper around a text reader allowing small amounts of buffering and location handling.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.PushBackReader.nextChar">

+            <summary>

+            The buffered next character, if we have one.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.PushBackReader.Read">

+            <summary>

+            Returns the next character in the stream, or null if we have reached the end.

+            </summary>

+            <returns></returns>

+        </member>

+        <member name="M:Google.Protobuf.JsonTokenizer.JsonTextTokenizer.PushBackReader.CreateException(System.String)">

+            <summary>

+            Creates a new exception appropriate for the current state of the reader.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.LimitedInputStream">

+            <summary>

+            Stream implementation which proxies another stream, only allowing a certain amount

+            of data to be read. Note that this is only used to read delimited streams, so it

+            doesn't attempt to implement everything.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.MessageExtensions">

+            <summary>

+            Extension methods on <see cref="T:Google.Protobuf.IMessage"/> and <see cref="T:Google.Protobuf.IMessage`1"/>.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.MessageExtensions.MergeFrom(Google.Protobuf.IMessage,System.Byte[])">

+            <summary>

+            Merges data from the given byte array into an existing message.

+            </summary>

+            <param name="message">The message to merge the data into.</param>

+            <param name="data">The data to merge, which must be protobuf-encoded binary data.</param>

+        </member>

+        <member name="M:Google.Protobuf.MessageExtensions.MergeFrom(Google.Protobuf.IMessage,System.Byte[],System.Int32,System.Int32)">

+            <summary>

+            Merges data from the given byte array slice into an existing message.

+            </summary>

+            <param name="message">The message to merge the data into.</param>

+            <param name="data">The data containing the slice to merge, which must be protobuf-encoded binary data.</param>

+            <param name="offset">The offset of the slice to merge.</param>

+            <param name="length">The length of the slice to merge.</param>

+        </member>

+        <member name="M:Google.Protobuf.MessageExtensions.MergeFrom(Google.Protobuf.IMessage,Google.Protobuf.ByteString)">

+            <summary>

+            Merges data from the given byte string into an existing message.

+            </summary>

+            <param name="message">The message to merge the data into.</param>

+            <param name="data">The data to merge, which must be protobuf-encoded binary data.</param>

+        </member>

+        <member name="M:Google.Protobuf.MessageExtensions.MergeFrom(Google.Protobuf.IMessage,System.IO.Stream)">

+            <summary>

+            Merges data from the given stream into an existing message.

+            </summary>

+            <param name="message">The message to merge the data into.</param>

+            <param name="input">Stream containing the data to merge, which must be protobuf-encoded binary data.</param>

+        </member>

+        <member name="M:Google.Protobuf.MessageExtensions.MergeDelimitedFrom(Google.Protobuf.IMessage,System.IO.Stream)">

+            <summary>

+            Merges length-delimited data from the given stream into an existing message.

+            </summary>

+            <remarks>

+            The stream is expected to contain a length and then the data. Only the amount of data

+            specified by the length will be consumed.

+            </remarks>

+            <param name="message">The message to merge the data into.</param>

+            <param name="input">Stream containing the data to merge, which must be protobuf-encoded binary data.</param>

+        </member>

+        <member name="M:Google.Protobuf.MessageExtensions.ToByteArray(Google.Protobuf.IMessage)">

+            <summary>

+            Converts the given message into a byte array in protobuf encoding.

+            </summary>

+            <param name="message">The message to convert.</param>

+            <returns>The message data as a byte array.</returns>

+        </member>

+        <member name="M:Google.Protobuf.MessageExtensions.WriteTo(Google.Protobuf.IMessage,System.IO.Stream)">

+            <summary>

+            Writes the given message data to the given stream in protobuf encoding.

+            </summary>

+            <param name="message">The message to write to the stream.</param>

+            <param name="output">The stream to write to.</param>

+        </member>

+        <member name="M:Google.Protobuf.MessageExtensions.WriteDelimitedTo(Google.Protobuf.IMessage,System.IO.Stream)">

+            <summary>

+            Writes the length and then data of the given message to a stream.

+            </summary>

+            <param name="message">The message to write.</param>

+            <param name="output">The output stream to write to.</param>

+        </member>

+        <member name="M:Google.Protobuf.MessageExtensions.ToByteString(Google.Protobuf.IMessage)">

+            <summary>

+            Converts the given message into a byte string in protobuf encoding.

+            </summary>

+            <param name="message">The message to convert.</param>

+            <returns>The message data as a byte string.</returns>

+        </member>

+        <member name="T:Google.Protobuf.MessageParser">

+            <summary>

+            A general message parser, typically used by reflection-based code as all the methods

+            return simple <see cref="T:Google.Protobuf.IMessage"/>.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser.CreateTemplate">

+            <summary>

+            Creates a template instance ready for population.

+            </summary>

+            <returns>An empty message.</returns>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser.ParseFrom(System.Byte[])">

+            <summary>

+            Parses a message from a byte array.

+            </summary>

+            <param name="data">The byte array containing the message. Must not be null.</param>

+            <returns>The newly parsed message.</returns>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser.ParseFrom(System.Byte[],System.Int32,System.Int32)">

+            <summary>

+            Parses a message from a byte array slice.

+            </summary>

+            <param name="data">The byte array containing the message. Must not be null.</param>

+            <param name="offset">The offset of the slice to parse.</param>

+            <param name="length">The length of the slice to parse.</param>

+            <returns>The newly parsed message.</returns>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser.ParseFrom(Google.Protobuf.ByteString)">

+            <summary>

+            Parses a message from the given byte string.

+            </summary>

+            <param name="data">The data to parse.</param>

+            <returns>The parsed message.</returns>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser.ParseFrom(System.IO.Stream)">

+            <summary>

+            Parses a message from the given stream.

+            </summary>

+            <param name="input">The stream to parse.</param>

+            <returns>The parsed message.</returns>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser.ParseDelimitedFrom(System.IO.Stream)">

+            <summary>

+            Parses a length-delimited message from the given stream.

+            </summary>

+            <remarks>

+            The stream is expected to contain a length and then the data. Only the amount of data

+            specified by the length will be consumed.

+            </remarks>

+            <param name="input">The stream to parse.</param>

+            <returns>The parsed message.</returns>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser.ParseFrom(Google.Protobuf.CodedInputStream)">

+            <summary>

+            Parses a message from the given coded input stream.

+            </summary>

+            <param name="input">The stream to parse.</param>

+            <returns>The parsed message.</returns>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser.ParseJson(System.String)">

+            <summary>

+            Parses a message from the given JSON.

+            </summary>

+            <param name="json">The JSON to parse.</param>

+            <returns>The parsed message.</returns>

+            <exception cref="T:Google.Protobuf.InvalidJsonException">The JSON does not comply with RFC 7159</exception>

+            <exception cref="T:Google.Protobuf.InvalidProtocolBufferException">The JSON does not represent a Protocol Buffers message correctly</exception>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser.WithDiscardUnknownFields(System.Boolean)">

+            <summary>

+            Creates a new message parser which optionally discards unknown fields when parsing.

+            </summary>

+            <param name="discardUnknownFields">Whether or not to discard unknown fields when parsing.</param>

+            <returns>A newly configured message parser.</returns>

+        </member>

+        <member name="T:Google.Protobuf.MessageParser`1">

+            <summary>

+            A parser for a specific message type.

+            </summary>

+            <remarks>

+            <p>

+            This delegates most behavior to the

+            <see cref="M:Google.Protobuf.IMessage.MergeFrom(Google.Protobuf.CodedInputStream)"/> implementation within the original type, but

+            provides convenient overloads to parse from a variety of sources.

+            </p>

+            <p>

+            Most applications will never need to create their own instances of this type;

+            instead, use the static <c>Parser</c> property of a generated message type to obtain a

+            parser for that type.

+            </p>

+            </remarks>

+            <typeparam name="T">The type of message to be parsed.</typeparam>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser`1.#ctor(System.Func{`0})">

+            <summary>

+            Creates a new parser.

+            </summary>

+            <remarks>

+            The factory method is effectively an optimization over using a generic constraint

+            to require a parameterless constructor: delegates are significantly faster to execute.

+            </remarks>

+            <param name="factory">Function to invoke when a new, empty message is required.</param>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser`1.CreateTemplate">

+            <summary>

+            Creates a template instance ready for population.

+            </summary>

+            <returns>An empty message.</returns>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser`1.ParseFrom(System.Byte[])">

+            <summary>

+            Parses a message from a byte array.

+            </summary>

+            <param name="data">The byte array containing the message. Must not be null.</param>

+            <returns>The newly parsed message.</returns>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser`1.ParseFrom(System.Byte[],System.Int32,System.Int32)">

+            <summary>

+            Parses a message from a byte array slice.

+            </summary>

+            <param name="data">The byte array containing the message. Must not be null.</param>

+            <param name="offset">The offset of the slice to parse.</param>

+            <param name="length">The length of the slice to parse.</param>

+            <returns>The newly parsed message.</returns>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser`1.ParseFrom(Google.Protobuf.ByteString)">

+            <summary>

+            Parses a message from the given byte string.

+            </summary>

+            <param name="data">The data to parse.</param>

+            <returns>The parsed message.</returns>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser`1.ParseFrom(System.IO.Stream)">

+            <summary>

+            Parses a message from the given stream.

+            </summary>

+            <param name="input">The stream to parse.</param>

+            <returns>The parsed message.</returns>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser`1.ParseDelimitedFrom(System.IO.Stream)">

+            <summary>

+            Parses a length-delimited message from the given stream.

+            </summary>

+            <remarks>

+            The stream is expected to contain a length and then the data. Only the amount of data

+            specified by the length will be consumed.

+            </remarks>

+            <param name="input">The stream to parse.</param>

+            <returns>The parsed message.</returns>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser`1.ParseFrom(Google.Protobuf.CodedInputStream)">

+            <summary>

+            Parses a message from the given coded input stream.

+            </summary>

+            <param name="input">The stream to parse.</param>

+            <returns>The parsed message.</returns>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser`1.ParseJson(System.String)">

+            <summary>

+            Parses a message from the given JSON.

+            </summary>

+            <param name="json">The JSON to parse.</param>

+            <returns>The parsed message.</returns>

+            <exception cref="T:Google.Protobuf.InvalidJsonException">The JSON does not comply with RFC 7159</exception>

+            <exception cref="T:Google.Protobuf.InvalidProtocolBufferException">The JSON does not represent a Protocol Buffers message correctly</exception>

+        </member>

+        <member name="M:Google.Protobuf.MessageParser`1.WithDiscardUnknownFields(System.Boolean)">

+            <summary>

+            Creates a new message parser which optionally discards unknown fields when parsing.

+            </summary>

+            <param name="discardUnknownFields">Whether or not to discard unknown fields when parsing.</param>

+            <returns>A newly configured message parser.</returns>

+        </member>

+        <member name="T:Google.Protobuf.ProtoPreconditions">

+            <summary>

+            Helper methods for throwing exceptions when preconditions are not met.

+            </summary>

+            <remarks>

+            This class is used internally and by generated code; it is not particularly

+            expected to be used from application code, although nothing prevents it

+            from being used that way.

+            </remarks>

+        </member>

+        <member name="M:Google.Protobuf.ProtoPreconditions.CheckNotNull``1(``0,System.String)">

+            <summary>

+            Throws an ArgumentNullException if the given value is null, otherwise

+            return the value to the caller.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.ProtoPreconditions.CheckNotNullUnconstrained``1(``0,System.String)">

+            <summary>

+            Throws an ArgumentNullException if the given value is null, otherwise

+            return the value to the caller.

+            </summary>

+            <remarks>

+            This is equivalent to <see cref="M:Google.Protobuf.ProtoPreconditions.CheckNotNull``1(``0,System.String)"/> but without the type parameter

+            constraint. In most cases, the constraint is useful to prevent you from calling CheckNotNull

+            with a value type - but it gets in the way if either you want to use it with a nullable

+            value type, or you want to use it with an unconstrained type parameter.

+            </remarks>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.CustomOptions">

+            <summary>

+            Container for a set of custom options specified within a message, field etc.

+            </summary>

+            <remarks>

+            <para>

+            This type is publicly immutable, but internally mutable. It is only populated

+            by the descriptor parsing code - by the time any user code is able to see an instance,

+            it will be fully initialized.

+            </para>

+            <para>

+            If an option is requested using the incorrect method, an answer may still be returned: all

+            of the numeric types are represented internally using 64-bit integers, for example. It is up to

+            the caller to ensure that they make the appropriate method call for the option they're interested in.

+            Note that enum options are simply stored as integers, so the value should be fetched using

+            <see cref="M:Google.Protobuf.Reflection.CustomOptions.TryGetInt32(System.Int32,System.Int32@)"/> and then cast appropriately.

+            </para>

+            <para>

+            Repeated options are currently not supported. Asking for a single value of an option

+            which was actually repeated will return the last value, except for message types where

+            all the set values are merged together.

+            </para>

+            </remarks>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.CustomOptions.Empty">

+            <summary>

+            Singleton for all descriptors with an empty set of options.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.CustomOptions.valuesByField">

+            <summary>

+            A sequence of values per field. This needs to be per field rather than per tag to allow correct deserialization

+            of repeated fields which could be "int, ByteString, int" - unlikely as that is. The fact that values are boxed

+            is unfortunate; we might be able to use a struct instead, and we could combine uint and ulong values.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.TryGetBool(System.Int32,System.Boolean@)">

+            <summary>

+            Retrieves a Boolean value for the specified option field.

+            </summary>

+            <param name="field">The field to fetch the value for.</param>

+            <param name="value">The output variable to populate.</param>

+            <returns><c>true</c> if a suitable value for the field was found; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.TryGetInt32(System.Int32,System.Int32@)">

+            <summary>

+            Retrieves a signed 32-bit integer value for the specified option field.

+            </summary>

+            <param name="field">The field to fetch the value for.</param>

+            <param name="value">The output variable to populate.</param>

+            <returns><c>true</c> if a suitable value for the field was found; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.TryGetInt64(System.Int32,System.Int64@)">

+            <summary>

+            Retrieves a signed 64-bit integer value for the specified option field.

+            </summary>

+            <param name="field">The field to fetch the value for.</param>

+            <param name="value">The output variable to populate.</param>

+            <returns><c>true</c> if a suitable value for the field was found; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.TryGetFixed32(System.Int32,System.UInt32@)">

+            <summary>

+            Retrieves an unsigned 32-bit integer value for the specified option field,

+            assuming a fixed-length representation.

+            </summary>

+            <param name="field">The field to fetch the value for.</param>

+            <param name="value">The output variable to populate.</param>

+            <returns><c>true</c> if a suitable value for the field was found; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.TryGetFixed64(System.Int32,System.UInt64@)">

+            <summary>

+            Retrieves an unsigned 64-bit integer value for the specified option field,

+            assuming a fixed-length representation.

+            </summary>

+            <param name="field">The field to fetch the value for.</param>

+            <param name="value">The output variable to populate.</param>

+            <returns><c>true</c> if a suitable value for the field was found; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.TryGetSFixed32(System.Int32,System.Int32@)">

+            <summary>

+            Retrieves a signed 32-bit integer value for the specified option field,

+            assuming a fixed-length representation.

+            </summary>

+            <param name="field">The field to fetch the value for.</param>

+            <param name="value">The output variable to populate.</param>

+            <returns><c>true</c> if a suitable value for the field was found; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.TryGetSFixed64(System.Int32,System.Int64@)">

+            <summary>

+            Retrieves a signed 64-bit integer value for the specified option field,

+            assuming a fixed-length representation.

+            </summary>

+            <param name="field">The field to fetch the value for.</param>

+            <param name="value">The output variable to populate.</param>

+            <returns><c>true</c> if a suitable value for the field was found; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.TryGetSInt32(System.Int32,System.Int32@)">

+            <summary>

+            Retrieves a signed 32-bit integer value for the specified option field,

+            assuming a zigzag encoding.

+            </summary>

+            <param name="field">The field to fetch the value for.</param>

+            <param name="value">The output variable to populate.</param>

+            <returns><c>true</c> if a suitable value for the field was found; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.TryGetSInt64(System.Int32,System.Int64@)">

+            <summary>

+            Retrieves a signed 64-bit integer value for the specified option field,

+            assuming a zigzag encoding.

+            </summary>

+            <param name="field">The field to fetch the value for.</param>

+            <param name="value">The output variable to populate.</param>

+            <returns><c>true</c> if a suitable value for the field was found; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.TryGetUInt32(System.Int32,System.UInt32@)">

+            <summary>

+            Retrieves an unsigned 32-bit integer value for the specified option field.

+            </summary>

+            <param name="field">The field to fetch the value for.</param>

+            <param name="value">The output variable to populate.</param>

+            <returns><c>true</c> if a suitable value for the field was found; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.TryGetUInt64(System.Int32,System.UInt64@)">

+            <summary>

+            Retrieves an unsigned 64-bit integer value for the specified option field.

+            </summary>

+            <param name="field">The field to fetch the value for.</param>

+            <param name="value">The output variable to populate.</param>

+            <returns><c>true</c> if a suitable value for the field was found; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.TryGetFloat(System.Int32,System.Single@)">

+            <summary>

+            Retrieves a 32-bit floating point value for the specified option field.

+            </summary>

+            <param name="field">The field to fetch the value for.</param>

+            <param name="value">The output variable to populate.</param>

+            <returns><c>true</c> if a suitable value for the field was found; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.TryGetDouble(System.Int32,System.Double@)">

+            <summary>

+            Retrieves a 64-bit floating point value for the specified option field.

+            </summary>

+            <param name="field">The field to fetch the value for.</param>

+            <param name="value">The output variable to populate.</param>

+            <returns><c>true</c> if a suitable value for the field was found; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.TryGetString(System.Int32,System.String@)">

+            <summary>

+            Retrieves a string value for the specified option field.

+            </summary>

+            <param name="field">The field to fetch the value for.</param>

+            <param name="value">The output variable to populate.</param>

+            <returns><c>true</c> if a suitable value for the field was found; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.TryGetBytes(System.Int32,Google.Protobuf.ByteString@)">

+            <summary>

+            Retrieves a bytes value for the specified option field.

+            </summary>

+            <param name="field">The field to fetch the value for.</param>

+            <param name="value">The output variable to populate.</param>

+            <returns><c>true</c> if a suitable value for the field was found; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.TryGetMessage``1(System.Int32,``0@)">

+            <summary>

+            Retrieves a message value for the specified option field.

+            </summary>

+            <param name="field">The field to fetch the value for.</param>

+            <param name="value">The output variable to populate.</param>

+            <returns><c>true</c> if a suitable value for the field was found; <c>false</c> otherwise.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.CustomOptions.ReadOrSkipUnknownField(Google.Protobuf.CodedInputStream)">

+            <summary>

+            Reads an unknown field, either parsing it and storing it or skipping it.

+            </summary>

+            <remarks>

+            If the current set of options is empty and we manage to read a field, a new set of options

+            will be created and returned. Otherwise, the return value is <c>this</c>. This allows

+            us to start with a singleton empty set of options and just create new ones where necessary.

+            </remarks>

+            <param name="input">Input stream to read from. </param>

+            <returns>The resulting set of custom options, either <c>this</c> or a new set.</returns>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.CustomOptions.FieldValue">

+            <summary>

+            All field values can be stored as a byte string or a 64-bit integer.

+            This struct avoids unnecessary boxing.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.DescriptorReflection">

+            <summary>Holder for reflection information generated from google/protobuf/descriptor.proto</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.DescriptorReflection.Descriptor">

+            <summary>File descriptor for google/protobuf/descriptor.proto</summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.FileDescriptorSet">

+            <summary>

+            The protocol compiler can output a FileDescriptorSet containing the .proto

+            files it parses.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileDescriptorSet.FileFieldNumber">

+            <summary>Field number for the "file" field.</summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.FileDescriptorProto">

+            <summary>

+            Describes a complete .proto file.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileDescriptorProto.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptorProto.Name">

+            <summary>

+            file name, relative to root of source tree

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileDescriptorProto.PackageFieldNumber">

+            <summary>Field number for the "package" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptorProto.Package">

+            <summary>

+            e.g. "foo", "foo.bar", etc.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileDescriptorProto.DependencyFieldNumber">

+            <summary>Field number for the "dependency" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptorProto.Dependency">

+            <summary>

+            Names of files imported by this file.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileDescriptorProto.PublicDependencyFieldNumber">

+            <summary>Field number for the "public_dependency" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptorProto.PublicDependency">

+            <summary>

+            Indexes of the public imported files in the dependency list above.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileDescriptorProto.WeakDependencyFieldNumber">

+            <summary>Field number for the "weak_dependency" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptorProto.WeakDependency">

+            <summary>

+            Indexes of the weak imported files in the dependency list.

+            For Google-internal migration only. Do not use.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileDescriptorProto.MessageTypeFieldNumber">

+            <summary>Field number for the "message_type" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptorProto.MessageType">

+            <summary>

+            All top-level definitions in this file.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileDescriptorProto.EnumTypeFieldNumber">

+            <summary>Field number for the "enum_type" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileDescriptorProto.ServiceFieldNumber">

+            <summary>Field number for the "service" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileDescriptorProto.ExtensionFieldNumber">

+            <summary>Field number for the "extension" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileDescriptorProto.OptionsFieldNumber">

+            <summary>Field number for the "options" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileDescriptorProto.SourceCodeInfoFieldNumber">

+            <summary>Field number for the "source_code_info" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptorProto.SourceCodeInfo">

+            <summary>

+            This field contains optional information about the original source code.

+            You may safely remove this entire field without harming runtime

+            functionality of the descriptors -- the information is needed only by

+            development tools.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileDescriptorProto.SyntaxFieldNumber">

+            <summary>Field number for the "syntax" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptorProto.Syntax">

+            <summary>

+            The syntax of the proto file.

+            The supported values are "proto2" and "proto3".

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.DescriptorProto">

+            <summary>

+            Describes a message type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.DescriptorProto.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.DescriptorProto.FieldFieldNumber">

+            <summary>Field number for the "field" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.DescriptorProto.ExtensionFieldNumber">

+            <summary>Field number for the "extension" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.DescriptorProto.NestedTypeFieldNumber">

+            <summary>Field number for the "nested_type" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.DescriptorProto.EnumTypeFieldNumber">

+            <summary>Field number for the "enum_type" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.DescriptorProto.ExtensionRangeFieldNumber">

+            <summary>Field number for the "extension_range" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.DescriptorProto.OneofDeclFieldNumber">

+            <summary>Field number for the "oneof_decl" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.DescriptorProto.OptionsFieldNumber">

+            <summary>Field number for the "options" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.DescriptorProto.ReservedRangeFieldNumber">

+            <summary>Field number for the "reserved_range" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.DescriptorProto.ReservedNameFieldNumber">

+            <summary>Field number for the "reserved_name" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.DescriptorProto.ReservedName">

+            <summary>

+            Reserved field names, which may not be used by fields in the same message.

+            A given name may only be reserved once.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.DescriptorProto.Types">

+            <summary>Container for nested types declared in the DescriptorProto message type.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.DescriptorProto.Types.ExtensionRange.StartFieldNumber">

+            <summary>Field number for the "start" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.DescriptorProto.Types.ExtensionRange.EndFieldNumber">

+            <summary>Field number for the "end" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.DescriptorProto.Types.ExtensionRange.OptionsFieldNumber">

+            <summary>Field number for the "options" field.</summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.DescriptorProto.Types.ReservedRange">

+            <summary>

+            Range of reserved tag numbers. Reserved tag numbers may not be used by

+            fields or extension ranges in the same message. Reserved ranges may

+            not overlap.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.DescriptorProto.Types.ReservedRange.StartFieldNumber">

+            <summary>Field number for the "start" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.DescriptorProto.Types.ReservedRange.Start">

+            <summary>

+            Inclusive.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.DescriptorProto.Types.ReservedRange.EndFieldNumber">

+            <summary>Field number for the "end" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.DescriptorProto.Types.ReservedRange.End">

+            <summary>

+            Exclusive.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.ExtensionRangeOptions.UninterpretedOptionFieldNumber">

+            <summary>Field number for the "uninterpreted_option" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.ExtensionRangeOptions.UninterpretedOption">

+            <summary>

+            The parser stores options it doesn't recognize here. See above.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.FieldDescriptorProto">

+            <summary>

+            Describes a field within a message.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.NumberFieldNumber">

+            <summary>Field number for the "number" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.LabelFieldNumber">

+            <summary>Field number for the "label" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.TypeFieldNumber">

+            <summary>Field number for the "type" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptorProto.Type">

+            <summary>

+            If type_name is set, this need not be set.  If both this and type_name

+            are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.TypeNameFieldNumber">

+            <summary>Field number for the "type_name" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptorProto.TypeName">

+            <summary>

+            For message and enum types, this is the name of the type.  If the name

+            starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping

+            rules are used to find the type (i.e. first the nested types within this

+            message are searched, then within the parent, on up to the root

+            namespace).

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.ExtendeeFieldNumber">

+            <summary>Field number for the "extendee" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptorProto.Extendee">

+            <summary>

+            For extensions, this is the name of the type being extended.  It is

+            resolved in the same manner as type_name.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.DefaultValueFieldNumber">

+            <summary>Field number for the "default_value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptorProto.DefaultValue">

+            <summary>

+            For numeric types, contains the original text representation of the value.

+            For booleans, "true" or "false".

+            For strings, contains the default text contents (not escaped in any way).

+            For bytes, contains the C escaped value.  All bytes >= 128 are escaped.

+            TODO(kenton):  Base-64 encode?

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.OneofIndexFieldNumber">

+            <summary>Field number for the "oneof_index" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptorProto.OneofIndex">

+            <summary>

+            If set, gives the index of a oneof in the containing type's oneof_decl

+            list.  This field is a member of that oneof.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.JsonNameFieldNumber">

+            <summary>Field number for the "json_name" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptorProto.JsonName">

+            <summary>

+            JSON name of this field. The value is set by protocol compiler. If the

+            user has set a "json_name" option on this field, that option's value

+            will be used. Otherwise, it's deduced from the field's name by converting

+            it to camelCase.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.OptionsFieldNumber">

+            <summary>Field number for the "options" field.</summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.FieldDescriptorProto.Types">

+            <summary>Container for nested types declared in the FieldDescriptorProto message type.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.Double">

+            <summary>

+            0 is reserved for errors.

+            Order is weird for historical reasons.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.Int64">

+            <summary>

+            Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if

+            negative values are likely.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.Int32">

+            <summary>

+            Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if

+            negative values are likely.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.Group">

+            <summary>

+            Tag-delimited aggregate.

+            Group type is deprecated and not supported in proto3. However, Proto3

+            implementations should still be able to parse the group wire format and

+            treat group fields as unknown fields.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.Message">

+            <summary>

+            Length-delimited aggregate.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.Bytes">

+            <summary>

+            New in version 2.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.Sint32">

+            <summary>

+            Uses ZigZag encoding.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.Sint64">

+            <summary>

+            Uses ZigZag encoding.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label.Optional">

+            <summary>

+            0 is reserved for errors

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.OneofDescriptorProto">

+            <summary>

+            Describes a oneof.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.OneofDescriptorProto.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.OneofDescriptorProto.OptionsFieldNumber">

+            <summary>Field number for the "options" field.</summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.EnumDescriptorProto">

+            <summary>

+            Describes an enum type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.EnumDescriptorProto.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.EnumDescriptorProto.ValueFieldNumber">

+            <summary>Field number for the "value" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.EnumDescriptorProto.OptionsFieldNumber">

+            <summary>Field number for the "options" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.EnumDescriptorProto.ReservedRangeFieldNumber">

+            <summary>Field number for the "reserved_range" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumDescriptorProto.ReservedRange">

+            <summary>

+            Range of reserved numeric values. Reserved numeric values may not be used

+            by enum values in the same enum declaration. Reserved ranges may not

+            overlap.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.EnumDescriptorProto.ReservedNameFieldNumber">

+            <summary>Field number for the "reserved_name" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumDescriptorProto.ReservedName">

+            <summary>

+            Reserved enum value names, which may not be reused. A given name may only

+            be reserved once.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.EnumDescriptorProto.Types">

+            <summary>Container for nested types declared in the EnumDescriptorProto message type.</summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.EnumDescriptorProto.Types.EnumReservedRange">

+             <summary>

+             Range of reserved numeric values. Reserved values may not be used by

+             entries in the same enum. Reserved ranges may not overlap.

+            

+             Note that this is distinct from DescriptorProto.ReservedRange in that it

+             is inclusive such that it can appropriately represent the entire int32

+             domain.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.EnumDescriptorProto.Types.EnumReservedRange.StartFieldNumber">

+            <summary>Field number for the "start" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumDescriptorProto.Types.EnumReservedRange.Start">

+            <summary>

+            Inclusive.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.EnumDescriptorProto.Types.EnumReservedRange.EndFieldNumber">

+            <summary>Field number for the "end" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumDescriptorProto.Types.EnumReservedRange.End">

+            <summary>

+            Inclusive.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.EnumValueDescriptorProto">

+            <summary>

+            Describes a value within an enum.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.EnumValueDescriptorProto.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.EnumValueDescriptorProto.NumberFieldNumber">

+            <summary>Field number for the "number" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.EnumValueDescriptorProto.OptionsFieldNumber">

+            <summary>Field number for the "options" field.</summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.ServiceDescriptorProto">

+            <summary>

+            Describes a service.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.ServiceDescriptorProto.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.ServiceDescriptorProto.MethodFieldNumber">

+            <summary>Field number for the "method" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.ServiceDescriptorProto.OptionsFieldNumber">

+            <summary>Field number for the "options" field.</summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.MethodDescriptorProto">

+            <summary>

+            Describes a method of a service.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.MethodDescriptorProto.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.MethodDescriptorProto.InputTypeFieldNumber">

+            <summary>Field number for the "input_type" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MethodDescriptorProto.InputType">

+            <summary>

+            Input and output type names.  These are resolved in the same way as

+            FieldDescriptorProto.type_name, but must refer to a message type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.MethodDescriptorProto.OutputTypeFieldNumber">

+            <summary>Field number for the "output_type" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.MethodDescriptorProto.OptionsFieldNumber">

+            <summary>Field number for the "options" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.MethodDescriptorProto.ClientStreamingFieldNumber">

+            <summary>Field number for the "client_streaming" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MethodDescriptorProto.ClientStreaming">

+            <summary>

+            Identifies if client streams multiple client messages

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.MethodDescriptorProto.ServerStreamingFieldNumber">

+            <summary>Field number for the "server_streaming" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MethodDescriptorProto.ServerStreaming">

+            <summary>

+            Identifies if server streams multiple server messages

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.JavaPackageFieldNumber">

+            <summary>Field number for the "java_package" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.JavaPackage">

+            <summary>

+            Sets the Java package where classes generated from this .proto will be

+            placed.  By default, the proto package is used, but this is often

+            inappropriate because proto packages do not normally start with backwards

+            domain names.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.JavaOuterClassnameFieldNumber">

+            <summary>Field number for the "java_outer_classname" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.JavaOuterClassname">

+            <summary>

+            If set, all the classes from the .proto file are wrapped in a single

+            outer class with the given name.  This applies to both Proto1

+            (equivalent to the old "--one_java_file" option) and Proto2 (where

+            a .proto always translates to a single class, but you may want to

+            explicitly choose the class name).

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.JavaMultipleFilesFieldNumber">

+            <summary>Field number for the "java_multiple_files" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.JavaMultipleFiles">

+            <summary>

+            If set true, then the Java code generator will generate a separate .java

+            file for each top-level message, enum, and service defined in the .proto

+            file.  Thus, these types will *not* be nested inside the outer class

+            named by java_outer_classname.  However, the outer class will still be

+            generated to contain the file's getDescriptor() method as well as any

+            top-level extensions defined in the file.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.JavaGenerateEqualsAndHashFieldNumber">

+            <summary>Field number for the "java_generate_equals_and_hash" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.JavaGenerateEqualsAndHash">

+            <summary>

+            This option does nothing.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.JavaStringCheckUtf8FieldNumber">

+            <summary>Field number for the "java_string_check_utf8" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.JavaStringCheckUtf8">

+            <summary>

+            If set true, then the Java2 code generator will generate code that

+            throws an exception whenever an attempt is made to assign a non-UTF-8

+            byte sequence to a string field.

+            Message reflection will do the same.

+            However, an extension field still accepts non-UTF-8 byte sequences.

+            This option has no effect on when used with the lite runtime.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.OptimizeForFieldNumber">

+            <summary>Field number for the "optimize_for" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.GoPackageFieldNumber">

+            <summary>Field number for the "go_package" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.GoPackage">

+            <summary>

+            Sets the Go package where structs generated from this .proto will be

+            placed. If omitted, the Go package will be derived from the following:

+              - The basename of the package import path, if provided.

+              - Otherwise, the package statement in the .proto file, if present.

+              - Otherwise, the basename of the .proto file, without extension.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.CcGenericServicesFieldNumber">

+            <summary>Field number for the "cc_generic_services" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.CcGenericServices">

+             <summary>

+             Should generic services be generated in each language?  "Generic" services

+             are not specific to any particular RPC system.  They are generated by the

+             main code generators in each language (without additional plugins).

+             Generic services were the only kind of service generation supported by

+             early versions of google.protobuf.

+            

+             Generic services are now considered deprecated in favor of using plugins

+             that generate code specific to your particular RPC system.  Therefore,

+             these default to false.  Old code which depends on generic services should

+             explicitly set them to true.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.JavaGenericServicesFieldNumber">

+            <summary>Field number for the "java_generic_services" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.PyGenericServicesFieldNumber">

+            <summary>Field number for the "py_generic_services" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.PhpGenericServicesFieldNumber">

+            <summary>Field number for the "php_generic_services" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.DeprecatedFieldNumber">

+            <summary>Field number for the "deprecated" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.Deprecated">

+            <summary>

+            Is this file deprecated?

+            Depending on the target platform, this can emit Deprecated annotations

+            for everything in the file, or it will be completely ignored; in the very

+            least, this is a formalization for deprecating files.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.CcEnableArenasFieldNumber">

+            <summary>Field number for the "cc_enable_arenas" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.CcEnableArenas">

+            <summary>

+            Enables the use of arenas for the proto messages in this file. This applies

+            only to generated classes for C++.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.ObjcClassPrefixFieldNumber">

+            <summary>Field number for the "objc_class_prefix" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.ObjcClassPrefix">

+            <summary>

+            Sets the objective c class prefix which is prepended to all objective c

+            generated classes from this .proto. There is no default.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.CsharpNamespaceFieldNumber">

+            <summary>Field number for the "csharp_namespace" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.CsharpNamespace">

+            <summary>

+            Namespace for generated classes; defaults to the package.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.SwiftPrefixFieldNumber">

+            <summary>Field number for the "swift_prefix" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.SwiftPrefix">

+            <summary>

+            By default Swift generators will take the proto package and CamelCase it

+            replacing '.' with underscore and use that to prefix the types/symbols

+            defined. When this options is provided, they will use this value instead

+            to prefix the types/symbols defined.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.PhpClassPrefixFieldNumber">

+            <summary>Field number for the "php_class_prefix" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.PhpClassPrefix">

+            <summary>

+            Sets the php class prefix which is prepended to all php generated classes

+            from this .proto. Default is empty.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.PhpNamespaceFieldNumber">

+            <summary>Field number for the "php_namespace" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.PhpNamespace">

+            <summary>

+            Use this option to change the namespace of php generated classes. Default

+            is empty. When this option is empty, the package name will be used for

+            determining the namespace.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.PhpMetadataNamespaceFieldNumber">

+            <summary>Field number for the "php_metadata_namespace" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.PhpMetadataNamespace">

+            <summary>

+            Use this option to change the namespace of php generated metadata classes.

+            Default is empty. When this option is empty, the proto file name will be used

+            for determining the namespace.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.RubyPackageFieldNumber">

+            <summary>Field number for the "ruby_package" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.RubyPackage">

+            <summary>

+            Use this option to change the package of ruby generated classes. Default

+            is empty. When this option is not set, the package name will be used for

+            determining the ruby package.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.UninterpretedOptionFieldNumber">

+            <summary>Field number for the "uninterpreted_option" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileOptions.UninterpretedOption">

+            <summary>

+            The parser stores options it doesn't recognize here.

+            See the documentation for the "Options" section above.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.FileOptions.Types">

+            <summary>Container for nested types declared in the FileOptions message type.</summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode">

+            <summary>

+            Generated classes can be optimized for speed or code size.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode.Speed">

+            <summary>

+            Generate complete code for parsing, serialization,

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode.CodeSize">

+            <summary>

+            etc.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode.LiteRuntime">

+            <summary>

+            Generate code using MessageLite and the lite runtime.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.MessageOptions.MessageSetWireFormatFieldNumber">

+            <summary>Field number for the "message_set_wire_format" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageOptions.MessageSetWireFormat">

+             <summary>

+             Set true to use the old proto1 MessageSet wire format for extensions.

+             This is provided for backwards-compatibility with the MessageSet wire

+             format.  You should not use this for any other reason:  It's less

+             efficient, has fewer features, and is more complicated.

+            

+             The message must be defined exactly as follows:

+               message Foo {

+                 option message_set_wire_format = true;

+                 extensions 4 to max;

+               }

+             Note that the message cannot have any defined fields; MessageSets only

+             have extensions.

+            

+             All extensions of your type must be singular messages; e.g. they cannot

+             be int32s, enums, or repeated messages.

+            

+             Because this is an option, the above two restrictions are not enforced by

+             the protocol compiler.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.MessageOptions.NoStandardDescriptorAccessorFieldNumber">

+            <summary>Field number for the "no_standard_descriptor_accessor" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageOptions.NoStandardDescriptorAccessor">

+            <summary>

+            Disables the generation of the standard "descriptor()" accessor, which can

+            conflict with a field of the same name.  This is meant to make migration

+            from proto1 easier; new code should avoid fields named "descriptor".

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.MessageOptions.DeprecatedFieldNumber">

+            <summary>Field number for the "deprecated" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageOptions.Deprecated">

+            <summary>

+            Is this message deprecated?

+            Depending on the target platform, this can emit Deprecated annotations

+            for the message, or it will be completely ignored; in the very least,

+            this is a formalization for deprecating messages.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.MessageOptions.MapEntryFieldNumber">

+            <summary>Field number for the "map_entry" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageOptions.MapEntry">

+             <summary>

+             Whether the message is an automatically generated map entry type for the

+             maps field.

+            

+             For maps fields:

+                 map&lt;KeyType, ValueType> map_field = 1;

+             The parsed descriptor looks like:

+                 message MapFieldEntry {

+                     option map_entry = true;

+                     optional KeyType key = 1;

+                     optional ValueType value = 2;

+                 }

+                 repeated MapFieldEntry map_field = 1;

+            

+             Implementations may choose not to generate the map_entry=true message, but

+             use a native map in the target language to hold the keys and values.

+             The reflection APIs in such implementions still need to work as

+             if the field is a repeated message field.

+            

+             NOTE: Do not set the option in .proto files. Always use the maps syntax

+             instead. The option should only be implicitly set by the proto compiler

+             parser.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.MessageOptions.UninterpretedOptionFieldNumber">

+            <summary>Field number for the "uninterpreted_option" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageOptions.UninterpretedOption">

+            <summary>

+            The parser stores options it doesn't recognize here. See above.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldOptions.CtypeFieldNumber">

+            <summary>Field number for the "ctype" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldOptions.Ctype">

+            <summary>

+            The ctype option instructs the C++ code generator to use a different

+            representation of the field than it normally would.  See the specific

+            options below.  This option is not yet implemented in the open source

+            release -- sorry, we'll try to include it in a future version!

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldOptions.PackedFieldNumber">

+            <summary>Field number for the "packed" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldOptions.Packed">

+            <summary>

+            The packed option can be enabled for repeated primitive fields to enable

+            a more efficient representation on the wire. Rather than repeatedly

+            writing the tag and type for each element, the entire array is encoded as

+            a single length-delimited blob. In proto3, only explicit setting it to

+            false will avoid using packed encoding.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldOptions.JstypeFieldNumber">

+            <summary>Field number for the "jstype" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldOptions.Jstype">

+             <summary>

+             The jstype option determines the JavaScript type used for values of the

+             field.  The option is permitted only for 64 bit integral and fixed types

+             (int64, uint64, sint64, fixed64, sfixed64).  A field with jstype JS_STRING

+             is represented as JavaScript string, which avoids loss of precision that

+             can happen when a large value is converted to a floating point JavaScript.

+             Specifying JS_NUMBER for the jstype causes the generated JavaScript code to

+             use the JavaScript "number" type.  The behavior of the default option

+             JS_NORMAL is implementation dependent.

+            

+             This option is an enum to permit additional types to be added, e.g.

+             goog.math.Integer.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldOptions.LazyFieldNumber">

+            <summary>Field number for the "lazy" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldOptions.Lazy">

+             <summary>

+             Should this field be parsed lazily?  Lazy applies only to message-type

+             fields.  It means that when the outer message is initially parsed, the

+             inner message's contents will not be parsed but instead stored in encoded

+             form.  The inner message will actually be parsed when it is first accessed.

+            

+             This is only a hint.  Implementations are free to choose whether to use

+             eager or lazy parsing regardless of the value of this option.  However,

+             setting this option true suggests that the protocol author believes that

+             using lazy parsing on this field is worth the additional bookkeeping

+             overhead typically needed to implement it.

+            

+             This option does not affect the public interface of any generated code;

+             all method signatures remain the same.  Furthermore, thread-safety of the

+             interface is not affected by this option; const methods remain safe to

+             call from multiple threads concurrently, while non-const methods continue

+             to require exclusive access.

+            

+             Note that implementations may choose not to check required fields within

+             a lazy sub-message.  That is, calling IsInitialized() on the outer message

+             may return true even if the inner message has missing required fields.

+             This is necessary because otherwise the inner message would have to be

+             parsed in order to perform the check, defeating the purpose of lazy

+             parsing.  An implementation which chooses not to check required fields

+             must be consistent about it.  That is, for any particular sub-message, the

+             implementation must either *always* check its required fields, or *never*

+             check its required fields, regardless of whether or not the message has

+             been parsed.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldOptions.DeprecatedFieldNumber">

+            <summary>Field number for the "deprecated" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldOptions.Deprecated">

+            <summary>

+            Is this field deprecated?

+            Depending on the target platform, this can emit Deprecated annotations

+            for accessors, or it will be completely ignored; in the very least, this

+            is a formalization for deprecating fields.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldOptions.WeakFieldNumber">

+            <summary>Field number for the "weak" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldOptions.Weak">

+            <summary>

+            For Google-internal migration only. Do not use.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldOptions.UninterpretedOptionFieldNumber">

+            <summary>Field number for the "uninterpreted_option" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldOptions.UninterpretedOption">

+            <summary>

+            The parser stores options it doesn't recognize here. See above.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.FieldOptions.Types">

+            <summary>Container for nested types declared in the FieldOptions message type.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldOptions.Types.CType.String">

+            <summary>

+            Default mode.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldOptions.Types.JSType.JsNormal">

+            <summary>

+            Use the default type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldOptions.Types.JSType.JsString">

+            <summary>

+            Use JavaScript strings.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldOptions.Types.JSType.JsNumber">

+            <summary>

+            Use JavaScript numbers.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.OneofOptions.UninterpretedOptionFieldNumber">

+            <summary>Field number for the "uninterpreted_option" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.OneofOptions.UninterpretedOption">

+            <summary>

+            The parser stores options it doesn't recognize here. See above.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.EnumOptions.AllowAliasFieldNumber">

+            <summary>Field number for the "allow_alias" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumOptions.AllowAlias">

+            <summary>

+            Set this option to true to allow mapping different tag names to the same

+            value.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.EnumOptions.DeprecatedFieldNumber">

+            <summary>Field number for the "deprecated" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumOptions.Deprecated">

+            <summary>

+            Is this enum deprecated?

+            Depending on the target platform, this can emit Deprecated annotations

+            for the enum, or it will be completely ignored; in the very least, this

+            is a formalization for deprecating enums.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.EnumOptions.UninterpretedOptionFieldNumber">

+            <summary>Field number for the "uninterpreted_option" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumOptions.UninterpretedOption">

+            <summary>

+            The parser stores options it doesn't recognize here. See above.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.EnumValueOptions.DeprecatedFieldNumber">

+            <summary>Field number for the "deprecated" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumValueOptions.Deprecated">

+            <summary>

+            Is this enum value deprecated?

+            Depending on the target platform, this can emit Deprecated annotations

+            for the enum value, or it will be completely ignored; in the very least,

+            this is a formalization for deprecating enum values.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.EnumValueOptions.UninterpretedOptionFieldNumber">

+            <summary>Field number for the "uninterpreted_option" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumValueOptions.UninterpretedOption">

+            <summary>

+            The parser stores options it doesn't recognize here. See above.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.ServiceOptions.DeprecatedFieldNumber">

+            <summary>Field number for the "deprecated" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.ServiceOptions.Deprecated">

+            <summary>

+            Is this service deprecated?

+            Depending on the target platform, this can emit Deprecated annotations

+            for the service, or it will be completely ignored; in the very least,

+            this is a formalization for deprecating services.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.ServiceOptions.UninterpretedOptionFieldNumber">

+            <summary>Field number for the "uninterpreted_option" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.ServiceOptions.UninterpretedOption">

+            <summary>

+            The parser stores options it doesn't recognize here. See above.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.MethodOptions.DeprecatedFieldNumber">

+            <summary>Field number for the "deprecated" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MethodOptions.Deprecated">

+            <summary>

+            Is this method deprecated?

+            Depending on the target platform, this can emit Deprecated annotations

+            for the method, or it will be completely ignored; in the very least,

+            this is a formalization for deprecating methods.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.MethodOptions.IdempotencyLevelFieldNumber">

+            <summary>Field number for the "idempotency_level" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.MethodOptions.UninterpretedOptionFieldNumber">

+            <summary>Field number for the "uninterpreted_option" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MethodOptions.UninterpretedOption">

+            <summary>

+            The parser stores options it doesn't recognize here. See above.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.MethodOptions.Types">

+            <summary>Container for nested types declared in the MethodOptions message type.</summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.MethodOptions.Types.IdempotencyLevel">

+            <summary>

+            Is this method side-effect-free (or safe in HTTP parlance), or idempotent,

+            or neither? HTTP based RPC implementation may choose GET verb for safe

+            methods, and PUT verb for idempotent methods instead of the default POST.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.MethodOptions.Types.IdempotencyLevel.NoSideEffects">

+            <summary>

+            implies idempotent

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.MethodOptions.Types.IdempotencyLevel.Idempotent">

+            <summary>

+            idempotent, but may have side effects

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.UninterpretedOption">

+            <summary>

+            A message representing a option the parser does not recognize. This only

+            appears in options protos created by the compiler::Parser class.

+            DescriptorPool resolves these when building Descriptor objects. Therefore,

+            options protos in descriptor objects (e.g. returned by Descriptor::options(),

+            or produced by Descriptor::CopyTo()) will never have UninterpretedOptions

+            in them.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.UninterpretedOption.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.UninterpretedOption.IdentifierValueFieldNumber">

+            <summary>Field number for the "identifier_value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.UninterpretedOption.IdentifierValue">

+            <summary>

+            The value of the uninterpreted option, in whatever type the tokenizer

+            identified it as during parsing. Exactly one of these should be set.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.UninterpretedOption.PositiveIntValueFieldNumber">

+            <summary>Field number for the "positive_int_value" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.UninterpretedOption.NegativeIntValueFieldNumber">

+            <summary>Field number for the "negative_int_value" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.UninterpretedOption.DoubleValueFieldNumber">

+            <summary>Field number for the "double_value" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.UninterpretedOption.StringValueFieldNumber">

+            <summary>Field number for the "string_value" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.UninterpretedOption.AggregateValueFieldNumber">

+            <summary>Field number for the "aggregate_value" field.</summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.UninterpretedOption.Types">

+            <summary>Container for nested types declared in the UninterpretedOption message type.</summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.UninterpretedOption.Types.NamePart">

+            <summary>

+            The name of the uninterpreted option.  Each string represents a segment in

+            a dot-separated name.  is_extension is true iff a segment represents an

+            extension (denoted with parentheses in options specs in .proto files).

+            E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents

+            "foo.(bar.baz).qux".

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.UninterpretedOption.Types.NamePart.NamePart_FieldNumber">

+            <summary>Field number for the "name_part" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.UninterpretedOption.Types.NamePart.IsExtensionFieldNumber">

+            <summary>Field number for the "is_extension" field.</summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.SourceCodeInfo">

+            <summary>

+            Encapsulates information about the original source file from which a

+            FileDescriptorProto was generated.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.SourceCodeInfo.LocationFieldNumber">

+            <summary>Field number for the "location" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.SourceCodeInfo.Location">

+             <summary>

+             A Location identifies a piece of source code in a .proto file which

+             corresponds to a particular definition.  This information is intended

+             to be useful to IDEs, code indexers, documentation generators, and similar

+             tools.

+            

+             For example, say we have a file like:

+               message Foo {

+                 optional string foo = 1;

+               }

+             Let's look at just the field definition:

+               optional string foo = 1;

+               ^       ^^     ^^  ^  ^^^

+               a       bc     de  f  ghi

+             We have the following locations:

+               span   path               represents

+               [a,i)  [ 4, 0, 2, 0 ]     The whole field definition.

+               [a,b)  [ 4, 0, 2, 0, 4 ]  The label (optional).

+               [c,d)  [ 4, 0, 2, 0, 5 ]  The type (string).

+               [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).

+               [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).

+            

+             Notes:

+             - A location may refer to a repeated field itself (i.e. not to any

+               particular index within it).  This is used whenever a set of elements are

+               logically enclosed in a single code segment.  For example, an entire

+               extend block (possibly containing multiple extension definitions) will

+               have an outer location whose path refers to the "extensions" repeated

+               field without an index.

+             - Multiple locations may have the same path.  This happens when a single

+               logical declaration is spread out across multiple places.  The most

+               obvious example is the "extend" block again -- there may be multiple

+               extend blocks in the same scope, each of which will have the same path.

+             - A location's span is not always a subset of its parent's span.  For

+               example, the "extendee" of an extension declaration appears at the

+               beginning of the "extend" block and is shared by all extensions within

+               the block.

+             - Just because a location's span is a subset of some other location's span

+               does not mean that it is a descendent.  For example, a "group" defines

+               both a type and a field in a single declaration.  Thus, the locations

+               corresponding to the type and field and their components will overlap.

+             - Code which tries to interpret locations should probably be designed to

+               ignore those that it doesn't understand, as more types of locations could

+               be recorded in the future.

+             </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.SourceCodeInfo.Types">

+            <summary>Container for nested types declared in the SourceCodeInfo message type.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.SourceCodeInfo.Types.Location.PathFieldNumber">

+            <summary>Field number for the "path" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.SourceCodeInfo.Types.Location.Path">

+             <summary>

+             Identifies which part of the FileDescriptorProto was defined at this

+             location.

+            

+             Each element is a field number or an index.  They form a path from

+             the root FileDescriptorProto to the place where the definition.  For

+             example, this path:

+               [ 4, 3, 2, 7, 1 ]

+             refers to:

+               file.message_type(3)  // 4, 3

+                   .field(7)         // 2, 7

+                   .name()           // 1

+             This is because FileDescriptorProto.message_type has field number 4:

+               repeated DescriptorProto message_type = 4;

+             and DescriptorProto.field has field number 2:

+               repeated FieldDescriptorProto field = 2;

+             and FieldDescriptorProto.name has field number 1:

+               optional string name = 1;

+            

+             Thus, the above path gives the location of a field name.  If we removed

+             the last element:

+               [ 4, 3, 2, 7 ]

+             this path refers to the whole field declaration (from the beginning

+             of the label to the terminating semicolon).

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.SourceCodeInfo.Types.Location.SpanFieldNumber">

+            <summary>Field number for the "span" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.SourceCodeInfo.Types.Location.Span">

+            <summary>

+            Always has exactly three or four elements: start line, start column,

+            end line (optional, otherwise assumed same as start line), end column.

+            These are packed into a single field for efficiency.  Note that line

+            and column numbers are zero-based -- typically you will want to add

+            1 to each before displaying to a user.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.SourceCodeInfo.Types.Location.LeadingCommentsFieldNumber">

+            <summary>Field number for the "leading_comments" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.SourceCodeInfo.Types.Location.LeadingComments">

+             <summary>

+             If this SourceCodeInfo represents a complete declaration, these are any

+             comments appearing before and after the declaration which appear to be

+             attached to the declaration.

+            

+             A series of line comments appearing on consecutive lines, with no other

+             tokens appearing on those lines, will be treated as a single comment.

+            

+             leading_detached_comments will keep paragraphs of comments that appear

+             before (but not connected to) the current element. Each paragraph,

+             separated by empty lines, will be one comment element in the repeated

+             field.

+            

+             Only the comment content is provided; comment markers (e.g. //) are

+             stripped out.  For block comments, leading whitespace and an asterisk

+             will be stripped from the beginning of each line other than the first.

+             Newlines are included in the output.

+            

+             Examples:

+            

+               optional int32 foo = 1;  // Comment attached to foo.

+               // Comment attached to bar.

+               optional int32 bar = 2;

+            

+               optional string baz = 3;

+               // Comment attached to baz.

+               // Another line attached to baz.

+            

+               // Comment attached to qux.

+               //

+               // Another line attached to qux.

+               optional double qux = 4;

+            

+               // Detached comment for corge. This is not leading or trailing comments

+               // to qux or corge because there are blank lines separating it from

+               // both.

+            

+               // Detached comment for corge paragraph 2.

+            

+               optional string corge = 5;

+               /* Block comment attached

+                * to corge.  Leading asterisks

+                * will be removed. */

+               /* Block comment attached to

+                * grault. */

+               optional int32 grault = 6;

+            

+               // ignored detached comments.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.SourceCodeInfo.Types.Location.TrailingCommentsFieldNumber">

+            <summary>Field number for the "trailing_comments" field.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.SourceCodeInfo.Types.Location.LeadingDetachedCommentsFieldNumber">

+            <summary>Field number for the "leading_detached_comments" field.</summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.GeneratedCodeInfo">

+            <summary>

+            Describes the relationship between generated code and its original source

+            file. A GeneratedCodeInfo message is associated with only one generated

+            source file, but may contain references to different source .proto files.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.GeneratedCodeInfo.AnnotationFieldNumber">

+            <summary>Field number for the "annotation" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.GeneratedCodeInfo.Annotation">

+            <summary>

+            An Annotation connects some span of text in generated code to an element

+            of its generating .proto file.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.GeneratedCodeInfo.Types">

+            <summary>Container for nested types declared in the GeneratedCodeInfo message type.</summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.GeneratedCodeInfo.Types.Annotation.PathFieldNumber">

+            <summary>Field number for the "path" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.GeneratedCodeInfo.Types.Annotation.Path">

+            <summary>

+            Identifies the element in the original source .proto file. This field

+            is formatted the same as SourceCodeInfo.Location.path.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.GeneratedCodeInfo.Types.Annotation.SourceFileFieldNumber">

+            <summary>Field number for the "source_file" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.GeneratedCodeInfo.Types.Annotation.SourceFile">

+            <summary>

+            Identifies the filesystem path to the original source .proto.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.GeneratedCodeInfo.Types.Annotation.BeginFieldNumber">

+            <summary>Field number for the "begin" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.GeneratedCodeInfo.Types.Annotation.Begin">

+            <summary>

+            Identifies the starting offset in bytes in the generated code

+            that relates to the identified object.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.GeneratedCodeInfo.Types.Annotation.EndFieldNumber">

+            <summary>Field number for the "end" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.GeneratedCodeInfo.Types.Annotation.End">

+            <summary>

+            Identifies the ending offset in bytes in the generated code that

+            relates to the identified offset. The end offset should be one past

+            the last relevant byte (so the length of the text = end - begin).

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.DescriptorBase">

+            <summary>

+            Base class for nearly all descriptors, providing common functionality.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.DescriptorBase.Index">

+            <value>

+            The index of this descriptor within its parent descriptor. 

+            </value>

+            <remarks>

+            This returns the index of this descriptor within its parent, for

+            this descriptor's type. (There can be duplicate values for different

+            types, e.g. one enum type with index 0 and one message type with index 0.)

+            </remarks>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.DescriptorBase.Name">

+            <summary>

+            Returns the name of the entity (field, message etc) being described.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.DescriptorBase.FullName">

+            <summary>

+            The fully qualified name of the descriptor's target.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.DescriptorBase.File">

+            <value>

+            The file this descriptor was declared in.

+            </value>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.DescriptorPool">

+            <summary>

+            Contains lookup tables containing all the descriptors defined in a particular file.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.DescriptorPool.FindSymbol``1(System.String)">

+            <summary>

+            Finds a symbol of the given name within the pool.

+            </summary>

+            <typeparam name="T">The type of symbol to look for</typeparam>

+            <param name="fullName">Fully-qualified name to look up</param>

+            <returns>The symbol with the given name and type,

+            or null if the symbol doesn't exist or has the wrong type</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.DescriptorPool.AddPackage(System.String,Google.Protobuf.Reflection.FileDescriptor)">

+            <summary>

+            Adds a package to the symbol tables. If a package by the same name

+            already exists, that is fine, but if some other kind of symbol

+            exists under the same name, an exception is thrown. If the package

+            has multiple components, this also adds the parent package(s).

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.DescriptorPool.AddSymbol(Google.Protobuf.Reflection.IDescriptor)">

+            <summary>

+            Adds a symbol to the symbol table.

+            </summary>

+            <exception cref="T:Google.Protobuf.Reflection.DescriptorValidationException">The symbol already existed

+            in the symbol table.</exception>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.DescriptorPool.ValidateSymbolName(Google.Protobuf.Reflection.IDescriptor)">

+            <summary>

+            Verifies that the descriptor's name is valid (i.e. it contains

+            only letters, digits and underscores, and does not start with a digit).

+            </summary>

+            <param name="descriptor"></param>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.DescriptorPool.FindFieldByNumber(Google.Protobuf.Reflection.MessageDescriptor,System.Int32)">

+            <summary>

+            Returns the field with the given number in the given descriptor,

+            or null if it can't be found.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.DescriptorPool.AddFieldByNumber(Google.Protobuf.Reflection.FieldDescriptor)">

+            <summary>

+            Adds a field to the fieldsByNumber table.

+            </summary>

+            <exception cref="T:Google.Protobuf.Reflection.DescriptorValidationException">A field with the same

+            containing type and number already exists.</exception>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.DescriptorPool.AddEnumValueByNumber(Google.Protobuf.Reflection.EnumValueDescriptor)">

+            <summary>

+            Adds an enum value to the enumValuesByNumber table. If an enum value

+            with the same type and number already exists, this method does nothing.

+            (This is allowed; the first value defined with the number takes precedence.)

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.DescriptorPool.LookupSymbol(System.String,Google.Protobuf.Reflection.IDescriptor)">

+            <summary>

+            Looks up a descriptor by name, relative to some other descriptor.

+            The name may be fully-qualified (with a leading '.'), partially-qualified,

+            or unqualified. C++-like name lookup semantics are used to search for the

+            matching descriptor.

+            </summary>

+            <remarks>

+            This isn't heavily optimized, but it's only used during cross linking anyway.

+            If it starts being used more widely, we should look at performance more carefully.

+            </remarks>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.DescriptorPool.DescriptorIntPair">

+            <summary>

+            Struct used to hold the keys for the fieldByNumber table.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.DescriptorUtil">

+            <summary>

+            Internal class containing utility methods when working with descriptors.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.DescriptorUtil.IndexedConverter`2">

+            <summary>

+            Equivalent to Func[TInput, int, TOutput] but usable in .NET 2.0. Only used to convert

+            arrays.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.DescriptorUtil.ConvertAndMakeReadOnly``2(System.Collections.Generic.IList{``0},Google.Protobuf.Reflection.DescriptorUtil.IndexedConverter{``0,``1})">

+            <summary>

+            Converts the given array into a read-only list, applying the specified conversion to

+            each input element.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.DescriptorValidationException">

+            <summary>

+            Thrown when building descriptors fails because the source DescriptorProtos

+            are not valid.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.DescriptorValidationException.ProblemSymbolName">

+            <value>

+            The full name of the descriptor where the error occurred.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.DescriptorValidationException.Description">

+            <value>

+            A human-readable description of the error. (The Message property

+            is made up of the descriptor's name and this description.)

+            </value>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.EnumDescriptor">

+            <summary>

+            Descriptor for an enum type in a .proto file.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumDescriptor.Name">

+            <summary>

+            The brief name of the descriptor's target.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumDescriptor.ClrType">

+            <summary>

+            The CLR type for this enum. For generated code, this will be a CLR enum type.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumDescriptor.ContainingType">

+            <value>

+            If this is a nested type, get the outer descriptor, otherwise null.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumDescriptor.Values">

+            <value>

+            An unmodifiable list of defined value descriptors for this enum.

+            </value>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.EnumDescriptor.FindValueByNumber(System.Int32)">

+            <summary>

+            Finds an enum value by number. If multiple enum values have the

+            same number, this returns the first defined value with that number.

+            If there is no value for the given number, this returns <c>null</c>.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.EnumDescriptor.FindValueByName(System.String)">

+            <summary>

+            Finds an enum value by name.

+            </summary>

+            <param name="name">The unqualified name of the value (e.g. "FOO").</param>

+            <returns>The value's descriptor, or null if not found.</returns>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumDescriptor.CustomOptions">

+            <summary>

+            The (possibly empty) set of custom options for this enum.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.EnumValueDescriptor">

+            <summary>

+            Descriptor for a single enum value within an enum in a .proto file.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumValueDescriptor.Name">

+            <summary>

+            Returns the name of the enum value described by this object.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumValueDescriptor.Number">

+            <summary>

+            Returns the number associated with this enum value.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumValueDescriptor.EnumDescriptor">

+            <summary>

+            Returns the enum descriptor that this value is part of.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.EnumValueDescriptor.CustomOptions">

+            <summary>

+            The (possibly empty) set of custom options for this enum value.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.FieldAccessorBase">

+            <summary>

+            Base class for field accessors.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.FieldDescriptor">

+            <summary>

+            Descriptor for a field or extension within a message in a .proto file.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptor.ContainingType">

+            <summary>

+            Get the field's containing message type.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptor.ContainingOneof">

+            <summary>

+            Returns the oneof containing this field, or <c>null</c> if it is not part of a oneof.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptor.JsonName">

+            <summary>

+            The effective JSON name for this field. This is usually the lower-camel-cased form of the field name,

+            but can be overridden using the <c>json_name</c> option in the .proto file.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptor.Name">

+            <summary>

+            The brief name of the descriptor's target.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptor.Accessor">

+            <summary>

+            Returns the accessor for this field.

+            </summary>

+            <remarks>

+            <para>

+            While a <see cref="T:Google.Protobuf.Reflection.FieldDescriptor"/> describes the field, it does not provide

+            any way of obtaining or changing the value of the field within a specific message;

+            that is the responsibility of the accessor.

+            </para>

+            <para>

+            The value returned by this property will be non-null for all regular fields. However,

+            if a message containing a map field is introspected, the list of nested messages will include

+            an auto-generated nested key/value pair message for the field. This is not represented in any

+            generated type, and the value of the map field itself is represented by a dictionary in the

+            reflection API. There are never instances of those "hidden" messages, so no accessor is provided

+            and this property will return null.

+            </para>

+            </remarks>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.FieldDescriptor.GetFieldTypeFromProtoType(Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type)">

+            <summary>

+            Maps a field type as included in the .proto file to a FieldType.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptor.IsRepeated">

+            <summary>

+            Returns <c>true</c> if this field is a repeated field; <c>false</c> otherwise.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptor.IsMap">

+            <summary>

+            Returns <c>true</c> if this field is a map field; <c>false</c> otherwise.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptor.IsPacked">

+            <summary>

+            Returns <c>true</c> if this field is a packed, repeated field; <c>false</c> otherwise.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptor.FieldType">

+            <summary>

+            Returns the type of the field.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptor.FieldNumber">

+            <summary>

+            Returns the field number declared in the proto file.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.FieldDescriptor.CompareTo(Google.Protobuf.Reflection.FieldDescriptor)">

+            <summary>

+            Compares this descriptor with another one, ordering in "canonical" order

+            which simply means ascending order by field number. <paramref name="other"/>

+            must be a field of the same type, i.e. the <see cref="P:Google.Protobuf.Reflection.FieldDescriptor.ContainingType"/> of

+            both fields must be the same.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptor.EnumType">

+            <summary>

+            For enum fields, returns the field's type.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptor.MessageType">

+            <summary>

+            For embedded message and group fields, returns the field's type.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FieldDescriptor.CustomOptions">

+            <summary>

+            The (possibly empty) set of custom options for this field.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.FieldDescriptor.CrossLink">

+            <summary>

+            Look up and cross-link all field types etc.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.FieldType">

+            <summary>

+            Enumeration of all the possible field types.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.Double">

+            <summary>

+            The <c>double</c> field type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.Float">

+            <summary>

+            The <c>float</c> field type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.Int64">

+            <summary>

+            The <c>int64</c> field type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.UInt64">

+            <summary>

+            The <c>uint64</c> field type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.Int32">

+            <summary>

+            The <c>int32</c> field type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.Fixed64">

+            <summary>

+            The <c>fixed64</c> field type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.Fixed32">

+            <summary>

+            The <c>fixed32</c> field type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.Bool">

+            <summary>

+            The <c>bool</c> field type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.String">

+            <summary>

+            The <c>string</c> field type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.Group">

+            <summary>

+            The field type used for groups (not supported in this implementation).

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.Message">

+            <summary>

+            The field type used for message fields.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.Bytes">

+            <summary>

+            The <c>bytes</c> field type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.UInt32">

+            <summary>

+            The <c>uint32</c> field type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.SFixed32">

+            <summary>

+            The <c>sfixed32</c> field type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.SFixed64">

+            <summary>

+            The <c>sfixed64</c> field type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.SInt32">

+            <summary>

+            The <c>sint32</c> field type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.SInt64">

+            <summary>

+            The <c>sint64</c> field type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.FieldType.Enum">

+            <summary>

+            The field type used for enum fields.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.FileDescriptor">

+            <summary>

+            Describes a .proto file, including everything defined within.

+            IDescriptor is implemented such that the File property returns this descriptor,

+            and the FullName is the same as the Name.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.FileDescriptor.ComputeFullName(Google.Protobuf.Reflection.MessageDescriptor,System.String)">

+            <summary>

+            Computes the full name of a descriptor within this file, with an optional parent message.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.FileDescriptor.DeterminePublicDependencies(Google.Protobuf.Reflection.FileDescriptor,Google.Protobuf.Reflection.FileDescriptorProto,Google.Protobuf.Reflection.FileDescriptor[],System.Boolean)">

+            <summary>

+            Extracts public dependencies from direct dependencies. This is a static method despite its

+            first parameter, as the value we're in the middle of constructing is only used for exceptions.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptor.Proto">

+            <value>

+            The descriptor in its protocol message representation.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptor.Name">

+            <value>

+            The file name.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptor.Package">

+            <summary>

+            The package as declared in the .proto file. This may or may not

+            be equivalent to the .NET namespace of the generated classes.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptor.MessageTypes">

+            <value>

+            Unmodifiable list of top-level message types declared in this file.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptor.EnumTypes">

+            <value>

+            Unmodifiable list of top-level enum types declared in this file.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptor.Services">

+            <value>

+            Unmodifiable list of top-level services declared in this file.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptor.Dependencies">

+            <value>

+            Unmodifiable list of this file's dependencies (imports).

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptor.PublicDependencies">

+            <value>

+            Unmodifiable list of this file's public dependencies (public imports).

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptor.SerializedData">

+            <value>

+            The original serialized binary form of this descriptor.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptor.Google#Protobuf#Reflection#IDescriptor#FullName">

+            <value>

+            Implementation of IDescriptor.FullName - just returns the same as Name.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptor.Google#Protobuf#Reflection#IDescriptor#File">

+            <value>

+            Implementation of IDescriptor.File - just returns this descriptor.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptor.DescriptorPool">

+            <value>

+            Pool containing symbol descriptors.

+            </value>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.FileDescriptor.FindTypeByName``1(System.String)">

+            <summary>

+            Finds a type (message, enum, service or extension) in the file by name. Does not find nested types.

+            </summary>

+            <param name="name">The unqualified type name to look for.</param>

+            <typeparam name="T">The type of descriptor to look for</typeparam>

+            <returns>The type's descriptor, or null if not found.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.FileDescriptor.BuildFrom(Google.Protobuf.ByteString,Google.Protobuf.Reflection.FileDescriptorProto,Google.Protobuf.Reflection.FileDescriptor[],System.Boolean,Google.Protobuf.Reflection.GeneratedClrTypeInfo)">

+            <summary>

+            Builds a FileDescriptor from its protocol buffer representation.

+            </summary>

+            <param name="descriptorData">The original serialized descriptor data.

+            We have only limited proto2 support, so serializing FileDescriptorProto

+            would not necessarily give us this.</param>

+            <param name="proto">The protocol message form of the FileDescriptor.</param>

+            <param name="dependencies">FileDescriptors corresponding to all of the

+            file's dependencies, in the exact order listed in the .proto file. May be null,

+            in which case it is treated as an empty array.</param>

+            <param name="allowUnknownDependencies">Whether unknown dependencies are ignored (true) or cause an exception to be thrown (false).</param>

+            <param name="generatedCodeInfo">Details about generated code, for the purposes of reflection.</param>

+            <exception cref="T:Google.Protobuf.Reflection.DescriptorValidationException">If <paramref name="proto"/> is not

+            a valid descriptor. This can occur for a number of reasons, such as a field

+            having an undefined type or because two messages were defined with the same name.</exception>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.FileDescriptor.FromGeneratedCode(System.Byte[],Google.Protobuf.Reflection.FileDescriptor[],Google.Protobuf.Reflection.GeneratedClrTypeInfo)">

+            <summary>

+            Creates a descriptor for generated code.

+            </summary>

+            <remarks>

+            This method is only designed to be used by the results of generating code with protoc,

+            which creates the appropriate dependencies etc. It has to be public because the generated

+            code is "external", but should not be called directly by end users.

+            </remarks>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.FileDescriptor.ToString">

+            <summary>

+            Returns a <see cref="T:System.String" /> that represents this instance.

+            </summary>

+            <returns>

+            A <see cref="T:System.String" /> that represents this instance.

+            </returns>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptor.DescriptorProtoFileDescriptor">

+            <summary>

+            Returns the file descriptor for descriptor.proto.

+            </summary>

+            <remarks>

+            This is used for protos which take a direct dependency on <c>descriptor.proto</c>, typically for

+            annotations. While <c>descriptor.proto</c> is a proto2 file, it is built into the Google.Protobuf

+            runtime for reflection purposes. The messages are internal to the runtime as they would require

+            proto2 semantics for full support, but the file descriptor is available via this property. The

+            C# codegen in protoc automatically uses this property when it detects a dependency on <c>descriptor.proto</c>.

+            </remarks>

+            <value>

+            The file descriptor for <c>descriptor.proto</c>.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.FileDescriptor.CustomOptions">

+            <summary>

+            The (possibly empty) set of custom options for this file.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.FileDescriptor.ForceReflectionInitialization``1">

+            <summary>

+            Performs initialization for the given generic type argument.

+            </summary>

+            <remarks>

+            This method is present for the sake of AOT compilers. It allows code (whether handwritten or generated)

+            to make calls into the reflection machinery of this library to express an intention to use that type

+            reflectively (e.g. for JSON parsing and formatting). The call itself does almost nothing, but AOT compilers

+            attempting to determine which generic type arguments need to be handled will spot the code path and act

+            accordingly.

+            </remarks>

+            <typeparam name="T">The type to force initialization for.</typeparam>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.GeneratedClrTypeInfo">

+            <summary>

+            Extra information provided by generated code when initializing a message or file descriptor.

+            These are constructed as required, and are not long-lived. Hand-written code should

+            never need to use this type.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.GeneratedClrTypeInfo.ClrType">

+            <summary>

+            Irrelevant for file descriptors; the CLR type for the message for message descriptors.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.GeneratedClrTypeInfo.Parser">

+            <summary>

+            Irrelevant for file descriptors; the parser for message descriptors.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.GeneratedClrTypeInfo.PropertyNames">

+            <summary>

+            Irrelevant for file descriptors; the CLR property names (in message descriptor field order)

+            for fields in the message for message descriptors.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.GeneratedClrTypeInfo.OneofNames">

+            <summary>

+            Irrelevant for file descriptors; the CLR property "base" names (in message descriptor oneof order)

+            for oneofs in the message for message descriptors. It is expected that for a oneof name of "Foo",

+            there will be a "FooCase" property and a "ClearFoo" method.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.GeneratedClrTypeInfo.NestedTypes">

+            <summary>

+            The reflection information for types within this file/message descriptor. Elements may be null

+            if there is no corresponding generated type, e.g. for map entry types.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.GeneratedClrTypeInfo.NestedEnums">

+            <summary>

+            The CLR types for enums within this file/message descriptor.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.GeneratedClrTypeInfo.#ctor(System.Type,Google.Protobuf.MessageParser,System.String[],System.String[],System.Type[],Google.Protobuf.Reflection.GeneratedClrTypeInfo[])">

+            <summary>

+            Creates a GeneratedClrTypeInfo for a message descriptor, with nested types, nested enums, the CLR type, property names and oneof names.

+            Each array parameter may be null, to indicate a lack of values.

+            The parameter order is designed to make it feasible to format the generated code readably.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.GeneratedClrTypeInfo.#ctor(System.Type[],Google.Protobuf.Reflection.GeneratedClrTypeInfo[])">

+            <summary>

+            Creates a GeneratedClrTypeInfo for a file descriptor, with only types and enums.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.IDescriptor">

+            <summary>

+            Interface implemented by all descriptor types.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.IDescriptor.Name">

+            <summary>

+            Returns the name of the entity (message, field etc) being described.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.IDescriptor.FullName">

+            <summary>

+            Returns the fully-qualified name of the entity being described.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.IDescriptor.File">

+            <summary>

+            Returns the descriptor for the .proto file that this entity is part of.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.IFieldAccessor">

+            <summary>

+            Allows fields to be reflectively accessed.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.IFieldAccessor.Descriptor">

+            <summary>

+            Returns the descriptor associated with this field.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.IFieldAccessor.Clear(Google.Protobuf.IMessage)">

+            <summary>

+            Clears the field in the specified message. (For repeated fields,

+            this clears the list.)

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.IFieldAccessor.GetValue(Google.Protobuf.IMessage)">

+            <summary>

+            Fetches the field value. For repeated values, this will be an

+            <see cref="T:System.Collections.IList"/> implementation. For map values, this will be an

+            <see cref="T:System.Collections.IDictionary"/> implementation.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.IFieldAccessor.SetValue(Google.Protobuf.IMessage,System.Object)">

+            <summary>

+            Mutator for single "simple" fields only.

+            </summary>

+            <remarks>

+            Repeated fields are mutated by fetching the value and manipulating it as a list.

+            Map fields are mutated by fetching the value and manipulating it as a dictionary.

+            </remarks>

+            <exception cref="T:System.InvalidOperationException">The field is not a "simple" field.</exception>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.MapFieldAccessor">

+            <summary>

+            Accessor for map fields.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.MessageDescriptor">

+            <summary>

+            Describes a message type.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageDescriptor.Name">

+            <summary>

+            The brief name of the descriptor's target.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageDescriptor.ClrType">

+            <summary>

+            The CLR type used to represent message instances from this descriptor.

+            </summary>

+            <remarks>

+            <para>

+            The value returned by this property will be non-null for all regular fields. However,

+            if a message containing a map field is introspected, the list of nested messages will include

+            an auto-generated nested key/value pair message for the field. This is not represented in any

+            generated type, so this property will return null in such cases.

+            </para>

+            <para>

+            For wrapper types (<see cref="T:Google.Protobuf.WellKnownTypes.StringValue"/> and the like), the type returned here

+            will be the generated message type, not the native type used by reflection for fields of those types. Code

+            using reflection should call <see cref="P:Google.Protobuf.Reflection.MessageDescriptor.IsWrapperType"/> to determine whether a message descriptor represents

+            a wrapper type, and handle the result appropriately.

+            </para>

+            </remarks>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageDescriptor.Parser">

+            <summary>

+            A parser for this message type.

+            </summary>

+            <remarks>

+            <para>

+            As <see cref="T:Google.Protobuf.Reflection.MessageDescriptor"/> is not generic, this cannot be statically

+            typed to the relevant type, but it should produce objects of a type compatible with <see cref="P:Google.Protobuf.Reflection.MessageDescriptor.ClrType"/>.

+            </para>

+            <para>

+            The value returned by this property will be non-null for all regular fields. However,

+            if a message containing a map field is introspected, the list of nested messages will include

+            an auto-generated nested key/value pair message for the field. No message parser object is created for

+            such messages, so this property will return null in such cases.

+            </para>

+            <para>

+            For wrapper types (<see cref="T:Google.Protobuf.WellKnownTypes.StringValue"/> and the like), the parser returned here

+            will be the generated message type, not the native type used by reflection for fields of those types. Code

+            using reflection should call <see cref="P:Google.Protobuf.Reflection.MessageDescriptor.IsWrapperType"/> to determine whether a message descriptor represents

+            a wrapper type, and handle the result appropriately.

+            </para>

+            </remarks>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageDescriptor.IsWellKnownType">

+            <summary>

+            Returns whether this message is one of the "well known types" which may have runtime/protoc support.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageDescriptor.IsWrapperType">

+            <summary>

+            Returns whether this message is one of the "wrapper types" used for fields which represent primitive values

+            with the addition of presence.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageDescriptor.ContainingType">

+            <value>

+            If this is a nested type, get the outer descriptor, otherwise null.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageDescriptor.Fields">

+            <value>

+            A collection of fields, which can be retrieved by name or field number.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageDescriptor.NestedTypes">

+            <value>

+            An unmodifiable list of this message type's nested types.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageDescriptor.EnumTypes">

+            <value>

+            An unmodifiable list of this message type's enum types.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageDescriptor.Oneofs">

+            <value>

+            An unmodifiable list of the "oneof" field collections in this message type.

+            </value>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.MessageDescriptor.FindFieldByName(System.String)">

+            <summary>

+            Finds a field by field name.

+            </summary>

+            <param name="name">The unqualified name of the field (e.g. "foo").</param>

+            <returns>The field's descriptor, or null if not found.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.MessageDescriptor.FindFieldByNumber(System.Int32)">

+            <summary>

+            Finds a field by field number.

+            </summary>

+            <param name="number">The field number within this message type.</param>

+            <returns>The field's descriptor, or null if not found.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.MessageDescriptor.FindDescriptor``1(System.String)">

+            <summary>

+            Finds a nested descriptor by name. The is valid for fields, nested

+            message types, oneofs and enums.

+            </summary>

+            <param name="name">The unqualified name of the descriptor, e.g. "Foo"</param>

+            <returns>The descriptor, or null if not found.</returns>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageDescriptor.CustomOptions">

+            <summary>

+            The (possibly empty) set of custom options for this message.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.MessageDescriptor.CrossLink">

+            <summary>

+            Looks up and cross-links all fields and nested types.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.MessageDescriptor.FieldCollection">

+            <summary>

+            A collection to simplify retrieving the field accessor for a particular field.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.MessageDescriptor.FieldCollection.InDeclarationOrder">

+            <value>

+            Returns the fields in the message as an immutable list, in the order in which they

+            are declared in the source .proto file.

+            </value>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.MessageDescriptor.FieldCollection.InFieldNumberOrder">

+            <value>

+            Returns the fields in the message as an immutable list, in ascending field number

+            order. Field numbers need not be contiguous, so there is no direct mapping from the

+            index in the list to the field number; to retrieve a field by field number, it is better

+            to use the <see cref="T:Google.Protobuf.Reflection.MessageDescriptor.FieldCollection"/> indexer.

+            </value>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.MessageDescriptor.FieldCollection.ByJsonName">

+            <value>

+            Returns a read-only dictionary mapping the field names in this message as they're available

+            in the JSON representation to the field descriptors. For example, a field <c>foo_bar</c>

+            in the message would result two entries, one with a key <c>fooBar</c> and one with a key

+            <c>foo_bar</c>, both referring to the same field.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageDescriptor.FieldCollection.Item(System.Int32)">

+            <summary>

+            Retrieves the descriptor for the field with the given number.

+            </summary>

+            <param name="number">Number of the field to retrieve the descriptor for</param>

+            <returns>The accessor for the given field</returns>

+            <exception cref="T:System.Collections.Generic.KeyNotFoundException">The message descriptor does not contain a field

+            with the given number</exception>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MessageDescriptor.FieldCollection.Item(System.String)">

+            <summary>

+            Retrieves the descriptor for the field with the given name.

+            </summary>

+            <param name="name">Name of the field to retrieve the descriptor for</param>

+            <returns>The descriptor for the given field</returns>

+            <exception cref="T:System.Collections.Generic.KeyNotFoundException">The message descriptor does not contain a field

+            with the given name</exception>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.MethodDescriptor">

+            <summary>

+            Describes a single method in a service.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MethodDescriptor.Service">

+            <value>

+            The service this method belongs to.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MethodDescriptor.InputType">

+            <value>

+            The method's input type.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MethodDescriptor.OutputType">

+            <value>

+            The method's input type.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MethodDescriptor.IsClientStreaming">

+            <value>

+            Indicates if client streams multiple requests.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MethodDescriptor.IsServerStreaming">

+            <value>

+            Indicates if server streams multiple responses.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MethodDescriptor.CustomOptions">

+            <summary>

+            The (possibly empty) set of custom options for this method.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.MethodDescriptor.Name">

+            <summary>

+            The brief name of the descriptor's target.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.OneofAccessor">

+            <summary>

+            Reflection access for a oneof, allowing clear and "get case" actions.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.OneofAccessor.Descriptor">

+            <summary>

+            Gets the descriptor for this oneof.

+            </summary>

+            <value>

+            The descriptor of the oneof.

+            </value>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.OneofAccessor.Clear(Google.Protobuf.IMessage)">

+            <summary>

+            Clears the oneof in the specified message.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.OneofAccessor.GetCaseFieldDescriptor(Google.Protobuf.IMessage)">

+            <summary>

+            Indicates which field in the oneof is set for specified message

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.OneofDescriptor">

+            <summary>

+            Describes a "oneof" field collection in a message type: a set of

+            fields of which at most one can be set in any particular message.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.OneofDescriptor.Name">

+            <summary>

+            The brief name of the descriptor's target.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.OneofDescriptor.ContainingType">

+            <summary>

+            Gets the message type containing this oneof.

+            </summary>

+            <value>

+            The message type containing this oneof.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.OneofDescriptor.Fields">

+            <summary>

+            Gets the fields within this oneof, in declaration order.

+            </summary>

+            <value>

+            The fields within this oneof, in declaration order.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.OneofDescriptor.Accessor">

+            <summary>

+            Gets an accessor for reflective access to the values associated with the oneof

+            in a particular message.

+            </summary>

+            <value>

+            The accessor used for reflective access.

+            </value>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.OneofDescriptor.CustomOptions">

+            <summary>

+            The (possibly empty) set of custom options for this oneof.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.OriginalNameAttribute">

+            <summary>

+            Specifies the original name (in the .proto file) of a named element,

+            such as an enum value.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.OriginalNameAttribute.Name">

+            <summary>

+            The name of the element in the .proto file.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.OriginalNameAttribute.PreferredAlias">

+            <summary>

+            If the name is preferred in the .proto file.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.OriginalNameAttribute.#ctor(System.String)">

+            <summary>

+            Constructs a new attribute instance for the given name.

+            </summary>

+            <param name="name">The name of the element in the .proto file.</param>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.PackageDescriptor">

+            <summary>

+            Represents a package in the symbol table.  We use PackageDescriptors

+            just as placeholders so that someone cannot define, say, a message type

+            that has the same name as an existing package.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.ReflectionUtil">

+            <summary>

+            The methods in this class are somewhat evil, and should not be tampered with lightly.

+            Basically they allow the creation of relatively weakly typed delegates from MethodInfos

+            which are more strongly typed. They do this by creating an appropriate strongly typed

+            delegate from the MethodInfo, and then calling that within an anonymous method.

+            Mind-bending stuff (at least to your humble narrator) but the resulting delegates are

+            very fast compared with calling Invoke later on.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.Reflection.ReflectionUtil.EmptyTypes">

+            <summary>

+            Empty Type[] used when calling GetProperty to force property instead of indexer fetching.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.ReflectionUtil.CreateFuncIMessageObject(System.Reflection.MethodInfo)">

+            <summary>

+            Creates a delegate which will cast the argument to the type that declares the method,

+            call the method on it, then convert the result to object.

+            </summary>

+            <param name="method">The method to create a delegate for, which must be declared in an IMessage

+            implementation.</param>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.ReflectionUtil.CreateFuncIMessageInt32(System.Reflection.MethodInfo)">

+            <summary>

+            Creates a delegate which will cast the argument to the type that declares the method,

+            call the method on it, then convert the result to the specified type. The method is expected

+            to actually return an enum (because of where we're calling it - for oneof cases). Sometimes that

+            means we need some extra work to perform conversions.

+            </summary>

+            <param name="method">The method to create a delegate for, which must be declared in an IMessage

+            implementation.</param>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.ReflectionUtil.CreateActionIMessageObject(System.Reflection.MethodInfo)">

+            <summary>

+            Creates a delegate which will execute the given method after casting the first argument to

+            the type that declares the method, and the second argument to the first parameter type of the method.

+            </summary>

+            <param name="method">The method to create a delegate for, which must be declared in an IMessage

+            implementation.</param>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.ReflectionUtil.CreateActionIMessage(System.Reflection.MethodInfo)">

+            <summary>

+            Creates a delegate which will execute the given method after casting the first argument to

+            type that declares the method.

+            </summary>

+            <param name="method">The method to create a delegate for, which must be declared in an IMessage

+            implementation.</param>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.ReflectionUtil.GetReflectionHelper(System.Type,System.Type)">

+            <summary>

+            Creates a reflection helper for the given type arguments. Currently these are created on demand

+            rather than cached; this will be "busy" when initially loading a message's descriptor, but after that

+            they can be garbage collected. We could cache them by type if that proves to be important, but creating

+            an object is pretty cheap.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.RepeatedFieldAccessor">

+            <summary>

+            Accessor for repeated fields.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.ServiceDescriptor">

+            <summary>

+            Describes a service type.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.ServiceDescriptor.Name">

+            <summary>

+            The brief name of the descriptor's target.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.ServiceDescriptor.Methods">

+            <value>

+            An unmodifiable list of methods in this service.

+            </value>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.ServiceDescriptor.FindMethodByName(System.String)">

+            <summary>

+            Finds a method by name.

+            </summary>

+            <param name="name">The unqualified name of the method (e.g. "Foo").</param>

+            <returns>The method's decsriptor, or null if not found.</returns>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.ServiceDescriptor.CustomOptions">

+            <summary>

+            The (possibly empty) set of custom options for this service.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.SingleFieldAccessor">

+            <summary>

+            Accessor for single fields.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.TypeRegistry">

+            <summary>

+            An immutable registry of types which can be looked up by their full name.

+            </summary>

+        </member>

+        <member name="P:Google.Protobuf.Reflection.TypeRegistry.Empty">

+            <summary>

+            An empty type registry, containing no types.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.TypeRegistry.Find(System.String)">

+            <summary>

+            Attempts to find a message descriptor by its full name.

+            </summary>

+            <param name="fullName">The full name of the message, which is the dot-separated

+            combination of package, containing messages and message name</param>

+            <returns>The message descriptor corresponding to <paramref name="fullName"/> or null

+            if there is no such message descriptor.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.TypeRegistry.FromFiles(Google.Protobuf.Reflection.FileDescriptor[])">

+            <summary>

+            Creates a type registry from the specified set of file descriptors.

+            </summary>

+            <remarks>

+            This is a convenience overload for <see cref="M:Google.Protobuf.Reflection.TypeRegistry.FromFiles(System.Collections.Generic.IEnumerable{Google.Protobuf.Reflection.FileDescriptor})"/>

+            to allow calls such as <c>TypeRegistry.FromFiles(descriptor1, descriptor2)</c>.

+            </remarks>

+            <param name="fileDescriptors">The set of files to include in the registry. Must not contain null values.</param>

+            <returns>A type registry for the given files.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.TypeRegistry.FromFiles(System.Collections.Generic.IEnumerable{Google.Protobuf.Reflection.FileDescriptor})">

+            <summary>

+            Creates a type registry from the specified set of file descriptors.

+            </summary>

+            <remarks>

+            All message types within all the specified files are added to the registry, and

+            the dependencies of the specified files are also added, recursively.

+            </remarks>

+            <param name="fileDescriptors">The set of files to include in the registry. Must not contain null values.</param>

+            <returns>A type registry for the given files.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.TypeRegistry.FromMessages(Google.Protobuf.Reflection.MessageDescriptor[])">

+            <summary>

+            Creates a type registry from the file descriptor parents of the specified set of message descriptors.

+            </summary>

+            <remarks>

+            This is a convenience overload for <see cref="M:Google.Protobuf.Reflection.TypeRegistry.FromMessages(System.Collections.Generic.IEnumerable{Google.Protobuf.Reflection.MessageDescriptor})"/>

+            to allow calls such as <c>TypeRegistry.FromFiles(descriptor1, descriptor2)</c>.

+            </remarks>

+            <param name="messageDescriptors">The set of message descriptors to use to identify file descriptors to include in the registry.

+            Must not contain null values.</param>

+            <returns>A type registry for the given files.</returns>

+        </member>

+        <member name="M:Google.Protobuf.Reflection.TypeRegistry.FromMessages(System.Collections.Generic.IEnumerable{Google.Protobuf.Reflection.MessageDescriptor})">

+            <summary>

+            Creates a type registry from the file descriptor parents of the specified set of message descriptors.

+            </summary>

+            <remarks>

+            The specified message descriptors are only used to identify their file descriptors; the returned registry

+            contains all the types within the file descriptors which contain the specified message descriptors (and

+            the dependencies of those files), not just the specified messages.

+            </remarks>

+            <param name="messageDescriptors">The set of message descriptors to use to identify file descriptors to include in the registry.

+            Must not contain null values.</param>

+            <returns>A type registry for the given files.</returns>

+        </member>

+        <member name="T:Google.Protobuf.Reflection.TypeRegistry.Builder">

+            <summary>

+            Builder class which isn't exposed, but acts as a convenient alternative to passing round two dictionaries in recursive calls.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.UnknownField">

+             <summary>

+             Represents a single field in an UnknownFieldSet.

+            

+             An UnknownField consists of four lists of values. The lists correspond

+             to the four "wire types" used in the protocol buffer binary format.

+             Normally, only one of the four lists will contain any values, since it

+             is impossible to define a valid message type that declares two different

+             types for the same field number. However, the code is designed to allow

+             for the case where the same unknown field number is encountered using

+             multiple different wire types.

+            

+             </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownField.#ctor">

+            <summary>

+            Creates a new UnknownField.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownField.Equals(System.Object)">

+            <summary>

+            Checks if two unknown field are equal.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownField.GetHashCode">

+            <summary>

+            Get the hash code of the unknown field.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownField.WriteTo(System.Int32,Google.Protobuf.CodedOutputStream)">

+            <summary>

+            Serializes the field, including the field number, and writes it to

+            <paramref name="output"/>

+            </summary>

+            <param name="fieldNumber">The unknown field number.</param>

+            <param name="output">The CodedOutputStream to write to.</param>

+        </member>

+        <member name="M:Google.Protobuf.UnknownField.GetSerializedSize(System.Int32)">

+            <summary>

+            Computes the number of bytes required to encode this field, including field

+            number.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownField.MergeFrom(Google.Protobuf.UnknownField)">

+            <summary>

+            Merge the values in <paramref name="other" /> into this field.  For each list

+            of values, <paramref name="other"/>'s values are append to the ones in this

+            field.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownField.AddAll``1(System.Collections.Generic.List{``0},System.Collections.Generic.IList{``0})">

+            <summary>

+            Returns a new list containing all of the given specified values from

+            both the <paramref name="current"/> and <paramref name="extras"/> lists.

+            If <paramref name="current" /> is null and <paramref name="extras"/> is empty,

+            null is returned. Otherwise, either a new list is created (if <paramref name="current" />

+            is null) or the elements of <paramref name="extras"/> are added to <paramref name="current" />.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownField.AddVarint(System.UInt64)">

+            <summary>

+            Adds a varint value.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownField.AddFixed32(System.UInt32)">

+            <summary>

+            Adds a fixed32 value.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownField.AddFixed64(System.UInt64)">

+            <summary>

+            Adds a fixed64 value.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownField.AddLengthDelimited(Google.Protobuf.ByteString)">

+            <summary>

+            Adds a length-delimited value.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownField.Add``1(System.Collections.Generic.List{``0},``0)">

+            <summary>

+            Adds <paramref name="value"/> to the <paramref name="list"/>, creating

+            a new list if <paramref name="list"/> is null. The list is returned - either

+            the original reference or the new list.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.UnknownFieldSet">

+             <summary>

+             Used to keep track of fields which were seen when parsing a protocol message

+             but whose field numbers or types are unrecognized. This most frequently

+             occurs when new fields are added to a message type and then messages containing

+             those fields are read by old software that was built before the new types were

+             added.

+            

+             Most users will never need to use this class directly.

+             </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownFieldSet.#ctor">

+            <summary>

+            Creates a new UnknownFieldSet.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownFieldSet.HasField(System.Int32)">

+            <summary>

+            Checks whether or not the given field number is present in the set.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownFieldSet.WriteTo(Google.Protobuf.CodedOutputStream)">

+            <summary>

+            Serializes the set and writes it to <paramref name="output"/>.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownFieldSet.CalculateSize">

+            <summary>

+            Gets the number of bytes required to encode this set.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownFieldSet.Equals(System.Object)">

+            <summary>

+            Checks if two unknown field sets are equal.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownFieldSet.GetHashCode">

+            <summary>

+            Gets the unknown field set's hash code.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownFieldSet.AddOrReplaceField(System.Int32,Google.Protobuf.UnknownField)">

+            <summary>

+            Adds a field to the set. If a field with the same number already exists, it

+            is replaced.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownFieldSet.MergeFieldFrom(Google.Protobuf.CodedInputStream)">

+            <summary>

+            Parse a single field from <paramref name="input"/> and merge it

+            into this set.

+            </summary>

+            <param name="input">The coded input stream containing the field</param>

+            <returns>false if the tag is an "end group" tag, true otherwise</returns>

+        </member>

+        <member name="M:Google.Protobuf.UnknownFieldSet.MergeFieldFrom(Google.Protobuf.UnknownFieldSet,Google.Protobuf.CodedInputStream)">

+            <summary>

+            Create a new UnknownFieldSet if unknownFields is null.

+            Parse a single field from <paramref name="input"/> and merge it

+            into unknownFields. If <paramref name="input"/> is configured to discard unknown fields,

+            <paramref name="unknownFields"/> will be returned as-is and the field will be skipped.

+            </summary>

+            <param name="unknownFields">The UnknownFieldSet which need to be merged</param>

+            <param name="input">The coded input stream containing the field</param>

+            <returns>The merged UnknownFieldSet</returns>

+        </member>

+        <member name="M:Google.Protobuf.UnknownFieldSet.MergeFrom(Google.Protobuf.UnknownFieldSet)">

+            <summary>

+            Merges the fields from <paramref name="other"/> into this set.

+            If a field number exists in both sets, the values in <paramref name="other"/>

+            will be appended to the values in this set.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownFieldSet.MergeFrom(Google.Protobuf.UnknownFieldSet,Google.Protobuf.UnknownFieldSet)">

+            <summary>

+            Created a new UnknownFieldSet to <paramref name="unknownFields"/> if

+            needed and merges the fields from <paramref name="other"/> into the first set.

+            If a field number exists in both sets, the values in <paramref name="other"/>

+            will be appended to the values in this set.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownFieldSet.MergeField(System.Int32,Google.Protobuf.UnknownField)">

+            <summary>

+            Adds a field to the unknown field set. If a field with the same

+            number already exists, the two are merged.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.UnknownFieldSet.Clone(Google.Protobuf.UnknownFieldSet)">

+            <summary>

+            Clone an unknown field set from <paramref name="other"/>.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.AnyReflection">

+            <summary>Holder for reflection information generated from google/protobuf/any.proto</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.AnyReflection.Descriptor">

+            <summary>File descriptor for google/protobuf/any.proto</summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Any">

+             <summary>

+             `Any` contains an arbitrary serialized protocol buffer message along with a

+             URL that describes the type of the serialized message.

+            

+             Protobuf library provides support to pack/unpack Any values in the form

+             of utility functions or additional generated methods of the Any type.

+            

+             Example 1: Pack and unpack a message in C++.

+            

+                 Foo foo = ...;

+                 Any any;

+                 any.PackFrom(foo);

+                 ...

+                 if (any.UnpackTo(&amp;foo)) {

+                   ...

+                 }

+            

+             Example 2: Pack and unpack a message in Java.

+            

+                 Foo foo = ...;

+                 Any any = Any.pack(foo);

+                 ...

+                 if (any.is(Foo.class)) {

+                   foo = any.unpack(Foo.class);

+                 }

+            

+              Example 3: Pack and unpack a message in Python.

+            

+                 foo = Foo(...)

+                 any = Any()

+                 any.Pack(foo)

+                 ...

+                 if any.Is(Foo.DESCRIPTOR):

+                   any.Unpack(foo)

+                   ...

+            

+              Example 4: Pack and unpack a message in Go

+            

+                  foo := &amp;pb.Foo{...}

+                  any, err := ptypes.MarshalAny(foo)

+                  ...

+                  foo := &amp;pb.Foo{}

+                  if err := ptypes.UnmarshalAny(any, foo); err != nil {

+                    ...

+                  }

+            

+             The pack methods provided by protobuf library will by default use

+             'type.googleapis.com/full.type.name' as the type URL and the unpack

+             methods only use the fully qualified type name after the last '/'

+             in the type URL, for example "foo.bar.com/x/y.z" will yield type

+             name "y.z".

+            

+             JSON

+             ====

+             The JSON representation of an `Any` value uses the regular

+             representation of the deserialized, embedded message, with an

+             additional field `@type` which contains the type URL. Example:

+            

+                 package google.profile;

+                 message Person {

+                   string first_name = 1;

+                   string last_name = 2;

+                 }

+            

+                 {

+                   "@type": "type.googleapis.com/google.profile.Person",

+                   "firstName": &lt;string>,

+                   "lastName": &lt;string>

+                 }

+            

+             If the embedded message type is well-known and has a custom JSON

+             representation, that representation will be embedded adding a field

+             `value` which holds the custom JSON in addition to the `@type`

+             field. Example (for message [google.protobuf.Duration][]):

+            

+                 {

+                   "@type": "type.googleapis.com/google.protobuf.Duration",

+                   "value": "1.212s"

+                 }

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Any.TypeUrlFieldNumber">

+            <summary>Field number for the "type_url" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Any.TypeUrl">

+             <summary>

+             A URL/resource name that uniquely identifies the type of the serialized

+             protocol buffer message. The last segment of the URL's path must represent

+             the fully qualified name of the type (as in

+             `path/google.protobuf.Duration`). The name should be in a canonical form

+             (e.g., leading "." is not accepted).

+            

+             In practice, teams usually precompile into the binary all types that they

+             expect it to use in the context of Any. However, for URLs which use the

+             scheme `http`, `https`, or no scheme, one can optionally set up a type

+             server that maps type URLs to message definitions as follows:

+            

+             * If no scheme is provided, `https` is assumed.

+             * An HTTP GET on the URL must yield a [google.protobuf.Type][]

+               value in binary format, or produce an error.

+             * Applications are allowed to cache lookup results based on the

+               URL, or have them precompiled into a binary to avoid any

+               lookup. Therefore, binary compatibility needs to be preserved

+               on changes to types. (Use versioned type names to manage

+               breaking changes.)

+            

+             Note: this functionality is not currently available in the official

+             protobuf release, and it is not used for type URLs beginning with

+             type.googleapis.com.

+            

+             Schemes other than `http`, `https` (or the empty scheme) might be

+             used with implementation specific semantics.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Any.ValueFieldNumber">

+            <summary>Field number for the "value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Any.Value">

+            <summary>

+            Must be a valid serialized protocol buffer of the above specified type.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Any.GetTypeName(System.String)">

+            <summary>

+            Retrieves the type name for a type URL, matching the <see cref="P:Google.Protobuf.Reflection.DescriptorBase.FullName"/>

+            of the packed message type.

+            </summary>

+            <remarks>

+            <para>

+            This is always just the last part of the URL, after the final slash. No validation of 

+            anything before the trailing slash is performed. If the type URL does not include a slash,

+            an empty string is returned rather than an exception being thrown; this won't match any types,

+            and the calling code is probably in a better position to give a meaningful error.

+            </para>

+            <para>

+            There is no handling of fragments or queries  at the moment.

+            </para>

+            </remarks>

+            <param name="typeUrl">The URL to extract the type name from</param>

+            <returns>The type name</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Any.Unpack``1">

+            <summary>

+            Unpacks the content of this Any message into the target message type,

+            which must match the type URL within this Any message.

+            </summary>

+            <typeparam name="T">The type of message to unpack the content into.</typeparam>

+            <returns>The unpacked message.</returns>

+            <exception cref="T:Google.Protobuf.InvalidProtocolBufferException">The target message type doesn't match the type URL in this message</exception>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Any.TryUnpack``1(``0@)">

+            <summary>

+            Attempts to unpack the content of this Any message into the target message type,

+            if it matches the type URL within this Any message.

+            </summary>

+            <typeparam name="T">The type of message to attempt to unpack the content into.</typeparam>

+            <returns><c>true</c> if the message was successfully unpacked; <c>false</c> if the type name didn't match</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Any.Pack(Google.Protobuf.IMessage)">

+            <summary>

+            Packs the specified message into an Any message using a type URL prefix of "type.googleapis.com".

+            </summary>

+            <param name="message">The message to pack.</param>

+            <returns>An Any message with the content and type URL of <paramref name="message"/>.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Any.Pack(Google.Protobuf.IMessage,System.String)">

+            <summary>

+            Packs the specified message into an Any message using the specified type URL prefix.

+            </summary>

+            <param name="message">The message to pack.</param>

+            <param name="typeUrlPrefix">The prefix for the type URL.</param>

+            <returns>An Any message with the content and type URL of <paramref name="message"/>.</returns>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.ApiReflection">

+            <summary>Holder for reflection information generated from google/protobuf/api.proto</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.ApiReflection.Descriptor">

+            <summary>File descriptor for google/protobuf/api.proto</summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Api">

+             <summary>

+             Api is a light-weight descriptor for an API Interface.

+            

+             Interfaces are also described as "protocol buffer services" in some contexts,

+             such as by the "service" keyword in a .proto file, but they are different

+             from API Services, which represent a concrete implementation of an interface

+             as opposed to simply a description of methods and bindings. They are also

+             sometimes simply referred to as "APIs" in other contexts, such as the name of

+             this message itself. See https://cloud.google.com/apis/design/glossary for

+             detailed terminology.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Api.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Api.Name">

+            <summary>

+            The fully qualified name of this interface, including package name

+            followed by the interface's simple name.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Api.MethodsFieldNumber">

+            <summary>Field number for the "methods" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Api.Methods">

+            <summary>

+            The methods of this interface, in unspecified order.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Api.OptionsFieldNumber">

+            <summary>Field number for the "options" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Api.Options">

+            <summary>

+            Any metadata attached to the interface.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Api.VersionFieldNumber">

+            <summary>Field number for the "version" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Api.Version">

+             <summary>

+             A version string for this interface. If specified, must have the form

+             `major-version.minor-version`, as in `1.10`. If the minor version is

+             omitted, it defaults to zero. If the entire version field is empty, the

+             major version is derived from the package name, as outlined below. If the

+             field is not empty, the version in the package name will be verified to be

+             consistent with what is provided here.

+            

+             The versioning schema uses [semantic

+             versioning](http://semver.org) where the major version number

+             indicates a breaking change and the minor version an additive,

+             non-breaking change. Both version numbers are signals to users

+             what to expect from different versions, and should be carefully

+             chosen based on the product plan.

+            

+             The major version is also reflected in the package name of the

+             interface, which must end in `v&lt;major-version>`, as in

+             `google.feature.v1`. For major versions 0 and 1, the suffix can

+             be omitted. Zero major versions must only be used for

+             experimental, non-GA interfaces.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Api.SourceContextFieldNumber">

+            <summary>Field number for the "source_context" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Api.SourceContext">

+            <summary>

+            Source context for the protocol buffer service represented by this

+            message.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Api.MixinsFieldNumber">

+            <summary>Field number for the "mixins" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Api.Mixins">

+            <summary>

+            Included interfaces. See [Mixin][].

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Api.SyntaxFieldNumber">

+            <summary>Field number for the "syntax" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Api.Syntax">

+            <summary>

+            The source syntax of the service.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Method">

+            <summary>

+            Method represents a method of an API interface.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Method.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Method.Name">

+            <summary>

+            The simple name of this method.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Method.RequestTypeUrlFieldNumber">

+            <summary>Field number for the "request_type_url" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Method.RequestTypeUrl">

+            <summary>

+            A URL of the input message type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Method.RequestStreamingFieldNumber">

+            <summary>Field number for the "request_streaming" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Method.RequestStreaming">

+            <summary>

+            If true, the request is streamed.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Method.ResponseTypeUrlFieldNumber">

+            <summary>Field number for the "response_type_url" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Method.ResponseTypeUrl">

+            <summary>

+            The URL of the output message type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Method.ResponseStreamingFieldNumber">

+            <summary>Field number for the "response_streaming" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Method.ResponseStreaming">

+            <summary>

+            If true, the response is streamed.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Method.OptionsFieldNumber">

+            <summary>Field number for the "options" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Method.Options">

+            <summary>

+            Any metadata attached to the method.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Method.SyntaxFieldNumber">

+            <summary>Field number for the "syntax" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Method.Syntax">

+            <summary>

+            The source syntax of this method.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Mixin">

+             <summary>

+             Declares an API Interface to be included in this interface. The including

+             interface must redeclare all the methods from the included interface, but

+             documentation and options are inherited as follows:

+            

+             - If after comment and whitespace stripping, the documentation

+               string of the redeclared method is empty, it will be inherited

+               from the original method.

+            

+             - Each annotation belonging to the service config (http,

+               visibility) which is not set in the redeclared method will be

+               inherited.

+            

+             - If an http annotation is inherited, the path pattern will be

+               modified as follows. Any version prefix will be replaced by the

+               version of the including interface plus the [root][] path if

+               specified.

+            

+             Example of a simple mixin:

+            

+                 package google.acl.v1;

+                 service AccessControl {

+                   // Get the underlying ACL object.

+                   rpc GetAcl(GetAclRequest) returns (Acl) {

+                     option (google.api.http).get = "/v1/{resource=**}:getAcl";

+                   }

+                 }

+            

+                 package google.storage.v2;

+                 service Storage {

+                   rpc GetAcl(GetAclRequest) returns (Acl);

+            

+                   // Get a data record.

+                   rpc GetData(GetDataRequest) returns (Data) {

+                     option (google.api.http).get = "/v2/{resource=**}";

+                   }

+                 }

+            

+             Example of a mixin configuration:

+            

+                 apis:

+                 - name: google.storage.v2.Storage

+                   mixins:

+                   - name: google.acl.v1.AccessControl

+            

+             The mixin construct implies that all methods in `AccessControl` are

+             also declared with same name and request/response types in

+             `Storage`. A documentation generator or annotation processor will

+             see the effective `Storage.GetAcl` method after inherting

+             documentation and annotations as follows:

+            

+                 service Storage {

+                   // Get the underlying ACL object.

+                   rpc GetAcl(GetAclRequest) returns (Acl) {

+                     option (google.api.http).get = "/v2/{resource=**}:getAcl";

+                   }

+                   ...

+                 }

+            

+             Note how the version in the path pattern changed from `v1` to `v2`.

+            

+             If the `root` field in the mixin is specified, it should be a

+             relative path under which inherited HTTP paths are placed. Example:

+            

+                 apis:

+                 - name: google.storage.v2.Storage

+                   mixins:

+                   - name: google.acl.v1.AccessControl

+                     root: acls

+            

+             This implies the following inherited HTTP annotation:

+            

+                 service Storage {

+                   // Get the underlying ACL object.

+                   rpc GetAcl(GetAclRequest) returns (Acl) {

+                     option (google.api.http).get = "/v2/acls/{resource=**}:getAcl";

+                   }

+                   ...

+                 }

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Mixin.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Mixin.Name">

+            <summary>

+            The fully qualified name of the interface which is included.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Mixin.RootFieldNumber">

+            <summary>Field number for the "root" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Mixin.Root">

+            <summary>

+            If non-empty specifies a path under which inherited HTTP paths

+            are rooted.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.DurationReflection">

+            <summary>Holder for reflection information generated from google/protobuf/duration.proto</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.DurationReflection.Descriptor">

+            <summary>File descriptor for google/protobuf/duration.proto</summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Duration">

+             <summary>

+             A Duration represents a signed, fixed-length span of time represented

+             as a count of seconds and fractions of seconds at nanosecond

+             resolution. It is independent of any calendar and concepts like "day"

+             or "month". It is related to Timestamp in that the difference between

+             two Timestamp values is a Duration and it can be added or subtracted

+             from a Timestamp. Range is approximately +-10,000 years.

+            

+             # Examples

+            

+             Example 1: Compute Duration from two Timestamps in pseudo code.

+            

+                 Timestamp start = ...;

+                 Timestamp end = ...;

+                 Duration duration = ...;

+            

+                 duration.seconds = end.seconds - start.seconds;

+                 duration.nanos = end.nanos - start.nanos;

+            

+                 if (duration.seconds &lt; 0 &amp;&amp; duration.nanos > 0) {

+                   duration.seconds += 1;

+                   duration.nanos -= 1000000000;

+                 } else if (durations.seconds > 0 &amp;&amp; duration.nanos &lt; 0) {

+                   duration.seconds -= 1;

+                   duration.nanos += 1000000000;

+                 }

+            

+             Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.

+            

+                 Timestamp start = ...;

+                 Duration duration = ...;

+                 Timestamp end = ...;

+            

+                 end.seconds = start.seconds + duration.seconds;

+                 end.nanos = start.nanos + duration.nanos;

+            

+                 if (end.nanos &lt; 0) {

+                   end.seconds -= 1;

+                   end.nanos += 1000000000;

+                 } else if (end.nanos >= 1000000000) {

+                   end.seconds += 1;

+                   end.nanos -= 1000000000;

+                 }

+            

+             Example 3: Compute Duration from datetime.timedelta in Python.

+            

+                 td = datetime.timedelta(days=3, minutes=10)

+                 duration = Duration()

+                 duration.FromTimedelta(td)

+            

+             # JSON Mapping

+            

+             In JSON format, the Duration type is encoded as a string rather than an

+             object, where the string ends in the suffix "s" (indicating seconds) and

+             is preceded by the number of seconds, with nanoseconds expressed as

+             fractional seconds. For example, 3 seconds with 0 nanoseconds should be

+             encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should

+             be expressed in JSON format as "3.000000001s", and 3 seconds and 1

+             microsecond should be expressed in JSON format as "3.000001s".

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Duration.SecondsFieldNumber">

+            <summary>Field number for the "seconds" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Duration.Seconds">

+            <summary>

+            Signed seconds of the span of time. Must be from -315,576,000,000

+            to +315,576,000,000 inclusive. Note: these bounds are computed from:

+            60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Duration.NanosFieldNumber">

+            <summary>Field number for the "nanos" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Duration.Nanos">

+            <summary>

+            Signed fractions of a second at nanosecond resolution of the span

+            of time. Durations less than one second are represented with a 0

+            `seconds` field and a positive or negative `nanos` field. For durations

+            of one second or more, a non-zero value for the `nanos` field must be

+            of the same sign as the `seconds` field. Must be from -999,999,999

+            to +999,999,999 inclusive.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Duration.NanosecondsPerSecond">

+            <summary>

+            The number of nanoseconds in a second.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Duration.NanosecondsPerTick">

+            <summary>

+            The number of nanoseconds in a BCL tick (as used by <see cref="T:System.TimeSpan"/> and <see cref="T:System.DateTime"/>).

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Duration.MaxSeconds">

+            <summary>

+            The maximum permitted number of seconds.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Duration.MinSeconds">

+            <summary>

+            The minimum permitted number of seconds.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Duration.ToTimeSpan">

+            <summary>

+            Converts this <see cref="T:Google.Protobuf.WellKnownTypes.Duration"/> to a <see cref="T:System.TimeSpan"/>.

+            </summary>

+            <remarks>If the duration is not a precise number of ticks, it is truncated towards 0.</remarks>

+            <returns>The value of this duration, as a <c>TimeSpan</c>.</returns>

+            <exception cref="T:System.InvalidOperationException">This value isn't a valid normalized duration, as

+            described in the documentation.</exception>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Duration.FromTimeSpan(System.TimeSpan)">

+            <summary>

+            Converts the given <see cref="T:System.TimeSpan"/> to a <see cref="T:Google.Protobuf.WellKnownTypes.Duration"/>.

+            </summary>

+            <param name="timeSpan">The <c>TimeSpan</c> to convert.</param>

+            <returns>The value of the given <c>TimeSpan</c>, as a <c>Duration</c>.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Duration.op_UnaryNegation(Google.Protobuf.WellKnownTypes.Duration)">

+            <summary>

+            Returns the result of negating the duration. For example, the negation of 5 minutes is -5 minutes.

+            </summary>

+            <param name="value">The duration to negate. Must not be null.</param>

+            <returns>The negated value of this duration.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Duration.op_Addition(Google.Protobuf.WellKnownTypes.Duration,Google.Protobuf.WellKnownTypes.Duration)">

+            <summary>

+            Adds the two specified <see cref="T:Google.Protobuf.WellKnownTypes.Duration"/> values together.

+            </summary>

+            <param name="lhs">The first value to add. Must not be null.</param>

+            <param name="rhs">The second value to add. Must not be null.</param>

+            <returns></returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Duration.op_Subtraction(Google.Protobuf.WellKnownTypes.Duration,Google.Protobuf.WellKnownTypes.Duration)">

+            <summary>

+            Subtracts one <see cref="T:Google.Protobuf.WellKnownTypes.Duration"/> from another.

+            </summary>

+            <param name="lhs">The duration to subtract from. Must not be null.</param>

+            <param name="rhs">The duration to subtract. Must not be null.</param>

+            <returns>The difference between the two specified durations.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Duration.Normalize(System.Int64,System.Int32)">

+            <summary>

+            Creates a duration with the normalized values from the given number of seconds and

+            nanoseconds, conforming with the description in the proto file.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Duration.ToJson(System.Int64,System.Int32,System.Boolean)">

+            <summary>

+            Converts a duration specified in seconds/nanoseconds to a string.

+            </summary>

+            <remarks>

+            If the value is a normalized duration in the range described in <c>duration.proto</c>,

+            <paramref name="diagnosticOnly"/> is ignored. Otherwise, if the parameter is <c>true</c>,

+            a JSON object with a warning is returned; if it is <c>false</c>, an <see cref="T:System.InvalidOperationException"/> is thrown.

+            </remarks>

+            <param name="seconds">Seconds portion of the duration.</param>

+            <param name="nanoseconds">Nanoseconds portion of the duration.</param>

+            <param name="diagnosticOnly">Determines the handling of non-normalized values</param>

+            <exception cref="T:System.InvalidOperationException">The represented duration is invalid, and <paramref name="diagnosticOnly"/> is <c>false</c>.</exception>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Duration.ToDiagnosticString">

+            <summary>

+            Returns a string representation of this <see cref="T:Google.Protobuf.WellKnownTypes.Duration"/> for diagnostic purposes.

+            </summary>

+            <remarks>

+            Normally the returned value will be a JSON string value (including leading and trailing quotes) but

+            when the value is non-normalized or out of range, a JSON object representation will be returned

+            instead, including a warning. This is to avoid exceptions being thrown when trying to

+            diagnose problems - the regular JSON formatter will still throw an exception for non-normalized

+            values.

+            </remarks>

+            <returns>A string representation of this value.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Duration.AppendNanoseconds(System.Text.StringBuilder,System.Int32)">

+            <summary>

+            Appends a number of nanoseconds to a StringBuilder. Either 0 digits are added (in which

+            case no "." is appended), or 3 6 or 9 digits. This is internal for use in Timestamp as well

+            as Duration.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.EmptyReflection">

+            <summary>Holder for reflection information generated from google/protobuf/empty.proto</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.EmptyReflection.Descriptor">

+            <summary>File descriptor for google/protobuf/empty.proto</summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Empty">

+             <summary>

+             A generic empty message that you can re-use to avoid defining duplicated

+             empty messages in your APIs. A typical example is to use it as the request

+             or the response type of an API method. For instance:

+            

+                 service Foo {

+                   rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);

+                 }

+            

+             The JSON representation for `Empty` is empty JSON object `{}`.

+             </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.FieldMaskReflection">

+            <summary>Holder for reflection information generated from google/protobuf/field_mask.proto</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.FieldMaskReflection.Descriptor">

+            <summary>File descriptor for google/protobuf/field_mask.proto</summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.FieldMask">

+             <summary>

+             `FieldMask` represents a set of symbolic field paths, for example:

+            

+                 paths: "f.a"

+                 paths: "f.b.d"

+            

+             Here `f` represents a field in some root message, `a` and `b`

+             fields in the message found in `f`, and `d` a field found in the

+             message in `f.b`.

+            

+             Field masks are used to specify a subset of fields that should be

+             returned by a get operation or modified by an update operation.

+             Field masks also have a custom JSON encoding (see below).

+            

+             # Field Masks in Projections

+            

+             When used in the context of a projection, a response message or

+             sub-message is filtered by the API to only contain those fields as

+             specified in the mask. For example, if the mask in the previous

+             example is applied to a response message as follows:

+            

+                 f {

+                   a : 22

+                   b {

+                     d : 1

+                     x : 2

+                   }

+                   y : 13

+                 }

+                 z: 8

+            

+             The result will not contain specific values for fields x,y and z

+             (their value will be set to the default, and omitted in proto text

+             output):

+            

+                 f {

+                   a : 22

+                   b {

+                     d : 1

+                   }

+                 }

+            

+             A repeated field is not allowed except at the last position of a

+             paths string.

+            

+             If a FieldMask object is not present in a get operation, the

+             operation applies to all fields (as if a FieldMask of all fields

+             had been specified).

+            

+             Note that a field mask does not necessarily apply to the

+             top-level response message. In case of a REST get operation, the

+             field mask applies directly to the response, but in case of a REST

+             list operation, the mask instead applies to each individual message

+             in the returned resource list. In case of a REST custom method,

+             other definitions may be used. Where the mask applies will be

+             clearly documented together with its declaration in the API.  In

+             any case, the effect on the returned resource/resources is required

+             behavior for APIs.

+            

+             # Field Masks in Update Operations

+            

+             A field mask in update operations specifies which fields of the

+             targeted resource are going to be updated. The API is required

+             to only change the values of the fields as specified in the mask

+             and leave the others untouched. If a resource is passed in to

+             describe the updated values, the API ignores the values of all

+             fields not covered by the mask.

+            

+             If a repeated field is specified for an update operation, the existing

+             repeated values in the target resource will be overwritten by the new values.

+             Note that a repeated field is only allowed in the last position of a `paths`

+             string.

+            

+             If a sub-message is specified in the last position of the field mask for an

+             update operation, then the existing sub-message in the target resource is

+             overwritten. Given the target message:

+            

+                 f {

+                   b {

+                     d : 1

+                     x : 2

+                   }

+                   c : 1

+                 }

+            

+             And an update message:

+            

+                 f {

+                   b {

+                     d : 10

+                   }

+                 }

+            

+             then if the field mask is:

+            

+              paths: "f.b"

+            

+             then the result will be:

+            

+                 f {

+                   b {

+                     d : 10

+                   }

+                   c : 1

+                 }

+            

+             However, if the update mask was:

+            

+              paths: "f.b.d"

+            

+             then the result would be:

+            

+                 f {

+                   b {

+                     d : 10

+                     x : 2

+                   }

+                   c : 1

+                 }

+            

+             In order to reset a field's value to the default, the field must

+             be in the mask and set to the default value in the provided resource.

+             Hence, in order to reset all fields of a resource, provide a default

+             instance of the resource and set all fields in the mask, or do

+             not provide a mask as described below.

+            

+             If a field mask is not present on update, the operation applies to

+             all fields (as if a field mask of all fields has been specified).

+             Note that in the presence of schema evolution, this may mean that

+             fields the client does not know and has therefore not filled into

+             the request will be reset to their default. If this is unwanted

+             behavior, a specific service may require a client to always specify

+             a field mask, producing an error if not.

+            

+             As with get operations, the location of the resource which

+             describes the updated values in the request message depends on the

+             operation kind. In any case, the effect of the field mask is

+             required to be honored by the API.

+            

+             ## Considerations for HTTP REST

+            

+             The HTTP kind of an update operation which uses a field mask must

+             be set to PATCH instead of PUT in order to satisfy HTTP semantics

+             (PUT must only be used for full updates).

+            

+             # JSON Encoding of Field Masks

+            

+             In JSON, a field mask is encoded as a single string where paths are

+             separated by a comma. Fields name in each path are converted

+             to/from lower-camel naming conventions.

+            

+             As an example, consider the following message declarations:

+            

+                 message Profile {

+                   User user = 1;

+                   Photo photo = 2;

+                 }

+                 message User {

+                   string display_name = 1;

+                   string address = 2;

+                 }

+            

+             In proto a field mask for `Profile` may look as such:

+            

+                 mask {

+                   paths: "user.display_name"

+                   paths: "photo"

+                 }

+            

+             In JSON, the same mask is represented as below:

+            

+                 {

+                   mask: "user.displayName,photo"

+                 }

+            

+             # Field Masks and Oneof Fields

+            

+             Field masks treat fields in oneofs just as regular fields. Consider the

+             following message:

+            

+                 message SampleMessage {

+                   oneof test_oneof {

+                     string name = 4;

+                     SubMessage sub_message = 9;

+                   }

+                 }

+            

+             The field mask can be:

+            

+                 mask {

+                   paths: "name"

+                 }

+            

+             Or:

+            

+                 mask {

+                   paths: "sub_message"

+                 }

+            

+             Note that oneof type names ("test_oneof" in this case) cannot be used in

+             paths.

+            

+             ## Field Mask Verification

+            

+             The implementation of any API method which has a FieldMask type field in the

+             request should verify the included field paths, and return an

+             `INVALID_ARGUMENT` error if any path is duplicated or unmappable.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.FieldMask.PathsFieldNumber">

+            <summary>Field number for the "paths" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.FieldMask.Paths">

+            <summary>

+            The set of field mask paths.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.FieldMask.ToJson(System.Collections.Generic.IList{System.String},System.Boolean)">

+            <summary>

+            Converts a timestamp  specified in seconds/nanoseconds to a string.

+            </summary>

+            <remarks>

+            If the value is a normalized duration in the range described in <c>field_mask.proto</c>,

+            <paramref name="diagnosticOnly"/> is ignored. Otherwise, if the parameter is <c>true</c>,

+            a JSON object with a warning is returned; if it is <c>false</c>, an <see cref="T:System.InvalidOperationException"/> is thrown.

+            </remarks>

+            <param name="paths">Paths in the field mask</param>

+            <param name="diagnosticOnly">Determines the handling of non-normalized values</param>

+            <exception cref="T:System.InvalidOperationException">The represented field mask is invalid, and <paramref name="diagnosticOnly"/> is <c>false</c>.</exception>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.FieldMask.ValidatePath(System.String)">

+            <summary>

+            Checks whether the given path is valid for a field mask.

+            </summary>

+            <returns>true if the path is valid; false otherwise</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.FieldMask.ToDiagnosticString">

+            <summary>

+            Returns a string representation of this <see cref="T:Google.Protobuf.WellKnownTypes.FieldMask"/> for diagnostic purposes.

+            </summary>

+            <remarks>

+            Normally the returned value will be a JSON string value (including leading and trailing quotes) but

+            when the value is non-normalized or out of range, a JSON object representation will be returned

+            instead, including a warning. This is to avoid exceptions being thrown when trying to

+            diagnose problems - the regular JSON formatter will still throw an exception for non-normalized

+            values.

+            </remarks>

+            <returns>A string representation of this value.</returns>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.SourceContextReflection">

+            <summary>Holder for reflection information generated from google/protobuf/source_context.proto</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.SourceContextReflection.Descriptor">

+            <summary>File descriptor for google/protobuf/source_context.proto</summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.SourceContext">

+            <summary>

+            `SourceContext` represents information about the source of a

+            protobuf element, like the file in which it is defined.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.SourceContext.FileNameFieldNumber">

+            <summary>Field number for the "file_name" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.SourceContext.FileName">

+            <summary>

+            The path-qualified name of the .proto file that contained the associated

+            protobuf element.  For example: `"google/protobuf/source_context.proto"`.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.StructReflection">

+            <summary>Holder for reflection information generated from google/protobuf/struct.proto</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.StructReflection.Descriptor">

+            <summary>File descriptor for google/protobuf/struct.proto</summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.NullValue">

+             <summary>

+             `NullValue` is a singleton enumeration to represent the null value for the

+             `Value` type union.

+            

+              The JSON representation for `NullValue` is JSON `null`.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.NullValue.NullValue">

+            <summary>

+            Null value.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Struct">

+             <summary>

+             `Struct` represents a structured data value, consisting of fields

+             which map to dynamically typed values. In some languages, `Struct`

+             might be supported by a native representation. For example, in

+             scripting languages like JS a struct is represented as an

+             object. The details of that representation are described together

+             with the proto support for the language.

+            

+             The JSON representation for `Struct` is JSON object.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Struct.FieldsFieldNumber">

+            <summary>Field number for the "fields" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Struct.Fields">

+            <summary>

+            Unordered map of dynamically typed values.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Value">

+             <summary>

+             `Value` represents a dynamically typed value which can be either

+             null, a number, a string, a boolean, a recursive struct value, or a

+             list of values. A producer of value is expected to set one of that

+             variants, absence of any variant indicates an error.

+            

+             The JSON representation for `Value` is JSON value.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Value.NullValueFieldNumber">

+            <summary>Field number for the "null_value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Value.NullValue">

+            <summary>

+            Represents a null value.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Value.NumberValueFieldNumber">

+            <summary>Field number for the "number_value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Value.NumberValue">

+            <summary>

+            Represents a double value.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Value.StringValueFieldNumber">

+            <summary>Field number for the "string_value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Value.StringValue">

+            <summary>

+            Represents a string value.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Value.BoolValueFieldNumber">

+            <summary>Field number for the "bool_value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Value.BoolValue">

+            <summary>

+            Represents a boolean value.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Value.StructValueFieldNumber">

+            <summary>Field number for the "struct_value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Value.StructValue">

+            <summary>

+            Represents a structured value.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Value.ListValueFieldNumber">

+            <summary>Field number for the "list_value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Value.ListValue">

+            <summary>

+            Represents a repeated `Value`.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Value.KindOneofCase">

+            <summary>Enum of possible cases for the "kind" oneof.</summary>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Value.ForString(System.String)">

+            <summary>

+            Convenience method to create a Value message with a string value.

+            </summary>

+            <param name="value">Value to set for the StringValue property.</param>

+            <returns>A newly-created Value message with the given value.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Value.ForNumber(System.Double)">

+            <summary>

+            Convenience method to create a Value message with a number value.

+            </summary>

+            <param name="value">Value to set for the NumberValue property.</param>

+            <returns>A newly-created Value message with the given value.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Value.ForBool(System.Boolean)">

+            <summary>

+            Convenience method to create a Value message with a Boolean value.

+            </summary>

+            <param name="value">Value to set for the BoolValue property.</param>

+            <returns>A newly-created Value message with the given value.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Value.ForNull">

+            <summary>

+            Convenience method to create a Value message with a null initial value.

+            </summary>

+            <returns>A newly-created Value message a null initial value.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Value.ForList(Google.Protobuf.WellKnownTypes.Value[])">

+            <summary>

+            Convenience method to create a Value message with an initial list of values.

+            </summary>

+            <remarks>The values provided are not cloned; the references are copied directly.</remarks>

+            <returns>A newly-created Value message an initial list value.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Value.ForStruct(Google.Protobuf.WellKnownTypes.Struct)">

+            <summary>

+            Convenience method to create a Value message with an initial struct value

+            </summary>

+            <remarks>The value provided is not cloned; the reference is copied directly.</remarks>

+            <returns>A newly-created Value message an initial struct value.</returns>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.ListValue">

+             <summary>

+             `ListValue` is a wrapper around a repeated field of values.

+            

+             The JSON representation for `ListValue` is JSON array.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.ListValue.ValuesFieldNumber">

+            <summary>Field number for the "values" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.ListValue.Values">

+            <summary>

+            Repeated field of dynamically typed values.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.TimeExtensions">

+            <summary>

+            Extension methods on BCL time-related types, converting to protobuf types.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.TimeExtensions.ToTimestamp(System.DateTime)">

+            <summary>

+            Converts the given <see cref="T:System.DateTime"/> to a <see cref="T:Google.Protobuf.WellKnownTypes.Timestamp"/>.

+            </summary>

+            <param name="dateTime">The date and time to convert to a timestamp.</param>

+            <exception cref="T:System.ArgumentException">The <paramref name="dateTime"/> value has a <see cref="P:System.DateTime.Kind"/>other than <c>Utc</c>.</exception>

+            <returns>The converted timestamp.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.TimeExtensions.ToTimestamp(System.DateTimeOffset)">

+            <summary>

+            Converts the given <see cref="T:System.DateTimeOffset"/> to a <see cref="T:Google.Protobuf.WellKnownTypes.Timestamp"/>

+            </summary>

+            <remarks>The offset is taken into consideration when converting the value (so the same instant in time

+            is represented) but is not a separate part of the resulting value. In other words, there is no

+            roundtrip operation to retrieve the original <c>DateTimeOffset</c>.</remarks>

+            <param name="dateTimeOffset">The date and time (with UTC offset) to convert to a timestamp.</param>

+            <returns>The converted timestamp.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.TimeExtensions.ToDuration(System.TimeSpan)">

+            <summary>

+            Converts the given <see cref="T:System.TimeSpan"/> to a <see cref="T:Google.Protobuf.WellKnownTypes.Duration"/>.

+            </summary>

+            <param name="timeSpan">The time span to convert.</param>

+            <returns>The converted duration.</returns>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.TimestampReflection">

+            <summary>Holder for reflection information generated from google/protobuf/timestamp.proto</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.TimestampReflection.Descriptor">

+            <summary>File descriptor for google/protobuf/timestamp.proto</summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Timestamp">

+             <summary>

+             A Timestamp represents a point in time independent of any time zone

+             or calendar, represented as seconds and fractions of seconds at

+             nanosecond resolution in UTC Epoch time. It is encoded using the

+             Proleptic Gregorian Calendar which extends the Gregorian calendar

+             backwards to year one. It is encoded assuming all minutes are 60

+             seconds long, i.e. leap seconds are "smeared" so that no leap second

+             table is needed for interpretation. Range is from

+             0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z.

+             By restricting to that range, we ensure that we can convert to

+             and from  RFC 3339 date strings.

+             See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.txt).

+            

+             # Examples

+            

+             Example 1: Compute Timestamp from POSIX `time()`.

+            

+                 Timestamp timestamp;

+                 timestamp.set_seconds(time(NULL));

+                 timestamp.set_nanos(0);

+            

+             Example 2: Compute Timestamp from POSIX `gettimeofday()`.

+            

+                 struct timeval tv;

+                 gettimeofday(&amp;tv, NULL);

+            

+                 Timestamp timestamp;

+                 timestamp.set_seconds(tv.tv_sec);

+                 timestamp.set_nanos(tv.tv_usec * 1000);

+            

+             Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.

+            

+                 FILETIME ft;

+                 GetSystemTimeAsFileTime(&amp;ft);

+                 UINT64 ticks = (((UINT64)ft.dwHighDateTime) &lt;&lt; 32) | ft.dwLowDateTime;

+            

+                 // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z

+                 // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.

+                 Timestamp timestamp;

+                 timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));

+                 timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));

+            

+             Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.

+            

+                 long millis = System.currentTimeMillis();

+            

+                 Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)

+                     .setNanos((int) ((millis % 1000) * 1000000)).build();

+            

+             Example 5: Compute Timestamp from current time in Python.

+            

+                 timestamp = Timestamp()

+                 timestamp.GetCurrentTime()

+            

+             # JSON Mapping

+            

+             In JSON format, the Timestamp type is encoded as a string in the

+             [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the

+             format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"

+             where {year} is always expressed using four digits while {month}, {day},

+             {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional

+             seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),

+             are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone

+             is required. A proto3 JSON serializer should always use UTC (as indicated by

+             "Z") when printing the Timestamp type and a proto3 JSON parser should be

+             able to accept both UTC and other timezones (as indicated by an offset).

+            

+             For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past

+             01:30 UTC on January 15, 2017.

+            

+             In JavaScript, one can convert a Date object to this format using the

+             standard [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString]

+             method. In Python, a standard `datetime.datetime` object can be converted

+             to this format using [`strftime`](https://docs.python.org/2/library/time.html#time.strftime)

+             with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one

+             can use the Joda Time's [`ISODateTimeFormat.dateTime()`](

+             http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime--

+             ) to obtain a formatter capable of generating timestamps in this format.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Timestamp.SecondsFieldNumber">

+            <summary>Field number for the "seconds" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Timestamp.Seconds">

+            <summary>

+            Represents seconds of UTC time since Unix epoch

+            1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to

+            9999-12-31T23:59:59Z inclusive.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Timestamp.NanosFieldNumber">

+            <summary>Field number for the "nanos" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Timestamp.Nanos">

+            <summary>

+            Non-negative fractions of a second at nanosecond resolution. Negative

+            second values with fractions must still have non-negative nanos values

+            that count forward in time. Must be from 0 to 999,999,999

+            inclusive.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Timestamp.op_Subtraction(Google.Protobuf.WellKnownTypes.Timestamp,Google.Protobuf.WellKnownTypes.Timestamp)">

+            <summary>

+            Returns the difference between one <see cref="T:Google.Protobuf.WellKnownTypes.Timestamp"/> and another, as a <see cref="T:Google.Protobuf.WellKnownTypes.Duration"/>.

+            </summary>

+            <param name="lhs">The timestamp to subtract from. Must not be null.</param>

+            <param name="rhs">The timestamp to subtract. Must not be null.</param>

+            <returns>The difference between the two specified timestamps.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Timestamp.op_Addition(Google.Protobuf.WellKnownTypes.Timestamp,Google.Protobuf.WellKnownTypes.Duration)">

+            <summary>

+            Adds a <see cref="T:Google.Protobuf.WellKnownTypes.Duration"/> to a <see cref="T:Google.Protobuf.WellKnownTypes.Timestamp"/>, to obtain another <c>Timestamp</c>.

+            </summary>

+            <param name="lhs">The timestamp to add the duration to. Must not be null.</param>

+            <param name="rhs">The duration to add. Must not be null.</param>

+            <returns>The result of adding the duration to the timestamp.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Timestamp.op_Subtraction(Google.Protobuf.WellKnownTypes.Timestamp,Google.Protobuf.WellKnownTypes.Duration)">

+            <summary>

+            Subtracts a <see cref="T:Google.Protobuf.WellKnownTypes.Duration"/> from a <see cref="T:Google.Protobuf.WellKnownTypes.Timestamp"/>, to obtain another <c>Timestamp</c>.

+            </summary>

+            <param name="lhs">The timestamp to subtract the duration from. Must not be null.</param>

+            <param name="rhs">The duration to subtract.</param>

+            <returns>The result of subtracting the duration from the timestamp.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Timestamp.ToDateTime">

+            <summary>

+            Converts this timestamp into a <see cref="T:System.DateTime"/>.

+            </summary>

+            <remarks>

+            The resulting <c>DateTime</c> will always have a <c>Kind</c> of <c>Utc</c>.

+            If the timestamp is not a precise number of ticks, it will be truncated towards the start

+            of time. For example, a timestamp with a <see cref="P:Google.Protobuf.WellKnownTypes.Timestamp.Nanos"/> value of 99 will result in a

+            <see cref="T:System.DateTime"/> value precisely on a second.

+            </remarks>

+            <returns>This timestamp as a <c>DateTime</c>.</returns>

+            <exception cref="T:System.InvalidOperationException">The timestamp contains invalid values; either it is

+            incorrectly normalized or is outside the valid range.</exception>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Timestamp.ToDateTimeOffset">

+            <summary>

+            Converts this timestamp into a <see cref="T:System.DateTimeOffset"/>.

+            </summary>

+            <remarks>

+            The resulting <c>DateTimeOffset</c> will always have an <c>Offset</c> of zero.

+            If the timestamp is not a precise number of ticks, it will be truncated towards the start

+            of time. For example, a timestamp with a <see cref="P:Google.Protobuf.WellKnownTypes.Timestamp.Nanos"/> value of 99 will result in a

+            <see cref="T:System.DateTimeOffset"/> value precisely on a second.

+            </remarks>

+            <returns>This timestamp as a <c>DateTimeOffset</c>.</returns>

+            <exception cref="T:System.InvalidOperationException">The timestamp contains invalid values; either it is

+            incorrectly normalized or is outside the valid range.</exception>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Timestamp.FromDateTime(System.DateTime)">

+            <summary>

+            Converts the specified <see cref="T:System.DateTime"/> to a <see cref="T:Google.Protobuf.WellKnownTypes.Timestamp"/>.

+            </summary>

+            <param name="dateTime"></param>

+            <exception cref="T:System.ArgumentException">The <c>Kind</c> of <paramref name="dateTime"/> is not <c>DateTimeKind.Utc</c>.</exception>

+            <returns>The converted timestamp.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Timestamp.FromDateTimeOffset(System.DateTimeOffset)">

+            <summary>

+            Converts the given <see cref="T:System.DateTimeOffset"/> to a <see cref="T:Google.Protobuf.WellKnownTypes.Timestamp"/>

+            </summary>

+            <remarks>The offset is taken into consideration when converting the value (so the same instant in time

+            is represented) but is not a separate part of the resulting value. In other words, there is no

+            roundtrip operation to retrieve the original <c>DateTimeOffset</c>.</remarks>

+            <param name="dateTimeOffset">The date and time (with UTC offset) to convert to a timestamp.</param>

+            <returns>The converted timestamp.</returns>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Timestamp.ToJson(System.Int64,System.Int32,System.Boolean)">

+            <summary>

+            Converts a timestamp specified in seconds/nanoseconds to a string.

+            </summary>

+            <remarks>

+            If the value is a normalized duration in the range described in <c>timestamp.proto</c>,

+            <paramref name="diagnosticOnly"/> is ignored. Otherwise, if the parameter is <c>true</c>,

+            a JSON object with a warning is returned; if it is <c>false</c>, an <see cref="T:System.InvalidOperationException"/> is thrown.

+            </remarks>

+            <param name="seconds">Seconds portion of the duration.</param>

+            <param name="nanoseconds">Nanoseconds portion of the duration.</param>

+            <param name="diagnosticOnly">Determines the handling of non-normalized values</param>

+            <exception cref="T:System.InvalidOperationException">The represented duration is invalid, and <paramref name="diagnosticOnly"/> is <c>false</c>.</exception>

+        </member>

+        <member name="M:Google.Protobuf.WellKnownTypes.Timestamp.ToDiagnosticString">

+            <summary>

+            Returns a string representation of this <see cref="T:Google.Protobuf.WellKnownTypes.Timestamp"/> for diagnostic purposes.

+            </summary>

+            <remarks>

+            Normally the returned value will be a JSON string value (including leading and trailing quotes) but

+            when the value is non-normalized or out of range, a JSON object representation will be returned

+            instead, including a warning. This is to avoid exceptions being thrown when trying to

+            diagnose problems - the regular JSON formatter will still throw an exception for non-normalized

+            values.

+            </remarks>

+            <returns>A string representation of this value.</returns>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.TypeReflection">

+            <summary>Holder for reflection information generated from google/protobuf/type.proto</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.TypeReflection.Descriptor">

+            <summary>File descriptor for google/protobuf/type.proto</summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Syntax">

+            <summary>

+            The syntax in which a protocol buffer element is defined.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Syntax.Proto2">

+            <summary>

+            Syntax `proto2`.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Syntax.Proto3">

+            <summary>

+            Syntax `proto3`.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Type">

+            <summary>

+            A protocol buffer message type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Type.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Type.Name">

+            <summary>

+            The fully qualified message name.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Type.FieldsFieldNumber">

+            <summary>Field number for the "fields" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Type.Fields">

+            <summary>

+            The list of fields.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Type.OneofsFieldNumber">

+            <summary>Field number for the "oneofs" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Type.Oneofs">

+            <summary>

+            The list of types appearing in `oneof` definitions in this type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Type.OptionsFieldNumber">

+            <summary>Field number for the "options" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Type.Options">

+            <summary>

+            The protocol buffer options.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Type.SourceContextFieldNumber">

+            <summary>Field number for the "source_context" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Type.SourceContext">

+            <summary>

+            The source context.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Type.SyntaxFieldNumber">

+            <summary>Field number for the "syntax" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Type.Syntax">

+            <summary>

+            The source syntax.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Field">

+            <summary>

+            A single field of a message type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.KindFieldNumber">

+            <summary>Field number for the "kind" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Field.Kind">

+            <summary>

+            The field type.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.CardinalityFieldNumber">

+            <summary>Field number for the "cardinality" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Field.Cardinality">

+            <summary>

+            The field cardinality.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.NumberFieldNumber">

+            <summary>Field number for the "number" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Field.Number">

+            <summary>

+            The field number.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Field.Name">

+            <summary>

+            The field name.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.TypeUrlFieldNumber">

+            <summary>Field number for the "type_url" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Field.TypeUrl">

+            <summary>

+            The field type URL, without the scheme, for message or enumeration

+            types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.OneofIndexFieldNumber">

+            <summary>Field number for the "oneof_index" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Field.OneofIndex">

+            <summary>

+            The index of the field type in `Type.oneofs`, for message or enumeration

+            types. The first type has index 1; zero means the type is not in the list.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.PackedFieldNumber">

+            <summary>Field number for the "packed" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Field.Packed">

+            <summary>

+            Whether to use alternative packed wire representation.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.OptionsFieldNumber">

+            <summary>Field number for the "options" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Field.Options">

+            <summary>

+            The protocol buffer options.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.JsonNameFieldNumber">

+            <summary>Field number for the "json_name" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Field.JsonName">

+            <summary>

+            The field JSON name.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.DefaultValueFieldNumber">

+            <summary>Field number for the "default_value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Field.DefaultValue">

+            <summary>

+            The string value of the default value of this field. Proto2 syntax only.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Field.Types">

+            <summary>Container for nested types declared in the Field message type.</summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Field.Types.Kind">

+            <summary>

+            Basic field types.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeUnknown">

+            <summary>

+            Field type unknown.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeDouble">

+            <summary>

+            Field type double.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeFloat">

+            <summary>

+            Field type float.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeInt64">

+            <summary>

+            Field type int64.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeUint64">

+            <summary>

+            Field type uint64.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeInt32">

+            <summary>

+            Field type int32.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeFixed64">

+            <summary>

+            Field type fixed64.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeFixed32">

+            <summary>

+            Field type fixed32.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeBool">

+            <summary>

+            Field type bool.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeString">

+            <summary>

+            Field type string.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeGroup">

+            <summary>

+            Field type group. Proto2 syntax only, and deprecated.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeMessage">

+            <summary>

+            Field type message.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeBytes">

+            <summary>

+            Field type bytes.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeUint32">

+            <summary>

+            Field type uint32.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeEnum">

+            <summary>

+            Field type enum.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeSfixed32">

+            <summary>

+            Field type sfixed32.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeSfixed64">

+            <summary>

+            Field type sfixed64.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeSint32">

+            <summary>

+            Field type sint32.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeSint64">

+            <summary>

+            Field type sint64.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Field.Types.Cardinality">

+            <summary>

+            Whether a field is optional, required, or repeated.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Cardinality.Unknown">

+            <summary>

+            For fields with unknown cardinality.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Cardinality.Optional">

+            <summary>

+            For optional fields.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Cardinality.Required">

+            <summary>

+            For required fields. Proto2 syntax only.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Field.Types.Cardinality.Repeated">

+            <summary>

+            For repeated fields.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Enum">

+            <summary>

+            Enum type definition.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Enum.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Enum.Name">

+            <summary>

+            Enum type name.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Enum.EnumvalueFieldNumber">

+            <summary>Field number for the "enumvalue" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Enum.Enumvalue">

+            <summary>

+            Enum value definitions.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Enum.OptionsFieldNumber">

+            <summary>Field number for the "options" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Enum.Options">

+            <summary>

+            Protocol buffer options.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Enum.SourceContextFieldNumber">

+            <summary>Field number for the "source_context" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Enum.SourceContext">

+            <summary>

+            The source context.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Enum.SyntaxFieldNumber">

+            <summary>Field number for the "syntax" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Enum.Syntax">

+            <summary>

+            The source syntax.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.EnumValue">

+            <summary>

+            Enum value definition.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.EnumValue.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.EnumValue.Name">

+            <summary>

+            Enum value name.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.EnumValue.NumberFieldNumber">

+            <summary>Field number for the "number" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.EnumValue.Number">

+            <summary>

+            Enum value number.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.EnumValue.OptionsFieldNumber">

+            <summary>Field number for the "options" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.EnumValue.Options">

+            <summary>

+            Protocol buffer options.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Option">

+            <summary>

+            A protocol buffer option, which can be attached to a message, field,

+            enumeration, etc.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Option.NameFieldNumber">

+            <summary>Field number for the "name" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Option.Name">

+            <summary>

+            The option's name. For protobuf built-in options (options defined in

+            descriptor.proto), this is the short name. For example, `"map_entry"`.

+            For custom options, it should be the fully-qualified name. For example,

+            `"google.api.http"`.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Option.ValueFieldNumber">

+            <summary>Field number for the "value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Option.Value">

+            <summary>

+            The option's value packed in an Any message. If the value is a primitive,

+            the corresponding wrapper type defined in google/protobuf/wrappers.proto

+            should be used. If the value is an enum, it should be stored as an int32

+            value using the google.protobuf.Int32Value type.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.WrappersReflection">

+            <summary>Holder for reflection information generated from google/protobuf/wrappers.proto</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.WrappersReflection.Descriptor">

+            <summary>File descriptor for google/protobuf/wrappers.proto</summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.WrappersReflection.WrapperValueFieldNumber">

+            <summary>

+            Field number for the single "value" field in all wrapper types.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.DoubleValue">

+             <summary>

+             Wrapper message for `double`.

+            

+             The JSON representation for `DoubleValue` is JSON number.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.DoubleValue.ValueFieldNumber">

+            <summary>Field number for the "value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.DoubleValue.Value">

+            <summary>

+            The double value.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.FloatValue">

+             <summary>

+             Wrapper message for `float`.

+            

+             The JSON representation for `FloatValue` is JSON number.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.FloatValue.ValueFieldNumber">

+            <summary>Field number for the "value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.FloatValue.Value">

+            <summary>

+            The float value.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Int64Value">

+             <summary>

+             Wrapper message for `int64`.

+            

+             The JSON representation for `Int64Value` is JSON string.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Int64Value.ValueFieldNumber">

+            <summary>Field number for the "value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Int64Value.Value">

+            <summary>

+            The int64 value.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.UInt64Value">

+             <summary>

+             Wrapper message for `uint64`.

+            

+             The JSON representation for `UInt64Value` is JSON string.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.UInt64Value.ValueFieldNumber">

+            <summary>Field number for the "value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.UInt64Value.Value">

+            <summary>

+            The uint64 value.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.Int32Value">

+             <summary>

+             Wrapper message for `int32`.

+            

+             The JSON representation for `Int32Value` is JSON number.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.Int32Value.ValueFieldNumber">

+            <summary>Field number for the "value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.Int32Value.Value">

+            <summary>

+            The int32 value.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.UInt32Value">

+             <summary>

+             Wrapper message for `uint32`.

+            

+             The JSON representation for `UInt32Value` is JSON number.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.UInt32Value.ValueFieldNumber">

+            <summary>Field number for the "value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.UInt32Value.Value">

+            <summary>

+            The uint32 value.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.BoolValue">

+             <summary>

+             Wrapper message for `bool`.

+            

+             The JSON representation for `BoolValue` is JSON `true` and `false`.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.BoolValue.ValueFieldNumber">

+            <summary>Field number for the "value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.BoolValue.Value">

+            <summary>

+            The bool value.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.StringValue">

+             <summary>

+             Wrapper message for `string`.

+            

+             The JSON representation for `StringValue` is JSON string.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.StringValue.ValueFieldNumber">

+            <summary>Field number for the "value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.StringValue.Value">

+            <summary>

+            The string value.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WellKnownTypes.BytesValue">

+             <summary>

+             Wrapper message for `bytes`.

+            

+             The JSON representation for `BytesValue` is JSON string.

+             </summary>

+        </member>

+        <member name="F:Google.Protobuf.WellKnownTypes.BytesValue.ValueFieldNumber">

+            <summary>Field number for the "value" field.</summary>

+        </member>

+        <member name="P:Google.Protobuf.WellKnownTypes.BytesValue.Value">

+            <summary>

+            The bytes value.

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WireFormat">

+            <summary>

+            This class is used internally by the Protocol Buffer Library and generated

+            message implementations. It is public only for the sake of those generated

+            messages. Others should not use this class directly.

+            <para>

+            This class contains constants and helper functions useful for dealing with

+            the Protocol Buffer wire format.

+            </para>

+            </summary>

+        </member>

+        <member name="T:Google.Protobuf.WireFormat.WireType">

+            <summary>

+            Wire types within protobuf encoding.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WireFormat.WireType.Varint">

+            <summary>

+            Variable-length integer.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WireFormat.WireType.Fixed64">

+            <summary>

+            A fixed-length 64-bit value.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WireFormat.WireType.LengthDelimited">

+            <summary>

+            A length-delimited value, i.e. a length followed by that many bytes of data.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WireFormat.WireType.StartGroup">

+            <summary>

+            A "start group" value - not supported by this implementation.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WireFormat.WireType.EndGroup">

+            <summary>

+            An "end group" value - not supported by this implementation.

+            </summary>

+        </member>

+        <member name="F:Google.Protobuf.WireFormat.WireType.Fixed32">

+            <summary>

+            A fixed-length 32-bit value.

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.WireFormat.GetTagWireType(System.UInt32)">

+            <summary>

+            Given a tag value, determines the wire type (lower 3 bits).

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.WireFormat.GetTagFieldNumber(System.UInt32)">

+            <summary>

+            Given a tag value, determines the field number (the upper 29 bits).

+            </summary>

+        </member>

+        <member name="M:Google.Protobuf.WireFormat.MakeTag(System.Int32,Google.Protobuf.WireFormat.WireType)">

+            <summary>

+            Makes a tag value given a field number and wire type.

+            </summary>

+        </member>

+    </members>

+</doc>

diff --git a/dart/BUILD.bazel b/dart/BUILD.bazel
index 66fcee0..7440dd0 100644
--- a/dart/BUILD.bazel
+++ b/dart/BUILD.bazel
@@ -26,6 +26,7 @@
     visibility = ["//visibility:public"],
 )
 
+
 load("@io_bazel_rules_dart//dart/build_rules:vm.bzl", "dart_vm_binary")
 
 dart_vm_binary(
diff --git a/dart/dart_pub_deps.bzl b/dart/dart_pub_deps.bzl
new file mode 100644
index 0000000..9f08ff5
--- /dev/null
+++ b/dart/dart_pub_deps.bzl
@@ -0,0 +1,183 @@
+
+def _execute(rtx, cmds):
+    """Execute a command and fail if return code.
+    Args:
+      rtx: !repository_ctx
+      cmds: !list<string>
+    Returns: struct value from the rtx.execute method.
+    """
+    #print("Execute <%s>" % " ".join(cmds))
+    result = rtx.execute(cmds)
+    if result.return_code:
+        fail(" ".join(cmds) + "failed: %s" %(result.stderr))
+    return result
+
+
+def _pub_repository(name, entry, verbose):
+    out = []
+    version = entry["version"]
+    if entry.get("override"):
+        override = entry.get("override")
+        print("%s %s override %s" % (name, version, override))
+        version = override
+
+    if version.startswith("^"):
+        version = version[1:]
+
+    if version.startswith(">"):
+        version = version[1:]
+
+    if version.startswith("<"):
+        version = version[1:]
+
+    if version.startswith("="):
+        version = version[1:]
+
+    if version.startswith(">="):
+        version = version[2:]
+
+    if version.startswith("<="):
+        version = version[2:]
+
+    if version.startswith("=="):
+        version = version[2:]
+    out += [
+        '    if "vendor_%s" not in existing:' % name,
+        '        pub_repository(',
+        '            name = "vendor_%s",' % name,
+        '            output = ".",',
+        '            package = "%s",' % name,
+        '            version = "%s",' % version,
+    ]
+
+    deps = entry.get("deps")
+    if deps:
+        out.append('            pub_deps = [')
+        for depname, depversion in deps.items():
+            out.append('                "%s",' % depname)
+        out.append('            ]')
+    out.append('        )')
+    out.append('    elif verbose > 0:')
+    out.append('        print("Skipped vendor_%s (already exists)")' % name)
+    if verbose > 1:
+        print("%s: %s" % (name, version))
+    return out
+
+
+def _dart_pub_deps_impl(rtx):
+    """
+    Repository rule implementation that (1) copies the pubspec.yaml into
+    the external workspace dir, (2) executes 'pub deps', (3) parses the output,
+    and (4) writes out a deps.bzl file that contains pub_repository rules.
+    """
+
+    # map[string]string name -> version overrides
+    override = rtx.attr.override
+    # int
+    verbose = rtx.attr.verbose
+    # string 
+    pub = rtx.path(rtx.attr._pub)
+    # string
+    spec = rtx.path(rtx.attr.spec)
+
+    # Copy the pubspec into place
+    _execute(rtx, ["cp", spec, "./pubspec.yaml"])
+
+    # Run pub get first
+    _execute(rtx, [pub, "get"])
+
+    # Run pub deps
+    result = _execute(rtx, [pub, "deps", "--style", "list"])
+
+    # name -> entry 
+    direct_deps = {}
+    # name -> entry
+
+    transitive_deps = {}
+    # The dict that is "active" (one of: deps | transitive_deps).  A dict gets
+    # 'activated' when we hit that section in the output.
+    active = None
+
+    # Name of last dependency we've seen, like "analyzer" in ' - analyzer 0.32.5
+    current = None
+
+    # Iterate all lines in output
+    lines = result.stdout.split("\n")
+    for line in lines:
+        #print("LINE: " + line)
+        if line.startswith("  - "):
+            toks = line[4:].split(" ")
+            name = toks[0]
+            version = toks[1]
+            # if len(toks) > 2:
+            #     upper = toks[2]
+            #     if upper:
+            #         version = upper
+            active[name] = {
+                "name": name,
+                "version": version,
+                "override": override.get(name),
+            }
+            deps = current["deps"]
+            if not deps.get(name):
+                deps[name] = version
+            if verbose > 1:
+                print("transitive dep %s: %s" % (name, version))
+        elif line.startswith("- "):
+            toks = line[2:].split(" ")
+            name = toks[0]
+            version = toks[1]
+            entry = {
+                "name": name,
+                "version": version,
+                "deps": {},
+                "override": override.get(name),
+            }
+            active[name] = entry
+            current = entry
+            if verbose > 1:
+                print("direct dep %s: %s" % (name, version))
+        elif line == "dependencies:":
+            active = direct_deps
+        elif line == "transitive dependencies:":
+            active = transitive_deps
+        else:
+            if verbose > 2:
+                print("SKIP: " + line)
+
+    out = [
+        '# Generated - do not modify',
+        'load("@io_bazel_rules_dart//dart/build_rules/internal:pub.bzl", "pub_repository")',
+        'def pub_deps(verbose = 0):',
+        '    existing = native.existing_rules()',
+    ]
+
+    for name, entry in direct_deps.items():
+        out += _pub_repository(name, entry, verbose)
+    for name, entry in transitive_deps.items():
+        out += _pub_repository(name, entry, verbose)
+
+    rtx.file("deps.bzl", "\n".join(out))
+    rtx.file("BUILD.bazel", "")
+
+
+dart_pub_deps = repository_rule(
+    implementation = _dart_pub_deps_impl,
+    attrs = {
+        "_pub": attr.label(
+            doc = "The pub binary tool",
+            default = "@dart_sdk//:bin/pub",
+        ),
+        "spec": attr.label(
+            doc = 'A pubspec.yaml file that details the dependencies',
+            mandatory = True,
+        ),
+        "override": attr.string_dict(
+            doc = 'A mapping from NAME -> VERSION such that the given VERSION will be chosen for any direct/transitive dependency with that name.  Example: {"glob": "1.1.7"}',
+        ),
+        "verbose": attr.int(
+            doc = 'A number that changes the verbose level',
+        ),
+    },
+)
+
diff --git a/dart/deps.bzl b/dart/deps.bzl
index ff92218..fd5a3a6 100644
--- a/dart/deps.bzl
+++ b/dart/deps.bzl
@@ -1,204 +1,24 @@
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
-load("//dart:sdk.bzl", "dart_sdk_repository")
 
-def dart_proto_deps():
-    existing = native.existing_rules()  
-    
-    if "io_bazel_rules_dart" not in existing:
-        http_archive(
-            name = "io_bazel_rules_dart",
-            urls = ["https://github.com/dart-lang/rules_dart/archive/32ec7eb8585ba618e1236ccce43d158b6bda2f7b.tar.gz"],
-            strip_prefix = "rules_dart-32ec7eb8585ba618e1236ccce43d158b6bda2f7b",
-            sha256 = "b8107ad02bb3f3667900f18a585bb490192d6a193e975e82b2766470da1c7ebd",
-        )
-
-    if "dart_sdk" not in existing:
-        dart_sdk_repository(
-            name = "dart_sdk",
-        )
-
-
-def _execute(rtx, cmds):
-    """Execute a command and fail if return code.
-    Args:
-      rtx: !repository_ctx
-      cmds: !list<string>
-    Returns: struct value from the rtx.execute method.
-    """
-    #print("Execute <%s>" % " ".join(cmds))
-    result = rtx.execute(cmds)
-    if result.return_code:
-        fail(" ".join(cmds) + "failed: %s" %(result.stderr))
-    return result
-
-
-def _pub_repository(name, entry, verbose):
-    out = []
-    version = entry["version"]
-    if entry.get("override"):
-        override = entry.get("override")
-        print("%s %s override %s" % (name, version, override))
-        version = override
-
-    # if entry.get("upper"):
-    #     version = entry["upper"]
-    if version.startswith("^"):
-        version = version[1:]
-
-    if version.startswith(">"):
-        version = version[1:]
-
-    if version.startswith("<"):
-        version = version[1:]
-
-    if version.startswith("="):
-        version = version[1:]
-
-    if version.startswith(">="):
-        version = version[2:]
-
-    if version.startswith("<="):
-        version = version[2:]
-
-    if version.startswith("=="):
-        version = version[2:]
-    out += [
-        '    if "vendor_%s" not in existing:' % name,
-        '        pub_repository(',
-        '            name = "vendor_%s",' % name,
-        '            output = ".",',
-        '            package = "%s",' % name,
-        '            version = "%s",' % version,
-    ]
-
-    deps = entry.get("deps")
-    if deps:
-        out.append('            pub_deps = [')
-        for depname, depversion in deps.items():
-            out.append('                "%s",' % depname)
-        out.append('            ]')
-    out.append('        )')
-    out.append('    elif verbose > 0:')
-    out.append('        print("Skipped vendor_%s (already exists)")' % name)
-    if verbose > 1:
-        print("%s: %s" % (name, version))
-    return out
-
-
-def _dart_pub_deps_impl(rtx):
-    """
-    Repository rule implementation that (1) copies the pubspec.yaml into
-    the external workspace dir, (2) executes 'pub deps', (3) parses the output,
-    and (4) writes out a deps.bzl file that contains pub_repository rules.
-    """
-
-    # map[string]string name -> version overrides
-    override = rtx.attr.override
-    # int
-    verbose = rtx.attr.verbose
-    # string 
-    pub = rtx.path(rtx.attr._pub)
-    # string
-    spec = rtx.path(rtx.attr.spec)
-
-    # Copy the pubspec into place
-    _execute(rtx, ["cp", spec, "./pubspec.yaml"])
-
-    # Run pub get first
-    _execute(rtx, [pub, "get"])
-
-    # Run pub deps
-    result = _execute(rtx, [pub, "deps", "--style", "list"])
-
-    # name -> entry 
-    direct_deps = {}
-    # name -> entry
-
-    transitive_deps = {}
-    # The dict that is "active" (one of: deps | transitive_deps).  A dict gets
-    # 'activated' when we hit that section in the output.
-    active = None
-
-    # Name of last dependency we've seen, like "analyzer" in ' - analyzer 0.32.5
-    current = None
-
-    # Iterate all lines in output
-    lines = result.stdout.split("\n")
-    for line in lines:
-        #print("LINE: " + line)
-        if line.startswith("  - "):
-            toks = line[4:].split(" ")
-            name = toks[0]
-            version = toks[1]
-            # if len(toks) > 2:
-            #     upper = toks[2]
-            #     if upper:
-            #         version = upper
-            active[name] = {
-                "name": name,
-                "version": version,
-                "override": override.get(name),
-            }
-            deps = current["deps"]
-            if not deps.get(name):
-                deps[name] = version
-            if verbose > 1:
-                print("transitive dep %s: %s" % (name, version))
-        elif line.startswith("- "):
-            toks = line[2:].split(" ")
-            name = toks[0]
-            version = toks[1]
-            entry = {
-                "name": name,
-                "version": version,
-                "deps": {},
-                "override": override.get(name),
-            }
-            active[name] = entry
-            current = entry
-            if verbose > 1:
-                print("direct dep %s: %s" % (name, version))
-        elif line == "dependencies:":
-            active = direct_deps
-        elif line == "transitive dependencies:":
-            active = transitive_deps
-        else:
-            if verbose > 2:
-                print("SKIP: " + line)
-
-    out = [
-        '# Generated - do not modify',
-        'load("@io_bazel_rules_dart//dart/build_rules/internal:pub.bzl", "pub_repository")',
-        'def pub_deps(verbose = 0):',
-        '    existing = native.existing_rules()',
-    ]
-
-    for name, entry in direct_deps.items():
-        out += _pub_repository(name, entry, verbose)
-    for name, entry in transitive_deps.items():
-        out += _pub_repository(name, entry, verbose)
-
-    rtx.file("deps.bzl", "\n".join(out))
-    rtx.file("BUILD.bazel", "")
-
-
-dart_pub_deps = repository_rule(
-    implementation = _dart_pub_deps_impl,
-    attrs = {
-        "_pub": attr.label(
-            doc = "The pub binary tool",
-            default = "@dart_sdk//:bin/pub",
-        ),
-        "spec": attr.label(
-            doc = 'A pubspec.yaml file that details the dependencies',
-            mandatory = True,
-        ),
-        "override": attr.string_dict(
-            doc = 'A mapping from NAME -> VERSION such that the given VERSION will be chosen for any direct/transitive dependency with that name.  Example: {"glob": "1.1.7"}',
-        ),
-        "verbose": attr.int(
-            doc = 'A number that changes the verbose level',
-        ),
-    },
+load("//:deps.bzl", 
+    "com_google_protobuf",
+    "dart_pub_deps_protoc_plugin",
+    "dart_sdk",
+    "io_bazel_rules_dart",
 )
 
+def dart_proto_compile(**kwargs):
+    com_google_protobuf(**kwargs)
+    io_bazel_rules_dart(**kwargs)
+    dart_sdk(**kwargs)
+    dart_pub_deps_protoc_plugin(**kwargs)
+
+def dart_grpc_compile(**kwargs):
+    dart_proto_compile(**kwargs)
+
+def dart_proto_library(**kwargs):
+    dart_proto_compile(**kwargs)
+
+def dart_grpc_library(**kwargs):
+    dart_grpc_compile(**kwargs)
+    dart_proto_library(**kwargs)
+
diff --git a/deps.bzl b/deps.bzl
index e2236fb..7e7322d 100644
--- a/deps.bzl
+++ b/deps.bzl
@@ -1,13 +1,313 @@
 load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+load("@bazel_tools//tools/build_defs/repo:maven_rules.bzl", "maven_jar")
 
-def proto_deps():
-    # todo: put protobuf here
-    pass
+# Special thing to get around maven jar issues
+load("//closure:buildozer_http_archive.bzl", "buildozer_http_archive")
 
-def grpc_deps():
-    http_archive(
-        name = "com_github_grpc_grpc",
-        strip_prefix = "grpc-1.15.0",
-        url = "https://github.com/grpc/grpc/archive/v1.15.0.tar.gz",
-        sha256 = "013cc34f3c51c0f87e059a12ea203087a7a15dca2e453295345e1d02e2b9634b",
-    )
+# Special dart_sdk_repository
+load("//dart:sdk.bzl", "dart_sdk_repository")
+
+load("//dart:dart_pub_deps.bzl", "dart_pub_deps")
+
+
+def github_archive(name, org, repo, ref, sha256): 
+    """Declare an http_archive from github
+    """
+    if name not in native.existing_rules():
+        http_archive(
+            name = name,
+            strip_prefix = repo + "-" + ref,
+            urls = [
+                "https://mirror.bazel.build/github.com/%s/%s/archive/%s.tar.gz" % (org, repo, ref),
+                "https://github.com/%s/%s/archive/%s.tar.gz" % (org, repo, ref),
+            ],
+            sha256 = sha256,
+        )
+
+def jar(name, artifact, sha1):
+    """Declare a maven_jar
+    """ 
+    if name not in native.existing_rules():
+        maven_jar(
+            name = name,
+            artifact = artifact,
+            sha1 = sha1,
+        )
+
+def get_ref(name, default, kwargs):
+    key = name + "_ref"
+    return kwargs.get(key, default)
+
+
+def get_artifact(name, default, kwargs):
+    key = name + "_artifact"
+    return kwargs.get(key, default)
+
+
+def get_sha256(name, default, kwargs):
+    key = name + "_sha256"
+    return kwargs.get(key, default)
+
+
+def get_sha1(name, default, kwargs):
+    key = name + "_sha1"
+    return kwargs.get(key, default)
+
+
+def com_google_protobuf(**kwargs):
+    name = "com_google_protobuf"
+    ref = get_ref(name, "48cb18e5c419ddd23d9badcfe4e9df7bde1979b2", kwargs) # ref referenced by com_github_grpc_grpc
+    sha256 = get_sha256(name, "013cc34f3c51c0f87e059a12ea203087a7a15dca2e453295345e1d02e2b9634c", kwargs)
+    github_archive(name, "google", "protobuf", ref, sha256)
+
+
+def com_github_grpc_grpc(**kwargs):
+    name = "com_github_grpc_grpc"
+    ref = get_ref(name, "5f84445781ef29e50435c2eea661ca435a19b6bc", kwargs) # v1.15.0
+    sha256 = get_sha256(name, "8c09d35806c857dcb3a383c81052cc7ba1c5855e827d0792a83bd57251821e29", kwargs)
+    github_archive(name, "grpc", "grpc", ref, sha256)
+
+
+def io_bazel_rules_dotnet(**kwargs):
+    name = "io_bazel_rules_dotnet"
+    ref = get_ref(name, "281e4eeb389a30b4fd5dcd99915b35c925eff1ba", kwargs) 
+    sha256 = get_sha256(name, "6913f43275eb098d28b46e96215e1d7425a6d7301d6a2805920e8796f2734d8f", kwargs)
+    github_archive(name, "bazelbuild", "rules_dotnet", ref, sha256)
+
+
+def io_bazel_rules_rust(**kwargs):
+    name = "io_bazel_rules_rust"
+    ref = get_ref(name, "88022d175adb48aa5f8904f95dfc716c543b3f1e", kwargs) 
+    sha256 = get_sha256(name, "d9832945f0fa7097ee548bd6fecfc814bd19759561dd7b06723e1c6a1879aa71", kwargs)
+    github_archive(name, "bazelbuild", "rules_rust", ref, sha256)
+
+
+def com_github_yugui_rules_ruby(**kwargs):
+    name = "com_github_yugui_rules_ruby"
+    ref = get_ref(name, "5976385c9c4b94647bc95e8bf9d9989f1dee4ee3", kwargs) # PR#8, 
+    sha256 = get_sha256(name, "7991ded3b902aba4c13fa7bdd67132edfcc279930b356737c1a3d3b2686d08c8", kwargs)
+    github_archive(name, "yugui", "rules_ruby", ref, sha256)
+
+
+def org_pubref_rules_node(**kwargs):
+    name = "org_pubref_rules_node"
+    ref = get_ref(name, "1c60708c599e6ebd5213f0987207a1d854f13e23", kwargs)  
+    sha256 = get_sha256(name, "248efb149bfa86d9d778b43949351015b23a8339405a9878467a1583ff6df348", kwargs)
+    github_archive(name, "pubref", "rules_node", ref, sha256)
+
+
+def build_bazel_rules_android(**kwargs):
+    """Android Rules
+    """
+    name = "build_bazel_rules_android"
+    ref = get_ref(name, "60f03a20cefbe1e110ae0ac7f25359822e9ea24a", kwargs) 
+    sha256 = get_sha256(name, "4305b6cf6b098752a19fdb1abdc9ae2e069f5ff61359bfc3c752e4b4c862d18e", kwargs)
+    github_archive(name, "bazelbuild", "rules_android", ref, sha256)
+
+
+def io_bazel_rules_go(**kwargs):
+    """Go Rules
+    """
+    name = "io_bazel_rules_go"
+    ref = get_ref(name, "0f0d007c89dc67a5a34490acafc5195b191f5045", kwargs) # 0.15.3 
+    sha256 = get_sha256(name, "75a187b761dd3437c0722e3ab9a5c0835afc0acdd2cd1dc08f5d4810f409d57d", kwargs)
+    github_archive(name, "bazelbuild", "rules_go", ref, sha256)
+
+
+def io_bazel_rules_python(**kwargs):
+    """python Rules
+    """
+    name = "io_bazel_rules_python"
+    ref = get_ref(name, "8b5d0683a7d878b28fffe464779c8a53659fc645", kwargs)  
+    sha256 = get_sha256(name, "8b32d2dbb0b0dca02e0410da81499eef8ff051dad167d6931a92579e3b2a1d48", kwargs)
+    github_archive(name, "bazelbuild", "rules_python", ref, sha256)
+
+
+def six(**kwargs):
+    name = "six"
+    if name not in native.existing_rules():
+        http_archive(
+            name = name,
+            build_file_content = """
+genrule(
+  name = "copy_six",
+  srcs = ["six-1.10.0/six.py"],
+  outs = ["six.py"],
+  cmd = "cp $< $(@)",
+)
+
+py_library(
+  name = "six",
+  srcs = ["six.py"],
+  srcs_version = "PY2AND3",
+  visibility = ["//visibility:public"],
+)
+        """,
+            sha256 = "105f8d68616f8248e24bf0e9372ef04d3cc10104f1980f54d57b2ce73a5ad56a",
+            urls = ["https://pypi.python.org/packages/source/s/six/six-1.10.0.tar.gz#md5=34eed507548117b2ab523ab14b2f8b55"],
+        )
+
+
+def io_bazel_rules_dart(**kwargs):
+    """Dart Rules
+    """
+    name = "io_bazel_rules_dart"
+    ref = get_ref(name, "32ec7eb8585ba618e1236ccce43d158b6bda2f7b", kwargs)  
+    sha256 = get_sha256(name, "b8107ad02bb3f3667900f18a585bb490192d6a193e975e82b2766470da1c7ebd", kwargs)
+    github_archive(name, "bazelbuild", "rules_dart", ref, sha256)
+
+
+def dart_sdk(**kwargs):
+    """The dart sdk
+    """
+    name = "dart_sdk"
+    if name not in native.existing_rules():
+        dart_sdk_repository(
+            name = name,
+        )
+
+
+def dart_pub_deps_protoc_plugin(**kwargs):
+    """Dart pub dependencies for the dart protoc plugin
+    """
+    name = "dart_pub_deps_protoc_plugin"
+    if name not in native.existing_rules():
+        dart_pub_deps(
+            name = name,
+            spec = "//dart:pubspec.yaml",
+            override = {
+                "path": "1.6.2",
+                "analyzer": "0.32.5",
+                "crypto": "2.0.6",
+                "async": "2.0.8",
+                "fixnum": "0.10.8",
+                "collection": "1.14.11",
+                "dart_style": "1.1.3",
+                "source_span": "1.4.1",
+                "args": "1.5.0",
+            },
+        )
+
+
+def com_google_protobuf_lite(**kwargs):
+    """A different branch of google/protobuf that contains the protobuf_lite plugin
+    """
+    name = "com_google_protobuf_lite"
+    ref = get_ref(name, "5e8916e881c573c5d83980197a6f783c132d4276", kwargs) 
+    sha256 = get_sha256(name, "d35902fb3cbe9afa67aad4e615a8224d0a531b8c06d32e100bdb235244748a3d", kwargs)
+    github_archive(name, "protocolbuffers", "protobuf", ref, sha256)
+
+
+def gmaven_rules(**kwargs):
+    """A catalog of maven & android jars on google maven server
+    """
+    name = "gmaven_rules"
+    ref = get_ref(name, "20180927-1", kwargs) 
+    sha256 = get_sha256(name, "ddaa0f5811253e82f67ee637dc8caf3989e4517bac0368355215b0dcfa9844d6", kwargs)
+    github_archive(name, "bazelbuild", "gmaven_rules", ref, sha256)
+
+
+def io_grpc_grpc_java(**kwargs):
+    """grpc java plugin and jars
+    """
+    name = "io_grpc_grpc_java"
+    ref = get_ref(name, "3134daf471f90b8f00c037518fc64988a1cdc8f7", kwargs) # v1.15.0 
+    sha256 = get_sha256(name, "a7d7def13fd019255ba6ef7499aa91dac38d0ec0f5d9c1262a75ae82f4d67174", kwargs)
+    github_archive(name, "grpc", "grpc-java", ref, sha256)
+
+
+def com_google_guava_guava(**kwargs):
+    """grpc java plugin and jars
+    """
+    name = "com_google_guava_guava"
+    artifact = get_artifact(name, "com.google.guava:guava:20.0", kwargs)
+    sha1 = get_sha1(name, "89507701249388e1ed5ddcf8c41f4ce1be7831ef", kwargs)
+    jar(name, artifact, sha1)
+
+
+def io_bazel_rules_closure(**kwargs):
+    name = "io_bazel_rules_closure"
+    ref = get_ref(name, "1e12aa5612d758daf2df339991c8d187223a7ee6", kwargs) 
+    sha256 = get_sha256(name, "663424d34fd067a8d066308eb2887fcaba36d73b354669ec1467498726a6b82c", kwargs)
+
+    if "io_bazel_rules_closure" not in native.existing_rules():
+        buildozer_http_archive(
+            name = "io_bazel_rules_closure",
+            urls = ["https://github.com/bazelbuild/rules_closure/archive/%s.tar.gz" % ref],
+            sha256 = sha256,
+            strip_prefix = "rules_closure-" + ref,
+            label_list = ["//...:%java_binary", "//...:%java_library"],
+            replace_deps = {
+              "@com_google_code_findbugs_jsr305": "@com_google_code_findbugs_jsr305_3_0_0",
+              "@com_google_errorprone_error_prone_annotations": "@com_google_errorprone_error_prone_annotations_2_1_3",
+            },
+            sed_replacements = {
+              "closure/repositories.bzl": [
+                "s|com_google_code_findbugs_jsr305|com_google_code_findbugs_jsr305_3_0_0|g",
+                "s|com_google_errorprone_error_prone_annotations|com_google_errorprone_error_prone_annotations_2_1_3|g",
+              ],
+            },
+        )
+
+
+def com_github_stackb_grpc_js(**kwargs):
+    """Grpc-web implementation (closure)
+    """
+    name = "com_github_stackb_grpc_js"
+    ref = get_ref(name, "c94ef115b4e8eea526d5b54b829cfc7542f39bc5", kwargs)  
+    sha256 = get_sha256(name, "bf3b7fca7803a9187e6d6780089cad593997c46d76c5d78ba3202ce8b5e424b2", kwargs)
+    github_archive(name, "stackb", "grpc.js", ref, sha256)
+
+
+def build_bazel_rules_nodejs(**kwargs):
+    """Rule node.js 
+    """
+    name = "build_bazel_rules_nodejs"
+    ref = get_ref(name, "d334fd8e2274fb939cf447106dced97472534e80", kwargs)  
+    sha256 = get_sha256(name, "5c69bae6545c5c335c834d4a7d04b888607993027513282a5139dbbea7166571", kwargs)
+    github_archive(name, "bazelbuild", "rules_nodejs", ref, sha256)
+
+
+def build_bazel_rules_typescript(**kwargs):
+    """Rule for typescript 
+    """
+    name = "build_bazel_rules_typescript"
+    ref = get_ref(name, "3488d4fb89c6a02d79875d217d1029182fbcd797", kwargs)  
+    sha256 = get_sha256(name, "22ebe19999ce34de2f0329d29c7cac1cccd449cd61d0813aa0e633ac8dfaef80", kwargs)
+    github_archive(name, "bazelbuild", "rules_typescript", ref, sha256)
+
+
+def io_bazel_rules_webtesting(**kwargs):
+    """Rule for browser testing 
+    """
+    name = "io_bazel_rules_webtesting"
+    ref = get_ref(name, "e417b122a3d1e8f8a4cc09b1b05e2a5f52c8ecbb", kwargs)  
+    sha256 = get_sha256(name, "76af36aac2aed3ca6984e0c45d1204582243fa6b81165bf0e42eacfffed9c769", kwargs)
+    github_archive(name, "bazelbuild", "rules_webtesting", ref, sha256)
+
+
+def ts_protoc_gen(**kwargs):
+    """ d.ts generator 
+    """
+    name = "ts_protoc_gen"
+    ref = get_ref(name, "67e0c93fa4e29539ec57c97d23116f366ffb94e7", kwargs)  
+    sha256 = get_sha256(name, "03b87365116b3e829b648c57bf17b8d252b682c33264de5663e7f410c9ad0e55", kwargs)
+    github_archive(name, "improbable-eng", "ts-protoc-gen", ref, sha256)
+
+
+def bazel_gazelle(**kwargs):
+    """ build file generator for go 
+    """
+    name = "bazel_gazelle"
+    ref = get_ref(name, "6a1b93cc9b1c7e55e7d05a6d324bcf9d87ea3ab1", kwargs)  
+    sha256 = get_sha256(name, "bc493cce447c02b361393a79e562a5f48f456705417ee76009a761a159540dd7", kwargs)
+    github_archive(name, "bazelbuild", "bazel-gazelle", ref, sha256)
+
+
+def com_github_grpc_grpc_web(**kwargs):
+    """Rule for grpc-web 
+    """
+    name = "com_github_grpc_grpc_web"
+    ref = get_ref(name, "92aa9f8fc8e7af4aadede52ea075dd5790a63b62", kwargs)  
+    sha256 = get_sha256(name, "f4996205e6d1d72e2be46f1bda4d26f8586998ed42021161322d490537d8c9b9", kwargs)
+    github_archive(name, "grpc", "grpc-web", ref, sha256)
diff --git a/example/proto/routeguide/routeguide.proto b/example/proto/routeguide/routeguide.proto
index 61043f2..2dd615d 100644
--- a/example/proto/routeguide/routeguide.proto
+++ b/example/proto/routeguide/routeguide.proto
@@ -17,6 +17,7 @@
 option java_package = "io.grpc.examples.routeguide";
 option java_outer_classname = "RouteGuideProto";
 option objc_class_prefix = "RTG";
+option csharp_namespace = "RouteGuide";
 
 package routeguide;
 
diff --git a/github.com/grpc/grpc-web/BUILD.bazel b/github.com/grpc/grpc-web/BUILD.bazel
index 424d067..96faab8 100644
--- a/github.com/grpc/grpc-web/BUILD.bazel
+++ b/github.com/grpc/grpc-web/BUILD.bazel
@@ -2,9 +2,43 @@
 load("//:plugin.bzl", "proto_plugin")
 
 proto_plugin(
-    name = "grpc-web",
-    outputs = ["_grpc_web_pb.js"],
-    options = ["import_style=closure", "mode=grpcwebtext"],
+    name = "closure",
+    outputs = [
+        "_grpc_web_pb.js",
+    ],
+    options = ["import_style=closure", "mode=grpcweb"],
     tool = "@com_github_grpc_grpc_web//javascript/net/grpc/web:protoc-gen-grpc-web",
     visibility = ["//visibility:public"],
 )
+
+proto_plugin(
+    name = "commonjs",
+    outputs = [
+        "_grpc_web_pb.js",
+    ],
+    options = ["import_style=commonjs", "mode=grpcweb"],
+    tool = "@com_github_grpc_grpc_web//javascript/net/grpc/web:protoc-gen-grpc-web",
+    visibility = ["//visibility:public"],
+)
+
+proto_plugin(
+    name = "commonjs_dts",
+    outputs = [
+        "_grpc_web_pb.js",
+        "_pb.d.ts",        
+    ],
+    options = ["import_style=commonjs+dts", "mode=grpcweb"],
+    tool = "@com_github_grpc_grpc_web//javascript/net/grpc/web:protoc-gen-grpc-web",
+    visibility = ["//visibility:public"],
+)
+
+proto_plugin(
+    name = "ts",
+    outputs = [
+        "_pb.d.ts",
+    ],
+    options = ["import_style=typescript", "mode=grpcweb"],
+    tool = "@com_github_grpc_grpc_web//javascript/net/grpc/web:protoc-gen-grpc-web",
+    visibility = ["//visibility:public"],
+)
+
diff --git a/github.com/grpc/grpc-web/closure.bzl b/github.com/grpc/grpc-web/closure.bzl
new file mode 100644
index 0000000..1381577
--- /dev/null
+++ b/github.com/grpc/grpc-web/closure.bzl
@@ -0,0 +1,40 @@
+load("//closure:compile.bzl", "closure_proto_compile")
+load("//github.com/grpc/grpc-web:compile.bzl", "closure_grpc_compile")
+load("@io_bazel_rules_closure//closure:defs.bzl", "closure_js_library")
+
+def closure_grpc_library(**kwargs):
+    name = kwargs.get("name")
+    deps = kwargs.get("deps")
+    verbose = kwargs.get("verbose")
+    visibility = kwargs.get("visibility")
+
+    name_pb = name + "_pb"
+    name_pb_grpc = name + "_pb_grpc"
+
+    closure_proto_compile(
+        name = name_pb,
+        deps = deps,
+        visibility = visibility,
+    )
+    
+    closure_grpc_compile(
+        name = name_pb_grpc,
+        deps = deps,
+        visibility = visibility,
+        verbose = verbose,
+    )
+
+    closure_js_library(
+        name = name,
+        srcs = [name_pb, name_pb_grpc],
+        deps = [
+            "@com_github_grpc_grpc_web//javascript/net/grpc/web:abstractclientbase",
+            "@com_github_grpc_grpc_web//javascript/net/grpc/web:clientreadablestream",
+            "@com_github_grpc_grpc_web//javascript/net/grpc/web:grpcwebclientbase",
+            "@com_github_grpc_grpc_web//javascript/net/grpc/web:error",
+            "@io_bazel_rules_closure//closure/library",
+            "@io_bazel_rules_closure//closure/protobuf:jspb",
+        ],
+        lenient = True,
+        visibility = visibility,
+    )
\ No newline at end of file
diff --git a/github.com/grpc/grpc-web/compile.bzl b/github.com/grpc/grpc-web/compile.bzl
index 705248c..acd6822 100644
--- a/github.com/grpc/grpc-web/compile.bzl
+++ b/github.com/grpc/grpc-web/compile.bzl
@@ -1,7 +1,25 @@
 load("//:compile.bzl", "proto_compile")
 
-def grpc_web_proto_compile(**kwargs):
+def closure_grpc_compile(**kwargs):
     proto_compile(
-        plugins = [str(Label("//github.com/grpc/grpc-web:grpc-web"))],
+        plugins = [str(Label("//github.com/grpc/grpc-web:closure"))],
+        **kwargs
+    )
+
+def commonjs_grpc_compile(**kwargs):
+    proto_compile(
+        plugins = [str(Label("//github.com/grpc/grpc-web:commonjs"))],
+        **kwargs
+    )
+
+def commonjs_dts_grpc_compile(**kwargs):
+    proto_compile(
+        plugins = [str(Label("//github.com/grpc/grpc-web:commonjs_dts"))],
+        **kwargs
+    )
+
+def ts_grpc_compile(**kwargs):
+    proto_compile(
+        plugins = [str(Label("//github.com/grpc/grpc-web:ts"))],
         **kwargs
     )
diff --git a/github.com/grpc/grpc-web/deps.bzl b/github.com/grpc/grpc-web/deps.bzl
index 9df7d29..35a2a5f 100644
--- a/github.com/grpc/grpc-web/deps.bzl
+++ b/github.com/grpc/grpc-web/deps.bzl
@@ -1,13 +1,19 @@
+load("//:deps.bzl", 
+    "com_github_grpc_grpc_web",
+    "com_google_protobuf",
+    "io_bazel_rules_closure",
+)
 
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+load("//closure:deps.bzl", 
+    "closure_proto_compile",
+)
 
-def grpc_web_deps():
-    existing = native.existing_rules()  
-    
-    if "com_github_grpc_grpc_web" not in existing:
-        http_archive(
-            name = "com_github_grpc_grpc_web",
-            urls = ["https://github.com/grpc/grpc-web/archive/92aa9f8fc8e7af4aadede52ea075dd5790a63b62.tar.gz"],
-            strip_prefix = "grpc-web-92aa9f8fc8e7af4aadede52ea075dd5790a63b62",
-            sha256 = "f4996205e6d1d72e2be46f1bda4d26f8586998ed42021161322d490537d8c9b9",
-        )
+def web_grpc_compile(**kwargs):
+    com_google_protobuf(**kwargs)
+    com_github_grpc_grpc_web(**kwargs)
+
+
+def web_grpc_library(**kwargs):
+    closure_proto_compile(**kwargs)
+    web_grpc_compile(**kwargs)    
+    io_bazel_rules_closure(**kwargs)
diff --git a/github.com/grpc/grpc-web/example/proto/BUILD.bazel b/github.com/grpc/grpc-web/example/proto/BUILD.bazel
index a610d01..aef7e37 100644
--- a/github.com/grpc/grpc-web/example/proto/BUILD.bazel
+++ b/github.com/grpc/grpc-web/example/proto/BUILD.bazel
@@ -1,10 +1,37 @@
 
 
-load("//github.com/grpc/grpc-web:compile.bzl", "grpc_web_proto_compile")
+load("//github.com/grpc/grpc-web:compile.bzl", 
+    "closure_grpc_compile",
+    "commonjs_grpc_compile",
+    "commonjs_dts_grpc_compile",
+    "ts_grpc_compile",
+)
 
-grpc_web_proto_compile(
-    name = "routeguide",
+closure_grpc_compile(
+    name = "routeguide_closure",
     deps = [
         "//example/proto/routeguide:proto_library",
     ],
+)
+
+commonjs_grpc_compile(
+    name = "routeguide_commonjs",
+    deps = [
+        "//example/proto/routeguide:proto_library",
+    ],
+)
+
+commonjs_dts_grpc_compile(
+    name = "routeguide_dts",
+    deps = [
+        "//example/proto/routeguide:proto_library",
+    ],
+)
+
+ts_grpc_compile(
+    name = "routeguide_ts",
+    deps = [
+        "//example/proto/routeguide:proto_library",
+    ],
+    verbose = 2,
 )
\ No newline at end of file
diff --git a/github.com/grpc/grpc-web/example/routeguide/client/BUILD.bazel b/github.com/grpc/grpc-web/example/routeguide/closure/BUILD.bazel
similarity index 92%
rename from github.com/grpc/grpc-web/example/routeguide/client/BUILD.bazel
rename to github.com/grpc/grpc-web/example/routeguide/closure/BUILD.bazel
index 57e1c0d..46bf4bd 100644
--- a/github.com/grpc/grpc-web/example/routeguide/client/BUILD.bazel
+++ b/github.com/grpc/grpc-web/example/routeguide/closure/BUILD.bazel
@@ -5,9 +5,9 @@
     "closure_js_binary",
 )
 
-load("//github.com/grpc/grpc-web:library.bzl", "web_grpc_library")
+load("//github.com/grpc/grpc-web:closure.bzl", "closure_grpc_library")
 
-web_grpc_library(
+closure_grpc_library(
     name = "routeguide",
     deps = [
         "//example/proto/routeguide:proto_library",
diff --git a/github.com/grpc/grpc-web/example/routeguide/client/client.js b/github.com/grpc/grpc-web/example/routeguide/closure/client.js
similarity index 100%
rename from github.com/grpc/grpc-web/example/routeguide/client/client.js
rename to github.com/grpc/grpc-web/example/routeguide/closure/client.js
diff --git a/github.com/grpc/grpc-web/example/routeguide/client/client_test.js b/github.com/grpc/grpc-web/example/routeguide/closure/client_test.js
similarity index 100%
rename from github.com/grpc/grpc-web/example/routeguide/client/client_test.js
rename to github.com/grpc/grpc-web/example/routeguide/closure/client_test.js
diff --git a/github.com/grpc/grpc-web/example/routeguide/client/main.js b/github.com/grpc/grpc-web/example/routeguide/closure/main.js
similarity index 100%
rename from github.com/grpc/grpc-web/example/routeguide/client/main.js
rename to github.com/grpc/grpc-web/example/routeguide/closure/main.js
diff --git a/github.com/grpc/grpc-web/library.bzl b/github.com/grpc/grpc-web/library.bzl
index 2099857..1381577 100644
--- a/github.com/grpc/grpc-web/library.bzl
+++ b/github.com/grpc/grpc-web/library.bzl
@@ -1,8 +1,8 @@
 load("//closure:compile.bzl", "closure_proto_compile")
-load("//github.com/grpc/grpc-web:compile.bzl", "grpc_web_proto_compile")
+load("//github.com/grpc/grpc-web:compile.bzl", "closure_grpc_compile")
 load("@io_bazel_rules_closure//closure:defs.bzl", "closure_js_library")
 
-def web_grpc_library(**kwargs):
+def closure_grpc_library(**kwargs):
     name = kwargs.get("name")
     deps = kwargs.get("deps")
     verbose = kwargs.get("verbose")
@@ -17,7 +17,7 @@
         visibility = visibility,
     )
     
-    grpc_web_proto_compile(
+    closure_grpc_compile(
         name = name_pb_grpc,
         deps = deps,
         visibility = visibility,
diff --git a/github.com/improbable-eng/grpc-web/BUILD.bazel b/github.com/improbable-eng/grpc-web/BUILD.bazel
deleted file mode 100644
index e6041bc..0000000
--- a/github.com/improbable-eng/grpc-web/BUILD.bazel
+++ /dev/null
@@ -1,62 +0,0 @@
-# ======================================================================
-load("//:plugin.bzl", "proto_plugin")
-
-proto_plugin(
-    name = "ts",
-    outputs = ["_pb.d.ts"],
-    tool = ":protoc-gen-ts",
-    visibility = ["//visibility:public"],
-)
-
-proto_plugin(
-    name = "grpc_ts",
-    outputs = ["_pb.d.ts"],
-    options = ["service=true"],
-    tool = ":protoc-gen-ts",
-    visibility = ["//visibility:public"],
-)
-
-# ======================================================================
-# This pkg_tar fixes a bug in the original that deals with files from external
-# repositories
-load("//github.com/improbable-eng/grpc-web:pkg_tar.bzl", "pkg_tar")
-
-pkg_tar(
-    name = "runfiles",
-    srcs = ["@ts_protoc_gen//bin:protoc-gen-ts"],
-    strip_prefix = ".",
-    include_runfiles = True,
-)
-
-# ======================================================================
-load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library", "go_embed_data")
-
-go_embed_data(
-    name = "assets",
-    srcs = [
-        ":runfiles",        
-        "@node//:node",
-    ],
-    package = "main",
-    var = "assets",
-)
-
-go_library(
-    name = "go_default_library",
-    srcs = [
-        "protoc-gen-ts.go",
-        ":assets",  # keep
-    ],
-    importpath = "github.com/stackb/rules_proto/github.com/improbable-eng/grpc-web/protoc-gen-ts",
-    visibility = ["//visibility:public"],
-)
-
-# Note: it was necessary to repackage the assets in a go program to normalize
-# the madness that is the runfiles tree.  Interestingly, writing a protoc plugin
-# in typescript results in a 54M bundle.
-
-go_binary(
-    name = "protoc-gen-ts",
-    embed = [":go_default_library"],
-    visibility = ["//visibility:public"],
-)
diff --git a/github.com/improbable-eng/grpc-web/compile.bzl b/github.com/improbable-eng/grpc-web/compile.bzl
deleted file mode 100644
index 64487a9..0000000
--- a/github.com/improbable-eng/grpc-web/compile.bzl
+++ /dev/null
@@ -1,13 +0,0 @@
-load("//:compile.bzl", "proto_compile")
-
-def ts_proto_compile(**kwargs):
-    proto_compile(
-        plugins = [str(Label("//ts:ts"))],
-        **kwargs
-    )
-
-def ts_grpc_compile(**kwargs):
-    proto_compile(
-        plugins = [str(Label("//ts:grpc_ts"))],
-        **kwargs
-    )
diff --git a/github.com/improbable-eng/grpc-web/deps.bzl b/github.com/improbable-eng/grpc-web/deps.bzl
deleted file mode 100644
index 8548012..0000000
--- a/github.com/improbable-eng/grpc-web/deps.bzl
+++ /dev/null
@@ -1,13 +0,0 @@
-
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
-
-def grpc_web_library_deps():
-    existing = native.existing_rules()  
-    
-    if "com_github_improbable_eng_grpc_web" not in existing:
-        http_archive(
-            name = "com_github_improbable_eng_grpc_web",
-            urls = ["https://github.com/improbable-eng/grpc-web/archive/b89ec6300fb9ce3f604ff02c22e1c106fe29a3b9.tar.gz"],
-            strip_prefix = "grpc-web-b89ec6300fb9ce3f604ff02c22e1c106fe29a3b9",
-            sha256 = "5d69bae6545c5c335c834d4a7d04b888607993027513282a5139dbbea7166571",
-        )
diff --git a/github.com/improbable-eng/grpc-web/example/proto/BUILD.bazel b/github.com/improbable-eng/grpc-web/example/proto/BUILD.bazel
deleted file mode 100644
index 40a96b3..0000000
--- a/github.com/improbable-eng/grpc-web/example/proto/BUILD.bazel
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-load("//github.com/improbable-eng/grpc-web:compile.bzl", "grpc_web_proto_compile")
-
-grpc_web_proto_compile(
-    name = "routeguide",
-    deps = [
-        "//example/proto/routeguide:proto_library",
-    ],
-)
\ No newline at end of file
diff --git a/github.com/improbable-eng/grpc-web/example/routeguide/client/BUILD.bazel b/github.com/improbable-eng/grpc-web/example/routeguide/client/BUILD.bazel
deleted file mode 100644
index 57e1c0d..0000000
--- a/github.com/improbable-eng/grpc-web/example/routeguide/client/BUILD.bazel
+++ /dev/null
@@ -1,63 +0,0 @@
-load(
-    "@io_bazel_rules_closure//closure:defs.bzl",
-    "closure_js_library",
-    "closure_js_test",
-    "closure_js_binary",
-)
-
-load("//github.com/grpc/grpc-web:library.bzl", "web_grpc_library")
-
-web_grpc_library(
-    name = "routeguide",
-    deps = [
-        "//example/proto/routeguide:proto_library",
-    ],
-)
-
-closure_js_test(
-    name = "client_test",
-    srcs = [
-        "client_test.js",
-    ],
-    entry_points = ["example.routeguide.grpc_web.ClientTest"],
-    deps = [
-        ":client",
-        ":routeguide",
-        "@io_bazel_rules_closure//closure/library/testing:asserts",
-        "@io_bazel_rules_closure//closure/library/testing:jsunit",
-        "@io_bazel_rules_closure//closure/library/testing:testsuite",
-    ],
-    size = "small",
-)
-
-closure_js_library(
-    name = "client",
-    srcs = [
-        "client.js",
-    ],
-    deps = [
-        ":routeguide",
-        "@com_github_grpc_grpc_web//javascript/net/grpc/web:clientreadablestream",
-    ],
-)
-
-closure_js_library(
-    name = "main",
-    srcs = [
-        "main.js",
-    ],
-    deps = [
-        ":client",
-    ],
-)
-
-closure_js_binary(
-    name = "bundle",
-    compilation_level = "ADVANCED",
-    debug = False,
-    entry_points = ["goog:example.routeguide.grpc_web.client.run"],
-    output_wrapper = "(function(){%output%}).call(this);",
-    deps = [
-        ":main",
-    ],
-)
diff --git a/github.com/improbable-eng/grpc-web/example/routeguide/client/client.js b/github.com/improbable-eng/grpc-web/example/routeguide/client/client.js
deleted file mode 100644
index c24afc3..0000000
--- a/github.com/improbable-eng/grpc-web/example/routeguide/client/client.js
+++ /dev/null
@@ -1,46 +0,0 @@
-goog.module('example.routeguide.grpc_web.Client');
-
-const ClientReadableStream = goog.require('grpc.web.ClientReadableStream');
-const Feature = goog.require('proto.routeguide.Feature');
-const Rectangle = goog.require('proto.routeguide.Rectangle');
-const RouteGuideClient = goog.require('proto.routeguide.RouteGuideClient');
-
-/**
- * A skeleton client. The point of this exercise is not actually to create a
- * routeguide client, but show how we can use protobufs in closure code.
- */
-class Client {
-
-    /**
-     * @param {string} hostname
-     * @param {?Object} credentials
-     * @param {?Object} options
-     */
-    constructor(hostname, credentials, options) {
-        /**
-         * @const @private @type {!RouteGuideClient}
-         */
-        this.client_ = new RouteGuideClient(hostname, credentials, options);
-    }
-
-    /**
-     * List existing features.  Promise resolves to a list of features.
-     * 
-     * @param {!Rectangle} rect
-     * @param {!Object} metadata
-     * @return {!ClientReadableStream<!Feature>}  
-     */
-    listFeatures(rect, metadata) {
-        return this.client_.listFeatures(rect, metadata);
-    }
-
-    /**
-     * Run the client.  A real implementation might actually do something here.
-     */
-    run() {
-        console.log("Running grpc-web routeguide client...");
-    }
-
-}
-
-exports = Client;
\ No newline at end of file
diff --git a/github.com/improbable-eng/grpc-web/example/routeguide/client/client_test.js b/github.com/improbable-eng/grpc-web/example/routeguide/client/client_test.js
deleted file mode 100644
index a025d8a..0000000
--- a/github.com/improbable-eng/grpc-web/example/routeguide/client/client_test.js
+++ /dev/null
@@ -1,26 +0,0 @@
-goog.module('example.routeguide.grpc_web.ClientTest');
-
-goog.setTestOnly('example.routeguide.grpc_web.ClientTest');
-
-const Client = goog.require('example.routeguide.grpc_web.Client');
-const Rectangle = goog.require('proto.routeguide.Rectangle');
-
-
-const asserts = goog.require('goog.testing.asserts');
-const testSuite = goog.require('goog.testing.testSuite');
-
-goog.require('goog.testing.jsunit');
-
-testSuite({
-
-    testListFeatures: () => {
-        const client = new Client("localhost", null, null);
-        const rect = new Rectangle();
-        
-        // Currently this segfaults phantomjs!
-        const stream = client.listFeatures(rect, {});
-        asserts.assertNotNull(stream);
-    },
-
-});
-
diff --git a/github.com/improbable-eng/grpc-web/example/routeguide/client/main.js b/github.com/improbable-eng/grpc-web/example/routeguide/client/main.js
deleted file mode 100644
index 7d30ca1..0000000
--- a/github.com/improbable-eng/grpc-web/example/routeguide/client/main.js
+++ /dev/null
@@ -1,11 +0,0 @@
-goog.provide('example.routeguide.grpc_web.client.run');
-
-/**
- * Main entry point
- * @export
- */
-example.routeguide.grpc_web.client.run = function() {
-    const Client = goog.require('example.routeguide.grpc_web.Client');
-    const client = new Client("localhost", null, null);
-    client.run();
-};
diff --git a/github.com/improbable-eng/grpc-web/library.bzl b/github.com/improbable-eng/grpc-web/library.bzl
deleted file mode 100644
index e87cf94..0000000
--- a/github.com/improbable-eng/grpc-web/library.bzl
+++ /dev/null
@@ -1,33 +0,0 @@
-load("//node:compile.bzl", "node_proto_compile")
-load("//ts:compile.bzl", "ts_proto_compile", "ts_grpc_compile")
-load("@build_bazel_rules_typescript//:defs.bzl", "ts_library")
-
-def web_grpc_library(**kwargs):
-    name = kwargs.get("name")
-    deps = kwargs.get("deps")
-    verbose = kwargs.get("verbose")
-    visibility = kwargs.get("visibility")
-
-    name_pb = name + "_pb"
-    name_pb_grpc = name + "_pb_grpc"
-
-    node_grpc_compile(
-        name = name_pb,
-        deps = deps,
-        visibility = visibility,
-    )
-    
-    ts_grpc_compile(
-        name = name_pb_grpc,
-        deps = deps,
-        visibility = visibility,
-        verbose = verbose,
-    )
-
-    ts_library(
-        name = name,
-        srcs = [name_pb, name_pb_grpc],
-        deps = [
-        ],
-        visibility = visibility,
-    )
\ No newline at end of file
diff --git a/github.com/improbable-eng/ts-protoc-gen/deps.bzl b/github.com/improbable-eng/ts-protoc-gen/deps.bzl
index be6d912..e14df80 100644
--- a/github.com/improbable-eng/ts-protoc-gen/deps.bzl
+++ b/github.com/improbable-eng/ts-protoc-gen/deps.bzl
@@ -1,44 +1,33 @@
+load("//:deps.bzl", 
+    "bazel_gazelle",
+    "build_bazel_rules_nodejs",
+    "build_bazel_rules_typescript",
+    "com_google_protobuf",
+    "io_bazel_rules_closure",
+    "io_bazel_rules_go",
+    "io_bazel_rules_webtesting",
+    "ts_protoc_gen",
+)
 
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
 
-def ts_proto_deps():
-    existing = native.existing_rules()  
-    
-    if "build_bazel_rules_nodejs" not in existing:
-        http_archive(
-            name = "build_bazel_rules_nodejs",
-            urls = ["https://github.com/bazelbuild/rules_nodejs/archive/d334fd8e2274fb939cf447106dced97472534e80.tar.gz"],
-            strip_prefix = "rules_nodejs-d334fd8e2274fb939cf447106dced97472534e80",
-            sha256 = "5c69bae6545c5c335c834d4a7d04b888607993027513282a5139dbbea7166571",
-        )
+def ts_proto_compile(**kwargs):
+    bazel_gazelle(**kwargs)
+    build_bazel_rules_nodejs(**kwargs)
+    build_bazel_rules_typescript(**kwargs)
+    com_google_protobuf(**kwargs)
+    io_bazel_rules_closure(**kwargs)
+    io_bazel_rules_go(**kwargs)
+    io_bazel_rules_go(**kwargs)
+    io_bazel_rules_webtesting(**kwargs)
+    ts_protoc_gen(**kwargs)
 
-    if "build_bazel_rules_typescript" not in existing:
-        http_archive(
-            name = "build_bazel_rules_typescript",
-            urls = ["https://github.com/bazelbuild/rules_typescript/archive/3488d4fb89c6a02d79875d217d1029182fbcd797.tar.gz"],
-            strip_prefix = "rules_typescript-3488d4fb89c6a02d79875d217d1029182fbcd797",
-            sha256 = "22ebe19999ce34de2f0329d29c7cac1cccd449cd61d0813aa0e633ac8dfaef80",
-        )
+def ts_grpc_compile(**kwargs):
+    ts_proto_compile(**kwargs)
 
-    if "io_bazel_rules_webtesting" not in existing:
-        http_archive(
-            name = "io_bazel_rules_webtesting",
-            urls = ["https://github.com/bazelbuild/rules_webtesting/archive/e417b122a3d1e8f8a4cc09b1b05e2a5f52c8ecbb.tar.gz"],
-            strip_prefix = "rules_webtesting-e417b122a3d1e8f8a4cc09b1b05e2a5f52c8ecbb",
-            sha256 = "76af36aac2aed3ca6984e0c45d1204582243fa6b81165bf0e42eacfffed9c769",
-        )
+def ts_proto_library(**kwargs):
+    ts_proto_compile(**kwargs)
 
-    if "ts_protoc_gen" not in existing:
-        http_archive(
-            name = "ts_protoc_gen",
-            urls = ["https://github.com/improbable-eng/ts-protoc-gen/archive/67e0c93fa4e29539ec57c97d23116f366ffb94e7.tar.gz"],
-            strip_prefix = "ts-protoc-gen-67e0c93fa4e29539ec57c97d23116f366ffb94e7",
-            sha256 = "03b87365116b3e829b648c57bf17b8d252b682c33264de5663e7f410c9ad0e55",
-        )
+def ts_grpc_library(**kwargs):
+    ts_grpc_compile(**kwargs)    
+    ts_proto_library(**kwargs)
 
-    if "bazel_gazelle" not in existing:
-        http_archive(
-            name = "bazel_gazelle",
-            urls = ["https://github.com/bazelbuild/bazel-gazelle/releases/download/0.14.0/bazel-gazelle-0.14.0.tar.gz"],
-            sha256 = "c0a5739d12c6d05b6c1ad56f2200cb0b57c5a70e03ebd2f7b87ce88cabf09c7b",
-        )
diff --git a/github.com/stackb/grpc.js/compile.bzl b/github.com/stackb/grpc.js/compile.bzl
index 2435b20..9f8ccdc 100644
--- a/github.com/stackb/grpc.js/compile.bzl
+++ b/github.com/stackb/grpc.js/compile.bzl
@@ -1,6 +1,6 @@
 load("//:compile.bzl", "proto_compile")
 
-def grpc_js_proto_compile(**kwargs):
+def closure_grpc_compile(**kwargs):
     proto_compile(
         plugins = [str(Label("//github.com/stackb/grpc.js:grpc.js"))],
         **kwargs
diff --git a/github.com/stackb/grpc.js/deps.bzl b/github.com/stackb/grpc.js/deps.bzl
index a25154f..d0a7ac7 100644
--- a/github.com/stackb/grpc.js/deps.bzl
+++ b/github.com/stackb/grpc.js/deps.bzl
@@ -1,13 +1,24 @@
+load("//:deps.bzl", 
+    "com_github_stackb_grpc_js",
+    "com_google_protobuf",
+    "io_bazel_rules_closure",
+    "io_bazel_rules_go",
+)
 
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+load("//closure:deps.bzl", 
+    "closure_proto_compile",
+)
 
-def grpc_js_deps():
-    existing = native.existing_rules()  
-    
-    if "com_github_stackb_grpc_js" not in existing:
-        http_archive(
-            name = "com_github_stackb_grpc_js",
-            urls = ["https://github.com/stackb/grpc.js/archive/c94ef115b4e8eea526d5b54b829cfc7542f39bc5.tar.gz"],
-            strip_prefix = "grpc.js-c94ef115b4e8eea526d5b54b829cfc7542f39bc5",
-            sha256 = "bf3b7fca7803a9187e6d6780089cad593997c46d76c5d78ba3202ce8b5e424b2",
-        )
+def closure_grpc_compile(**kwargs):
+    # protoc
+    com_google_protobuf(**kwargs)
+    # Need rules_go to build the plugin
+    io_bazel_rules_go(**kwargs)
+    # Need the plugin itself
+    com_github_stackb_grpc_js(**kwargs)
+
+
+def closure_grpc_library(**kwargs):
+    closure_proto_compile(**kwargs)
+    closure_grpc_compile(**kwargs)    
+    io_bazel_rules_closure(**kwargs)
diff --git a/github.com/stackb/grpc.js/example/proto/BUILD.bazel b/github.com/stackb/grpc.js/example/proto/BUILD.bazel
index b9b2333..5313634 100644
--- a/github.com/stackb/grpc.js/example/proto/BUILD.bazel
+++ b/github.com/stackb/grpc.js/example/proto/BUILD.bazel
@@ -1,8 +1,8 @@
 
 
-load("//github.com/stackb/grpc.js:compile.bzl", "grpc_js_proto_compile")
+load("//github.com/stackb/grpc.js:compile.bzl", "closure_grpc_compile")
 
-grpc_js_proto_compile(
+closure_grpc_compile(
     name = "routeguide",
     deps = [
         "//example/proto/routeguide:proto_library",
diff --git a/github.com/stackb/grpc.js/example/routeguide/client/BUILD.bazel b/github.com/stackb/grpc.js/example/routeguide/client/BUILD.bazel
index c216388..64753a5 100644
--- a/github.com/stackb/grpc.js/example/routeguide/client/BUILD.bazel
+++ b/github.com/stackb/grpc.js/example/routeguide/client/BUILD.bazel
@@ -5,9 +5,9 @@
     "closure_js_binary",
 )
 
-load("//github.com/stackb/grpc.js:library.bzl", "grpc_js_proto_library")
+load("//github.com/stackb/grpc.js:library.bzl", "closure_grpc_library")
 
-grpc_js_proto_library(
+closure_grpc_library(
     name = "routeguide",
     deps = [
         "//example/proto/routeguide:proto_library",
diff --git a/github.com/stackb/grpc.js/library.bzl b/github.com/stackb/grpc.js/library.bzl
index 0460ebf..b8e0075 100644
--- a/github.com/stackb/grpc.js/library.bzl
+++ b/github.com/stackb/grpc.js/library.bzl
@@ -1,8 +1,8 @@
 load("//closure:compile.bzl", "closure_proto_compile")
-load("//github.com/stackb/grpc.js:compile.bzl", "grpc_js_proto_compile")
+load("//github.com/stackb/grpc.js:compile.bzl", "closure_grpc_compile")
 load("@io_bazel_rules_closure//closure:defs.bzl", "closure_js_library")
 
-def grpc_js_proto_library(**kwargs):
+def closure_grpc_library(**kwargs):
     name = kwargs.get("name")
     deps = kwargs.get("deps")
     verbose = kwargs.get("verbose")
@@ -17,7 +17,7 @@
         visibility = visibility,
     )
     
-    grpc_js_proto_compile(
+    closure_grpc_compile(
         name = name_pb_grpc,
         deps = deps,
         visibility = visibility,
diff --git a/go/deps.bzl b/go/deps.bzl
index d812c05..55584b0 100644
--- a/go/deps.bzl
+++ b/go/deps.bzl
@@ -1,19 +1,16 @@
+load("//:deps.bzl", 
+    "io_bazel_rules_go",
+)
 
+def go_proto_compile(**kwargs):
+    io_bazel_rules_go(**kwargs)
 
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+def go_grpc_compile(**kwargs):
+    go_proto_compile(**kwargs)
 
-def go_deps():
-    existing = native.existing_rules()
+def go_proto_library(**kwargs):
+    go_proto_compile(**kwargs)
 
-    if "io_bazel_rules_go" not in existing:
-        http_archive(
-            name = "io_bazel_rules_go",
-            urls = ["https://github.com/bazelbuild/rules_go/releases/download/0.15.3/rules_go-0.15.3.tar.gz"],
-            sha256 = "97cf62bdef33519412167fd1e4b0810a318a7c234f5f8dc4f53e2da86241c492",
-        )
-
-def go_proto_compile_deps():
-    go_deps()
-    
-def go_proto_library_deps():
-    go_proto_compile_deps()
\ No newline at end of file
+def go_grpc_library(**kwargs):
+    go_grpc_compile(**kwargs)
+    go_proto_library(**kwargs)
diff --git a/java/deps.bzl b/java/deps.bzl
index 6656cc0..f685a68 100644
--- a/java/deps.bzl
+++ b/java/deps.bzl
@@ -1,14 +1,20 @@
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+load("//:deps.bzl", 
+    "com_google_guava_guava",
+    "com_google_protobuf", 
+    "io_grpc_grpc_java",
+)
 
-PLUGIN_VERSION = "1.9.0"
+def java_proto_compile(**kwargs):
+    com_google_protobuf(**kwargs)
 
-def java_grpc_library_deps():
-    existing = native.existing_rules()
+def java_grpc_compile(**kwargs):
+    java_proto_compile(**kwargs)
+    io_grpc_grpc_java(**kwargs)
 
-    if "io_grpc_grpc_java" not in existing:
-        http_archive(
-            name = "io_grpc_grpc_java",
-            urls = ["https://github.com/grpc/grpc-java/archive/v1.15.0.tar.gz"],
-            strip_prefix = "grpc-java-1.15.0",
-            sha256 = "8a131e773b1c9c0442e606b7fc85d7fc6739659281589d01bd917ceda218a1c7",
-        )
+def java_proto_library(**kwargs):
+    java_proto_compile(**kwargs)
+    com_google_guava_guava(**kwargs)
+
+def java_grpc_library(**kwargs):
+    java_grpc_compile(**kwargs)
+    java_proto_library(**kwargs)
diff --git a/node/deps.bzl b/node/deps.bzl
index fe5c6d1..09dcb11 100644
--- a/node/deps.bzl
+++ b/node/deps.bzl
@@ -1,20 +1,20 @@
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive", "http_file")
+load("//:deps.bzl", 
+    "com_github_grpc_grpc",
+    "com_google_protobuf", 
+    "org_pubref_rules_node",
+)
 
-def node_proto_compile_deps():
-    pass
+def node_proto_compile(**kwargs):
+    com_google_protobuf(**kwargs)
 
-def node_proto_library_deps(
-  rules_node_version = "1c60708c599e6ebd5213f0987207a1d854f13e23",
-  rules_node_sha256 = "248efb149bfa86d9d778b43949351015b23a8339405a9878467a1583ff6df348",
-):
-    node_proto_compile_deps()
+def node_grpc_compile(**kwargs):
+    node_proto_compile(**kwargs)
+    com_github_grpc_grpc(**kwargs)
 
-    existing = native.existing_rules()
+def node_proto_library(**kwargs):
+    node_proto_compile(**kwargs)
+    org_pubref_rules_node(**kwargs)
 
-    if "org_pubref_rules_node" not in existing:
-        http_archive(
-            name = "org_pubref_rules_node",
-            urls = ["https://github.com/pubref/rules_node/archive/%s.tar.gz" % rules_node_version],
-            sha256 = rules_node_sha256,
-            strip_prefix = "rules_node-" + rules_node_version,
-        )
+def node_grpc_library(**kwargs):
+    node_grpc_compile(**kwargs)
+    node_proto_library(**kwargs)
diff --git a/node/example/routeguide/BUILD.bazel b/node/example/routeguide/BUILD.bazel
index 9994aac..68c764a 100644
--- a/node/example/routeguide/BUILD.bazel
+++ b/node/example/routeguide/BUILD.bazel
@@ -18,3 +18,16 @@
     name = "client",
     entrypoint = ":client_module",
 )
+
+node_module(
+    name = "server_module",
+    srcs = ["server.js"],
+    deps = [
+        ":routeguide",
+    ],
+)
+
+node_binary(
+    name = "server",
+    entrypoint = ":server_module",
+)
diff --git a/node/example/routeguide/server.js b/node/example/routeguide/server.js
new file mode 100644
index 0000000..7fae380
--- /dev/null
+++ b/node/example/routeguide/server.js
@@ -0,0 +1,243 @@
+/*
+ *
+ * Copyright 2015 gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+var messages = require('routeguide').messages;
+var services = require('routeguide').services;
+
+var fs = require('fs');
+var parseArgs = require('minimist');
+var path = require('path');
+var _ = require('lodash');
+var grpc = require('grpc');
+
+var COORD_FACTOR = 1e7;
+
+/**
+ * For simplicity, a point is a record type that looks like
+ * {latitude: number, longitude: number}, and a feature is a record type that
+ * looks like {name: string, location: point}. feature objects with name===''
+ * are points with no feature.
+ */
+
+/**
+ * List of feature objects at points that have been requested so far.
+ */
+var feature_list = [];
+
+/**
+ * Get a feature object at the given point, or creates one if it does not exist.
+ * @param {point} point The point to check
+ * @return {feature} The feature object at the point. Note that an empty name
+ *     indicates no feature
+ */
+function checkFeature(point) {
+  var feature;
+  // Check if there is already a feature object for the given point
+  for (var i = 0; i < feature_list.length; i++) {
+    feature = feature_list[i];
+    if (feature.getLocation().getLatitude() === point.getLatitude() &&
+        feature.getLocation().getLongitude() === point.getLongitude()) {
+      return feature;
+    }
+  }
+  var name = '';
+  feature = new messages.Feature();
+  feature.setName(name);
+  feature.setLocation(point);
+  return feature;
+}
+
+/**
+ * getFeature request handler. Gets a request with a point, and responds with a
+ * feature object indicating whether there is a feature at that point.
+ * @param {EventEmitter} call Call object for the handler to process
+ * @param {function(Error, feature)} callback Response callback
+ */
+function getFeature(call, callback) {
+  callback(null, checkFeature(call.request));
+}
+
+/**
+ * listFeatures request handler. Gets a request with two points, and responds
+ * with a stream of all features in the bounding box defined by those points.
+ * @param {Writable} call Writable stream for responses with an additional
+ *     request property for the request value.
+ */
+function listFeatures(call) {
+  var lo = call.request.getLo();
+  var hi = call.request.getHi();
+  var left = _.min([lo.getLongitude(), hi.getLongitude()]);
+  var right = _.max([lo.getLongitude(), hi.getLongitude()]);
+  var top = _.max([lo.getLatitude(), hi.getLatitude()]);
+  var bottom = _.min([lo.getLatitude(), hi.getLatitude()]);
+  // For each feature, check if it is in the given bounding box
+  _.each(feature_list, function(feature) {
+    if (feature.getName() === '') {
+      return;
+    }
+    if (feature.getLocation().getLongitude() >= left &&
+        feature.getLocation().getLongitude() <= right &&
+        feature.getLocation().getLatitude() >= bottom &&
+        feature.getLocation().getLatitude() <= top) {
+      call.write(feature);
+    }
+  });
+  call.end();
+}
+
+/**
+ * Calculate the distance between two points using the "haversine" formula.
+ * The formula is based on http://mathforum.org/library/drmath/view/51879.html.
+ * @param start The starting point
+ * @param end The end point
+ * @return The distance between the points in meters
+ */
+function getDistance(start, end) {
+  function toRadians(num) {
+    return num * Math.PI / 180;
+  }
+  var R = 6371000;  // earth radius in metres
+  var lat1 = toRadians(start.getLatitude() / COORD_FACTOR);
+  var lat2 = toRadians(end.getLatitude() / COORD_FACTOR);
+  var lon1 = toRadians(start.getLongitude() / COORD_FACTOR);
+  var lon2 = toRadians(end.getLongitude() / COORD_FACTOR);
+
+  var deltalat = lat2-lat1;
+  var deltalon = lon2-lon1;
+  var a = Math.sin(deltalat/2) * Math.sin(deltalat/2) +
+      Math.cos(lat1) * Math.cos(lat2) *
+      Math.sin(deltalon/2) * Math.sin(deltalon/2);
+  var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
+  return R * c;
+}
+
+/**
+ * recordRoute handler. Gets a stream of points, and responds with statistics
+ * about the "trip": number of points, number of known features visited, total
+ * distance traveled, and total time spent.
+ * @param {Readable} call The request point stream.
+ * @param {function(Error, routeSummary)} callback The callback to pass the
+ *     response to
+ */
+function recordRoute(call, callback) {
+  var point_count = 0;
+  var feature_count = 0;
+  var distance = 0;
+  var previous = null;
+  // Start a timer
+  var start_time = process.hrtime();
+  call.on('data', function(point) {
+    point_count += 1;
+    if (checkFeature(point).name !== '') {
+      feature_count += 1;
+    }
+    /* For each point after the first, add the incremental distance from the
+     * previous point to the total distance value */
+    if (previous != null) {
+      distance += getDistance(previous, point);
+    }
+    previous = point;
+  });
+  call.on('end', function() {
+    var summary = new messages.RouteSummary();
+    summary.setPointCount(point_count);
+    summary.setFeatureCount(feature_count);
+    // Cast the distance to an integer
+    summary.setDistance(distance|0);
+    // End the timer
+    summary.setElapsedTime(process.hrtime(start_time)[0]);
+    callback(null, summary);
+  });
+}
+
+var route_notes = {};
+
+/**
+ * Turn the point into a dictionary key.
+ * @param {point} point The point to use
+ * @return {string} The key for an object
+ */
+function pointKey(point) {
+  return point.getLatitude() + ' ' + point.getLongitude();
+}
+
+/**
+ * routeChat handler. Receives a stream of message/location pairs, and responds
+ * with a stream of all previous messages at each of those locations.
+ * @param {Duplex} call The stream for incoming and outgoing messages
+ */
+function routeChat(call) {
+  call.on('data', function(note) {
+    var key = pointKey(note.getLocation());
+    /* For each note sent, respond with all previous notes that correspond to
+     * the same point */
+    if (route_notes.hasOwnProperty(key)) {
+      _.each(route_notes[key], function(note) {
+        call.write(note);
+      });
+    } else {
+      route_notes[key] = [];
+    }
+    // Then add the new note to the list
+    route_notes[key].push(note);
+  });
+  call.on('end', function() {
+    call.end();
+  });
+}
+
+/**
+ * Get a new server with the handler functions in this file bound to the methods
+ * it serves.
+ * @return {Server} The new server object
+ */
+function getServer() {
+  var server = new grpc.Server();
+  server.addService(services.RouteGuideService, {
+    getFeature: getFeature,
+    listFeatures: listFeatures,
+    recordRoute: recordRoute,
+    routeChat: routeChat
+  });
+  return server;
+}
+
+if (require.main === module) {
+  // If this is run as a script, start a server on an unused port
+  var routeServer = getServer();
+  routeServer.bind('0.0.0.0:50051', grpc.ServerCredentials.createInsecure());
+  var argv = parseArgs(process.argv, {
+    string: 'db_path'
+  });
+  fs.readFile(path.resolve(argv.db_path), function(err, data) {
+    if (err) throw err;
+    // Transform the loaded features to Feature objects
+    feature_list = _.map(JSON.parse(data), function(value) {
+      var feature = new messages.Feature();
+      feature.setName(value.name);
+      var location = new messages.Point();
+      location.setLatitude(value.location.latitude);
+      location.setLongitude(value.location.longitude);
+      feature.setLocation(location);
+      return feature;
+    });
+    routeServer.start();
+  });
+}
+
+exports.getServer = getServer;
\ No newline at end of file
diff --git a/objc/deps.bzl b/objc/deps.bzl
index e69de29..af7d697 100644
--- a/objc/deps.bzl
+++ b/objc/deps.bzl
@@ -0,0 +1,11 @@
+load("//:deps.bzl", 
+    "com_github_grpc_grpc",
+    "com_google_protobuf", 
+)
+
+def objc_proto_compile(**kwargs):
+    com_google_protobuf(**kwargs)
+
+def objc_grpc_compile(**kwargs):
+    objc_proto_compile(**kwargs)
+    com_github_grpc_grpc(**kwargs)
diff --git a/php/deps.bzl b/php/deps.bzl
index e69de29..4d276e4 100644
--- a/php/deps.bzl
+++ b/php/deps.bzl
@@ -0,0 +1,11 @@
+load("//:deps.bzl", 
+    "com_github_grpc_grpc",
+    "com_google_protobuf", 
+)
+
+def php_proto_compile(**kwargs):
+    com_google_protobuf(**kwargs)
+
+def php_grpc_compile(**kwargs):
+    php_proto_compile(**kwargs)
+    com_github_grpc_grpc(**kwargs)
diff --git a/python/deps.bzl b/python/deps.bzl
index 3e797cd..50d28ab 100644
--- a/python/deps.bzl
+++ b/python/deps.bzl
@@ -1,36 +1,22 @@
-
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
-
-SIX_BUILD = """
-genrule(
-  name = "copy_six",
-  srcs = ["six-1.10.0/six.py"],
-  outs = ["six.py"],
-  cmd = "cp $< $(@)",
+load("//:deps.bzl", 
+    "com_github_grpc_grpc",
+    "com_google_protobuf",
+    "io_bazel_rules_python",
+    "six",
 )
 
-py_library(
-  name = "six",
-  srcs = ["six.py"],
-  srcs_version = "PY2AND3",
-  visibility = ["//visibility:public"],
-)
-"""
+def python_proto_compile(**kwargs):
+    com_google_protobuf(**kwargs)
 
-def py_proto_compile_deps():
-    existing = native.existing_rules()  
-    
-    if "six" not in existing:
-        native.new_http_archive(
-            name = "six",
-            build_file_content = SIX_BUILD,
-            sha256 = "105f8d68616f8248e24bf0e9372ef04d3cc10104f1980f54d57b2ce73a5ad56a",
-            urls = ["https://pypi.python.org/packages/source/s/six/six-1.10.0.tar.gz#md5=34eed507548117b2ab523ab14b2f8b55"],
-        )
-    if "io_bazel_rules_python" not in existing:
-        http_archive(
-            name = "io_bazel_rules_python",
-            urls = ["https://github.com/bazelbuild/rules_python/archive/8b5d0683a7d878b28fffe464779c8a53659fc645.tar.gz"],
-            strip_prefix = "rules_python-8b5d0683a7d878b28fffe464779c8a53659fc645",
-            sha256 = "8b32d2dbb0b0dca02e0410da81499eef8ff051dad167d6931a92579e3b2a1d48",
-        )
+def python_grpc_compile(**kwargs):
+    python_proto_compile(**kwargs)
+    com_github_grpc_grpc(**kwargs)
+
+def python_proto_library(**kwargs):
+    python_proto_compile(**kwargs)
+    io_bazel_rules_python(**kwargs)
+    six(**kwargs)
+
+def python_grpc_library(**kwargs):
+    python_grpc_compile(**kwargs)
+    python_proto_library(**kwargs)
\ No newline at end of file
diff --git a/ruby/deps.bzl b/ruby/deps.bzl
index 9cd3cc8..47a761d 100644
--- a/ruby/deps.bzl
+++ b/ruby/deps.bzl
@@ -1,19 +1,21 @@
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
 
-def ruby_proto_library_deps(
-  rules_ruby_version = "5976385c9c4b94647bc95e8bf9d9989f1dee4ee3", # PR#8,
-  rules_ruby_sha256 = "7991ded3b902aba4c13fa7bdd67132edfcc279930b356737c1a3d3b2686d08c8", 
-):
-    existing = native.existing_rules()
+load("//:deps.bzl", 
+    "com_google_protobuf",
+    "com_github_grpc_grpc",
+    "com_github_yugui_rules_ruby",
+)
 
-    if "com_github_yugui_rules_ruby" not in existing:
-        http_archive(
-            name = "com_github_yugui_rules_ruby",
-            urls = ["https://github.com/yugui/rules_ruby/archive/%s.tar.gz" % rules_ruby_version],
-            sha256 = rules_ruby_sha256,
-            strip_prefix = "rules_ruby-" + rules_ruby_version,
-        )
-        # native.local_repository(
-        #     name = "com_github_yugui_rules_ruby",
-        #     path = "/home/pcj/github/yugui/rules_ruby",
-        # )
+def ruby_proto_compile(**kwargs):
+    com_google_protobuf(**kwargs)
+
+def ruby_grpc_compile(**kwargs):
+    ruby_proto_compile(**kwargs)
+    com_github_grpc_grpc(**kwargs)
+
+def ruby_proto_library(**kwargs):
+    ruby_proto_compile(**kwargs)
+    com_github_yugui_rules_ruby(**kwargs)
+
+def ruby_grpc_library(**kwargs):
+    ruby_grpc_compile(**kwargs)
+    ruby_proto_library(**kwargs)
diff --git a/rust/BUILD.bazel b/rust/BUILD.bazel
index db1aee9..78ff3fd 100644
--- a/rust/BUILD.bazel
+++ b/rust/BUILD.bazel
@@ -15,18 +15,6 @@
     visibility = ["//visibility:public"],
 )
 
-# load("//rust:toolchain.bzl", "rust_proto_toolchain")
-
-# toolchain_type(name = "toolchain")
-
-# toolchain(
-#     name = "default-proto-toolchain",
-#     toolchain = ":default-proto-toolchain-impl",
-#     toolchain_type = "@io_bazel_rules_rust//proto:toolchain",
-# )
-
-# rust_proto_toolchain(name = "default-proto-toolchain-impl")
-
 alias(
     name = "protoc_gen_rust",
     actual = "@raze__protobuf_codegen__1_6_0//:cargo_bin_protoc_gen_rust",
diff --git a/rust/cargo/crates.bzl b/rust/cargo/crates.bzl
index 8758c96..a29a4e4 100644
--- a/rust/cargo/crates.bzl
+++ b/rust/cargo/crates.bzl
@@ -11,7 +11,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/arrayvec/arrayvec-0.4.7.crate",
         type = "tar.gz",
         strip_prefix = "arrayvec-0.4.7",
-        build_file = "//rust/cargo/remote:arrayvec-0.4.7.BUILD"
+        build_file = str(Label("//rust/cargo/remote:arrayvec-0.4.7.BUILD"))
     )
 
     native.new_http_archive(
@@ -19,7 +19,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/base64/base64-0.9.3.crate",
         type = "tar.gz",
         strip_prefix = "base64-0.9.3",
-        build_file = "//rust/cargo/remote:base64-0.9.3.BUILD"
+        build_file = str(Label("//rust/cargo/remote:base64-0.9.3.BUILD"))
     )
 
     native.new_http_archive(
@@ -27,7 +27,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/bitflags/bitflags-1.0.4.crate",
         type = "tar.gz",
         strip_prefix = "bitflags-1.0.4",
-        build_file = "//rust/cargo/remote:bitflags-1.0.4.BUILD"
+        build_file = str(Label("//rust/cargo/remote:bitflags-1.0.4.BUILD"))
     )
 
     native.new_http_archive(
@@ -35,7 +35,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/byteorder/byteorder-1.2.6.crate",
         type = "tar.gz",
         strip_prefix = "byteorder-1.2.6",
-        build_file = "//rust/cargo/remote:byteorder-1.2.6.BUILD"
+        build_file = str(Label("//rust/cargo/remote:byteorder-1.2.6.BUILD"))
     )
 
     native.new_http_archive(
@@ -43,7 +43,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/bytes/bytes-0.4.10.crate",
         type = "tar.gz",
         strip_prefix = "bytes-0.4.10",
-        build_file = "//rust/cargo/remote:bytes-0.4.10.BUILD"
+        build_file = str(Label("//rust/cargo/remote:bytes-0.4.10.BUILD"))
     )
 
     native.new_http_archive(
@@ -51,7 +51,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/cfg-if/cfg-if-0.1.5.crate",
         type = "tar.gz",
         strip_prefix = "cfg-if-0.1.5",
-        build_file = "//rust/cargo/remote:cfg-if-0.1.5.BUILD"
+        build_file = str(Label("//rust/cargo/remote:cfg-if-0.1.5.BUILD"))
     )
 
     native.new_http_archive(
@@ -59,7 +59,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/cloudabi/cloudabi-0.0.3.crate",
         type = "tar.gz",
         strip_prefix = "cloudabi-0.0.3",
-        build_file = "//rust/cargo/remote:cloudabi-0.0.3.BUILD"
+        build_file = str(Label("//rust/cargo/remote:cloudabi-0.0.3.BUILD"))
     )
 
     native.new_http_archive(
@@ -67,7 +67,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/crossbeam-deque/crossbeam-deque-0.6.1.crate",
         type = "tar.gz",
         strip_prefix = "crossbeam-deque-0.6.1",
-        build_file = "//rust/cargo/remote:crossbeam-deque-0.6.1.BUILD"
+        build_file = str(Label("//rust/cargo/remote:crossbeam-deque-0.6.1.BUILD"))
     )
 
     native.new_http_archive(
@@ -75,7 +75,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/crossbeam-epoch/crossbeam-epoch-0.5.2.crate",
         type = "tar.gz",
         strip_prefix = "crossbeam-epoch-0.5.2",
-        build_file = "//rust/cargo/remote:crossbeam-epoch-0.5.2.BUILD"
+        build_file = str(Label("//rust/cargo/remote:crossbeam-epoch-0.5.2.BUILD"))
     )
 
     native.new_http_archive(
@@ -83,7 +83,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/crossbeam-utils/crossbeam-utils-0.5.0.crate",
         type = "tar.gz",
         strip_prefix = "crossbeam-utils-0.5.0",
-        build_file = "//rust/cargo/remote:crossbeam-utils-0.5.0.BUILD"
+        build_file = str(Label("//rust/cargo/remote:crossbeam-utils-0.5.0.BUILD"))
     )
 
     native.new_http_archive(
@@ -91,7 +91,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/fuchsia-zircon/fuchsia-zircon-0.3.3.crate",
         type = "tar.gz",
         strip_prefix = "fuchsia-zircon-0.3.3",
-        build_file = "//rust/cargo/remote:fuchsia-zircon-0.3.3.BUILD"
+        build_file = str(Label("//rust/cargo/remote:fuchsia-zircon-0.3.3.BUILD"))
     )
 
     native.new_http_archive(
@@ -99,7 +99,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/fuchsia-zircon-sys/fuchsia-zircon-sys-0.3.3.crate",
         type = "tar.gz",
         strip_prefix = "fuchsia-zircon-sys-0.3.3",
-        build_file = "//rust/cargo/remote:fuchsia-zircon-sys-0.3.3.BUILD"
+        build_file = str(Label("//rust/cargo/remote:fuchsia-zircon-sys-0.3.3.BUILD"))
     )
 
     native.new_http_archive(
@@ -107,7 +107,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/futures/futures-0.1.24.crate",
         type = "tar.gz",
         strip_prefix = "futures-0.1.24",
-        build_file = "//rust/cargo/remote:futures-0.1.24.BUILD"
+        build_file = str(Label("//rust/cargo/remote:futures-0.1.24.BUILD"))
     )
 
     native.new_http_archive(
@@ -115,7 +115,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/futures-cpupool/futures-cpupool-0.1.8.crate",
         type = "tar.gz",
         strip_prefix = "futures-cpupool-0.1.8",
-        build_file = "//rust/cargo/remote:futures-cpupool-0.1.8.BUILD"
+        build_file = str(Label("//rust/cargo/remote:futures-cpupool-0.1.8.BUILD"))
     )
 
     native.new_http_archive(
@@ -123,7 +123,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/grpc/grpc-0.4.0.crate",
         type = "tar.gz",
         strip_prefix = "grpc-0.4.0",
-        build_file = "//rust/cargo/remote:grpc-0.4.0.BUILD"
+        build_file = str(Label("//rust/cargo/remote:grpc-0.4.0.BUILD"))
     )
 
     native.new_http_archive(
@@ -131,7 +131,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/grpc-compiler/grpc-compiler-0.4.0.crate",
         type = "tar.gz",
         strip_prefix = "grpc-compiler-0.4.0",
-        build_file = "//rust/cargo/remote:grpc-compiler-0.4.0.BUILD"
+        build_file = str(Label("//rust/cargo/remote:grpc-compiler-0.4.0.BUILD"))
     )
 
     native.new_http_archive(
@@ -139,7 +139,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/httpbis/httpbis-0.6.1.crate",
         type = "tar.gz",
         strip_prefix = "httpbis-0.6.1",
-        build_file = "//rust/cargo/remote:httpbis-0.6.1.BUILD"
+        build_file = str(Label("//rust/cargo/remote:httpbis-0.6.1.BUILD"))
     )
 
     native.new_http_archive(
@@ -147,7 +147,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/iovec/iovec-0.1.2.crate",
         type = "tar.gz",
         strip_prefix = "iovec-0.1.2",
-        build_file = "//rust/cargo/remote:iovec-0.1.2.BUILD"
+        build_file = str(Label("//rust/cargo/remote:iovec-0.1.2.BUILD"))
     )
 
     native.new_http_archive(
@@ -155,7 +155,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/kernel32-sys/kernel32-sys-0.2.2.crate",
         type = "tar.gz",
         strip_prefix = "kernel32-sys-0.2.2",
-        build_file = "//rust/cargo/remote:kernel32-sys-0.2.2.BUILD"
+        build_file = str(Label("//rust/cargo/remote:kernel32-sys-0.2.2.BUILD"))
     )
 
     native.new_http_archive(
@@ -163,7 +163,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/lazy_static/lazy_static-1.1.0.crate",
         type = "tar.gz",
         strip_prefix = "lazy_static-1.1.0",
-        build_file = "//rust/cargo/remote:lazy_static-1.1.0.BUILD"
+        build_file = str(Label("//rust/cargo/remote:lazy_static-1.1.0.BUILD"))
     )
 
     native.new_http_archive(
@@ -171,7 +171,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/lazycell/lazycell-1.2.0.crate",
         type = "tar.gz",
         strip_prefix = "lazycell-1.2.0",
-        build_file = "//rust/cargo/remote:lazycell-1.2.0.BUILD"
+        build_file = str(Label("//rust/cargo/remote:lazycell-1.2.0.BUILD"))
     )
 
     native.new_http_archive(
@@ -179,7 +179,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/libc/libc-0.2.43.crate",
         type = "tar.gz",
         strip_prefix = "libc-0.2.43",
-        build_file = "//rust/cargo/remote:libc-0.2.43.BUILD"
+        build_file = str(Label("//rust/cargo/remote:libc-0.2.43.BUILD"))
     )
 
     native.new_http_archive(
@@ -187,7 +187,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/lock_api/lock_api-0.1.3.crate",
         type = "tar.gz",
         strip_prefix = "lock_api-0.1.3",
-        build_file = "//rust/cargo/remote:lock_api-0.1.3.BUILD"
+        build_file = str(Label("//rust/cargo/remote:lock_api-0.1.3.BUILD"))
     )
 
     native.new_http_archive(
@@ -195,7 +195,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/log/log-0.3.9.crate",
         type = "tar.gz",
         strip_prefix = "log-0.3.9",
-        build_file = "//rust/cargo/remote:log-0.3.9.BUILD"
+        build_file = str(Label("//rust/cargo/remote:log-0.3.9.BUILD"))
     )
 
     native.new_http_archive(
@@ -203,7 +203,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/log/log-0.4.5.crate",
         type = "tar.gz",
         strip_prefix = "log-0.4.5",
-        build_file = "//rust/cargo/remote:log-0.4.5.BUILD"
+        build_file = str(Label("//rust/cargo/remote:log-0.4.5.BUILD"))
     )
 
     native.new_http_archive(
@@ -211,7 +211,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/memoffset/memoffset-0.2.1.crate",
         type = "tar.gz",
         strip_prefix = "memoffset-0.2.1",
-        build_file = "//rust/cargo/remote:memoffset-0.2.1.BUILD"
+        build_file = str(Label("//rust/cargo/remote:memoffset-0.2.1.BUILD"))
     )
 
     native.new_http_archive(
@@ -219,7 +219,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/mio/mio-0.6.16.crate",
         type = "tar.gz",
         strip_prefix = "mio-0.6.16",
-        build_file = "//rust/cargo/remote:mio-0.6.16.BUILD"
+        build_file = str(Label("//rust/cargo/remote:mio-0.6.16.BUILD"))
     )
 
     native.new_http_archive(
@@ -227,7 +227,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/mio-uds/mio-uds-0.6.7.crate",
         type = "tar.gz",
         strip_prefix = "mio-uds-0.6.7",
-        build_file = "//rust/cargo/remote:mio-uds-0.6.7.BUILD"
+        build_file = str(Label("//rust/cargo/remote:mio-uds-0.6.7.BUILD"))
     )
 
     native.new_http_archive(
@@ -235,7 +235,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/miow/miow-0.2.1.crate",
         type = "tar.gz",
         strip_prefix = "miow-0.2.1",
-        build_file = "//rust/cargo/remote:miow-0.2.1.BUILD"
+        build_file = str(Label("//rust/cargo/remote:miow-0.2.1.BUILD"))
     )
 
     native.new_http_archive(
@@ -243,7 +243,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/net2/net2-0.2.33.crate",
         type = "tar.gz",
         strip_prefix = "net2-0.2.33",
-        build_file = "//rust/cargo/remote:net2-0.2.33.BUILD"
+        build_file = str(Label("//rust/cargo/remote:net2-0.2.33.BUILD"))
     )
 
     native.new_http_archive(
@@ -251,7 +251,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/nodrop/nodrop-0.1.12.crate",
         type = "tar.gz",
         strip_prefix = "nodrop-0.1.12",
-        build_file = "//rust/cargo/remote:nodrop-0.1.12.BUILD"
+        build_file = str(Label("//rust/cargo/remote:nodrop-0.1.12.BUILD"))
     )
 
     native.new_http_archive(
@@ -259,7 +259,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/num_cpus/num_cpus-1.8.0.crate",
         type = "tar.gz",
         strip_prefix = "num_cpus-1.8.0",
-        build_file = "//rust/cargo/remote:num_cpus-1.8.0.BUILD"
+        build_file = str(Label("//rust/cargo/remote:num_cpus-1.8.0.BUILD"))
     )
 
     native.new_http_archive(
@@ -267,7 +267,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/owning_ref/owning_ref-0.3.3.crate",
         type = "tar.gz",
         strip_prefix = "owning_ref-0.3.3",
-        build_file = "//rust/cargo/remote:owning_ref-0.3.3.BUILD"
+        build_file = str(Label("//rust/cargo/remote:owning_ref-0.3.3.BUILD"))
     )
 
     native.new_http_archive(
@@ -275,7 +275,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/parking_lot/parking_lot-0.6.4.crate",
         type = "tar.gz",
         strip_prefix = "parking_lot-0.6.4",
-        build_file = "//rust/cargo/remote:parking_lot-0.6.4.BUILD"
+        build_file = str(Label("//rust/cargo/remote:parking_lot-0.6.4.BUILD"))
     )
 
     native.new_http_archive(
@@ -283,7 +283,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/parking_lot_core/parking_lot_core-0.3.1.crate",
         type = "tar.gz",
         strip_prefix = "parking_lot_core-0.3.1",
-        build_file = "//rust/cargo/remote:parking_lot_core-0.3.1.BUILD"
+        build_file = str(Label("//rust/cargo/remote:parking_lot_core-0.3.1.BUILD"))
     )
 
     native.new_http_archive(
@@ -291,7 +291,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/protobuf/protobuf-1.6.0.crate",
         type = "tar.gz",
         strip_prefix = "protobuf-1.6.0",
-        build_file = "//rust/cargo/remote:protobuf-1.6.0.BUILD"
+        build_file = str(Label("//rust/cargo/remote:protobuf-1.6.0.BUILD"))
     )
 
     native.new_http_archive(
@@ -299,7 +299,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/protobuf-codegen/protobuf-codegen-1.6.0.crate",
         type = "tar.gz",
         strip_prefix = "protobuf-codegen-1.6.0",
-        build_file = "//rust/cargo/remote:protobuf-codegen-1.6.0.BUILD"
+        build_file = str(Label("//rust/cargo/remote:protobuf-codegen-1.6.0.BUILD"))
     )
 
     native.new_http_archive(
@@ -307,7 +307,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/rand/rand-0.5.5.crate",
         type = "tar.gz",
         strip_prefix = "rand-0.5.5",
-        build_file = "//rust/cargo/remote:rand-0.5.5.BUILD"
+        build_file = str(Label("//rust/cargo/remote:rand-0.5.5.BUILD"))
     )
 
     native.new_http_archive(
@@ -315,7 +315,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/rand_core/rand_core-0.2.1.crate",
         type = "tar.gz",
         strip_prefix = "rand_core-0.2.1",
-        build_file = "//rust/cargo/remote:rand_core-0.2.1.BUILD"
+        build_file = str(Label("//rust/cargo/remote:rand_core-0.2.1.BUILD"))
     )
 
     native.new_http_archive(
@@ -323,7 +323,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/rustc_version/rustc_version-0.2.3.crate",
         type = "tar.gz",
         strip_prefix = "rustc_version-0.2.3",
-        build_file = "//rust/cargo/remote:rustc_version-0.2.3.BUILD"
+        build_file = str(Label("//rust/cargo/remote:rustc_version-0.2.3.BUILD"))
     )
 
     native.new_http_archive(
@@ -331,7 +331,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/safemem/safemem-0.3.0.crate",
         type = "tar.gz",
         strip_prefix = "safemem-0.3.0",
-        build_file = "//rust/cargo/remote:safemem-0.3.0.BUILD"
+        build_file = str(Label("//rust/cargo/remote:safemem-0.3.0.BUILD"))
     )
 
     native.new_http_archive(
@@ -339,7 +339,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/scoped-tls/scoped-tls-0.1.2.crate",
         type = "tar.gz",
         strip_prefix = "scoped-tls-0.1.2",
-        build_file = "//rust/cargo/remote:scoped-tls-0.1.2.BUILD"
+        build_file = str(Label("//rust/cargo/remote:scoped-tls-0.1.2.BUILD"))
     )
 
     native.new_http_archive(
@@ -347,7 +347,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/scopeguard/scopeguard-0.3.3.crate",
         type = "tar.gz",
         strip_prefix = "scopeguard-0.3.3",
-        build_file = "//rust/cargo/remote:scopeguard-0.3.3.BUILD"
+        build_file = str(Label("//rust/cargo/remote:scopeguard-0.3.3.BUILD"))
     )
 
     native.new_http_archive(
@@ -355,7 +355,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/semver/semver-0.9.0.crate",
         type = "tar.gz",
         strip_prefix = "semver-0.9.0",
-        build_file = "//rust/cargo/remote:semver-0.9.0.BUILD"
+        build_file = str(Label("//rust/cargo/remote:semver-0.9.0.BUILD"))
     )
 
     native.new_http_archive(
@@ -363,7 +363,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/semver-parser/semver-parser-0.7.0.crate",
         type = "tar.gz",
         strip_prefix = "semver-parser-0.7.0",
-        build_file = "//rust/cargo/remote:semver-parser-0.7.0.BUILD"
+        build_file = str(Label("//rust/cargo/remote:semver-parser-0.7.0.BUILD"))
     )
 
     native.new_http_archive(
@@ -371,7 +371,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/slab/slab-0.3.0.crate",
         type = "tar.gz",
         strip_prefix = "slab-0.3.0",
-        build_file = "//rust/cargo/remote:slab-0.3.0.BUILD"
+        build_file = str(Label("//rust/cargo/remote:slab-0.3.0.BUILD"))
     )
 
     native.new_http_archive(
@@ -379,7 +379,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/slab/slab-0.4.1.crate",
         type = "tar.gz",
         strip_prefix = "slab-0.4.1",
-        build_file = "//rust/cargo/remote:slab-0.4.1.BUILD"
+        build_file = str(Label("//rust/cargo/remote:slab-0.4.1.BUILD"))
     )
 
     native.new_http_archive(
@@ -387,7 +387,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/smallvec/smallvec-0.6.5.crate",
         type = "tar.gz",
         strip_prefix = "smallvec-0.6.5",
-        build_file = "//rust/cargo/remote:smallvec-0.6.5.BUILD"
+        build_file = str(Label("//rust/cargo/remote:smallvec-0.6.5.BUILD"))
     )
 
     native.new_http_archive(
@@ -395,7 +395,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/stable_deref_trait/stable_deref_trait-1.1.1.crate",
         type = "tar.gz",
         strip_prefix = "stable_deref_trait-1.1.1",
-        build_file = "//rust/cargo/remote:stable_deref_trait-1.1.1.BUILD"
+        build_file = str(Label("//rust/cargo/remote:stable_deref_trait-1.1.1.BUILD"))
     )
 
     native.new_http_archive(
@@ -403,7 +403,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/tls-api/tls-api-0.1.20.crate",
         type = "tar.gz",
         strip_prefix = "tls-api-0.1.20",
-        build_file = "//rust/cargo/remote:tls-api-0.1.20.BUILD"
+        build_file = str(Label("//rust/cargo/remote:tls-api-0.1.20.BUILD"))
     )
 
     native.new_http_archive(
@@ -411,7 +411,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/tls-api-stub/tls-api-stub-0.1.20.crate",
         type = "tar.gz",
         strip_prefix = "tls-api-stub-0.1.20",
-        build_file = "//rust/cargo/remote:tls-api-stub-0.1.20.BUILD"
+        build_file = str(Label("//rust/cargo/remote:tls-api-stub-0.1.20.BUILD"))
     )
 
     native.new_http_archive(
@@ -419,7 +419,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/tokio/tokio-0.1.8.crate",
         type = "tar.gz",
         strip_prefix = "tokio-0.1.8",
-        build_file = "//rust/cargo/remote:tokio-0.1.8.BUILD"
+        build_file = str(Label("//rust/cargo/remote:tokio-0.1.8.BUILD"))
     )
 
     native.new_http_archive(
@@ -427,7 +427,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/tokio-codec/tokio-codec-0.1.0.crate",
         type = "tar.gz",
         strip_prefix = "tokio-codec-0.1.0",
-        build_file = "//rust/cargo/remote:tokio-codec-0.1.0.BUILD"
+        build_file = str(Label("//rust/cargo/remote:tokio-codec-0.1.0.BUILD"))
     )
 
     native.new_http_archive(
@@ -435,7 +435,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/tokio-core/tokio-core-0.1.17.crate",
         type = "tar.gz",
         strip_prefix = "tokio-core-0.1.17",
-        build_file = "//rust/cargo/remote:tokio-core-0.1.17.BUILD"
+        build_file = str(Label("//rust/cargo/remote:tokio-core-0.1.17.BUILD"))
     )
 
     native.new_http_archive(
@@ -443,7 +443,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/tokio-current-thread/tokio-current-thread-0.1.1.crate",
         type = "tar.gz",
         strip_prefix = "tokio-current-thread-0.1.1",
-        build_file = "//rust/cargo/remote:tokio-current-thread-0.1.1.BUILD"
+        build_file = str(Label("//rust/cargo/remote:tokio-current-thread-0.1.1.BUILD"))
     )
 
     native.new_http_archive(
@@ -451,7 +451,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/tokio-executor/tokio-executor-0.1.4.crate",
         type = "tar.gz",
         strip_prefix = "tokio-executor-0.1.4",
-        build_file = "//rust/cargo/remote:tokio-executor-0.1.4.BUILD"
+        build_file = str(Label("//rust/cargo/remote:tokio-executor-0.1.4.BUILD"))
     )
 
     native.new_http_archive(
@@ -459,7 +459,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/tokio-fs/tokio-fs-0.1.3.crate",
         type = "tar.gz",
         strip_prefix = "tokio-fs-0.1.3",
-        build_file = "//rust/cargo/remote:tokio-fs-0.1.3.BUILD"
+        build_file = str(Label("//rust/cargo/remote:tokio-fs-0.1.3.BUILD"))
     )
 
     native.new_http_archive(
@@ -467,7 +467,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/tokio-io/tokio-io-0.1.8.crate",
         type = "tar.gz",
         strip_prefix = "tokio-io-0.1.8",
-        build_file = "//rust/cargo/remote:tokio-io-0.1.8.BUILD"
+        build_file = str(Label("//rust/cargo/remote:tokio-io-0.1.8.BUILD"))
     )
 
     native.new_http_archive(
@@ -475,7 +475,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/tokio-reactor/tokio-reactor-0.1.5.crate",
         type = "tar.gz",
         strip_prefix = "tokio-reactor-0.1.5",
-        build_file = "//rust/cargo/remote:tokio-reactor-0.1.5.BUILD"
+        build_file = str(Label("//rust/cargo/remote:tokio-reactor-0.1.5.BUILD"))
     )
 
     native.new_http_archive(
@@ -483,7 +483,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/tokio-tcp/tokio-tcp-0.1.1.crate",
         type = "tar.gz",
         strip_prefix = "tokio-tcp-0.1.1",
-        build_file = "//rust/cargo/remote:tokio-tcp-0.1.1.BUILD"
+        build_file = str(Label("//rust/cargo/remote:tokio-tcp-0.1.1.BUILD"))
     )
 
     native.new_http_archive(
@@ -491,7 +491,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/tokio-threadpool/tokio-threadpool-0.1.6.crate",
         type = "tar.gz",
         strip_prefix = "tokio-threadpool-0.1.6",
-        build_file = "//rust/cargo/remote:tokio-threadpool-0.1.6.BUILD"
+        build_file = str(Label("//rust/cargo/remote:tokio-threadpool-0.1.6.BUILD"))
     )
 
     native.new_http_archive(
@@ -499,7 +499,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/tokio-timer/tokio-timer-0.1.2.crate",
         type = "tar.gz",
         strip_prefix = "tokio-timer-0.1.2",
-        build_file = "//rust/cargo/remote:tokio-timer-0.1.2.BUILD"
+        build_file = str(Label("//rust/cargo/remote:tokio-timer-0.1.2.BUILD"))
     )
 
     native.new_http_archive(
@@ -507,7 +507,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/tokio-timer/tokio-timer-0.2.6.crate",
         type = "tar.gz",
         strip_prefix = "tokio-timer-0.2.6",
-        build_file = "//rust/cargo/remote:tokio-timer-0.2.6.BUILD"
+        build_file = str(Label("//rust/cargo/remote:tokio-timer-0.2.6.BUILD"))
     )
 
     native.new_http_archive(
@@ -515,7 +515,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/tokio-tls-api/tokio-tls-api-0.1.20.crate",
         type = "tar.gz",
         strip_prefix = "tokio-tls-api-0.1.20",
-        build_file = "//rust/cargo/remote:tokio-tls-api-0.1.20.BUILD"
+        build_file = str(Label("//rust/cargo/remote:tokio-tls-api-0.1.20.BUILD"))
     )
 
     native.new_http_archive(
@@ -523,7 +523,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/tokio-udp/tokio-udp-0.1.2.crate",
         type = "tar.gz",
         strip_prefix = "tokio-udp-0.1.2",
-        build_file = "//rust/cargo/remote:tokio-udp-0.1.2.BUILD"
+        build_file = str(Label("//rust/cargo/remote:tokio-udp-0.1.2.BUILD"))
     )
 
     native.new_http_archive(
@@ -531,7 +531,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/tokio-uds/tokio-uds-0.1.7.crate",
         type = "tar.gz",
         strip_prefix = "tokio-uds-0.1.7",
-        build_file = "//rust/cargo/remote:tokio-uds-0.1.7.BUILD"
+        build_file = str(Label("//rust/cargo/remote:tokio-uds-0.1.7.BUILD"))
     )
 
     native.new_http_archive(
@@ -539,7 +539,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/tokio-uds/tokio-uds-0.2.1.crate",
         type = "tar.gz",
         strip_prefix = "tokio-uds-0.2.1",
-        build_file = "//rust/cargo/remote:tokio-uds-0.2.1.BUILD"
+        build_file = str(Label("//rust/cargo/remote:tokio-uds-0.2.1.BUILD"))
     )
 
     native.new_http_archive(
@@ -547,7 +547,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/unix_socket/unix_socket-0.5.0.crate",
         type = "tar.gz",
         strip_prefix = "unix_socket-0.5.0",
-        build_file = "//rust/cargo/remote:unix_socket-0.5.0.BUILD"
+        build_file = str(Label("//rust/cargo/remote:unix_socket-0.5.0.BUILD"))
     )
 
     native.new_http_archive(
@@ -555,7 +555,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/unreachable/unreachable-1.0.0.crate",
         type = "tar.gz",
         strip_prefix = "unreachable-1.0.0",
-        build_file = "//rust/cargo/remote:unreachable-1.0.0.BUILD"
+        build_file = str(Label("//rust/cargo/remote:unreachable-1.0.0.BUILD"))
     )
 
     native.new_http_archive(
@@ -563,7 +563,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/version_check/version_check-0.1.5.crate",
         type = "tar.gz",
         strip_prefix = "version_check-0.1.5",
-        build_file = "//rust/cargo/remote:version_check-0.1.5.BUILD"
+        build_file = str(Label("//rust/cargo/remote:version_check-0.1.5.BUILD"))
     )
 
     native.new_http_archive(
@@ -571,7 +571,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/void/void-1.0.2.crate",
         type = "tar.gz",
         strip_prefix = "void-1.0.2",
-        build_file = "//rust/cargo/remote:void-1.0.2.BUILD"
+        build_file = str(Label("//rust/cargo/remote:void-1.0.2.BUILD"))
     )
 
     native.new_http_archive(
@@ -579,7 +579,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/winapi/winapi-0.2.8.crate",
         type = "tar.gz",
         strip_prefix = "winapi-0.2.8",
-        build_file = "//rust/cargo/remote:winapi-0.2.8.BUILD"
+        build_file = str(Label("//rust/cargo/remote:winapi-0.2.8.BUILD"))
     )
 
     native.new_http_archive(
@@ -587,7 +587,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/winapi/winapi-0.3.6.crate",
         type = "tar.gz",
         strip_prefix = "winapi-0.3.6",
-        build_file = "//rust/cargo/remote:winapi-0.3.6.BUILD"
+        build_file = str(Label("//rust/cargo/remote:winapi-0.3.6.BUILD"))
     )
 
     native.new_http_archive(
@@ -595,7 +595,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/winapi-build/winapi-build-0.1.1.crate",
         type = "tar.gz",
         strip_prefix = "winapi-build-0.1.1",
-        build_file = "//rust/cargo/remote:winapi-build-0.1.1.BUILD"
+        build_file = str(Label("//rust/cargo/remote:winapi-build-0.1.1.BUILD"))
     )
 
     native.new_http_archive(
@@ -603,7 +603,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/winapi-i686-pc-windows-gnu/winapi-i686-pc-windows-gnu-0.4.0.crate",
         type = "tar.gz",
         strip_prefix = "winapi-i686-pc-windows-gnu-0.4.0",
-        build_file = "//rust/cargo/remote:winapi-i686-pc-windows-gnu-0.4.0.BUILD"
+        build_file = str(Label("//rust/cargo/remote:winapi-i686-pc-windows-gnu-0.4.0.BUILD"))
     )
 
     native.new_http_archive(
@@ -611,7 +611,7 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/winapi-x86_64-pc-windows-gnu/winapi-x86_64-pc-windows-gnu-0.4.0.crate",
         type = "tar.gz",
         strip_prefix = "winapi-x86_64-pc-windows-gnu-0.4.0",
-        build_file = "//rust/cargo/remote:winapi-x86_64-pc-windows-gnu-0.4.0.BUILD"
+        build_file = str(Label("//rust/cargo/remote:winapi-x86_64-pc-windows-gnu-0.4.0.BUILD"))
     )
 
     native.new_http_archive(
@@ -619,6 +619,6 @@
         url = "https://crates-io.s3-us-west-1.amazonaws.com/crates/ws2_32-sys/ws2_32-sys-0.2.1.crate",
         type = "tar.gz",
         strip_prefix = "ws2_32-sys-0.2.1",
-        build_file = "//rust/cargo/remote:ws2_32-sys-0.2.1.BUILD"
+        build_file = str(Label("//rust/cargo/remote:ws2_32-sys-0.2.1.BUILD"))
     )
 
diff --git a/rust/cargo/regenerate_crates.sh b/rust/cargo/regenerate_crates.sh
index 9a7c658..f121497 100755
--- a/rust/cargo/regenerate_crates.sh
+++ b/rust/cargo/regenerate_crates.sh
@@ -19,7 +19,7 @@
 cargo generate-lockfile && cargo raze
 
 # We need to update the build file path.
-#sed -i.bak 's|//rust|@org_pubref_rules_proto//rust|g' "crates.bzl"
+perl -p -e 's|("//rust[^"]+")|str(Label(\1))|g' "crates.bzl"
 #rm crates.bzl.bak
 
 # Remove these outdated rust_bench_test references
diff --git a/rust/cargo/remote/version_check-0.1.5.BUILD b/rust/cargo/remote/version_check-0.1.5.BUILD
new file mode 100644
index 0000000..18a7cbd
--- /dev/null
+++ b/rust/cargo/remote/version_check-0.1.5.BUILD
@@ -0,0 +1,34 @@
+"""
+cargo-raze crate build file.
+
+DO NOT EDIT! Replaced on runs of cargo-raze
+"""
+package(default_visibility = ["//visibility:public"])
+
+licenses([
+  "notice", # "MIT,Apache-2.0"
+])
+
+load(
+    "@io_bazel_rules_rust//rust:rust.bzl",
+    "rust_library",
+    "rust_binary",
+    "rust_test",
+)
+
+
+rust_library(
+    name = "version_check",
+    crate_root = "src/lib.rs",
+    crate_type = "lib",
+    srcs = glob(["**/*.rs"]),
+    deps = [
+    ],
+    rustc_flags = [
+        "--cap-lints allow",
+        "--target=x86_64-unknown-linux-gnu",
+    ],
+    crate_features = [
+    ],
+)
+
diff --git a/rust/deps.bzl b/rust/deps.bzl
index 4939cf3..799c5be 100644
--- a/rust/deps.bzl
+++ b/rust/deps.bzl
@@ -1,31 +1,18 @@
-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+load("//:deps.bzl", 
+    "com_google_protobuf",
+    "io_bazel_rules_rust",
+)
 
-libc_BUILD = """
-"""
+def rust_proto_compile(**kwargs):
+    com_google_protobuf(**kwargs)
 
-def rust_proto_library_deps(
-  rules_rust_version = "88022d175adb48aa5f8904f95dfc716c543b3f1e",
-  rules_rust_sha256 = "d9832945f0fa7097ee548bd6fecfc814bd19759561dd7b06723e1c6a1879aa71", 
-):
-    existing = native.existing_rules()
+def rust_grpc_compile(**kwargs):
+    rust_proto_compile(**kwargs)
 
-    if "io_bazel_rules_rust" not in existing:
-        http_archive(
-            name = "io_bazel_rules_rust",
-            urls = ["https://github.com/bazelbuild/rules_rust/archive/%s.tar.gz" % rules_rust_version],
-            sha256 = rules_rust_sha256,
-            strip_prefix = "rules_rust-" + rules_rust_version,
-        )
-        # native.local_repository(
-        #     name = "io_bazel_rules_rust",
-        #     path = "/home/pcj/github/bazelbuild/rules_rust",
-        # )
+def rust_proto_library(**kwargs):
+    rust_proto_compile(**kwargs)
+    io_bazel_rules_rust(**kwargs)
 
-    # if "libc" not in existing:
-    #     http_archive(
-    #         name = "libc",
-    #         urls = ["https://github.com/rust-lang/libc/archive/%s.tar.gz" % libc_version],
-    #         sha256 = libc_sha256,
-    #         #tag = "0.2.20",
-    #         #build_file_content = libc_BUILD,
-    #     )
+def rust_grpc_library(**kwargs):
+    rust_grpc_compile(**kwargs)
+    rust_proto_library(**kwargs)