build: update golang/protobuf to v1.3.0 (#3732)

diff --git a/external.bzl b/external.bzl
index e50dd52..af842eb 100644
--- a/external.bzl
+++ b/external.bzl
@@ -298,7 +298,7 @@
         importpath = "github.com/golang/protobuf",
         patch_args = ["-p1"],
         patches = ["@io_bazel_rules_go//third_party:com_github_golang_protobuf-extras.patch"],
-        tag = "v1.2.0",
+        tag = "v1.3.0",
     )
 
     maybe(
@@ -328,7 +328,7 @@
     maybe(
         go_repository,
         name = "org_golang_x_sync",
-        commit = "1d60e4601c6fd243af51cc01ddf169918a5407ca",
+        commit = "42b317875d0f",
         custom = "sync",
         custom_git = "https://github.com/golang/sync.git",
         importpath = "golang.org/x/sync",
@@ -405,7 +405,7 @@
     maybe(
         go_repository,
         name = "org_golang_x_net",
-        commit = "d26f9f9a57f3fab6a695bec0d84433c2c50f8bbf",
+        commit = "3a22650c66bd",
         custom = "x_net",
         custom_git = "https://github.com/golang/net.git",
         importpath = "golang.org/x/net",
diff --git a/go.mod b/go.mod
index 12f0e23..258727d 100644
--- a/go.mod
+++ b/go.mod
@@ -8,7 +8,7 @@
 	github.com/beevik/etree v1.1.0
 	github.com/dsnet/compress v0.0.1 // indirect
 	github.com/ghodss/yaml v1.0.1-0.20180820084758-c7ce16629ff4
-	github.com/golang/protobuf v1.2.0
+	github.com/golang/protobuf v1.3.0
 	github.com/golang/snappy v0.0.1
 	github.com/google/brotli v0.0.0-20180626090807-ee2a5e1540
 	github.com/google/go-cmp v0.2.0
@@ -34,11 +34,11 @@
 	github.com/syndtr/goleveldb v0.0.0-20180521045021-5d6fca44a948
 	github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect
 	go.opencensus.io v0.15.0 // indirect
-	golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3
+	golang.org/x/net v0.0.0-20190213061140-3a22650c66bd
 	golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be
-	golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f
+	golang.org/x/sync v0.0.0-20181108010431-42b317875d0f
 	golang.org/x/text v0.3.0
-	golang.org/x/tools v0.0.0-20190206175659-4892ae6946ab
+	golang.org/x/tools v0.0.0-20190228203856-589c23e65e65
 	google.golang.org/api v0.0.0-20180404000327-3097bf831ede
 	google.golang.org/grpc v1.16.0
 	gopkg.in/yaml.v2 v2.2.2 // indirect
diff --git a/go.sum b/go.sum
index 8d7f2fb..15cda50 100644
--- a/go.sum
+++ b/go.sum
@@ -11,28 +11,25 @@
 github.com/beevik/etree v1.1.0 h1:T0xke/WvNtMoCqgzPhkX2r4rjY3GDZFi+FjpRZY2Jbs=
 github.com/beevik/etree v1.1.0/go.mod h1:r8Aw8JqVegEf0w2fDnATrX9VpkMcyFeM0FhwO62wh+A=
 github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
-github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/dsnet/compress v0.0.1 h1:PlZu0n3Tuv04TzpfPbrnI0HW/YwodEXDS+oPKahKF0Q=
 github.com/dsnet/compress v0.0.1/go.mod h1:Aw8dCMJ7RioblQeTqt88akK31OvO8Dhf5JflhBbQEHo=
 github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY=
-github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I=
 github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
 github.com/ghodss/yaml v1.0.1-0.20180820084758-c7ce16629ff4 h1:PaTU+9BARuIOAz1ixvps39DJjfq/SxOj3axzIlh7nFo=
 github.com/ghodss/yaml v1.0.1-0.20180820084758-c7ce16629ff4/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
-github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
 github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E=
 github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
-github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM=
 github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.0 h1:kbxbvI4Un1LUWKxufD+BiE6AEExYYgkQLQmLFqA1LFk=
+github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0=
 github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4=
 github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
 github.com/google/brotli v0.0.0-20180626090807-ee2a5e1540 h1:p7yBiLWuNlevGWjy6uvLhyGogmYywbO9M5TKbhZam/o=
 github.com/google/brotli v0.0.0-20180626090807-ee2a5e1540/go.mod h1:XpGqLY1HgMKTQI5TU8iAKE/okaKqS9h1e6KRlRztlOU=
 github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ=
 github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
-github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
 github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
 github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us=
 github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20=
@@ -44,11 +41,9 @@
 github.com/googleapis/gax-go v1.0.1/go.mod h1:5VvnLYVimBt+hOVlFtJDkYQHVmk4K27qHHioZjPbYAI=
 github.com/googleapis/gax-go/v2 v2.0.2 h1:/rNgUniLy2vDXiK2xyJOcirGpC3G99dtK1NWx26WZ8Y=
 github.com/googleapis/gax-go/v2 v2.0.2/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg=
-github.com/gorilla/websocket v1.4.0 h1:WDFjx/TMzVgy9VdMMQi2K2Emtwi2QcUQsztZ/zLaH/Q=
 github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
 github.com/hanwen/go-fuse v1.0.0 h1:GxS9Zrn6c35/BnfiVsZVWmsG803xwE7eVRDvcf/BEVc=
 github.com/hanwen/go-fuse v1.0.0/go.mod h1:unqXarDXqzAk0rt98O2tVndEPIpUgLD9+rwFisZH3Ok=
-github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI=
 github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
 github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U=
 github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ=
@@ -62,16 +57,13 @@
 github.com/nwaples/rardecode v1.0.0 h1:r7vGuS5akxOnR4JQSkko62RJ1ReCMXxQRPtxsiFMBOs=
 github.com/nwaples/rardecode v1.0.0/go.mod h1:5DzqNKiOdpKKBH87u8VlvAnPZMXcGRhxWkRpHbbfGS0=
 github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.8.0 h1:VkHVNpR4iVnU8XQR6DBm8BqYjN7CRzw+xKUbVVbbW9w=
 github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/gomega v1.5.0 h1:izbySO9zDPmjJ8rDjLvkA2zJHIo+HkYXHnf7eN7SSyo=
 github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
 github.com/pierrec/lz4 v0.0.0-20190131084431-473cd7ce01a1 h1:0utzB5Mn6QyMzIeOn+oD7pjKQLjJwfM9bz6TkPPdxcw=
 github.com/pierrec/lz4 v0.0.0-20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc=
 github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
 github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA=
-github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 github.com/sergi/go-diff v0.0.0-20180205163309-da645544ed44 h1:UoZTeCJuGZpwXXqamtSHypwjqpyGdR9smB5iMleBDJ8=
 github.com/sergi/go-diff v0.0.0-20180205163309-da645544ed44/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
@@ -80,7 +72,6 @@
 github.com/sourcegraph/jsonrpc2 v0.0.0-20180501180217-a3d86c792f0f h1:mHcjtPCPBj4hKeRIwIU/R+Tn6TEBvDZPQnhOquzzAgA=
 github.com/sourcegraph/jsonrpc2 v0.0.0-20180501180217-a3d86c792f0f/go.mod h1:eESpbCslcLDs8j2D7IEdGVgul7xuk9odqDTaor30IUU=
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
 github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
 github.com/syndtr/goleveldb v0.0.0-20180521045021-5d6fca44a948 h1:n8Rd8KkRs+zblDP/Wt1guL6IKr+IF9Vq9Mn+5KqvSpw=
 github.com/syndtr/goleveldb v0.0.0-20180521045021-5d6fca44a948/go.mod h1:Z4AUp2Km+PwemOoO/VB5AOx9XSsIItzFjoJlOSiYmn0=
@@ -91,15 +82,16 @@
 go.opencensus.io v0.15.0 h1:r1SzcjSm4ybA0qZs3B4QYX072f8gK61Kh0qtwyFpfdk=
 go.opencensus.io v0.15.0/go.mod h1:UffZAU+4sDEINUGP/B7UfBBkq4fqLu9zXAX7ke6CHW0=
 golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
+golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3 h1:ulvT7fqt0yHWzpJwI57MezWnYDVpCAYBVuYst/L+fAY=
-golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190213061140-3a22650c66bd h1:HuTn7WObtcDo9uEEU7rEqL0jYthdXAmZ6PP+meazmaU=
+golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be h1:vEDujvNQGv4jgYKudGeI/+DAX4Jffq6hpD55MmoEvKs=
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
-golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f h1:wMNYb4v58l5UBM7MYRLPG6ZhfOqbKu7X5eyFl8ZhKvA=
 golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sys v0.0.0-20180830151530-49385e6e1522 h1:Ve1ORMCxvRmSXBwJK+t3Oy+V2vRW2OetUQBq4rJIkZE=
+golang.org/x/sync v0.0.0-20181108010431-42b317875d0f h1:Bl/8QSvNqXvPGPGXa2z5xUTmV7VDcZyvRZ+QQXkXTZQ=
+golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190130150945-aca44879d564 h1:o6ENHFwwr1TZ9CUPQcfo1HGvLP1OPsPOTB7xCIOPNmU=
@@ -107,21 +99,19 @@
 golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20190206175659-4892ae6946ab h1:sdt20jFck8SCqI78a71BatxIf/EDLZJpgR2DuQaMMdE=
-golang.org/x/tools v0.0.0-20190206175659-4892ae6946ab/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190228203856-589c23e65e65 h1:BBwyOPVomIgLIdstraZlzhvsU8izPeuJ/kpowjK4+Y4=
+golang.org/x/tools v0.0.0-20190228203856-589c23e65e65/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
 google.golang.org/api v0.0.0-20180404000327-3097bf831ede h1:IpOSFMKDfs+avkALa1/nT42Cp6cEavc+cJUAg46ovmQ=
 google.golang.org/api v0.0.0-20180404000327-3097bf831ede/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0=
-google.golang.org/appengine v1.1.0 h1:igQkv0AAhEIvTEpD5LIpAfav2eeVO9HBTjvKHVJPRSs=
 google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
-google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 h1:Nw54tB0rB7hY/N0NQvRW8DG4Yk3Q6T9cu9RcFQDu1tc=
+google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
+google.golang.org/genproto v0.0.0-20180831171423-11092d34479b h1:lohp5blsw53GBXtLyLNaTXPXS9pJ1tiTw61ZHUoE9Qw=
+google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
 google.golang.org/grpc v1.16.0 h1:dz5IJGuC2BB7qXR5AyHNwAUBhZscK2xVez7mznh72sY=
 google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio=
-gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4=
 gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
-gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
 gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
 gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
diff --git a/kythe/go/util/riegeli/riegeli_test_go_proto/riegeli_test.pb.go b/kythe/go/util/riegeli/riegeli_test_go_proto/riegeli_test.pb.go
index a4d8e8b..bda8eff 100644
--- a/kythe/go/util/riegeli/riegeli_test_go_proto/riegeli_test.pb.go
+++ b/kythe/go/util/riegeli/riegeli_test_go_proto/riegeli_test.pb.go
@@ -3,9 +3,11 @@
 
 package riegeli_test_go_proto
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -16,7 +18,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type Simple struct {
 	Name                 *string  `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
@@ -29,16 +31,17 @@
 func (m *Simple) String() string { return proto.CompactTextString(m) }
 func (*Simple) ProtoMessage()    {}
 func (*Simple) Descriptor() ([]byte, []int) {
-	return fileDescriptor_riegeli_test_ad4413a3829fc90c, []int{0}
+	return fileDescriptor_b786c6e75369a723, []int{0}
 }
+
 func (m *Simple) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Simple.Unmarshal(m, b)
 }
 func (m *Simple) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Simple.Marshal(b, m, deterministic)
 }
-func (dst *Simple) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Simple.Merge(dst, src)
+func (m *Simple) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Simple.Merge(m, src)
 }
 func (m *Simple) XXX_Size() int {
 	return xxx_messageInfo_Simple.Size(m)
@@ -74,16 +77,17 @@
 func (m *Complex) String() string { return proto.CompactTextString(m) }
 func (*Complex) ProtoMessage()    {}
 func (*Complex) Descriptor() ([]byte, []int) {
-	return fileDescriptor_riegeli_test_ad4413a3829fc90c, []int{1}
+	return fileDescriptor_b786c6e75369a723, []int{1}
 }
+
 func (m *Complex) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Complex.Unmarshal(m, b)
 }
 func (m *Complex) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Complex.Marshal(b, m, deterministic)
 }
-func (dst *Complex) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Complex.Merge(dst, src)
+func (m *Complex) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Complex.Merge(m, src)
 }
 func (m *Complex) XXX_Size() int {
 	return xxx_messageInfo_Complex.Size(m)
@@ -161,16 +165,17 @@
 func (m *Complex_Group) String() string { return proto.CompactTextString(m) }
 func (*Complex_Group) ProtoMessage()    {}
 func (*Complex_Group) Descriptor() ([]byte, []int) {
-	return fileDescriptor_riegeli_test_ad4413a3829fc90c, []int{1, 0}
+	return fileDescriptor_b786c6e75369a723, []int{1, 0}
 }
+
 func (m *Complex_Group) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Complex_Group.Unmarshal(m, b)
 }
 func (m *Complex_Group) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Complex_Group.Marshal(b, m, deterministic)
 }
-func (dst *Complex_Group) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Complex_Group.Merge(dst, src)
+func (m *Complex_Group) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Complex_Group.Merge(m, src)
 }
 func (m *Complex_Group) XXX_Size() int {
 	return xxx_messageInfo_Complex_Group.Size(m)
@@ -195,10 +200,10 @@
 }
 
 func init() {
-	proto.RegisterFile("kythe/go/util/riegeli/riegeli_test.proto", fileDescriptor_riegeli_test_ad4413a3829fc90c)
+	proto.RegisterFile("kythe/go/util/riegeli/riegeli_test.proto", fileDescriptor_b786c6e75369a723)
 }
 
-var fileDescriptor_riegeli_test_ad4413a3829fc90c = []byte{
+var fileDescriptor_b786c6e75369a723 = []byte{
 	// 282 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x90, 0x4f, 0x4b, 0x03, 0x31,
 	0x10, 0xc5, 0x49, 0xb7, 0xbb, 0xab, 0x63, 0x2b, 0x12, 0x90, 0x06, 0xf1, 0x10, 0x7b, 0x31, 0xa7,
diff --git a/kythe/proto/analysis_go_proto/analysis.pb.go b/kythe/proto/analysis_go_proto/analysis.pb.go
index b1f4b0b..4d0efa5 100644
--- a/kythe/proto/analysis_go_proto/analysis.pb.go
+++ b/kythe/proto/analysis_go_proto/analysis.pb.go
@@ -3,11 +3,13 @@
 
 package analysis_go_proto
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import any "github.com/golang/protobuf/ptypes/any"
-import storage_go_proto "kythe.io/kythe/proto/storage_go_proto"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	any "github.com/golang/protobuf/ptypes/any"
+	storage_go_proto "kythe.io/kythe/proto/storage_go_proto"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -18,7 +20,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type AnalysisResult_Status int32
 
@@ -33,6 +35,7 @@
 	1: "INCOMPLETE",
 	2: "INVALID_REQUEST",
 }
+
 var AnalysisResult_Status_value = map[string]int32{
 	"COMPLETE":        0,
 	"INCOMPLETE":      1,
@@ -42,8 +45,9 @@
 func (x AnalysisResult_Status) String() string {
 	return proto.EnumName(AnalysisResult_Status_name, int32(x))
 }
+
 func (AnalysisResult_Status) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_analysis_4ba6188b87e0d17e, []int{2, 0}
+	return fileDescriptor_8e4ea7eca60afe48, []int{2, 0}
 }
 
 type AnalysisRequest struct {
@@ -60,16 +64,17 @@
 func (m *AnalysisRequest) String() string { return proto.CompactTextString(m) }
 func (*AnalysisRequest) ProtoMessage()    {}
 func (*AnalysisRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_analysis_4ba6188b87e0d17e, []int{0}
+	return fileDescriptor_8e4ea7eca60afe48, []int{0}
 }
+
 func (m *AnalysisRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AnalysisRequest.Unmarshal(m, b)
 }
 func (m *AnalysisRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_AnalysisRequest.Marshal(b, m, deterministic)
 }
-func (dst *AnalysisRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AnalysisRequest.Merge(dst, src)
+func (m *AnalysisRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AnalysisRequest.Merge(m, src)
 }
 func (m *AnalysisRequest) XXX_Size() int {
 	return xxx_messageInfo_AnalysisRequest.Size(m)
@@ -120,16 +125,17 @@
 func (m *AnalysisOutput) String() string { return proto.CompactTextString(m) }
 func (*AnalysisOutput) ProtoMessage()    {}
 func (*AnalysisOutput) Descriptor() ([]byte, []int) {
-	return fileDescriptor_analysis_4ba6188b87e0d17e, []int{1}
+	return fileDescriptor_8e4ea7eca60afe48, []int{1}
 }
+
 func (m *AnalysisOutput) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AnalysisOutput.Unmarshal(m, b)
 }
 func (m *AnalysisOutput) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_AnalysisOutput.Marshal(b, m, deterministic)
 }
-func (dst *AnalysisOutput) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AnalysisOutput.Merge(dst, src)
+func (m *AnalysisOutput) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AnalysisOutput.Merge(m, src)
 }
 func (m *AnalysisOutput) XXX_Size() int {
 	return xxx_messageInfo_AnalysisOutput.Size(m)
@@ -166,16 +172,17 @@
 func (m *AnalysisResult) String() string { return proto.CompactTextString(m) }
 func (*AnalysisResult) ProtoMessage()    {}
 func (*AnalysisResult) Descriptor() ([]byte, []int) {
-	return fileDescriptor_analysis_4ba6188b87e0d17e, []int{2}
+	return fileDescriptor_8e4ea7eca60afe48, []int{2}
 }
+
 func (m *AnalysisResult) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AnalysisResult.Unmarshal(m, b)
 }
 func (m *AnalysisResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_AnalysisResult.Marshal(b, m, deterministic)
 }
-func (dst *AnalysisResult) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AnalysisResult.Merge(dst, src)
+func (m *AnalysisResult) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AnalysisResult.Merge(m, src)
 }
 func (m *AnalysisResult) XXX_Size() int {
 	return xxx_messageInfo_AnalysisResult.Size(m)
@@ -220,16 +227,17 @@
 func (m *CompilationUnit) String() string { return proto.CompactTextString(m) }
 func (*CompilationUnit) ProtoMessage()    {}
 func (*CompilationUnit) Descriptor() ([]byte, []int) {
-	return fileDescriptor_analysis_4ba6188b87e0d17e, []int{3}
+	return fileDescriptor_8e4ea7eca60afe48, []int{3}
 }
+
 func (m *CompilationUnit) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CompilationUnit.Unmarshal(m, b)
 }
 func (m *CompilationUnit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CompilationUnit.Marshal(b, m, deterministic)
 }
-func (dst *CompilationUnit) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CompilationUnit.Merge(dst, src)
+func (m *CompilationUnit) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CompilationUnit.Merge(m, src)
 }
 func (m *CompilationUnit) XXX_Size() int {
 	return xxx_messageInfo_CompilationUnit.Size(m)
@@ -323,16 +331,17 @@
 func (m *CompilationUnit_FileInput) String() string { return proto.CompactTextString(m) }
 func (*CompilationUnit_FileInput) ProtoMessage()    {}
 func (*CompilationUnit_FileInput) Descriptor() ([]byte, []int) {
-	return fileDescriptor_analysis_4ba6188b87e0d17e, []int{3, 0}
+	return fileDescriptor_8e4ea7eca60afe48, []int{3, 0}
 }
+
 func (m *CompilationUnit_FileInput) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CompilationUnit_FileInput.Unmarshal(m, b)
 }
 func (m *CompilationUnit_FileInput) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CompilationUnit_FileInput.Marshal(b, m, deterministic)
 }
-func (dst *CompilationUnit_FileInput) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CompilationUnit_FileInput.Merge(dst, src)
+func (m *CompilationUnit_FileInput) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CompilationUnit_FileInput.Merge(m, src)
 }
 func (m *CompilationUnit_FileInput) XXX_Size() int {
 	return xxx_messageInfo_CompilationUnit_FileInput.Size(m)
@@ -376,16 +385,17 @@
 func (m *CompilationUnit_Env) String() string { return proto.CompactTextString(m) }
 func (*CompilationUnit_Env) ProtoMessage()    {}
 func (*CompilationUnit_Env) Descriptor() ([]byte, []int) {
-	return fileDescriptor_analysis_4ba6188b87e0d17e, []int{3, 1}
+	return fileDescriptor_8e4ea7eca60afe48, []int{3, 1}
 }
+
 func (m *CompilationUnit_Env) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CompilationUnit_Env.Unmarshal(m, b)
 }
 func (m *CompilationUnit_Env) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CompilationUnit_Env.Marshal(b, m, deterministic)
 }
-func (dst *CompilationUnit_Env) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CompilationUnit_Env.Merge(dst, src)
+func (m *CompilationUnit_Env) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CompilationUnit_Env.Merge(m, src)
 }
 func (m *CompilationUnit_Env) XXX_Size() int {
 	return xxx_messageInfo_CompilationUnit_Env.Size(m)
@@ -421,16 +431,17 @@
 func (m *FilesRequest) String() string { return proto.CompactTextString(m) }
 func (*FilesRequest) ProtoMessage()    {}
 func (*FilesRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_analysis_4ba6188b87e0d17e, []int{4}
+	return fileDescriptor_8e4ea7eca60afe48, []int{4}
 }
+
 func (m *FilesRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_FilesRequest.Unmarshal(m, b)
 }
 func (m *FilesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_FilesRequest.Marshal(b, m, deterministic)
 }
-func (dst *FilesRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FilesRequest.Merge(dst, src)
+func (m *FilesRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FilesRequest.Merge(m, src)
 }
 func (m *FilesRequest) XXX_Size() int {
 	return xxx_messageInfo_FilesRequest.Size(m)
@@ -460,16 +471,17 @@
 func (m *FileInfo) String() string { return proto.CompactTextString(m) }
 func (*FileInfo) ProtoMessage()    {}
 func (*FileInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_analysis_4ba6188b87e0d17e, []int{5}
+	return fileDescriptor_8e4ea7eca60afe48, []int{5}
 }
+
 func (m *FileInfo) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_FileInfo.Unmarshal(m, b)
 }
 func (m *FileInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_FileInfo.Marshal(b, m, deterministic)
 }
-func (dst *FileInfo) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FileInfo.Merge(dst, src)
+func (m *FileInfo) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FileInfo.Merge(m, src)
 }
 func (m *FileInfo) XXX_Size() int {
 	return xxx_messageInfo_FileInfo.Size(m)
@@ -507,16 +519,17 @@
 func (m *FileData) String() string { return proto.CompactTextString(m) }
 func (*FileData) ProtoMessage()    {}
 func (*FileData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_analysis_4ba6188b87e0d17e, []int{6}
+	return fileDescriptor_8e4ea7eca60afe48, []int{6}
 }
+
 func (m *FileData) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_FileData.Unmarshal(m, b)
 }
 func (m *FileData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_FileData.Marshal(b, m, deterministic)
 }
-func (dst *FileData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FileData.Merge(dst, src)
+func (m *FileData) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FileData.Merge(m, src)
 }
 func (m *FileData) XXX_Size() int {
 	return xxx_messageInfo_FileData.Size(m)
@@ -560,16 +573,17 @@
 func (m *CompilationBundle) String() string { return proto.CompactTextString(m) }
 func (*CompilationBundle) ProtoMessage()    {}
 func (*CompilationBundle) Descriptor() ([]byte, []int) {
-	return fileDescriptor_analysis_4ba6188b87e0d17e, []int{7}
+	return fileDescriptor_8e4ea7eca60afe48, []int{7}
 }
+
 func (m *CompilationBundle) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CompilationBundle.Unmarshal(m, b)
 }
 func (m *CompilationBundle) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CompilationBundle.Marshal(b, m, deterministic)
 }
-func (dst *CompilationBundle) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CompilationBundle.Merge(dst, src)
+func (m *CompilationBundle) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CompilationBundle.Merge(m, src)
 }
 func (m *CompilationBundle) XXX_Size() int {
 	return xxx_messageInfo_CompilationBundle.Size(m)
@@ -606,16 +620,17 @@
 func (m *IndexedCompilation) String() string { return proto.CompactTextString(m) }
 func (*IndexedCompilation) ProtoMessage()    {}
 func (*IndexedCompilation) Descriptor() ([]byte, []int) {
-	return fileDescriptor_analysis_4ba6188b87e0d17e, []int{8}
+	return fileDescriptor_8e4ea7eca60afe48, []int{8}
 }
+
 func (m *IndexedCompilation) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_IndexedCompilation.Unmarshal(m, b)
 }
 func (m *IndexedCompilation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_IndexedCompilation.Marshal(b, m, deterministic)
 }
-func (dst *IndexedCompilation) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_IndexedCompilation.Merge(dst, src)
+func (m *IndexedCompilation) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_IndexedCompilation.Merge(m, src)
 }
 func (m *IndexedCompilation) XXX_Size() int {
 	return xxx_messageInfo_IndexedCompilation.Size(m)
@@ -651,16 +666,17 @@
 func (m *IndexedCompilation_Index) String() string { return proto.CompactTextString(m) }
 func (*IndexedCompilation_Index) ProtoMessage()    {}
 func (*IndexedCompilation_Index) Descriptor() ([]byte, []int) {
-	return fileDescriptor_analysis_4ba6188b87e0d17e, []int{8, 0}
+	return fileDescriptor_8e4ea7eca60afe48, []int{8, 0}
 }
+
 func (m *IndexedCompilation_Index) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_IndexedCompilation_Index.Unmarshal(m, b)
 }
 func (m *IndexedCompilation_Index) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_IndexedCompilation_Index.Marshal(b, m, deterministic)
 }
-func (dst *IndexedCompilation_Index) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_IndexedCompilation_Index.Merge(dst, src)
+func (m *IndexedCompilation_Index) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_IndexedCompilation_Index.Merge(m, src)
 }
 func (m *IndexedCompilation_Index) XXX_Size() int {
 	return xxx_messageInfo_IndexedCompilation_Index.Size(m)
@@ -679,6 +695,7 @@
 }
 
 func init() {
+	proto.RegisterEnum("kythe.proto.AnalysisResult_Status", AnalysisResult_Status_name, AnalysisResult_Status_value)
 	proto.RegisterType((*AnalysisRequest)(nil), "kythe.proto.AnalysisRequest")
 	proto.RegisterType((*AnalysisOutput)(nil), "kythe.proto.AnalysisOutput")
 	proto.RegisterType((*AnalysisResult)(nil), "kythe.proto.AnalysisResult")
@@ -691,14 +708,11 @@
 	proto.RegisterType((*CompilationBundle)(nil), "kythe.proto.CompilationBundle")
 	proto.RegisterType((*IndexedCompilation)(nil), "kythe.proto.IndexedCompilation")
 	proto.RegisterType((*IndexedCompilation_Index)(nil), "kythe.proto.IndexedCompilation.Index")
-	proto.RegisterEnum("kythe.proto.AnalysisResult_Status", AnalysisResult_Status_name, AnalysisResult_Status_value)
 }
 
-func init() {
-	proto.RegisterFile("kythe/proto/analysis.proto", fileDescriptor_analysis_4ba6188b87e0d17e)
-}
+func init() { proto.RegisterFile("kythe/proto/analysis.proto", fileDescriptor_8e4ea7eca60afe48) }
 
-var fileDescriptor_analysis_4ba6188b87e0d17e = []byte{
+var fileDescriptor_8e4ea7eca60afe48 = []byte{
 	// 842 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0x5f, 0x6f, 0xdb, 0x36,
 	0x10, 0x9f, 0xe2, 0x7f, 0xf2, 0xc9, 0x4d, 0x1c, 0xae, 0x1b, 0x54, 0xaf, 0x43, 0x0d, 0x0d, 0x1d,
diff --git a/kythe/proto/analysis_service_go_proto/analysis_service.pb.go b/kythe/proto/analysis_service_go_proto/analysis_service.pb.go
index c7db88b..95cccc4 100644
--- a/kythe/proto/analysis_service_go_proto/analysis_service.pb.go
+++ b/kythe/proto/analysis_service_go_proto/analysis_service.pb.go
@@ -3,10 +3,12 @@
 
 package analysis_service_go_proto
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import _ "kythe.io/kythe/proto/analysis_go_proto"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	_ "kythe.io/kythe/proto/analysis_go_proto"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -17,13 +19,11 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
-func init() {
-	proto.RegisterFile("kythe/proto/analysis_service.proto", fileDescriptor_analysis_service_51d82adda7e91290)
-}
+func init() { proto.RegisterFile("kythe/proto/analysis_service.proto", fileDescriptor_465e5f838439a146) }
 
-var fileDescriptor_analysis_service_51d82adda7e91290 = []byte{
+var fileDescriptor_465e5f838439a146 = []byte{
 	// 204 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0xca, 0xae, 0x2c, 0xc9,
 	0x48, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0xd7, 0x4f, 0xcc, 0x4b, 0xcc, 0xa9, 0x2c, 0xce, 0x2c,
diff --git a/kythe/proto/buildinfo_go_proto/buildinfo.pb.go b/kythe/proto/buildinfo_go_proto/buildinfo.pb.go
index fdf9395..deaf0df 100644
--- a/kythe/proto/buildinfo_go_proto/buildinfo.pb.go
+++ b/kythe/proto/buildinfo_go_proto/buildinfo.pb.go
@@ -3,9 +3,11 @@
 
 package buildinfo_go_proto
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -16,7 +18,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type BuildDetails struct {
 	BuildTarget          string   `protobuf:"bytes,1,opt,name=build_target,json=buildTarget,proto3" json:"build_target,omitempty"`
@@ -31,16 +33,17 @@
 func (m *BuildDetails) String() string { return proto.CompactTextString(m) }
 func (*BuildDetails) ProtoMessage()    {}
 func (*BuildDetails) Descriptor() ([]byte, []int) {
-	return fileDescriptor_buildinfo_fe2d8b42a73b6097, []int{0}
+	return fileDescriptor_eab47dfb43d1d01f, []int{0}
 }
+
 func (m *BuildDetails) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_BuildDetails.Unmarshal(m, b)
 }
 func (m *BuildDetails) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_BuildDetails.Marshal(b, m, deterministic)
 }
-func (dst *BuildDetails) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_BuildDetails.Merge(dst, src)
+func (m *BuildDetails) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BuildDetails.Merge(m, src)
 }
 func (m *BuildDetails) XXX_Size() int {
 	return xxx_messageInfo_BuildDetails.Size(m)
@@ -76,11 +79,9 @@
 	proto.RegisterType((*BuildDetails)(nil), "kythe.proto.BuildDetails")
 }
 
-func init() {
-	proto.RegisterFile("kythe/proto/buildinfo.proto", fileDescriptor_buildinfo_fe2d8b42a73b6097)
-}
+func init() { proto.RegisterFile("kythe/proto/buildinfo.proto", fileDescriptor_eab47dfb43d1d01f) }
 
-var fileDescriptor_buildinfo_fe2d8b42a73b6097 = []byte{
+var fileDescriptor_eab47dfb43d1d01f = []byte{
 	// 175 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0xce, 0xae, 0x2c, 0xc9,
 	0x48, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0xd7, 0x4f, 0x2a, 0xcd, 0xcc, 0x49, 0xc9, 0xcc, 0x4b,
diff --git a/kythe/proto/claim_go_proto/claim.pb.go b/kythe/proto/claim_go_proto/claim.pb.go
index ee13370..67d818c 100644
--- a/kythe/proto/claim_go_proto/claim.pb.go
+++ b/kythe/proto/claim_go_proto/claim.pb.go
@@ -3,10 +3,12 @@
 
 package claim_go_proto
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import storage_go_proto "kythe.io/kythe/proto/storage_go_proto"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	storage_go_proto "kythe.io/kythe/proto/storage_go_proto"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -17,7 +19,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type ClaimAssignment struct {
 	CompilationVName     *storage_go_proto.VName `protobuf:"bytes,1,opt,name=compilation_v_name,json=compilationVName,proto3" json:"compilation_v_name,omitempty"`
@@ -31,16 +33,17 @@
 func (m *ClaimAssignment) String() string { return proto.CompactTextString(m) }
 func (*ClaimAssignment) ProtoMessage()    {}
 func (*ClaimAssignment) Descriptor() ([]byte, []int) {
-	return fileDescriptor_claim_43b2d156c892fe7a, []int{0}
+	return fileDescriptor_4321fa1d8e7ef1ee, []int{0}
 }
+
 func (m *ClaimAssignment) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ClaimAssignment.Unmarshal(m, b)
 }
 func (m *ClaimAssignment) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ClaimAssignment.Marshal(b, m, deterministic)
 }
-func (dst *ClaimAssignment) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ClaimAssignment.Merge(dst, src)
+func (m *ClaimAssignment) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ClaimAssignment.Merge(m, src)
 }
 func (m *ClaimAssignment) XXX_Size() int {
 	return xxx_messageInfo_ClaimAssignment.Size(m)
@@ -69,9 +72,9 @@
 	proto.RegisterType((*ClaimAssignment)(nil), "kythe.proto.ClaimAssignment")
 }
 
-func init() { proto.RegisterFile("kythe/proto/claim.proto", fileDescriptor_claim_43b2d156c892fe7a) }
+func init() { proto.RegisterFile("kythe/proto/claim.proto", fileDescriptor_4321fa1d8e7ef1ee) }
 
-var fileDescriptor_claim_43b2d156c892fe7a = []byte{
+var fileDescriptor_4321fa1d8e7ef1ee = []byte{
 	// 191 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0xcf, 0xae, 0x2c, 0xc9,
 	0x48, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0xd7, 0x4f, 0xce, 0x49, 0xcc, 0xcc, 0xd5, 0x03, 0xb3,
diff --git a/kythe/proto/common_go_proto/common.pb.go b/kythe/proto/common_go_proto/common.pb.go
index 4c3007c..ca3f684 100644
--- a/kythe/proto/common_go_proto/common.pb.go
+++ b/kythe/proto/common_go_proto/common.pb.go
@@ -3,9 +3,11 @@
 
 package common_go_proto
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -16,7 +18,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type Link_Kind int32
 
@@ -33,6 +35,7 @@
 	2:   "LIST_ITEM",
 	999: "IMPORTANT",
 }
+
 var Link_Kind_value = map[string]int32{
 	"DEFINITION": 0,
 	"LIST":       1,
@@ -43,8 +46,9 @@
 func (x Link_Kind) String() string {
 	return proto.EnumName(Link_Kind_name, int32(x))
 }
+
 func (Link_Kind) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_common_1d80375ed42fe73a, []int{7, 0}
+	return fileDescriptor_4bc2df0444c25309, []int{7, 0}
 }
 
 type MarkedSource_Kind int32
@@ -74,6 +78,7 @@
 	8: "PARAMETER_LOOKUP_BY_PARAM_WITH_DEFAULTS",
 	9: "LOOKUP_BY_TYPED",
 }
+
 var MarkedSource_Kind_value = map[string]int32{
 	"BOX":                       0,
 	"TYPE":                      1,
@@ -90,8 +95,9 @@
 func (x MarkedSource_Kind) String() string {
 	return proto.EnumName(MarkedSource_Kind_name, int32(x))
 }
+
 func (MarkedSource_Kind) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_common_1d80375ed42fe73a, []int{8, 0}
+	return fileDescriptor_4bc2df0444c25309, []int{8, 0}
 }
 
 type Fact struct {
@@ -106,16 +112,17 @@
 func (m *Fact) String() string { return proto.CompactTextString(m) }
 func (*Fact) ProtoMessage()    {}
 func (*Fact) Descriptor() ([]byte, []int) {
-	return fileDescriptor_common_1d80375ed42fe73a, []int{0}
+	return fileDescriptor_4bc2df0444c25309, []int{0}
 }
+
 func (m *Fact) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Fact.Unmarshal(m, b)
 }
 func (m *Fact) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Fact.Marshal(b, m, deterministic)
 }
-func (dst *Fact) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Fact.Merge(dst, src)
+func (m *Fact) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Fact.Merge(m, src)
 }
 func (m *Fact) XXX_Size() int {
 	return xxx_messageInfo_Fact.Size(m)
@@ -153,16 +160,17 @@
 func (m *Point) String() string { return proto.CompactTextString(m) }
 func (*Point) ProtoMessage()    {}
 func (*Point) Descriptor() ([]byte, []int) {
-	return fileDescriptor_common_1d80375ed42fe73a, []int{1}
+	return fileDescriptor_4bc2df0444c25309, []int{1}
 }
+
 func (m *Point) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Point.Unmarshal(m, b)
 }
 func (m *Point) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Point.Marshal(b, m, deterministic)
 }
-func (dst *Point) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Point.Merge(dst, src)
+func (m *Point) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Point.Merge(m, src)
 }
 func (m *Point) XXX_Size() int {
 	return xxx_messageInfo_Point.Size(m)
@@ -206,16 +214,17 @@
 func (m *Span) String() string { return proto.CompactTextString(m) }
 func (*Span) ProtoMessage()    {}
 func (*Span) Descriptor() ([]byte, []int) {
-	return fileDescriptor_common_1d80375ed42fe73a, []int{2}
+	return fileDescriptor_4bc2df0444c25309, []int{2}
 }
+
 func (m *Span) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Span.Unmarshal(m, b)
 }
 func (m *Span) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Span.Marshal(b, m, deterministic)
 }
-func (dst *Span) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Span.Merge(dst, src)
+func (m *Span) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Span.Merge(m, src)
 }
 func (m *Span) XXX_Size() int {
 	return xxx_messageInfo_Span.Size(m)
@@ -252,16 +261,17 @@
 func (m *NodeInfo) String() string { return proto.CompactTextString(m) }
 func (*NodeInfo) ProtoMessage()    {}
 func (*NodeInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_common_1d80375ed42fe73a, []int{3}
+	return fileDescriptor_4bc2df0444c25309, []int{3}
 }
+
 func (m *NodeInfo) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_NodeInfo.Unmarshal(m, b)
 }
 func (m *NodeInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_NodeInfo.Marshal(b, m, deterministic)
 }
-func (dst *NodeInfo) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_NodeInfo.Merge(dst, src)
+func (m *NodeInfo) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_NodeInfo.Merge(m, src)
 }
 func (m *NodeInfo) XXX_Size() int {
 	return xxx_messageInfo_NodeInfo.Size(m)
@@ -300,16 +310,17 @@
 func (m *Diagnostic) String() string { return proto.CompactTextString(m) }
 func (*Diagnostic) ProtoMessage()    {}
 func (*Diagnostic) Descriptor() ([]byte, []int) {
-	return fileDescriptor_common_1d80375ed42fe73a, []int{4}
+	return fileDescriptor_4bc2df0444c25309, []int{4}
 }
+
 func (m *Diagnostic) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Diagnostic.Unmarshal(m, b)
 }
 func (m *Diagnostic) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Diagnostic.Marshal(b, m, deterministic)
 }
-func (dst *Diagnostic) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Diagnostic.Merge(dst, src)
+func (m *Diagnostic) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Diagnostic.Merge(m, src)
 }
 func (m *Diagnostic) XXX_Size() int {
 	return xxx_messageInfo_Diagnostic.Size(m)
@@ -360,16 +371,17 @@
 func (m *ResolvedDiagnostic) String() string { return proto.CompactTextString(m) }
 func (*ResolvedDiagnostic) ProtoMessage()    {}
 func (*ResolvedDiagnostic) Descriptor() ([]byte, []int) {
-	return fileDescriptor_common_1d80375ed42fe73a, []int{5}
+	return fileDescriptor_4bc2df0444c25309, []int{5}
 }
+
 func (m *ResolvedDiagnostic) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ResolvedDiagnostic.Unmarshal(m, b)
 }
 func (m *ResolvedDiagnostic) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ResolvedDiagnostic.Marshal(b, m, deterministic)
 }
-func (dst *ResolvedDiagnostic) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ResolvedDiagnostic.Merge(dst, src)
+func (m *ResolvedDiagnostic) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ResolvedDiagnostic.Merge(m, src)
 }
 func (m *ResolvedDiagnostic) XXX_Size() int {
 	return xxx_messageInfo_ResolvedDiagnostic.Size(m)
@@ -407,16 +419,17 @@
 func (m *CorpusPath) String() string { return proto.CompactTextString(m) }
 func (*CorpusPath) ProtoMessage()    {}
 func (*CorpusPath) Descriptor() ([]byte, []int) {
-	return fileDescriptor_common_1d80375ed42fe73a, []int{6}
+	return fileDescriptor_4bc2df0444c25309, []int{6}
 }
+
 func (m *CorpusPath) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CorpusPath.Unmarshal(m, b)
 }
 func (m *CorpusPath) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CorpusPath.Marshal(b, m, deterministic)
 }
-func (dst *CorpusPath) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CorpusPath.Merge(dst, src)
+func (m *CorpusPath) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CorpusPath.Merge(m, src)
 }
 func (m *CorpusPath) XXX_Size() int {
 	return xxx_messageInfo_CorpusPath.Size(m)
@@ -460,16 +473,17 @@
 func (m *Link) String() string { return proto.CompactTextString(m) }
 func (*Link) ProtoMessage()    {}
 func (*Link) Descriptor() ([]byte, []int) {
-	return fileDescriptor_common_1d80375ed42fe73a, []int{7}
+	return fileDescriptor_4bc2df0444c25309, []int{7}
 }
+
 func (m *Link) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Link.Unmarshal(m, b)
 }
 func (m *Link) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Link.Marshal(b, m, deterministic)
 }
-func (dst *Link) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Link.Merge(dst, src)
+func (m *Link) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Link.Merge(m, src)
 }
 func (m *Link) XXX_Size() int {
 	return xxx_messageInfo_Link.Size(m)
@@ -514,16 +528,17 @@
 func (m *MarkedSource) String() string { return proto.CompactTextString(m) }
 func (*MarkedSource) ProtoMessage()    {}
 func (*MarkedSource) Descriptor() ([]byte, []int) {
-	return fileDescriptor_common_1d80375ed42fe73a, []int{8}
+	return fileDescriptor_4bc2df0444c25309, []int{8}
 }
+
 func (m *MarkedSource) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_MarkedSource.Unmarshal(m, b)
 }
 func (m *MarkedSource) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_MarkedSource.Marshal(b, m, deterministic)
 }
-func (dst *MarkedSource) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MarkedSource.Merge(dst, src)
+func (m *MarkedSource) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MarkedSource.Merge(m, src)
 }
 func (m *MarkedSource) XXX_Size() int {
 	return xxx_messageInfo_MarkedSource.Size(m)
@@ -609,16 +624,17 @@
 func (m *SymbolInfo) String() string { return proto.CompactTextString(m) }
 func (*SymbolInfo) ProtoMessage()    {}
 func (*SymbolInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_common_1d80375ed42fe73a, []int{9}
+	return fileDescriptor_4bc2df0444c25309, []int{9}
 }
+
 func (m *SymbolInfo) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_SymbolInfo.Unmarshal(m, b)
 }
 func (m *SymbolInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_SymbolInfo.Marshal(b, m, deterministic)
 }
-func (dst *SymbolInfo) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SymbolInfo.Merge(dst, src)
+func (m *SymbolInfo) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SymbolInfo.Merge(m, src)
 }
 func (m *SymbolInfo) XXX_Size() int {
 	return xxx_messageInfo_SymbolInfo.Size(m)
@@ -644,6 +660,8 @@
 }
 
 func init() {
+	proto.RegisterEnum("kythe.proto.common.Link_Kind", Link_Kind_name, Link_Kind_value)
+	proto.RegisterEnum("kythe.proto.common.MarkedSource_Kind", MarkedSource_Kind_name, MarkedSource_Kind_value)
 	proto.RegisterType((*Fact)(nil), "kythe.proto.common.Fact")
 	proto.RegisterType((*Point)(nil), "kythe.proto.common.Point")
 	proto.RegisterType((*Span)(nil), "kythe.proto.common.Span")
@@ -655,13 +673,11 @@
 	proto.RegisterType((*Link)(nil), "kythe.proto.common.Link")
 	proto.RegisterType((*MarkedSource)(nil), "kythe.proto.common.MarkedSource")
 	proto.RegisterType((*SymbolInfo)(nil), "kythe.proto.common.SymbolInfo")
-	proto.RegisterEnum("kythe.proto.common.Link_Kind", Link_Kind_name, Link_Kind_value)
-	proto.RegisterEnum("kythe.proto.common.MarkedSource_Kind", MarkedSource_Kind_name, MarkedSource_Kind_value)
 }
 
-func init() { proto.RegisterFile("kythe/proto/common.proto", fileDescriptor_common_1d80375ed42fe73a) }
+func init() { proto.RegisterFile("kythe/proto/common.proto", fileDescriptor_4bc2df0444c25309) }
 
-var fileDescriptor_common_1d80375ed42fe73a = []byte{
+var fileDescriptor_4bc2df0444c25309 = []byte{
 	// 947 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x55, 0xed, 0x8e, 0xda, 0x46,
 	0x14, 0xad, 0xc1, 0x2c, 0x70, 0xd9, 0x0f, 0x77, 0xba, 0x8a, 0xbc, 0x8d, 0x92, 0x50, 0x57, 0x69,
diff --git a/kythe/proto/cxx_go_proto/cxx.pb.go b/kythe/proto/cxx_go_proto/cxx.pb.go
index d473057..64098a5 100644
--- a/kythe/proto/cxx_go_proto/cxx.pb.go
+++ b/kythe/proto/cxx_go_proto/cxx.pb.go
@@ -3,9 +3,11 @@
 
 package cxx_go_proto
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -16,7 +18,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type CxxCompilationUnitDetails struct {
 	HeaderSearchInfo     *CxxCompilationUnitDetails_HeaderSearchInfo     `protobuf:"bytes,1,opt,name=header_search_info,json=headerSearchInfo,proto3" json:"header_search_info,omitempty"`
@@ -31,16 +33,17 @@
 func (m *CxxCompilationUnitDetails) String() string { return proto.CompactTextString(m) }
 func (*CxxCompilationUnitDetails) ProtoMessage()    {}
 func (*CxxCompilationUnitDetails) Descriptor() ([]byte, []int) {
-	return fileDescriptor_cxx_ad8115ae2e9e4f1c, []int{0}
+	return fileDescriptor_01bf80ce9e4f99a5, []int{0}
 }
+
 func (m *CxxCompilationUnitDetails) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CxxCompilationUnitDetails.Unmarshal(m, b)
 }
 func (m *CxxCompilationUnitDetails) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CxxCompilationUnitDetails.Marshal(b, m, deterministic)
 }
-func (dst *CxxCompilationUnitDetails) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CxxCompilationUnitDetails.Merge(dst, src)
+func (m *CxxCompilationUnitDetails) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CxxCompilationUnitDetails.Merge(m, src)
 }
 func (m *CxxCompilationUnitDetails) XXX_Size() int {
 	return xxx_messageInfo_CxxCompilationUnitDetails.Size(m)
@@ -87,16 +90,17 @@
 func (m *CxxCompilationUnitDetails_HeaderSearchDir) String() string { return proto.CompactTextString(m) }
 func (*CxxCompilationUnitDetails_HeaderSearchDir) ProtoMessage()    {}
 func (*CxxCompilationUnitDetails_HeaderSearchDir) Descriptor() ([]byte, []int) {
-	return fileDescriptor_cxx_ad8115ae2e9e4f1c, []int{0, 0}
+	return fileDescriptor_01bf80ce9e4f99a5, []int{0, 0}
 }
+
 func (m *CxxCompilationUnitDetails_HeaderSearchDir) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CxxCompilationUnitDetails_HeaderSearchDir.Unmarshal(m, b)
 }
 func (m *CxxCompilationUnitDetails_HeaderSearchDir) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CxxCompilationUnitDetails_HeaderSearchDir.Marshal(b, m, deterministic)
 }
-func (dst *CxxCompilationUnitDetails_HeaderSearchDir) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CxxCompilationUnitDetails_HeaderSearchDir.Merge(dst, src)
+func (m *CxxCompilationUnitDetails_HeaderSearchDir) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CxxCompilationUnitDetails_HeaderSearchDir.Merge(m, src)
 }
 func (m *CxxCompilationUnitDetails_HeaderSearchDir) XXX_Size() int {
 	return xxx_messageInfo_CxxCompilationUnitDetails_HeaderSearchDir.Size(m)
@@ -145,16 +149,17 @@
 }
 func (*CxxCompilationUnitDetails_HeaderSearchInfo) ProtoMessage() {}
 func (*CxxCompilationUnitDetails_HeaderSearchInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_cxx_ad8115ae2e9e4f1c, []int{0, 1}
+	return fileDescriptor_01bf80ce9e4f99a5, []int{0, 1}
 }
+
 func (m *CxxCompilationUnitDetails_HeaderSearchInfo) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CxxCompilationUnitDetails_HeaderSearchInfo.Unmarshal(m, b)
 }
 func (m *CxxCompilationUnitDetails_HeaderSearchInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CxxCompilationUnitDetails_HeaderSearchInfo.Marshal(b, m, deterministic)
 }
-func (dst *CxxCompilationUnitDetails_HeaderSearchInfo) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CxxCompilationUnitDetails_HeaderSearchInfo.Merge(dst, src)
+func (m *CxxCompilationUnitDetails_HeaderSearchInfo) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CxxCompilationUnitDetails_HeaderSearchInfo.Merge(m, src)
 }
 func (m *CxxCompilationUnitDetails_HeaderSearchInfo) XXX_Size() int {
 	return xxx_messageInfo_CxxCompilationUnitDetails_HeaderSearchInfo.Size(m)
@@ -202,16 +207,17 @@
 }
 func (*CxxCompilationUnitDetails_SystemHeaderPrefix) ProtoMessage() {}
 func (*CxxCompilationUnitDetails_SystemHeaderPrefix) Descriptor() ([]byte, []int) {
-	return fileDescriptor_cxx_ad8115ae2e9e4f1c, []int{0, 2}
+	return fileDescriptor_01bf80ce9e4f99a5, []int{0, 2}
 }
+
 func (m *CxxCompilationUnitDetails_SystemHeaderPrefix) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CxxCompilationUnitDetails_SystemHeaderPrefix.Unmarshal(m, b)
 }
 func (m *CxxCompilationUnitDetails_SystemHeaderPrefix) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CxxCompilationUnitDetails_SystemHeaderPrefix.Marshal(b, m, deterministic)
 }
-func (dst *CxxCompilationUnitDetails_SystemHeaderPrefix) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CxxCompilationUnitDetails_SystemHeaderPrefix.Merge(dst, src)
+func (m *CxxCompilationUnitDetails_SystemHeaderPrefix) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CxxCompilationUnitDetails_SystemHeaderPrefix.Merge(m, src)
 }
 func (m *CxxCompilationUnitDetails_SystemHeaderPrefix) XXX_Size() int {
 	return xxx_messageInfo_CxxCompilationUnitDetails_SystemHeaderPrefix.Size(m)
@@ -247,16 +253,17 @@
 func (m *CxxCompilationUnitDetails_StatPath) String() string { return proto.CompactTextString(m) }
 func (*CxxCompilationUnitDetails_StatPath) ProtoMessage()    {}
 func (*CxxCompilationUnitDetails_StatPath) Descriptor() ([]byte, []int) {
-	return fileDescriptor_cxx_ad8115ae2e9e4f1c, []int{0, 3}
+	return fileDescriptor_01bf80ce9e4f99a5, []int{0, 3}
 }
+
 func (m *CxxCompilationUnitDetails_StatPath) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CxxCompilationUnitDetails_StatPath.Unmarshal(m, b)
 }
 func (m *CxxCompilationUnitDetails_StatPath) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CxxCompilationUnitDetails_StatPath.Marshal(b, m, deterministic)
 }
-func (dst *CxxCompilationUnitDetails_StatPath) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CxxCompilationUnitDetails_StatPath.Merge(dst, src)
+func (m *CxxCompilationUnitDetails_StatPath) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CxxCompilationUnitDetails_StatPath.Merge(m, src)
 }
 func (m *CxxCompilationUnitDetails_StatPath) XXX_Size() int {
 	return xxx_messageInfo_CxxCompilationUnitDetails_StatPath.Size(m)
@@ -282,9 +289,9 @@
 	proto.RegisterType((*CxxCompilationUnitDetails_StatPath)(nil), "kythe.proto.CxxCompilationUnitDetails.StatPath")
 }
 
-func init() { proto.RegisterFile("kythe/proto/cxx.proto", fileDescriptor_cxx_ad8115ae2e9e4f1c) }
+func init() { proto.RegisterFile("kythe/proto/cxx.proto", fileDescriptor_01bf80ce9e4f99a5) }
 
-var fileDescriptor_cxx_ad8115ae2e9e4f1c = []byte{
+var fileDescriptor_01bf80ce9e4f99a5 = []byte{
 	// 418 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x52, 0x4d, 0x6f, 0xd4, 0x30,
 	0x10, 0x55, 0x76, 0xd9, 0x6a, 0x3b, 0x5b, 0x95, 0x95, 0xf9, 0x50, 0xc8, 0x01, 0x02, 0xa7, 0x9c,
diff --git a/kythe/proto/driver_go_proto/driver.pb.go b/kythe/proto/driver_go_proto/driver.pb.go
index 706fd7f..fa8296b 100644
--- a/kythe/proto/driver_go_proto/driver.pb.go
+++ b/kythe/proto/driver_go_proto/driver.pb.go
@@ -3,12 +3,14 @@
 
 package driver_go_proto
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import analysis_go_proto "kythe.io/kythe/proto/analysis_go_proto"
-import common_go_proto "kythe.io/kythe/proto/common_go_proto"
-import storage_go_proto "kythe.io/kythe/proto/storage_go_proto"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	analysis_go_proto "kythe.io/kythe/proto/analysis_go_proto"
+	common_go_proto "kythe.io/kythe/proto/common_go_proto"
+	storage_go_proto "kythe.io/kythe/proto/storage_go_proto"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -19,7 +21,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type InitRequest struct {
 	Protocol             string   `protobuf:"bytes,1,opt,name=protocol,proto3" json:"protocol,omitempty"`
@@ -32,16 +34,17 @@
 func (m *InitRequest) String() string { return proto.CompactTextString(m) }
 func (*InitRequest) ProtoMessage()    {}
 func (*InitRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_driver_dbd9662cf0e8cd45, []int{0}
+	return fileDescriptor_269be22dd770bd8b, []int{0}
 }
+
 func (m *InitRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_InitRequest.Unmarshal(m, b)
 }
 func (m *InitRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_InitRequest.Marshal(b, m, deterministic)
 }
-func (dst *InitRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_InitRequest.Merge(dst, src)
+func (m *InitRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_InitRequest.Merge(m, src)
 }
 func (m *InitRequest) XXX_Size() int {
 	return xxx_messageInfo_InitRequest.Size(m)
@@ -70,16 +73,17 @@
 func (m *InitReply) String() string { return proto.CompactTextString(m) }
 func (*InitReply) ProtoMessage()    {}
 func (*InitReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_driver_dbd9662cf0e8cd45, []int{1}
+	return fileDescriptor_269be22dd770bd8b, []int{1}
 }
+
 func (m *InitReply) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_InitReply.Unmarshal(m, b)
 }
 func (m *InitReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_InitReply.Marshal(b, m, deterministic)
 }
-func (dst *InitReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_InitReply.Merge(dst, src)
+func (m *InitReply) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_InitReply.Merge(m, src)
 }
 func (m *InitReply) XXX_Size() int {
 	return xxx_messageInfo_InitReply.Size(m)
@@ -108,16 +112,17 @@
 func (m *AnalyzeRequest) String() string { return proto.CompactTextString(m) }
 func (*AnalyzeRequest) ProtoMessage()    {}
 func (*AnalyzeRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_driver_dbd9662cf0e8cd45, []int{2}
+	return fileDescriptor_269be22dd770bd8b, []int{2}
 }
+
 func (m *AnalyzeRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AnalyzeRequest.Unmarshal(m, b)
 }
 func (m *AnalyzeRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_AnalyzeRequest.Marshal(b, m, deterministic)
 }
-func (dst *AnalyzeRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AnalyzeRequest.Merge(dst, src)
+func (m *AnalyzeRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AnalyzeRequest.Merge(m, src)
 }
 func (m *AnalyzeRequest) XXX_Size() int {
 	return xxx_messageInfo_AnalyzeRequest.Size(m)
@@ -147,16 +152,17 @@
 func (m *AnalyzeReply) String() string { return proto.CompactTextString(m) }
 func (*AnalyzeReply) ProtoMessage()    {}
 func (*AnalyzeReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_driver_dbd9662cf0e8cd45, []int{3}
+	return fileDescriptor_269be22dd770bd8b, []int{3}
 }
+
 func (m *AnalyzeReply) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AnalyzeReply.Unmarshal(m, b)
 }
 func (m *AnalyzeReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_AnalyzeReply.Marshal(b, m, deterministic)
 }
-func (dst *AnalyzeReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_AnalyzeReply.Merge(dst, src)
+func (m *AnalyzeReply) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AnalyzeReply.Merge(m, src)
 }
 func (m *AnalyzeReply) XXX_Size() int {
 	return xxx_messageInfo_AnalyzeReply.Size(m)
@@ -194,16 +200,17 @@
 func (m *FileRequest) String() string { return proto.CompactTextString(m) }
 func (*FileRequest) ProtoMessage()    {}
 func (*FileRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_driver_dbd9662cf0e8cd45, []int{4}
+	return fileDescriptor_269be22dd770bd8b, []int{4}
 }
+
 func (m *FileRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_FileRequest.Unmarshal(m, b)
 }
 func (m *FileRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_FileRequest.Marshal(b, m, deterministic)
 }
-func (dst *FileRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FileRequest.Merge(dst, src)
+func (m *FileRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FileRequest.Merge(m, src)
 }
 func (m *FileRequest) XXX_Size() int {
 	return xxx_messageInfo_FileRequest.Size(m)
@@ -248,16 +255,17 @@
 func (m *FileReply) String() string { return proto.CompactTextString(m) }
 func (*FileReply) ProtoMessage()    {}
 func (*FileReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_driver_dbd9662cf0e8cd45, []int{5}
+	return fileDescriptor_269be22dd770bd8b, []int{5}
 }
+
 func (m *FileReply) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_FileReply.Unmarshal(m, b)
 }
 func (m *FileReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_FileReply.Marshal(b, m, deterministic)
 }
-func (dst *FileReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FileReply.Merge(dst, src)
+func (m *FileReply) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FileReply.Merge(m, src)
 }
 func (m *FileReply) XXX_Size() int {
 	return xxx_messageInfo_FileReply.Size(m)
@@ -302,16 +310,17 @@
 func (m *OutRequest) String() string { return proto.CompactTextString(m) }
 func (*OutRequest) ProtoMessage()    {}
 func (*OutRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_driver_dbd9662cf0e8cd45, []int{6}
+	return fileDescriptor_269be22dd770bd8b, []int{6}
 }
+
 func (m *OutRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OutRequest.Unmarshal(m, b)
 }
 func (m *OutRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OutRequest.Marshal(b, m, deterministic)
 }
-func (dst *OutRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OutRequest.Merge(dst, src)
+func (m *OutRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OutRequest.Merge(m, src)
 }
 func (m *OutRequest) XXX_Size() int {
 	return xxx_messageInfo_OutRequest.Size(m)
@@ -355,16 +364,17 @@
 func (m *LogRequest) String() string { return proto.CompactTextString(m) }
 func (*LogRequest) ProtoMessage()    {}
 func (*LogRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_driver_dbd9662cf0e8cd45, []int{7}
+	return fileDescriptor_269be22dd770bd8b, []int{7}
 }
+
 func (m *LogRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_LogRequest.Unmarshal(m, b)
 }
 func (m *LogRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_LogRequest.Marshal(b, m, deterministic)
 }
-func (dst *LogRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LogRequest.Merge(dst, src)
+func (m *LogRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_LogRequest.Merge(m, src)
 }
 func (m *LogRequest) XXX_Size() int {
 	return xxx_messageInfo_LogRequest.Size(m)
@@ -400,9 +410,9 @@
 	proto.RegisterType((*LogRequest)(nil), "kythe.driver.LogRequest")
 }
 
-func init() { proto.RegisterFile("kythe/proto/driver.proto", fileDescriptor_driver_dbd9662cf0e8cd45) }
+func init() { proto.RegisterFile("kythe/proto/driver.proto", fileDescriptor_269be22dd770bd8b) }
 
-var fileDescriptor_driver_dbd9662cf0e8cd45 = []byte{
+var fileDescriptor_269be22dd770bd8b = []byte{
 	// 368 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x92, 0xcf, 0x6b, 0xab, 0x40,
 	0x10, 0xc7, 0x51, 0x43, 0xf2, 0x1c, 0x25, 0x8f, 0xe7, 0x21, 0xf8, 0xa4, 0x94, 0xe0, 0xa5, 0x16,
diff --git a/kythe/proto/entryset_go_proto/entryset.pb.go b/kythe/proto/entryset_go_proto/entryset.pb.go
index 5179ae5..c9b18a1 100644
--- a/kythe/proto/entryset_go_proto/entryset.pb.go
+++ b/kythe/proto/entryset_go_proto/entryset.pb.go
@@ -3,9 +3,11 @@
 
 package entryset_go_proto
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -16,7 +18,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type EntrySet struct {
 	Nodes                []*EntrySet_Node      `protobuf:"bytes,1,rep,name=nodes,proto3" json:"nodes,omitempty"`
@@ -32,16 +34,17 @@
 func (m *EntrySet) String() string { return proto.CompactTextString(m) }
 func (*EntrySet) ProtoMessage()    {}
 func (*EntrySet) Descriptor() ([]byte, []int) {
-	return fileDescriptor_entryset_9e3521cefdcf07e3, []int{0}
+	return fileDescriptor_d82fe1fc380de7f6, []int{0}
 }
+
 func (m *EntrySet) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_EntrySet.Unmarshal(m, b)
 }
 func (m *EntrySet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_EntrySet.Marshal(b, m, deterministic)
 }
-func (dst *EntrySet) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EntrySet.Merge(dst, src)
+func (m *EntrySet) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_EntrySet.Merge(m, src)
 }
 func (m *EntrySet) XXX_Size() int {
 	return xxx_messageInfo_EntrySet.Size(m)
@@ -95,16 +98,17 @@
 func (m *EntrySet_Node) String() string { return proto.CompactTextString(m) }
 func (*EntrySet_Node) ProtoMessage()    {}
 func (*EntrySet_Node) Descriptor() ([]byte, []int) {
-	return fileDescriptor_entryset_9e3521cefdcf07e3, []int{0, 0}
+	return fileDescriptor_d82fe1fc380de7f6, []int{0, 0}
 }
+
 func (m *EntrySet_Node) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_EntrySet_Node.Unmarshal(m, b)
 }
 func (m *EntrySet_Node) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_EntrySet_Node.Marshal(b, m, deterministic)
 }
-func (dst *EntrySet_Node) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EntrySet_Node.Merge(dst, src)
+func (m *EntrySet_Node) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_EntrySet_Node.Merge(m, src)
 }
 func (m *EntrySet_Node) XXX_Size() int {
 	return xxx_messageInfo_EntrySet_Node.Size(m)
@@ -162,16 +166,17 @@
 func (m *EntrySet_Fact) String() string { return proto.CompactTextString(m) }
 func (*EntrySet_Fact) ProtoMessage()    {}
 func (*EntrySet_Fact) Descriptor() ([]byte, []int) {
-	return fileDescriptor_entryset_9e3521cefdcf07e3, []int{0, 1}
+	return fileDescriptor_d82fe1fc380de7f6, []int{0, 1}
 }
+
 func (m *EntrySet_Fact) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_EntrySet_Fact.Unmarshal(m, b)
 }
 func (m *EntrySet_Fact) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_EntrySet_Fact.Marshal(b, m, deterministic)
 }
-func (dst *EntrySet_Fact) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EntrySet_Fact.Merge(dst, src)
+func (m *EntrySet_Fact) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_EntrySet_Fact.Merge(m, src)
 }
 func (m *EntrySet_Fact) XXX_Size() int {
 	return xxx_messageInfo_EntrySet_Fact.Size(m)
@@ -207,16 +212,17 @@
 func (m *EntrySet_FactGroup) String() string { return proto.CompactTextString(m) }
 func (*EntrySet_FactGroup) ProtoMessage()    {}
 func (*EntrySet_FactGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_entryset_9e3521cefdcf07e3, []int{0, 2}
+	return fileDescriptor_d82fe1fc380de7f6, []int{0, 2}
 }
+
 func (m *EntrySet_FactGroup) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_EntrySet_FactGroup.Unmarshal(m, b)
 }
 func (m *EntrySet_FactGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_EntrySet_FactGroup.Marshal(b, m, deterministic)
 }
-func (dst *EntrySet_FactGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EntrySet_FactGroup.Merge(dst, src)
+func (m *EntrySet_FactGroup) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_EntrySet_FactGroup.Merge(m, src)
 }
 func (m *EntrySet_FactGroup) XXX_Size() int {
 	return xxx_messageInfo_EntrySet_FactGroup.Size(m)
@@ -246,16 +252,17 @@
 func (m *EntrySet_Edge) String() string { return proto.CompactTextString(m) }
 func (*EntrySet_Edge) ProtoMessage()    {}
 func (*EntrySet_Edge) Descriptor() ([]byte, []int) {
-	return fileDescriptor_entryset_9e3521cefdcf07e3, []int{0, 3}
+	return fileDescriptor_d82fe1fc380de7f6, []int{0, 3}
 }
+
 func (m *EntrySet_Edge) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_EntrySet_Edge.Unmarshal(m, b)
 }
 func (m *EntrySet_Edge) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_EntrySet_Edge.Marshal(b, m, deterministic)
 }
-func (dst *EntrySet_Edge) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EntrySet_Edge.Merge(dst, src)
+func (m *EntrySet_Edge) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_EntrySet_Edge.Merge(m, src)
 }
 func (m *EntrySet_Edge) XXX_Size() int {
 	return xxx_messageInfo_EntrySet_Edge.Size(m)
@@ -291,16 +298,17 @@
 func (m *EntrySet_EdgeGroup) String() string { return proto.CompactTextString(m) }
 func (*EntrySet_EdgeGroup) ProtoMessage()    {}
 func (*EntrySet_EdgeGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_entryset_9e3521cefdcf07e3, []int{0, 4}
+	return fileDescriptor_d82fe1fc380de7f6, []int{0, 4}
 }
+
 func (m *EntrySet_EdgeGroup) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_EntrySet_EdgeGroup.Unmarshal(m, b)
 }
 func (m *EntrySet_EdgeGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_EntrySet_EdgeGroup.Marshal(b, m, deterministic)
 }
-func (dst *EntrySet_EdgeGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EntrySet_EdgeGroup.Merge(dst, src)
+func (m *EntrySet_EdgeGroup) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_EntrySet_EdgeGroup.Merge(m, src)
 }
 func (m *EntrySet_EdgeGroup) XXX_Size() int {
 	return xxx_messageInfo_EntrySet_EdgeGroup.Size(m)
@@ -330,16 +338,17 @@
 func (m *EntrySet_String) String() string { return proto.CompactTextString(m) }
 func (*EntrySet_String) ProtoMessage()    {}
 func (*EntrySet_String) Descriptor() ([]byte, []int) {
-	return fileDescriptor_entryset_9e3521cefdcf07e3, []int{0, 5}
+	return fileDescriptor_d82fe1fc380de7f6, []int{0, 5}
 }
+
 func (m *EntrySet_String) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_EntrySet_String.Unmarshal(m, b)
 }
 func (m *EntrySet_String) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_EntrySet_String.Marshal(b, m, deterministic)
 }
-func (dst *EntrySet_String) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EntrySet_String.Merge(dst, src)
+func (m *EntrySet_String) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_EntrySet_String.Merge(m, src)
 }
 func (m *EntrySet_String) XXX_Size() int {
 	return xxx_messageInfo_EntrySet_String.Size(m)
@@ -374,11 +383,9 @@
 	proto.RegisterType((*EntrySet_String)(nil), "kythe.storage.EntrySet.String")
 }
 
-func init() {
-	proto.RegisterFile("kythe/proto/entryset.proto", fileDescriptor_entryset_9e3521cefdcf07e3)
-}
+func init() { proto.RegisterFile("kythe/proto/entryset.proto", fileDescriptor_d82fe1fc380de7f6) }
 
-var fileDescriptor_entryset_9e3521cefdcf07e3 = []byte{
+var fileDescriptor_d82fe1fc380de7f6 = []byte{
 	// 377 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x52, 0x31, 0x6f, 0xf2, 0x30,
 	0x14, 0x14, 0x90, 0xf0, 0xc1, 0xe3, 0xfb, 0x86, 0xcf, 0xad, 0xaa, 0x28, 0x42, 0x55, 0xdb, 0x89,
diff --git a/kythe/proto/explore_go_proto/explore.pb.go b/kythe/proto/explore_go_proto/explore.pb.go
index b5f0ac6..cc78bb4 100644
--- a/kythe/proto/explore_go_proto/explore.pb.go
+++ b/kythe/proto/explore_go_proto/explore.pb.go
@@ -3,12 +3,14 @@
 
 package explore_go_proto
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import common_go_proto "kythe.io/kythe/proto/common_go_proto"
-import storage_go_proto "kythe.io/kythe/proto/storage_go_proto"
-import xref_go_proto "kythe.io/kythe/proto/xref_go_proto"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	common_go_proto "kythe.io/kythe/proto/common_go_proto"
+	storage_go_proto "kythe.io/kythe/proto/storage_go_proto"
+	xref_go_proto "kythe.io/kythe/proto/xref_go_proto"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -19,7 +21,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type NodeData struct {
 	Kind                 string                        `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"`
@@ -36,16 +38,17 @@
 func (m *NodeData) String() string { return proto.CompactTextString(m) }
 func (*NodeData) ProtoMessage()    {}
 func (*NodeData) Descriptor() ([]byte, []int) {
-	return fileDescriptor_explore_abd13824af46241c, []int{0}
+	return fileDescriptor_ee5b2ef3873ea484, []int{0}
 }
+
 func (m *NodeData) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_NodeData.Unmarshal(m, b)
 }
 func (m *NodeData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_NodeData.Marshal(b, m, deterministic)
 }
-func (dst *NodeData) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_NodeData.Merge(dst, src)
+func (m *NodeData) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_NodeData.Merge(m, src)
 }
 func (m *NodeData) XXX_Size() int {
 	return xxx_messageInfo_NodeData.Size(m)
@@ -104,16 +107,17 @@
 func (m *GraphNode) String() string { return proto.CompactTextString(m) }
 func (*GraphNode) ProtoMessage()    {}
 func (*GraphNode) Descriptor() ([]byte, []int) {
-	return fileDescriptor_explore_abd13824af46241c, []int{1}
+	return fileDescriptor_ee5b2ef3873ea484, []int{1}
 }
+
 func (m *GraphNode) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_GraphNode.Unmarshal(m, b)
 }
 func (m *GraphNode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_GraphNode.Marshal(b, m, deterministic)
 }
-func (dst *GraphNode) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GraphNode.Merge(dst, src)
+func (m *GraphNode) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GraphNode.Merge(m, src)
 }
 func (m *GraphNode) XXX_Size() int {
 	return xxx_messageInfo_GraphNode.Size(m)
@@ -156,16 +160,17 @@
 func (m *Graph) String() string { return proto.CompactTextString(m) }
 func (*Graph) ProtoMessage()    {}
 func (*Graph) Descriptor() ([]byte, []int) {
-	return fileDescriptor_explore_abd13824af46241c, []int{2}
+	return fileDescriptor_ee5b2ef3873ea484, []int{2}
 }
+
 func (m *Graph) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Graph.Unmarshal(m, b)
 }
 func (m *Graph) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Graph.Marshal(b, m, deterministic)
 }
-func (dst *Graph) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Graph.Merge(dst, src)
+func (m *Graph) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Graph.Merge(m, src)
 }
 func (m *Graph) XXX_Size() int {
 	return xxx_messageInfo_Graph.Size(m)
@@ -195,16 +200,17 @@
 func (m *NodeFilter) String() string { return proto.CompactTextString(m) }
 func (*NodeFilter) ProtoMessage()    {}
 func (*NodeFilter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_explore_abd13824af46241c, []int{3}
+	return fileDescriptor_ee5b2ef3873ea484, []int{3}
 }
+
 func (m *NodeFilter) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_NodeFilter.Unmarshal(m, b)
 }
 func (m *NodeFilter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_NodeFilter.Marshal(b, m, deterministic)
 }
-func (dst *NodeFilter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_NodeFilter.Merge(dst, src)
+func (m *NodeFilter) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_NodeFilter.Merge(m, src)
 }
 func (m *NodeFilter) XXX_Size() int {
 	return xxx_messageInfo_NodeFilter.Size(m)
@@ -240,16 +246,17 @@
 func (m *Tickets) String() string { return proto.CompactTextString(m) }
 func (*Tickets) ProtoMessage()    {}
 func (*Tickets) Descriptor() ([]byte, []int) {
-	return fileDescriptor_explore_abd13824af46241c, []int{4}
+	return fileDescriptor_ee5b2ef3873ea484, []int{4}
 }
+
 func (m *Tickets) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Tickets.Unmarshal(m, b)
 }
 func (m *Tickets) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Tickets.Marshal(b, m, deterministic)
 }
-func (dst *Tickets) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Tickets.Merge(dst, src)
+func (m *Tickets) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Tickets.Merge(m, src)
 }
 func (m *Tickets) XXX_Size() int {
 	return xxx_messageInfo_Tickets.Size(m)
@@ -279,16 +286,17 @@
 func (m *TypeHierarchyRequest) String() string { return proto.CompactTextString(m) }
 func (*TypeHierarchyRequest) ProtoMessage()    {}
 func (*TypeHierarchyRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_explore_abd13824af46241c, []int{5}
+	return fileDescriptor_ee5b2ef3873ea484, []int{5}
 }
+
 func (m *TypeHierarchyRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_TypeHierarchyRequest.Unmarshal(m, b)
 }
 func (m *TypeHierarchyRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_TypeHierarchyRequest.Marshal(b, m, deterministic)
 }
-func (dst *TypeHierarchyRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TypeHierarchyRequest.Merge(dst, src)
+func (m *TypeHierarchyRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TypeHierarchyRequest.Merge(m, src)
 }
 func (m *TypeHierarchyRequest) XXX_Size() int {
 	return xxx_messageInfo_TypeHierarchyRequest.Size(m)
@@ -325,16 +333,17 @@
 func (m *TypeHierarchyReply) String() string { return proto.CompactTextString(m) }
 func (*TypeHierarchyReply) ProtoMessage()    {}
 func (*TypeHierarchyReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_explore_abd13824af46241c, []int{6}
+	return fileDescriptor_ee5b2ef3873ea484, []int{6}
 }
+
 func (m *TypeHierarchyReply) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_TypeHierarchyReply.Unmarshal(m, b)
 }
 func (m *TypeHierarchyReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_TypeHierarchyReply.Marshal(b, m, deterministic)
 }
-func (dst *TypeHierarchyReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_TypeHierarchyReply.Merge(dst, src)
+func (m *TypeHierarchyReply) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TypeHierarchyReply.Merge(m, src)
 }
 func (m *TypeHierarchyReply) XXX_Size() int {
 	return xxx_messageInfo_TypeHierarchyReply.Size(m)
@@ -370,16 +379,17 @@
 func (m *CallersRequest) String() string { return proto.CompactTextString(m) }
 func (*CallersRequest) ProtoMessage()    {}
 func (*CallersRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_explore_abd13824af46241c, []int{7}
+	return fileDescriptor_ee5b2ef3873ea484, []int{7}
 }
+
 func (m *CallersRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CallersRequest.Unmarshal(m, b)
 }
 func (m *CallersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CallersRequest.Marshal(b, m, deterministic)
 }
-func (dst *CallersRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CallersRequest.Merge(dst, src)
+func (m *CallersRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CallersRequest.Merge(m, src)
 }
 func (m *CallersRequest) XXX_Size() int {
 	return xxx_messageInfo_CallersRequest.Size(m)
@@ -408,16 +418,17 @@
 func (m *CallersReply) String() string { return proto.CompactTextString(m) }
 func (*CallersReply) ProtoMessage()    {}
 func (*CallersReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_explore_abd13824af46241c, []int{8}
+	return fileDescriptor_ee5b2ef3873ea484, []int{8}
 }
+
 func (m *CallersReply) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CallersReply.Unmarshal(m, b)
 }
 func (m *CallersReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CallersReply.Marshal(b, m, deterministic)
 }
-func (dst *CallersReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CallersReply.Merge(dst, src)
+func (m *CallersReply) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CallersReply.Merge(m, src)
 }
 func (m *CallersReply) XXX_Size() int {
 	return xxx_messageInfo_CallersReply.Size(m)
@@ -446,16 +457,17 @@
 func (m *CalleesRequest) String() string { return proto.CompactTextString(m) }
 func (*CalleesRequest) ProtoMessage()    {}
 func (*CalleesRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_explore_abd13824af46241c, []int{9}
+	return fileDescriptor_ee5b2ef3873ea484, []int{9}
 }
+
 func (m *CalleesRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CalleesRequest.Unmarshal(m, b)
 }
 func (m *CalleesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CalleesRequest.Marshal(b, m, deterministic)
 }
-func (dst *CalleesRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CalleesRequest.Merge(dst, src)
+func (m *CalleesRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CalleesRequest.Merge(m, src)
 }
 func (m *CalleesRequest) XXX_Size() int {
 	return xxx_messageInfo_CalleesRequest.Size(m)
@@ -484,16 +496,17 @@
 func (m *CalleesReply) String() string { return proto.CompactTextString(m) }
 func (*CalleesReply) ProtoMessage()    {}
 func (*CalleesReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_explore_abd13824af46241c, []int{10}
+	return fileDescriptor_ee5b2ef3873ea484, []int{10}
 }
+
 func (m *CalleesReply) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CalleesReply.Unmarshal(m, b)
 }
 func (m *CalleesReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CalleesReply.Marshal(b, m, deterministic)
 }
-func (dst *CalleesReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CalleesReply.Merge(dst, src)
+func (m *CalleesReply) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CalleesReply.Merge(m, src)
 }
 func (m *CalleesReply) XXX_Size() int {
 	return xxx_messageInfo_CalleesReply.Size(m)
@@ -522,16 +535,17 @@
 func (m *ParametersRequest) String() string { return proto.CompactTextString(m) }
 func (*ParametersRequest) ProtoMessage()    {}
 func (*ParametersRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_explore_abd13824af46241c, []int{11}
+	return fileDescriptor_ee5b2ef3873ea484, []int{11}
 }
+
 func (m *ParametersRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ParametersRequest.Unmarshal(m, b)
 }
 func (m *ParametersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ParametersRequest.Marshal(b, m, deterministic)
 }
-func (dst *ParametersRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ParametersRequest.Merge(dst, src)
+func (m *ParametersRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ParametersRequest.Merge(m, src)
 }
 func (m *ParametersRequest) XXX_Size() int {
 	return xxx_messageInfo_ParametersRequest.Size(m)
@@ -562,16 +576,17 @@
 func (m *ParametersReply) String() string { return proto.CompactTextString(m) }
 func (*ParametersReply) ProtoMessage()    {}
 func (*ParametersReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_explore_abd13824af46241c, []int{12}
+	return fileDescriptor_ee5b2ef3873ea484, []int{12}
 }
+
 func (m *ParametersReply) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ParametersReply.Unmarshal(m, b)
 }
 func (m *ParametersReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ParametersReply.Marshal(b, m, deterministic)
 }
-func (dst *ParametersReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ParametersReply.Merge(dst, src)
+func (m *ParametersReply) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ParametersReply.Merge(m, src)
 }
 func (m *ParametersReply) XXX_Size() int {
 	return xxx_messageInfo_ParametersReply.Size(m)
@@ -614,16 +629,17 @@
 func (m *ParentsRequest) String() string { return proto.CompactTextString(m) }
 func (*ParentsRequest) ProtoMessage()    {}
 func (*ParentsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_explore_abd13824af46241c, []int{13}
+	return fileDescriptor_ee5b2ef3873ea484, []int{13}
 }
+
 func (m *ParentsRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ParentsRequest.Unmarshal(m, b)
 }
 func (m *ParentsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ParentsRequest.Marshal(b, m, deterministic)
 }
-func (dst *ParentsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ParentsRequest.Merge(dst, src)
+func (m *ParentsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ParentsRequest.Merge(m, src)
 }
 func (m *ParentsRequest) XXX_Size() int {
 	return xxx_messageInfo_ParentsRequest.Size(m)
@@ -652,16 +668,17 @@
 func (m *ParentsReply) String() string { return proto.CompactTextString(m) }
 func (*ParentsReply) ProtoMessage()    {}
 func (*ParentsReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_explore_abd13824af46241c, []int{14}
+	return fileDescriptor_ee5b2ef3873ea484, []int{14}
 }
+
 func (m *ParentsReply) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ParentsReply.Unmarshal(m, b)
 }
 func (m *ParentsReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ParentsReply.Marshal(b, m, deterministic)
 }
-func (dst *ParentsReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ParentsReply.Merge(dst, src)
+func (m *ParentsReply) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ParentsReply.Merge(m, src)
 }
 func (m *ParentsReply) XXX_Size() int {
 	return xxx_messageInfo_ParentsReply.Size(m)
@@ -690,16 +707,17 @@
 func (m *ChildrenRequest) String() string { return proto.CompactTextString(m) }
 func (*ChildrenRequest) ProtoMessage()    {}
 func (*ChildrenRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_explore_abd13824af46241c, []int{15}
+	return fileDescriptor_ee5b2ef3873ea484, []int{15}
 }
+
 func (m *ChildrenRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ChildrenRequest.Unmarshal(m, b)
 }
 func (m *ChildrenRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ChildrenRequest.Marshal(b, m, deterministic)
 }
-func (dst *ChildrenRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ChildrenRequest.Merge(dst, src)
+func (m *ChildrenRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ChildrenRequest.Merge(m, src)
 }
 func (m *ChildrenRequest) XXX_Size() int {
 	return xxx_messageInfo_ChildrenRequest.Size(m)
@@ -728,16 +746,17 @@
 func (m *ChildrenReply) String() string { return proto.CompactTextString(m) }
 func (*ChildrenReply) ProtoMessage()    {}
 func (*ChildrenReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_explore_abd13824af46241c, []int{16}
+	return fileDescriptor_ee5b2ef3873ea484, []int{16}
 }
+
 func (m *ChildrenReply) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ChildrenReply.Unmarshal(m, b)
 }
 func (m *ChildrenReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ChildrenReply.Marshal(b, m, deterministic)
 }
-func (dst *ChildrenReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ChildrenReply.Merge(dst, src)
+func (m *ChildrenReply) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ChildrenReply.Merge(m, src)
 }
 func (m *ChildrenReply) XXX_Size() int {
 	return xxx_messageInfo_ChildrenReply.Size(m)
@@ -781,9 +800,9 @@
 	proto.RegisterMapType((map[string]*Tickets)(nil), "kythe.proto.ChildrenReply.InputToChildrenEntry")
 }
 
-func init() { proto.RegisterFile("kythe/proto/explore.proto", fileDescriptor_explore_abd13824af46241c) }
+func init() { proto.RegisterFile("kythe/proto/explore.proto", fileDescriptor_ee5b2ef3873ea484) }
 
-var fileDescriptor_explore_abd13824af46241c = []byte{
+var fileDescriptor_ee5b2ef3873ea484 = []byte{
 	// 958 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xcf, 0x73, 0xdb, 0x54,
 	0x10, 0x8e, 0xea, 0x98, 0xc4, 0xeb, 0xc4, 0x71, 0x1e, 0x6e, 0x70, 0x44, 0x69, 0x8c, 0xb8, 0x98,
diff --git a/kythe/proto/extraction_config_go_proto/extraction_config.pb.go b/kythe/proto/extraction_config_go_proto/extraction_config.pb.go
index b3a9557..e8763cd 100644
--- a/kythe/proto/extraction_config_go_proto/extraction_config.pb.go
+++ b/kythe/proto/extraction_config_go_proto/extraction_config.pb.go
@@ -3,9 +3,11 @@
 
 package extraction_config_go_proto
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -16,7 +18,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type ExtractionConfiguration struct {
 	RequiredImage        []*ExtractionConfiguration_Image      `protobuf:"bytes,1,rep,name=required_image,json=requiredImage,proto3" json:"required_image,omitempty"`
@@ -31,16 +33,17 @@
 func (m *ExtractionConfiguration) String() string { return proto.CompactTextString(m) }
 func (*ExtractionConfiguration) ProtoMessage()    {}
 func (*ExtractionConfiguration) Descriptor() ([]byte, []int) {
-	return fileDescriptor_extraction_config_2b39cab2ce2c56d9, []int{0}
+	return fileDescriptor_9995da4eeba664d0, []int{0}
 }
+
 func (m *ExtractionConfiguration) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ExtractionConfiguration.Unmarshal(m, b)
 }
 func (m *ExtractionConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ExtractionConfiguration.Marshal(b, m, deterministic)
 }
-func (dst *ExtractionConfiguration) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ExtractionConfiguration.Merge(dst, src)
+func (m *ExtractionConfiguration) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ExtractionConfiguration.Merge(m, src)
 }
 func (m *ExtractionConfiguration) XXX_Size() int {
 	return xxx_messageInfo_ExtractionConfiguration.Size(m)
@@ -86,16 +89,17 @@
 func (m *ExtractionConfiguration_Image) String() string { return proto.CompactTextString(m) }
 func (*ExtractionConfiguration_Image) ProtoMessage()    {}
 func (*ExtractionConfiguration_Image) Descriptor() ([]byte, []int) {
-	return fileDescriptor_extraction_config_2b39cab2ce2c56d9, []int{0, 0}
+	return fileDescriptor_9995da4eeba664d0, []int{0, 0}
 }
+
 func (m *ExtractionConfiguration_Image) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ExtractionConfiguration_Image.Unmarshal(m, b)
 }
 func (m *ExtractionConfiguration_Image) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ExtractionConfiguration_Image.Marshal(b, m, deterministic)
 }
-func (dst *ExtractionConfiguration_Image) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ExtractionConfiguration_Image.Merge(dst, src)
+func (m *ExtractionConfiguration_Image) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ExtractionConfiguration_Image.Merge(m, src)
 }
 func (m *ExtractionConfiguration_Image) XXX_Size() int {
 	return xxx_messageInfo_ExtractionConfiguration_Image.Size(m)
@@ -146,16 +150,17 @@
 func (m *ExtractionConfiguration_CopySpec) String() string { return proto.CompactTextString(m) }
 func (*ExtractionConfiguration_CopySpec) ProtoMessage()    {}
 func (*ExtractionConfiguration_CopySpec) Descriptor() ([]byte, []int) {
-	return fileDescriptor_extraction_config_2b39cab2ce2c56d9, []int{0, 1}
+	return fileDescriptor_9995da4eeba664d0, []int{0, 1}
 }
+
 func (m *ExtractionConfiguration_CopySpec) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ExtractionConfiguration_CopySpec.Unmarshal(m, b)
 }
 func (m *ExtractionConfiguration_CopySpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ExtractionConfiguration_CopySpec.Marshal(b, m, deterministic)
 }
-func (dst *ExtractionConfiguration_CopySpec) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ExtractionConfiguration_CopySpec.Merge(dst, src)
+func (m *ExtractionConfiguration_CopySpec) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ExtractionConfiguration_CopySpec.Merge(m, src)
 }
 func (m *ExtractionConfiguration_CopySpec) XXX_Size() int {
 	return xxx_messageInfo_ExtractionConfiguration_CopySpec.Size(m)
@@ -192,16 +197,17 @@
 func (m *ExtractionConfiguration_EnvVar) String() string { return proto.CompactTextString(m) }
 func (*ExtractionConfiguration_EnvVar) ProtoMessage()    {}
 func (*ExtractionConfiguration_EnvVar) Descriptor() ([]byte, []int) {
-	return fileDescriptor_extraction_config_2b39cab2ce2c56d9, []int{0, 2}
+	return fileDescriptor_9995da4eeba664d0, []int{0, 2}
 }
+
 func (m *ExtractionConfiguration_EnvVar) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ExtractionConfiguration_EnvVar.Unmarshal(m, b)
 }
 func (m *ExtractionConfiguration_EnvVar) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ExtractionConfiguration_EnvVar.Marshal(b, m, deterministic)
 }
-func (dst *ExtractionConfiguration_EnvVar) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ExtractionConfiguration_EnvVar.Merge(dst, src)
+func (m *ExtractionConfiguration_EnvVar) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ExtractionConfiguration_EnvVar.Merge(m, src)
 }
 func (m *ExtractionConfiguration_EnvVar) XXX_Size() int {
 	return xxx_messageInfo_ExtractionConfiguration_EnvVar.Size(m)
@@ -238,16 +244,17 @@
 func (m *ExtractionConfiguration_RunCommand) String() string { return proto.CompactTextString(m) }
 func (*ExtractionConfiguration_RunCommand) ProtoMessage()    {}
 func (*ExtractionConfiguration_RunCommand) Descriptor() ([]byte, []int) {
-	return fileDescriptor_extraction_config_2b39cab2ce2c56d9, []int{0, 3}
+	return fileDescriptor_9995da4eeba664d0, []int{0, 3}
 }
+
 func (m *ExtractionConfiguration_RunCommand) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ExtractionConfiguration_RunCommand.Unmarshal(m, b)
 }
 func (m *ExtractionConfiguration_RunCommand) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ExtractionConfiguration_RunCommand.Marshal(b, m, deterministic)
 }
-func (dst *ExtractionConfiguration_RunCommand) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ExtractionConfiguration_RunCommand.Merge(dst, src)
+func (m *ExtractionConfiguration_RunCommand) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ExtractionConfiguration_RunCommand.Merge(m, src)
 }
 func (m *ExtractionConfiguration_RunCommand) XXX_Size() int {
 	return xxx_messageInfo_ExtractionConfiguration_RunCommand.Size(m)
@@ -281,10 +288,10 @@
 }
 
 func init() {
-	proto.RegisterFile("kythe/proto/extraction_config.proto", fileDescriptor_extraction_config_2b39cab2ce2c56d9)
+	proto.RegisterFile("kythe/proto/extraction_config.proto", fileDescriptor_9995da4eeba664d0)
 }
 
-var fileDescriptor_extraction_config_2b39cab2ce2c56d9 = []byte{
+var fileDescriptor_9995da4eeba664d0 = []byte{
 	// 362 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0xc1, 0x4a, 0xfb, 0x40,
 	0x10, 0xc6, 0x49, 0xd3, 0xa6, 0xcd, 0x84, 0xff, 0x1f, 0x59, 0x44, 0x43, 0x10, 0x0c, 0x7a, 0x29,
diff --git a/kythe/proto/filecontext_go_proto/filecontext.pb.go b/kythe/proto/filecontext_go_proto/filecontext.pb.go
index 1cf0c53..c7b6f9c 100644
--- a/kythe/proto/filecontext_go_proto/filecontext.pb.go
+++ b/kythe/proto/filecontext_go_proto/filecontext.pb.go
@@ -3,9 +3,11 @@
 
 package filecontext_go_proto
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -16,7 +18,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type ContextDependentVersion struct {
 	Row                  []*ContextDependentVersion_Row `protobuf:"bytes,1,rep,name=row,proto3" json:"row,omitempty"`
@@ -29,16 +31,17 @@
 func (m *ContextDependentVersion) String() string { return proto.CompactTextString(m) }
 func (*ContextDependentVersion) ProtoMessage()    {}
 func (*ContextDependentVersion) Descriptor() ([]byte, []int) {
-	return fileDescriptor_filecontext_2ca3a2408c9dc5a2, []int{0}
+	return fileDescriptor_3706b0669a30df70, []int{0}
 }
+
 func (m *ContextDependentVersion) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ContextDependentVersion.Unmarshal(m, b)
 }
 func (m *ContextDependentVersion) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ContextDependentVersion.Marshal(b, m, deterministic)
 }
-func (dst *ContextDependentVersion) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ContextDependentVersion.Merge(dst, src)
+func (m *ContextDependentVersion) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ContextDependentVersion.Merge(m, src)
 }
 func (m *ContextDependentVersion) XXX_Size() int {
 	return xxx_messageInfo_ContextDependentVersion.Size(m)
@@ -68,16 +71,17 @@
 func (m *ContextDependentVersion_Column) String() string { return proto.CompactTextString(m) }
 func (*ContextDependentVersion_Column) ProtoMessage()    {}
 func (*ContextDependentVersion_Column) Descriptor() ([]byte, []int) {
-	return fileDescriptor_filecontext_2ca3a2408c9dc5a2, []int{0, 0}
+	return fileDescriptor_3706b0669a30df70, []int{0, 0}
 }
+
 func (m *ContextDependentVersion_Column) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ContextDependentVersion_Column.Unmarshal(m, b)
 }
 func (m *ContextDependentVersion_Column) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ContextDependentVersion_Column.Marshal(b, m, deterministic)
 }
-func (dst *ContextDependentVersion_Column) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ContextDependentVersion_Column.Merge(dst, src)
+func (m *ContextDependentVersion_Column) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ContextDependentVersion_Column.Merge(m, src)
 }
 func (m *ContextDependentVersion_Column) XXX_Size() int {
 	return xxx_messageInfo_ContextDependentVersion_Column.Size(m)
@@ -115,16 +119,17 @@
 func (m *ContextDependentVersion_Row) String() string { return proto.CompactTextString(m) }
 func (*ContextDependentVersion_Row) ProtoMessage()    {}
 func (*ContextDependentVersion_Row) Descriptor() ([]byte, []int) {
-	return fileDescriptor_filecontext_2ca3a2408c9dc5a2, []int{0, 1}
+	return fileDescriptor_3706b0669a30df70, []int{0, 1}
 }
+
 func (m *ContextDependentVersion_Row) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ContextDependentVersion_Row.Unmarshal(m, b)
 }
 func (m *ContextDependentVersion_Row) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ContextDependentVersion_Row.Marshal(b, m, deterministic)
 }
-func (dst *ContextDependentVersion_Row) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ContextDependentVersion_Row.Merge(dst, src)
+func (m *ContextDependentVersion_Row) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ContextDependentVersion_Row.Merge(m, src)
 }
 func (m *ContextDependentVersion_Row) XXX_Size() int {
 	return xxx_messageInfo_ContextDependentVersion_Row.Size(m)
@@ -162,11 +167,9 @@
 	proto.RegisterType((*ContextDependentVersion_Row)(nil), "kythe.proto.ContextDependentVersion.Row")
 }
 
-func init() {
-	proto.RegisterFile("kythe/proto/filecontext.proto", fileDescriptor_filecontext_2ca3a2408c9dc5a2)
-}
+func init() { proto.RegisterFile("kythe/proto/filecontext.proto", fileDescriptor_3706b0669a30df70) }
 
-var fileDescriptor_filecontext_2ca3a2408c9dc5a2 = []byte{
+var fileDescriptor_3706b0669a30df70 = []byte{
 	// 270 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x90, 0xc1, 0x4a, 0xc4, 0x30,
 	0x18, 0x84, 0xc9, 0x16, 0x8b, 0x66, 0x59, 0x0f, 0x45, 0xb4, 0x2c, 0x88, 0x45, 0x10, 0x02, 0x42,
diff --git a/kythe/proto/filetree_go_proto/filetree.pb.go b/kythe/proto/filetree_go_proto/filetree.pb.go
index d591efc..0f4873e 100644
--- a/kythe/proto/filetree_go_proto/filetree.pb.go
+++ b/kythe/proto/filetree_go_proto/filetree.pb.go
@@ -3,9 +3,11 @@
 
 package filetree_go_proto
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -16,7 +18,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type DirectoryReply_Kind int32
 
@@ -31,6 +33,7 @@
 	1: "FILE",
 	2: "DIRECTORY",
 }
+
 var DirectoryReply_Kind_value = map[string]int32{
 	"UNKNOWN":   0,
 	"FILE":      1,
@@ -40,8 +43,9 @@
 func (x DirectoryReply_Kind) String() string {
 	return proto.EnumName(DirectoryReply_Kind_name, int32(x))
 }
+
 func (DirectoryReply_Kind) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_filetree_3039fb11cbcc5c38, []int{3, 0}
+	return fileDescriptor_a7cc7eba6fded8b6, []int{3, 0}
 }
 
 type CorpusRootsRequest struct {
@@ -54,16 +58,17 @@
 func (m *CorpusRootsRequest) String() string { return proto.CompactTextString(m) }
 func (*CorpusRootsRequest) ProtoMessage()    {}
 func (*CorpusRootsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_filetree_3039fb11cbcc5c38, []int{0}
+	return fileDescriptor_a7cc7eba6fded8b6, []int{0}
 }
+
 func (m *CorpusRootsRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CorpusRootsRequest.Unmarshal(m, b)
 }
 func (m *CorpusRootsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CorpusRootsRequest.Marshal(b, m, deterministic)
 }
-func (dst *CorpusRootsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CorpusRootsRequest.Merge(dst, src)
+func (m *CorpusRootsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CorpusRootsRequest.Merge(m, src)
 }
 func (m *CorpusRootsRequest) XXX_Size() int {
 	return xxx_messageInfo_CorpusRootsRequest.Size(m)
@@ -85,16 +90,17 @@
 func (m *CorpusRootsReply) String() string { return proto.CompactTextString(m) }
 func (*CorpusRootsReply) ProtoMessage()    {}
 func (*CorpusRootsReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_filetree_3039fb11cbcc5c38, []int{1}
+	return fileDescriptor_a7cc7eba6fded8b6, []int{1}
 }
+
 func (m *CorpusRootsReply) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CorpusRootsReply.Unmarshal(m, b)
 }
 func (m *CorpusRootsReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CorpusRootsReply.Marshal(b, m, deterministic)
 }
-func (dst *CorpusRootsReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CorpusRootsReply.Merge(dst, src)
+func (m *CorpusRootsReply) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CorpusRootsReply.Merge(m, src)
 }
 func (m *CorpusRootsReply) XXX_Size() int {
 	return xxx_messageInfo_CorpusRootsReply.Size(m)
@@ -125,16 +131,17 @@
 func (m *CorpusRootsReply_Corpus) String() string { return proto.CompactTextString(m) }
 func (*CorpusRootsReply_Corpus) ProtoMessage()    {}
 func (*CorpusRootsReply_Corpus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_filetree_3039fb11cbcc5c38, []int{1, 0}
+	return fileDescriptor_a7cc7eba6fded8b6, []int{1, 0}
 }
+
 func (m *CorpusRootsReply_Corpus) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CorpusRootsReply_Corpus.Unmarshal(m, b)
 }
 func (m *CorpusRootsReply_Corpus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CorpusRootsReply_Corpus.Marshal(b, m, deterministic)
 }
-func (dst *CorpusRootsReply_Corpus) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CorpusRootsReply_Corpus.Merge(dst, src)
+func (m *CorpusRootsReply_Corpus) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CorpusRootsReply_Corpus.Merge(m, src)
 }
 func (m *CorpusRootsReply_Corpus) XXX_Size() int {
 	return xxx_messageInfo_CorpusRootsReply_Corpus.Size(m)
@@ -179,16 +186,17 @@
 func (m *DirectoryRequest) String() string { return proto.CompactTextString(m) }
 func (*DirectoryRequest) ProtoMessage()    {}
 func (*DirectoryRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_filetree_3039fb11cbcc5c38, []int{2}
+	return fileDescriptor_a7cc7eba6fded8b6, []int{2}
 }
+
 func (m *DirectoryRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_DirectoryRequest.Unmarshal(m, b)
 }
 func (m *DirectoryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_DirectoryRequest.Marshal(b, m, deterministic)
 }
-func (dst *DirectoryRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DirectoryRequest.Merge(dst, src)
+func (m *DirectoryRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DirectoryRequest.Merge(m, src)
 }
 func (m *DirectoryRequest) XXX_Size() int {
 	return xxx_messageInfo_DirectoryRequest.Size(m)
@@ -234,16 +242,17 @@
 func (m *DirectoryReply) String() string { return proto.CompactTextString(m) }
 func (*DirectoryReply) ProtoMessage()    {}
 func (*DirectoryReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_filetree_3039fb11cbcc5c38, []int{3}
+	return fileDescriptor_a7cc7eba6fded8b6, []int{3}
 }
+
 func (m *DirectoryReply) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_DirectoryReply.Unmarshal(m, b)
 }
 func (m *DirectoryReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_DirectoryReply.Marshal(b, m, deterministic)
 }
-func (dst *DirectoryReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DirectoryReply.Merge(dst, src)
+func (m *DirectoryReply) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DirectoryReply.Merge(m, src)
 }
 func (m *DirectoryReply) XXX_Size() int {
 	return xxx_messageInfo_DirectoryReply.Size(m)
@@ -295,16 +304,17 @@
 func (m *DirectoryReply_Entry) String() string { return proto.CompactTextString(m) }
 func (*DirectoryReply_Entry) ProtoMessage()    {}
 func (*DirectoryReply_Entry) Descriptor() ([]byte, []int) {
-	return fileDescriptor_filetree_3039fb11cbcc5c38, []int{3, 0}
+	return fileDescriptor_a7cc7eba6fded8b6, []int{3, 0}
 }
+
 func (m *DirectoryReply_Entry) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_DirectoryReply_Entry.Unmarshal(m, b)
 }
 func (m *DirectoryReply_Entry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_DirectoryReply_Entry.Marshal(b, m, deterministic)
 }
-func (dst *DirectoryReply_Entry) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DirectoryReply_Entry.Merge(dst, src)
+func (m *DirectoryReply_Entry) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DirectoryReply_Entry.Merge(m, src)
 }
 func (m *DirectoryReply_Entry) XXX_Size() int {
 	return xxx_messageInfo_DirectoryReply_Entry.Size(m)
@@ -337,20 +347,18 @@
 }
 
 func init() {
+	proto.RegisterEnum("kythe.proto.DirectoryReply_Kind", DirectoryReply_Kind_name, DirectoryReply_Kind_value)
 	proto.RegisterType((*CorpusRootsRequest)(nil), "kythe.proto.CorpusRootsRequest")
 	proto.RegisterType((*CorpusRootsReply)(nil), "kythe.proto.CorpusRootsReply")
 	proto.RegisterType((*CorpusRootsReply_Corpus)(nil), "kythe.proto.CorpusRootsReply.Corpus")
 	proto.RegisterType((*DirectoryRequest)(nil), "kythe.proto.DirectoryRequest")
 	proto.RegisterType((*DirectoryReply)(nil), "kythe.proto.DirectoryReply")
 	proto.RegisterType((*DirectoryReply_Entry)(nil), "kythe.proto.DirectoryReply.Entry")
-	proto.RegisterEnum("kythe.proto.DirectoryReply_Kind", DirectoryReply_Kind_name, DirectoryReply_Kind_value)
 }
 
-func init() {
-	proto.RegisterFile("kythe/proto/filetree.proto", fileDescriptor_filetree_3039fb11cbcc5c38)
-}
+func init() { proto.RegisterFile("kythe/proto/filetree.proto", fileDescriptor_a7cc7eba6fded8b6) }
 
-var fileDescriptor_filetree_3039fb11cbcc5c38 = []byte{
+var fileDescriptor_a7cc7eba6fded8b6 = []byte{
 	// 435 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0xc1, 0x6e, 0xd3, 0x40,
 	0x10, 0x86, 0xb3, 0xb6, 0x13, 0x9a, 0x31, 0x14, 0x33, 0x42, 0xc8, 0x0a, 0xaa, 0x9a, 0x5a, 0x1c,
diff --git a/kythe/proto/go_go_proto/go.pb.go b/kythe/proto/go_go_proto/go.pb.go
index 622f44e..b226662 100644
--- a/kythe/proto/go_go_proto/go.pb.go
+++ b/kythe/proto/go_go_proto/go.pb.go
@@ -3,9 +3,11 @@
 
 package go_go_proto
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -16,7 +18,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type GoDetails struct {
 	Goos                 string   `protobuf:"bytes,1,opt,name=goos,proto3" json:"goos,omitempty"`
@@ -35,16 +37,17 @@
 func (m *GoDetails) String() string { return proto.CompactTextString(m) }
 func (*GoDetails) ProtoMessage()    {}
 func (*GoDetails) Descriptor() ([]byte, []int) {
-	return fileDescriptor_go_0251d8e3856873be, []int{0}
+	return fileDescriptor_01b832ac89a99f34, []int{0}
 }
+
 func (m *GoDetails) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_GoDetails.Unmarshal(m, b)
 }
 func (m *GoDetails) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_GoDetails.Marshal(b, m, deterministic)
 }
-func (dst *GoDetails) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GoDetails.Merge(dst, src)
+func (m *GoDetails) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GoDetails.Merge(m, src)
 }
 func (m *GoDetails) XXX_Size() int {
 	return xxx_messageInfo_GoDetails.Size(m)
@@ -115,16 +118,17 @@
 func (m *GoPackageInfo) String() string { return proto.CompactTextString(m) }
 func (*GoPackageInfo) ProtoMessage()    {}
 func (*GoPackageInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_go_0251d8e3856873be, []int{1}
+	return fileDescriptor_01b832ac89a99f34, []int{1}
 }
+
 func (m *GoPackageInfo) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_GoPackageInfo.Unmarshal(m, b)
 }
 func (m *GoPackageInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_GoPackageInfo.Marshal(b, m, deterministic)
 }
-func (dst *GoPackageInfo) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_GoPackageInfo.Merge(dst, src)
+func (m *GoPackageInfo) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GoPackageInfo.Merge(m, src)
 }
 func (m *GoPackageInfo) XXX_Size() int {
 	return xxx_messageInfo_GoPackageInfo.Size(m)
@@ -147,9 +151,9 @@
 	proto.RegisterType((*GoPackageInfo)(nil), "kythe.proto.GoPackageInfo")
 }
 
-func init() { proto.RegisterFile("kythe/proto/go.proto", fileDescriptor_go_0251d8e3856873be) }
+func init() { proto.RegisterFile("kythe/proto/go.proto", fileDescriptor_01b832ac89a99f34) }
 
-var fileDescriptor_go_0251d8e3856873be = []byte{
+var fileDescriptor_01b832ac89a99f34 = []byte{
 	// 250 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x4c, 0xd0, 0x41, 0x4b, 0xc3, 0x30,
 	0x18, 0xc6, 0x71, 0xea, 0x66, 0x5d, 0xdf, 0xe2, 0x25, 0x88, 0x04, 0x41, 0x56, 0x76, 0xea, 0xa9,
diff --git a/kythe/proto/graph_go_proto/graph.pb.go b/kythe/proto/graph_go_proto/graph.pb.go
index 43909c1..83b494a 100644
--- a/kythe/proto/graph_go_proto/graph.pb.go
+++ b/kythe/proto/graph_go_proto/graph.pb.go
@@ -3,10 +3,12 @@
 
 package graph_go_proto
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import common_go_proto "kythe.io/kythe/proto/common_go_proto"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	common_go_proto "kythe.io/kythe/proto/common_go_proto"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -17,7 +19,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type NodesRequest struct {
 	Ticket               []string `protobuf:"bytes,1,rep,name=ticket,proto3" json:"ticket,omitempty"`
@@ -31,16 +33,17 @@
 func (m *NodesRequest) String() string { return proto.CompactTextString(m) }
 func (*NodesRequest) ProtoMessage()    {}
 func (*NodesRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_graph_c34d059ac32f02dd, []int{0}
+	return fileDescriptor_fdd66e9c25a95983, []int{0}
 }
+
 func (m *NodesRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_NodesRequest.Unmarshal(m, b)
 }
 func (m *NodesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_NodesRequest.Marshal(b, m, deterministic)
 }
-func (dst *NodesRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_NodesRequest.Merge(dst, src)
+func (m *NodesRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_NodesRequest.Merge(m, src)
 }
 func (m *NodesRequest) XXX_Size() int {
 	return xxx_messageInfo_NodesRequest.Size(m)
@@ -76,16 +79,17 @@
 func (m *NodesReply) String() string { return proto.CompactTextString(m) }
 func (*NodesReply) ProtoMessage()    {}
 func (*NodesReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_graph_c34d059ac32f02dd, []int{1}
+	return fileDescriptor_fdd66e9c25a95983, []int{1}
 }
+
 func (m *NodesReply) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_NodesReply.Unmarshal(m, b)
 }
 func (m *NodesReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_NodesReply.Marshal(b, m, deterministic)
 }
-func (dst *NodesReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_NodesReply.Merge(dst, src)
+func (m *NodesReply) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_NodesReply.Merge(m, src)
 }
 func (m *NodesReply) XXX_Size() int {
 	return xxx_messageInfo_NodesReply.Size(m)
@@ -118,16 +122,17 @@
 func (m *EdgesRequest) String() string { return proto.CompactTextString(m) }
 func (*EdgesRequest) ProtoMessage()    {}
 func (*EdgesRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_graph_c34d059ac32f02dd, []int{2}
+	return fileDescriptor_fdd66e9c25a95983, []int{2}
 }
+
 func (m *EdgesRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_EdgesRequest.Unmarshal(m, b)
 }
 func (m *EdgesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_EdgesRequest.Marshal(b, m, deterministic)
 }
-func (dst *EdgesRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EdgesRequest.Merge(dst, src)
+func (m *EdgesRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_EdgesRequest.Merge(m, src)
 }
 func (m *EdgesRequest) XXX_Size() int {
 	return xxx_messageInfo_EdgesRequest.Size(m)
@@ -184,16 +189,17 @@
 func (m *EdgeSet) String() string { return proto.CompactTextString(m) }
 func (*EdgeSet) ProtoMessage()    {}
 func (*EdgeSet) Descriptor() ([]byte, []int) {
-	return fileDescriptor_graph_c34d059ac32f02dd, []int{3}
+	return fileDescriptor_fdd66e9c25a95983, []int{3}
 }
+
 func (m *EdgeSet) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_EdgeSet.Unmarshal(m, b)
 }
 func (m *EdgeSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_EdgeSet.Marshal(b, m, deterministic)
 }
-func (dst *EdgeSet) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EdgeSet.Merge(dst, src)
+func (m *EdgeSet) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_EdgeSet.Merge(m, src)
 }
 func (m *EdgeSet) XXX_Size() int {
 	return xxx_messageInfo_EdgeSet.Size(m)
@@ -222,16 +228,17 @@
 func (m *EdgeSet_Group) String() string { return proto.CompactTextString(m) }
 func (*EdgeSet_Group) ProtoMessage()    {}
 func (*EdgeSet_Group) Descriptor() ([]byte, []int) {
-	return fileDescriptor_graph_c34d059ac32f02dd, []int{3, 0}
+	return fileDescriptor_fdd66e9c25a95983, []int{3, 0}
 }
+
 func (m *EdgeSet_Group) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_EdgeSet_Group.Unmarshal(m, b)
 }
 func (m *EdgeSet_Group) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_EdgeSet_Group.Marshal(b, m, deterministic)
 }
-func (dst *EdgeSet_Group) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EdgeSet_Group.Merge(dst, src)
+func (m *EdgeSet_Group) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_EdgeSet_Group.Merge(m, src)
 }
 func (m *EdgeSet_Group) XXX_Size() int {
 	return xxx_messageInfo_EdgeSet_Group.Size(m)
@@ -261,16 +268,17 @@
 func (m *EdgeSet_Group_Edge) String() string { return proto.CompactTextString(m) }
 func (*EdgeSet_Group_Edge) ProtoMessage()    {}
 func (*EdgeSet_Group_Edge) Descriptor() ([]byte, []int) {
-	return fileDescriptor_graph_c34d059ac32f02dd, []int{3, 0, 0}
+	return fileDescriptor_fdd66e9c25a95983, []int{3, 0, 0}
 }
+
 func (m *EdgeSet_Group_Edge) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_EdgeSet_Group_Edge.Unmarshal(m, b)
 }
 func (m *EdgeSet_Group_Edge) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_EdgeSet_Group_Edge.Marshal(b, m, deterministic)
 }
-func (dst *EdgeSet_Group_Edge) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EdgeSet_Group_Edge.Merge(dst, src)
+func (m *EdgeSet_Group_Edge) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_EdgeSet_Group_Edge.Merge(m, src)
 }
 func (m *EdgeSet_Group_Edge) XXX_Size() int {
 	return xxx_messageInfo_EdgeSet_Group_Edge.Size(m)
@@ -309,16 +317,17 @@
 func (m *EdgesReply) String() string { return proto.CompactTextString(m) }
 func (*EdgesReply) ProtoMessage()    {}
 func (*EdgesReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_graph_c34d059ac32f02dd, []int{4}
+	return fileDescriptor_fdd66e9c25a95983, []int{4}
 }
+
 func (m *EdgesReply) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_EdgesReply.Unmarshal(m, b)
 }
 func (m *EdgesReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_EdgesReply.Marshal(b, m, deterministic)
 }
-func (dst *EdgesReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EdgesReply.Merge(dst, src)
+func (m *EdgesReply) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_EdgesReply.Merge(m, src)
 }
 func (m *EdgesReply) XXX_Size() int {
 	return xxx_messageInfo_EdgesReply.Size(m)
@@ -372,9 +381,9 @@
 	proto.RegisterMapType((map[string]int64)(nil), "kythe.proto.EdgesReply.TotalEdgesByKindEntry")
 }
 
-func init() { proto.RegisterFile("kythe/proto/graph.proto", fileDescriptor_graph_c34d059ac32f02dd) }
+func init() { proto.RegisterFile("kythe/proto/graph.proto", fileDescriptor_fdd66e9c25a95983) }
 
-var fileDescriptor_graph_c34d059ac32f02dd = []byte{
+var fileDescriptor_fdd66e9c25a95983 = []byte{
 	// 598 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x54, 0x51, 0x8f, 0xd2, 0x40,
 	0x10, 0xbe, 0x16, 0xca, 0xc1, 0x00, 0x4a, 0xd6, 0xd3, 0xab, 0x55, 0x23, 0xa9, 0xd1, 0x10, 0x13,
diff --git a/kythe/proto/graph_serving_go_proto/graph_serving.pb.go b/kythe/proto/graph_serving_go_proto/graph_serving.pb.go
index cd76692..12e8787 100644
--- a/kythe/proto/graph_serving_go_proto/graph_serving.pb.go
+++ b/kythe/proto/graph_serving_go_proto/graph_serving.pb.go
@@ -3,11 +3,13 @@
 
 package graph_serving_go_proto
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import schema_go_proto "kythe.io/kythe/proto/schema_go_proto"
-import storage_go_proto "kythe.io/kythe/proto/storage_go_proto"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	schema_go_proto "kythe.io/kythe/proto/schema_go_proto"
+	storage_go_proto "kythe.io/kythe/proto/storage_go_proto"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -18,7 +20,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type Edges struct {
 	Source *storage_go_proto.VName `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"`
@@ -36,16 +38,17 @@
 func (m *Edges) String() string { return proto.CompactTextString(m) }
 func (*Edges) ProtoMessage()    {}
 func (*Edges) Descriptor() ([]byte, []int) {
-	return fileDescriptor_graph_serving_7e58dc12a40a376b, []int{0}
+	return fileDescriptor_6a9dc9f3ff73c6a9, []int{0}
 }
+
 func (m *Edges) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Edges.Unmarshal(m, b)
 }
 func (m *Edges) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Edges.Marshal(b, m, deterministic)
 }
-func (dst *Edges) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Edges.Merge(dst, src)
+func (m *Edges) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Edges.Merge(m, src)
 }
 func (m *Edges) XXX_Size() int {
 	return xxx_messageInfo_Edges.Size(m)
@@ -113,99 +116,15 @@
 	return nil
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*Edges) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _Edges_OneofMarshaler, _Edges_OneofUnmarshaler, _Edges_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*Edges) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*Edges_Index_)(nil),
 		(*Edges_Edge_)(nil),
 		(*Edges_Target_)(nil),
 	}
 }
 
-func _Edges_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*Edges)
-	// entry
-	switch x := m.Entry.(type) {
-	case *Edges_Index_:
-		b.EncodeVarint(2<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Index); err != nil {
-			return err
-		}
-	case *Edges_Edge_:
-		b.EncodeVarint(3<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Edge); err != nil {
-			return err
-		}
-	case *Edges_Target_:
-		b.EncodeVarint(4<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Target); err != nil {
-			return err
-		}
-	case nil:
-	default:
-		return fmt.Errorf("Edges.Entry has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _Edges_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*Edges)
-	switch tag {
-	case 2: // entry.index
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(Edges_Index)
-		err := b.DecodeMessage(msg)
-		m.Entry = &Edges_Index_{msg}
-		return true, err
-	case 3: // entry.edge
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(Edges_Edge)
-		err := b.DecodeMessage(msg)
-		m.Entry = &Edges_Edge_{msg}
-		return true, err
-	case 4: // entry.target
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(Edges_Target)
-		err := b.DecodeMessage(msg)
-		m.Entry = &Edges_Target_{msg}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _Edges_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*Edges)
-	// entry
-	switch x := m.Entry.(type) {
-	case *Edges_Index_:
-		s := proto.Size(x.Index)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *Edges_Edge_:
-		s := proto.Size(x.Edge)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *Edges_Target_:
-		s := proto.Size(x.Target)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 type Edges_Index struct {
 	Node                 *schema_go_proto.Node `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
@@ -217,16 +136,17 @@
 func (m *Edges_Index) String() string { return proto.CompactTextString(m) }
 func (*Edges_Index) ProtoMessage()    {}
 func (*Edges_Index) Descriptor() ([]byte, []int) {
-	return fileDescriptor_graph_serving_7e58dc12a40a376b, []int{0, 0}
+	return fileDescriptor_6a9dc9f3ff73c6a9, []int{0, 0}
 }
+
 func (m *Edges_Index) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Edges_Index.Unmarshal(m, b)
 }
 func (m *Edges_Index) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Edges_Index.Marshal(b, m, deterministic)
 }
-func (dst *Edges_Index) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Edges_Index.Merge(dst, src)
+func (m *Edges_Index) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Edges_Index.Merge(m, src)
 }
 func (m *Edges_Index) XXX_Size() int {
 	return xxx_messageInfo_Edges_Index.Size(m)
@@ -261,16 +181,17 @@
 func (m *Edges_Edge) String() string { return proto.CompactTextString(m) }
 func (*Edges_Edge) ProtoMessage()    {}
 func (*Edges_Edge) Descriptor() ([]byte, []int) {
-	return fileDescriptor_graph_serving_7e58dc12a40a376b, []int{0, 1}
+	return fileDescriptor_6a9dc9f3ff73c6a9, []int{0, 1}
 }
+
 func (m *Edges_Edge) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Edges_Edge.Unmarshal(m, b)
 }
 func (m *Edges_Edge) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Edges_Edge.Marshal(b, m, deterministic)
 }
-func (dst *Edges_Edge) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Edges_Edge.Merge(dst, src)
+func (m *Edges_Edge) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Edges_Edge.Merge(m, src)
 }
 func (m *Edges_Edge) XXX_Size() int {
 	return xxx_messageInfo_Edges_Edge.Size(m)
@@ -339,71 +260,14 @@
 	return nil
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*Edges_Edge) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _Edges_Edge_OneofMarshaler, _Edges_Edge_OneofUnmarshaler, _Edges_Edge_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*Edges_Edge) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*Edges_Edge_KytheKind)(nil),
 		(*Edges_Edge_GenericKind)(nil),
 	}
 }
 
-func _Edges_Edge_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*Edges_Edge)
-	// kind
-	switch x := m.Kind.(type) {
-	case *Edges_Edge_KytheKind:
-		b.EncodeVarint(1<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.KytheKind))
-	case *Edges_Edge_GenericKind:
-		b.EncodeVarint(2<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.GenericKind)
-	case nil:
-	default:
-		return fmt.Errorf("Edges_Edge.Kind has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _Edges_Edge_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*Edges_Edge)
-	switch tag {
-	case 1: // kind.kythe_kind
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Kind = &Edges_Edge_KytheKind{schema_go_proto.EdgeKind(x)}
-		return true, err
-	case 2: // kind.generic_kind
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.Kind = &Edges_Edge_GenericKind{x}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _Edges_Edge_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*Edges_Edge)
-	// kind
-	switch x := m.Kind.(type) {
-	case *Edges_Edge_KytheKind:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(x.KytheKind))
-	case *Edges_Edge_GenericKind:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.GenericKind)))
-		n += len(x.GenericKind)
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 type Edges_Target struct {
 	Node                 *schema_go_proto.Node `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
@@ -415,16 +279,17 @@
 func (m *Edges_Target) String() string { return proto.CompactTextString(m) }
 func (*Edges_Target) ProtoMessage()    {}
 func (*Edges_Target) Descriptor() ([]byte, []int) {
-	return fileDescriptor_graph_serving_7e58dc12a40a376b, []int{0, 2}
+	return fileDescriptor_6a9dc9f3ff73c6a9, []int{0, 2}
 }
+
 func (m *Edges_Target) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Edges_Target.Unmarshal(m, b)
 }
 func (m *Edges_Target) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Edges_Target.Marshal(b, m, deterministic)
 }
-func (dst *Edges_Target) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Edges_Target.Merge(dst, src)
+func (m *Edges_Target) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Edges_Target.Merge(m, src)
 }
 func (m *Edges_Target) XXX_Size() int {
 	return xxx_messageInfo_Edges_Target.Size(m)
@@ -449,11 +314,9 @@
 	proto.RegisterType((*Edges_Target)(nil), "kythe.proto.serving.graph.Edges.Target")
 }
 
-func init() {
-	proto.RegisterFile("kythe/proto/graph_serving.proto", fileDescriptor_graph_serving_7e58dc12a40a376b)
-}
+func init() { proto.RegisterFile("kythe/proto/graph_serving.proto", fileDescriptor_6a9dc9f3ff73c6a9) }
 
-var fileDescriptor_graph_serving_7e58dc12a40a376b = []byte{
+var fileDescriptor_6a9dc9f3ff73c6a9 = []byte{
 	// 380 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x92, 0xdf, 0x6a, 0xdb, 0x30,
 	0x14, 0x87, 0x9d, 0xcd, 0x76, 0x96, 0x93, 0xb1, 0x0b, 0x5d, 0x0c, 0xc7, 0x0c, 0x32, 0x36, 0xf6,
diff --git a/kythe/proto/identifier_go_proto/identifier.pb.go b/kythe/proto/identifier_go_proto/identifier.pb.go
index 7a00aa2..aa9d1c4 100644
--- a/kythe/proto/identifier_go_proto/identifier.pb.go
+++ b/kythe/proto/identifier_go_proto/identifier.pb.go
@@ -3,9 +3,11 @@
 
 package identifier_go_proto
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -16,7 +18,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type FindRequest struct {
 	Identifier           string   `protobuf:"bytes,1,opt,name=identifier,proto3" json:"identifier,omitempty"`
@@ -31,16 +33,17 @@
 func (m *FindRequest) String() string { return proto.CompactTextString(m) }
 func (*FindRequest) ProtoMessage()    {}
 func (*FindRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_identifier_35694b3e713c8801, []int{0}
+	return fileDescriptor_e4e74f173922aaa6, []int{0}
 }
+
 func (m *FindRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_FindRequest.Unmarshal(m, b)
 }
 func (m *FindRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_FindRequest.Marshal(b, m, deterministic)
 }
-func (dst *FindRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FindRequest.Merge(dst, src)
+func (m *FindRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FindRequest.Merge(m, src)
 }
 func (m *FindRequest) XXX_Size() int {
 	return xxx_messageInfo_FindRequest.Size(m)
@@ -83,16 +86,17 @@
 func (m *FindReply) String() string { return proto.CompactTextString(m) }
 func (*FindReply) ProtoMessage()    {}
 func (*FindReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_identifier_35694b3e713c8801, []int{1}
+	return fileDescriptor_e4e74f173922aaa6, []int{1}
 }
+
 func (m *FindReply) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_FindReply.Unmarshal(m, b)
 }
 func (m *FindReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_FindReply.Marshal(b, m, deterministic)
 }
-func (dst *FindReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FindReply.Merge(dst, src)
+func (m *FindReply) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FindReply.Merge(m, src)
 }
 func (m *FindReply) XXX_Size() int {
 	return xxx_messageInfo_FindReply.Size(m)
@@ -125,16 +129,17 @@
 func (m *FindReply_Match) String() string { return proto.CompactTextString(m) }
 func (*FindReply_Match) ProtoMessage()    {}
 func (*FindReply_Match) Descriptor() ([]byte, []int) {
-	return fileDescriptor_identifier_35694b3e713c8801, []int{1, 0}
+	return fileDescriptor_e4e74f173922aaa6, []int{1, 0}
 }
+
 func (m *FindReply_Match) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_FindReply_Match.Unmarshal(m, b)
 }
 func (m *FindReply_Match) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_FindReply_Match.Marshal(b, m, deterministic)
 }
-func (dst *FindReply_Match) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FindReply_Match.Merge(dst, src)
+func (m *FindReply_Match) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FindReply_Match.Merge(m, src)
 }
 func (m *FindReply_Match) XXX_Size() int {
 	return xxx_messageInfo_FindReply_Match.Size(m)
@@ -186,11 +191,9 @@
 	proto.RegisterType((*FindReply_Match)(nil), "kythe.proto.FindReply.Match")
 }
 
-func init() {
-	proto.RegisterFile("kythe/proto/identifier.proto", fileDescriptor_identifier_35694b3e713c8801)
-}
+func init() { proto.RegisterFile("kythe/proto/identifier.proto", fileDescriptor_e4e74f173922aaa6) }
 
-var fileDescriptor_identifier_35694b3e713c8801 = []byte{
+var fileDescriptor_e4e74f173922aaa6 = []byte{
 	// 325 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x91, 0x41, 0x6b, 0xf2, 0x30,
 	0x18, 0xc7, 0xa9, 0x55, 0xdf, 0xb7, 0x4f, 0xb7, 0xc1, 0x32, 0x90, 0xe0, 0x64, 0x73, 0xc2, 0xc0,
diff --git a/kythe/proto/internal_go_proto/internal.pb.go b/kythe/proto/internal_go_proto/internal.pb.go
index 112fcb0..50a14b8 100644
--- a/kythe/proto/internal_go_proto/internal.pb.go
+++ b/kythe/proto/internal_go_proto/internal.pb.go
@@ -3,10 +3,12 @@
 
 package internal_go_proto
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import serving_go_proto "kythe.io/kythe/proto/serving_go_proto"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	serving_go_proto "kythe.io/kythe/proto/serving_go_proto"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -17,7 +19,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type Source struct {
 	Ticket               string                       `protobuf:"bytes,1,opt,name=ticket,proto3" json:"ticket,omitempty"`
@@ -32,16 +34,17 @@
 func (m *Source) String() string { return proto.CompactTextString(m) }
 func (*Source) ProtoMessage()    {}
 func (*Source) Descriptor() ([]byte, []int) {
-	return fileDescriptor_internal_1ec8ef90c153c472, []int{0}
+	return fileDescriptor_d090b936cefd43c7, []int{0}
 }
+
 func (m *Source) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Source.Unmarshal(m, b)
 }
 func (m *Source) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Source.Marshal(b, m, deterministic)
 }
-func (dst *Source) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Source.Merge(dst, src)
+func (m *Source) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Source.Merge(m, src)
 }
 func (m *Source) XXX_Size() int {
 	return xxx_messageInfo_Source.Size(m)
@@ -85,16 +88,17 @@
 func (m *Source_Edge) String() string { return proto.CompactTextString(m) }
 func (*Source_Edge) ProtoMessage()    {}
 func (*Source_Edge) Descriptor() ([]byte, []int) {
-	return fileDescriptor_internal_1ec8ef90c153c472, []int{0, 0}
+	return fileDescriptor_d090b936cefd43c7, []int{0, 0}
 }
+
 func (m *Source_Edge) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Source_Edge.Unmarshal(m, b)
 }
 func (m *Source_Edge) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Source_Edge.Marshal(b, m, deterministic)
 }
-func (dst *Source_Edge) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Source_Edge.Merge(dst, src)
+func (m *Source_Edge) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Source_Edge.Merge(m, src)
 }
 func (m *Source_Edge) XXX_Size() int {
 	return xxx_messageInfo_Source_Edge.Size(m)
@@ -130,16 +134,17 @@
 func (m *Source_EdgeGroup) String() string { return proto.CompactTextString(m) }
 func (*Source_EdgeGroup) ProtoMessage()    {}
 func (*Source_EdgeGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_internal_1ec8ef90c153c472, []int{0, 1}
+	return fileDescriptor_d090b936cefd43c7, []int{0, 1}
 }
+
 func (m *Source_EdgeGroup) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Source_EdgeGroup.Unmarshal(m, b)
 }
 func (m *Source_EdgeGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Source_EdgeGroup.Marshal(b, m, deterministic)
 }
-func (dst *Source_EdgeGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Source_EdgeGroup.Merge(dst, src)
+func (m *Source_EdgeGroup) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Source_EdgeGroup.Merge(m, src)
 }
 func (m *Source_EdgeGroup) XXX_Size() int {
 	return xxx_messageInfo_Source_EdgeGroup.Size(m)
@@ -171,16 +176,17 @@
 func (m *PageToken) String() string { return proto.CompactTextString(m) }
 func (*PageToken) ProtoMessage()    {}
 func (*PageToken) Descriptor() ([]byte, []int) {
-	return fileDescriptor_internal_1ec8ef90c153c472, []int{1}
+	return fileDescriptor_d090b936cefd43c7, []int{1}
 }
+
 func (m *PageToken) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_PageToken.Unmarshal(m, b)
 }
 func (m *PageToken) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_PageToken.Marshal(b, m, deterministic)
 }
-func (dst *PageToken) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PageToken.Merge(dst, src)
+func (m *PageToken) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PageToken.Merge(m, src)
 }
 func (m *PageToken) XXX_Size() int {
 	return xxx_messageInfo_PageToken.Size(m)
@@ -234,16 +240,17 @@
 func (m *CrossReference) String() string { return proto.CompactTextString(m) }
 func (*CrossReference) ProtoMessage()    {}
 func (*CrossReference) Descriptor() ([]byte, []int) {
-	return fileDescriptor_internal_1ec8ef90c153c472, []int{2}
+	return fileDescriptor_d090b936cefd43c7, []int{2}
 }
+
 func (m *CrossReference) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CrossReference.Unmarshal(m, b)
 }
 func (m *CrossReference) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CrossReference.Marshal(b, m, deterministic)
 }
-func (dst *CrossReference) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CrossReference.Merge(dst, src)
+func (m *CrossReference) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CrossReference.Merge(m, src)
 }
 func (m *CrossReference) XXX_Size() int {
 	return xxx_messageInfo_CrossReference.Size(m)
@@ -302,16 +309,17 @@
 func (m *CrossReference_Decoration) String() string { return proto.CompactTextString(m) }
 func (*CrossReference_Decoration) ProtoMessage()    {}
 func (*CrossReference_Decoration) Descriptor() ([]byte, []int) {
-	return fileDescriptor_internal_1ec8ef90c153c472, []int{2, 0}
+	return fileDescriptor_d090b936cefd43c7, []int{2, 0}
 }
+
 func (m *CrossReference_Decoration) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CrossReference_Decoration.Unmarshal(m, b)
 }
 func (m *CrossReference_Decoration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CrossReference_Decoration.Marshal(b, m, deterministic)
 }
-func (dst *CrossReference_Decoration) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CrossReference_Decoration.Merge(dst, src)
+func (m *CrossReference_Decoration) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CrossReference_Decoration.Merge(m, src)
 }
 func (m *CrossReference_Decoration) XXX_Size() int {
 	return xxx_messageInfo_CrossReference_Decoration.Size(m)
@@ -356,16 +364,17 @@
 func (m *SortedKeyValue) String() string { return proto.CompactTextString(m) }
 func (*SortedKeyValue) ProtoMessage()    {}
 func (*SortedKeyValue) Descriptor() ([]byte, []int) {
-	return fileDescriptor_internal_1ec8ef90c153c472, []int{3}
+	return fileDescriptor_d090b936cefd43c7, []int{3}
 }
+
 func (m *SortedKeyValue) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_SortedKeyValue.Unmarshal(m, b)
 }
 func (m *SortedKeyValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_SortedKeyValue.Marshal(b, m, deterministic)
 }
-func (dst *SortedKeyValue) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SortedKeyValue.Merge(dst, src)
+func (m *SortedKeyValue) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SortedKeyValue.Merge(m, src)
 }
 func (m *SortedKeyValue) XXX_Size() int {
 	return xxx_messageInfo_SortedKeyValue.Size(m)
@@ -409,16 +418,17 @@
 func (m *Path) String() string { return proto.CompactTextString(m) }
 func (*Path) ProtoMessage()    {}
 func (*Path) Descriptor() ([]byte, []int) {
-	return fileDescriptor_internal_1ec8ef90c153c472, []int{4}
+	return fileDescriptor_d090b936cefd43c7, []int{4}
 }
+
 func (m *Path) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Path.Unmarshal(m, b)
 }
 func (m *Path) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Path.Marshal(b, m, deterministic)
 }
-func (dst *Path) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Path.Merge(dst, src)
+func (m *Path) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Path.Merge(m, src)
 }
 func (m *Path) XXX_Size() int {
 	return xxx_messageInfo_Path.Size(m)
@@ -461,16 +471,17 @@
 func (m *Path_Node) String() string { return proto.CompactTextString(m) }
 func (*Path_Node) ProtoMessage()    {}
 func (*Path_Node) Descriptor() ([]byte, []int) {
-	return fileDescriptor_internal_1ec8ef90c153c472, []int{4, 0}
+	return fileDescriptor_d090b936cefd43c7, []int{4, 0}
 }
+
 func (m *Path_Node) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Path_Node.Unmarshal(m, b)
 }
 func (m *Path_Node) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Path_Node.Marshal(b, m, deterministic)
 }
-func (dst *Path_Node) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Path_Node.Merge(dst, src)
+func (m *Path_Node) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Path_Node.Merge(m, src)
 }
 func (m *Path_Node) XXX_Size() int {
 	return xxx_messageInfo_Path_Node.Size(m)
@@ -552,99 +563,15 @@
 	return nil
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*Path_Node) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _Path_Node_OneofMarshaler, _Path_Node_OneofUnmarshaler, _Path_Node_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*Path_Node) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*Path_Node_RawAnchor)(nil),
 		(*Path_Node_ExpandedAnchor)(nil),
 		(*Path_Node_File)(nil),
 	}
 }
 
-func _Path_Node_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*Path_Node)
-	// specialization
-	switch x := m.Specialization.(type) {
-	case *Path_Node_RawAnchor:
-		b.EncodeVarint(10<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.RawAnchor); err != nil {
-			return err
-		}
-	case *Path_Node_ExpandedAnchor:
-		b.EncodeVarint(11<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.ExpandedAnchor); err != nil {
-			return err
-		}
-	case *Path_Node_File:
-		b.EncodeVarint(12<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.File); err != nil {
-			return err
-		}
-	case nil:
-	default:
-		return fmt.Errorf("Path_Node.Specialization has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _Path_Node_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*Path_Node)
-	switch tag {
-	case 10: // specialization.raw_anchor
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(serving_go_proto.RawAnchor)
-		err := b.DecodeMessage(msg)
-		m.Specialization = &Path_Node_RawAnchor{msg}
-		return true, err
-	case 11: // specialization.expanded_anchor
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(serving_go_proto.ExpandedAnchor)
-		err := b.DecodeMessage(msg)
-		m.Specialization = &Path_Node_ExpandedAnchor{msg}
-		return true, err
-	case 12: // specialization.file
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(serving_go_proto.File)
-		err := b.DecodeMessage(msg)
-		m.Specialization = &Path_Node_File{msg}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _Path_Node_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*Path_Node)
-	// specialization
-	switch x := m.Specialization.(type) {
-	case *Path_Node_RawAnchor:
-		s := proto.Size(x.RawAnchor)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *Path_Node_ExpandedAnchor:
-		s := proto.Size(x.ExpandedAnchor)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *Path_Node_File:
-		s := proto.Size(x.File)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 type Path_Edge struct {
 	Kind                 string     `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"`
 	Ordinal              int32      `protobuf:"varint,2,opt,name=ordinal,proto3" json:"ordinal,omitempty"`
@@ -658,16 +585,17 @@
 func (m *Path_Edge) String() string { return proto.CompactTextString(m) }
 func (*Path_Edge) ProtoMessage()    {}
 func (*Path_Edge) Descriptor() ([]byte, []int) {
-	return fileDescriptor_internal_1ec8ef90c153c472, []int{4, 1}
+	return fileDescriptor_d090b936cefd43c7, []int{4, 1}
 }
+
 func (m *Path_Edge) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Path_Edge.Unmarshal(m, b)
 }
 func (m *Path_Edge) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Path_Edge.Marshal(b, m, deterministic)
 }
-func (dst *Path_Edge) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Path_Edge.Merge(dst, src)
+func (m *Path_Edge) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Path_Edge.Merge(m, src)
 }
 func (m *Path_Edge) XXX_Size() int {
 	return xxx_messageInfo_Path_Edge.Size(m)
@@ -716,11 +644,9 @@
 	proto.RegisterType((*Path_Edge)(nil), "kythe.proto.internal.Path.Edge")
 }
 
-func init() {
-	proto.RegisterFile("kythe/proto/internal.proto", fileDescriptor_internal_1ec8ef90c153c472)
-}
+func init() { proto.RegisterFile("kythe/proto/internal.proto", fileDescriptor_d090b936cefd43c7) }
 
-var fileDescriptor_internal_1ec8ef90c153c472 = []byte{
+var fileDescriptor_d090b936cefd43c7 = []byte{
 	// 799 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0xd1, 0x6e, 0xe3, 0x44,
 	0x14, 0x6d, 0x12, 0x3b, 0xad, 0x6f, 0x42, 0xda, 0x1d, 0xad, 0x90, 0x6b, 0x24, 0xb6, 0x04, 0x89,
diff --git a/kythe/proto/java_go_proto/java.pb.go b/kythe/proto/java_go_proto/java.pb.go
index 5ee97b2..b661b18 100644
--- a/kythe/proto/java_go_proto/java.pb.go
+++ b/kythe/proto/java_go_proto/java.pb.go
@@ -3,10 +3,12 @@
 
 package java_go_proto
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import storage_go_proto "kythe.io/kythe/proto/storage_go_proto"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	storage_go_proto "kythe.io/kythe/proto/storage_go_proto"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -17,7 +19,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type JarDetails struct {
 	Jar                  []*JarDetails_Jar `protobuf:"bytes,1,rep,name=jar,proto3" json:"jar,omitempty"`
@@ -30,16 +32,17 @@
 func (m *JarDetails) String() string { return proto.CompactTextString(m) }
 func (*JarDetails) ProtoMessage()    {}
 func (*JarDetails) Descriptor() ([]byte, []int) {
-	return fileDescriptor_java_4af205c53eb1abc3, []int{0}
+	return fileDescriptor_4e5838ccc9a1d029, []int{0}
 }
+
 func (m *JarDetails) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_JarDetails.Unmarshal(m, b)
 }
 func (m *JarDetails) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_JarDetails.Marshal(b, m, deterministic)
 }
-func (dst *JarDetails) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_JarDetails.Merge(dst, src)
+func (m *JarDetails) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_JarDetails.Merge(m, src)
 }
 func (m *JarDetails) XXX_Size() int {
 	return xxx_messageInfo_JarDetails.Size(m)
@@ -68,16 +71,17 @@
 func (m *JarDetails_Jar) String() string { return proto.CompactTextString(m) }
 func (*JarDetails_Jar) ProtoMessage()    {}
 func (*JarDetails_Jar) Descriptor() ([]byte, []int) {
-	return fileDescriptor_java_4af205c53eb1abc3, []int{0, 0}
+	return fileDescriptor_4e5838ccc9a1d029, []int{0, 0}
 }
+
 func (m *JarDetails_Jar) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_JarDetails_Jar.Unmarshal(m, b)
 }
 func (m *JarDetails_Jar) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_JarDetails_Jar.Marshal(b, m, deterministic)
 }
-func (dst *JarDetails_Jar) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_JarDetails_Jar.Merge(dst, src)
+func (m *JarDetails_Jar) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_JarDetails_Jar.Merge(m, src)
 }
 func (m *JarDetails_Jar) XXX_Size() int {
 	return xxx_messageInfo_JarDetails_Jar.Size(m)
@@ -106,16 +110,17 @@
 func (m *JarEntryDetails) String() string { return proto.CompactTextString(m) }
 func (*JarEntryDetails) ProtoMessage()    {}
 func (*JarEntryDetails) Descriptor() ([]byte, []int) {
-	return fileDescriptor_java_4af205c53eb1abc3, []int{1}
+	return fileDescriptor_4e5838ccc9a1d029, []int{1}
 }
+
 func (m *JarEntryDetails) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_JarEntryDetails.Unmarshal(m, b)
 }
 func (m *JarEntryDetails) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_JarEntryDetails.Marshal(b, m, deterministic)
 }
-func (dst *JarEntryDetails) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_JarEntryDetails.Merge(dst, src)
+func (m *JarEntryDetails) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_JarEntryDetails.Merge(m, src)
 }
 func (m *JarEntryDetails) XXX_Size() int {
 	return xxx_messageInfo_JarEntryDetails.Size(m)
@@ -147,16 +152,17 @@
 func (m *JavaDetails) String() string { return proto.CompactTextString(m) }
 func (*JavaDetails) ProtoMessage()    {}
 func (*JavaDetails) Descriptor() ([]byte, []int) {
-	return fileDescriptor_java_4af205c53eb1abc3, []int{2}
+	return fileDescriptor_4e5838ccc9a1d029, []int{2}
 }
+
 func (m *JavaDetails) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_JavaDetails.Unmarshal(m, b)
 }
 func (m *JavaDetails) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_JavaDetails.Marshal(b, m, deterministic)
 }
-func (dst *JavaDetails) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_JavaDetails.Merge(dst, src)
+func (m *JavaDetails) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_JavaDetails.Merge(m, src)
 }
 func (m *JavaDetails) XXX_Size() int {
 	return xxx_messageInfo_JavaDetails.Size(m)
@@ -202,9 +208,9 @@
 	proto.RegisterType((*JavaDetails)(nil), "kythe.proto.JavaDetails")
 }
 
-func init() { proto.RegisterFile("kythe/proto/java.proto", fileDescriptor_java_4af205c53eb1abc3) }
+func init() { proto.RegisterFile("kythe/proto/java.proto", fileDescriptor_4e5838ccc9a1d029) }
 
-var fileDescriptor_java_4af205c53eb1abc3 = []byte{
+var fileDescriptor_4e5838ccc9a1d029 = []byte{
 	// 298 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x54, 0x90, 0x4f, 0x4f, 0xb3, 0x40,
 	0x10, 0xc6, 0x43, 0x79, 0xdb, 0xbc, 0x1d, 0xac, 0x35, 0x7b, 0x30, 0xb5, 0x1a, 0x6d, 0xd0, 0xc4,
diff --git a/kythe/proto/link_go_proto/link.pb.go b/kythe/proto/link_go_proto/link.pb.go
index 978317f..fa8ed2e 100644
--- a/kythe/proto/link_go_proto/link.pb.go
+++ b/kythe/proto/link_go_proto/link.pb.go
@@ -3,10 +3,12 @@
 
 package link_go_proto
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import common_go_proto "kythe.io/kythe/proto/common_go_proto"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	common_go_proto "kythe.io/kythe/proto/common_go_proto"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -17,7 +19,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type LinkRequest_DefinitionKind int32
 
@@ -32,6 +34,7 @@
 	1: "FULL",
 	2: "ANY",
 }
+
 var LinkRequest_DefinitionKind_value = map[string]int32{
 	"BINDING": 0,
 	"FULL":    1,
@@ -41,8 +44,9 @@
 func (x LinkRequest_DefinitionKind) String() string {
 	return proto.EnumName(LinkRequest_DefinitionKind_name, int32(x))
 }
+
 func (LinkRequest_DefinitionKind) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_link_2566f186b86f72a9, []int{0, 0}
+	return fileDescriptor_bd0775c667ce666e, []int{0, 0}
 }
 
 type LinkRequest struct {
@@ -64,16 +68,17 @@
 func (m *LinkRequest) String() string { return proto.CompactTextString(m) }
 func (*LinkRequest) ProtoMessage()    {}
 func (*LinkRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_link_2566f186b86f72a9, []int{0}
+	return fileDescriptor_bd0775c667ce666e, []int{0}
 }
+
 func (m *LinkRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_LinkRequest.Unmarshal(m, b)
 }
 func (m *LinkRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_LinkRequest.Marshal(b, m, deterministic)
 }
-func (dst *LinkRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LinkRequest.Merge(dst, src)
+func (m *LinkRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_LinkRequest.Merge(m, src)
 }
 func (m *LinkRequest) XXX_Size() int {
 	return xxx_messageInfo_LinkRequest.Size(m)
@@ -160,16 +165,17 @@
 func (m *LinkRequest_Location) String() string { return proto.CompactTextString(m) }
 func (*LinkRequest_Location) ProtoMessage()    {}
 func (*LinkRequest_Location) Descriptor() ([]byte, []int) {
-	return fileDescriptor_link_2566f186b86f72a9, []int{0, 0}
+	return fileDescriptor_bd0775c667ce666e, []int{0, 0}
 }
+
 func (m *LinkRequest_Location) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_LinkRequest_Location.Unmarshal(m, b)
 }
 func (m *LinkRequest_Location) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_LinkRequest_Location.Marshal(b, m, deterministic)
 }
-func (dst *LinkRequest_Location) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LinkRequest_Location.Merge(dst, src)
+func (m *LinkRequest_Location) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_LinkRequest_Location.Merge(m, src)
 }
 func (m *LinkRequest_Location) XXX_Size() int {
 	return xxx_messageInfo_LinkRequest_Location.Size(m)
@@ -212,16 +218,17 @@
 func (m *LinkRequest_Params) String() string { return proto.CompactTextString(m) }
 func (*LinkRequest_Params) ProtoMessage()    {}
 func (*LinkRequest_Params) Descriptor() ([]byte, []int) {
-	return fileDescriptor_link_2566f186b86f72a9, []int{0, 1}
+	return fileDescriptor_bd0775c667ce666e, []int{0, 1}
 }
+
 func (m *LinkRequest_Params) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_LinkRequest_Params.Unmarshal(m, b)
 }
 func (m *LinkRequest_Params) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_LinkRequest_Params.Marshal(b, m, deterministic)
 }
-func (dst *LinkRequest_Params) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LinkRequest_Params.Merge(dst, src)
+func (m *LinkRequest_Params) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_LinkRequest_Params.Merge(m, src)
 }
 func (m *LinkRequest_Params) XXX_Size() int {
 	return xxx_messageInfo_LinkRequest_Params.Size(m)
@@ -252,16 +259,17 @@
 func (m *Link) String() string { return proto.CompactTextString(m) }
 func (*Link) ProtoMessage()    {}
 func (*Link) Descriptor() ([]byte, []int) {
-	return fileDescriptor_link_2566f186b86f72a9, []int{1}
+	return fileDescriptor_bd0775c667ce666e, []int{1}
 }
+
 func (m *Link) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Link.Unmarshal(m, b)
 }
 func (m *Link) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Link.Marshal(b, m, deterministic)
 }
-func (dst *Link) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Link.Merge(dst, src)
+func (m *Link) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Link.Merge(m, src)
 }
 func (m *Link) XXX_Size() int {
 	return xxx_messageInfo_Link.Size(m)
@@ -306,16 +314,17 @@
 func (m *Link_Node) String() string { return proto.CompactTextString(m) }
 func (*Link_Node) ProtoMessage()    {}
 func (*Link_Node) Descriptor() ([]byte, []int) {
-	return fileDescriptor_link_2566f186b86f72a9, []int{1, 0}
+	return fileDescriptor_bd0775c667ce666e, []int{1, 0}
 }
+
 func (m *Link_Node) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Link_Node.Unmarshal(m, b)
 }
 func (m *Link_Node) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Link_Node.Marshal(b, m, deterministic)
 }
-func (dst *Link_Node) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Link_Node.Merge(dst, src)
+func (m *Link_Node) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Link_Node.Merge(m, src)
 }
 func (m *Link_Node) XXX_Size() int {
 	return xxx_messageInfo_Link_Node.Size(m)
@@ -358,16 +367,17 @@
 func (m *LinkReply) String() string { return proto.CompactTextString(m) }
 func (*LinkReply) ProtoMessage()    {}
 func (*LinkReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_link_2566f186b86f72a9, []int{2}
+	return fileDescriptor_bd0775c667ce666e, []int{2}
 }
+
 func (m *LinkReply) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_LinkReply.Unmarshal(m, b)
 }
 func (m *LinkReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_LinkReply.Marshal(b, m, deterministic)
 }
-func (dst *LinkReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LinkReply.Merge(dst, src)
+func (m *LinkReply) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_LinkReply.Merge(m, src)
 }
 func (m *LinkReply) XXX_Size() int {
 	return xxx_messageInfo_LinkReply.Size(m)
@@ -386,18 +396,18 @@
 }
 
 func init() {
+	proto.RegisterEnum("kythe.proto.LinkRequest_DefinitionKind", LinkRequest_DefinitionKind_name, LinkRequest_DefinitionKind_value)
 	proto.RegisterType((*LinkRequest)(nil), "kythe.proto.LinkRequest")
 	proto.RegisterType((*LinkRequest_Location)(nil), "kythe.proto.LinkRequest.Location")
 	proto.RegisterType((*LinkRequest_Params)(nil), "kythe.proto.LinkRequest.Params")
 	proto.RegisterType((*Link)(nil), "kythe.proto.Link")
 	proto.RegisterType((*Link_Node)(nil), "kythe.proto.Link.Node")
 	proto.RegisterType((*LinkReply)(nil), "kythe.proto.LinkReply")
-	proto.RegisterEnum("kythe.proto.LinkRequest_DefinitionKind", LinkRequest_DefinitionKind_name, LinkRequest_DefinitionKind_value)
 }
 
-func init() { proto.RegisterFile("kythe/proto/link.proto", fileDescriptor_link_2566f186b86f72a9) }
+func init() { proto.RegisterFile("kythe/proto/link.proto", fileDescriptor_bd0775c667ce666e) }
 
-var fileDescriptor_link_2566f186b86f72a9 = []byte{
+var fileDescriptor_bd0775c667ce666e = []byte{
 	// 536 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x53, 0xcd, 0x6e, 0xd3, 0x40,
 	0x10, 0xae, 0x63, 0x27, 0x71, 0xc6, 0x34, 0x0d, 0x23, 0x14, 0xad, 0x8c, 0xd4, 0x9a, 0x70, 0xa8,
diff --git a/kythe/proto/pipeline_go_proto/pipeline.pb.go b/kythe/proto/pipeline_go_proto/pipeline.pb.go
index b9c2358..04e5b18 100644
--- a/kythe/proto/pipeline_go_proto/pipeline.pb.go
+++ b/kythe/proto/pipeline_go_proto/pipeline.pb.go
@@ -3,13 +3,15 @@
 
 package pipeline_go_proto
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import common_go_proto "kythe.io/kythe/proto/common_go_proto"
-import schema_go_proto "kythe.io/kythe/proto/schema_go_proto"
-import serving_go_proto "kythe.io/kythe/proto/serving_go_proto"
-import storage_go_proto "kythe.io/kythe/proto/storage_go_proto"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	common_go_proto "kythe.io/kythe/proto/common_go_proto"
+	schema_go_proto "kythe.io/kythe/proto/schema_go_proto"
+	serving_go_proto "kythe.io/kythe/proto/serving_go_proto"
+	storage_go_proto "kythe.io/kythe/proto/storage_go_proto"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -20,7 +22,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type Reference struct {
 	Source *storage_go_proto.VName `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"`
@@ -39,16 +41,17 @@
 func (m *Reference) String() string { return proto.CompactTextString(m) }
 func (*Reference) ProtoMessage()    {}
 func (*Reference) Descriptor() ([]byte, []int) {
-	return fileDescriptor_pipeline_8f60de55df34b857, []int{0}
+	return fileDescriptor_1b726955a4487b4b, []int{0}
 }
+
 func (m *Reference) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Reference.Unmarshal(m, b)
 }
 func (m *Reference) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Reference.Marshal(b, m, deterministic)
 }
-func (dst *Reference) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Reference.Merge(dst, src)
+func (m *Reference) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Reference.Merge(m, src)
 }
 func (m *Reference) XXX_Size() int {
 	return xxx_messageInfo_Reference.Size(m)
@@ -117,71 +120,14 @@
 	return nil
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*Reference) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _Reference_OneofMarshaler, _Reference_OneofUnmarshaler, _Reference_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*Reference) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*Reference_KytheKind)(nil),
 		(*Reference_GenericKind)(nil),
 	}
 }
 
-func _Reference_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*Reference)
-	// kind
-	switch x := m.Kind.(type) {
-	case *Reference_KytheKind:
-		b.EncodeVarint(2<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.KytheKind))
-	case *Reference_GenericKind:
-		b.EncodeVarint(3<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.GenericKind)
-	case nil:
-	default:
-		return fmt.Errorf("Reference.Kind has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _Reference_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*Reference)
-	switch tag {
-	case 2: // kind.kythe_kind
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Kind = &Reference_KytheKind{schema_go_proto.EdgeKind(x)}
-		return true, err
-	case 3: // kind.generic_kind
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.Kind = &Reference_GenericKind{x}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _Reference_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*Reference)
-	// kind
-	switch x := m.Kind.(type) {
-	case *Reference_KytheKind:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(x.KytheKind))
-	case *Reference_GenericKind:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.GenericKind)))
-		n += len(x.GenericKind)
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 type DecorationPiece struct {
 	FileVName *storage_go_proto.VName `protobuf:"bytes,1,opt,name=file_v_name,json=fileVName,proto3" json:"file_v_name,omitempty"`
 	// Types that are valid to be assigned to Piece:
@@ -200,16 +146,17 @@
 func (m *DecorationPiece) String() string { return proto.CompactTextString(m) }
 func (*DecorationPiece) ProtoMessage()    {}
 func (*DecorationPiece) Descriptor() ([]byte, []int) {
-	return fileDescriptor_pipeline_8f60de55df34b857, []int{1}
+	return fileDescriptor_1b726955a4487b4b, []int{1}
 }
+
 func (m *DecorationPiece) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_DecorationPiece.Unmarshal(m, b)
 }
 func (m *DecorationPiece) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_DecorationPiece.Marshal(b, m, deterministic)
 }
-func (dst *DecorationPiece) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DecorationPiece.Merge(dst, src)
+func (m *DecorationPiece) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DecorationPiece.Merge(m, src)
 }
 func (m *DecorationPiece) XXX_Size() int {
 	return xxx_messageInfo_DecorationPiece.Size(m)
@@ -303,9 +250,9 @@
 	return nil
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*DecorationPiece) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _DecorationPiece_OneofMarshaler, _DecorationPiece_OneofUnmarshaler, _DecorationPiece_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*DecorationPiece) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*DecorationPiece_File)(nil),
 		(*DecorationPiece_Reference)(nil),
 		(*DecorationPiece_Node)(nil),
@@ -314,126 +261,6 @@
 	}
 }
 
-func _DecorationPiece_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*DecorationPiece)
-	// piece
-	switch x := m.Piece.(type) {
-	case *DecorationPiece_File:
-		b.EncodeVarint(2<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.File); err != nil {
-			return err
-		}
-	case *DecorationPiece_Reference:
-		b.EncodeVarint(3<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Reference); err != nil {
-			return err
-		}
-	case *DecorationPiece_Node:
-		b.EncodeVarint(4<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Node); err != nil {
-			return err
-		}
-	case *DecorationPiece_Definition_:
-		b.EncodeVarint(5<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Definition); err != nil {
-			return err
-		}
-	case *DecorationPiece_Diagnostic:
-		b.EncodeVarint(6<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Diagnostic); err != nil {
-			return err
-		}
-	case nil:
-	default:
-		return fmt.Errorf("DecorationPiece.Piece has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _DecorationPiece_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*DecorationPiece)
-	switch tag {
-	case 2: // piece.file
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(serving_go_proto.File)
-		err := b.DecodeMessage(msg)
-		m.Piece = &DecorationPiece_File{msg}
-		return true, err
-	case 3: // piece.reference
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(Reference)
-		err := b.DecodeMessage(msg)
-		m.Piece = &DecorationPiece_Reference{msg}
-		return true, err
-	case 4: // piece.node
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(schema_go_proto.Node)
-		err := b.DecodeMessage(msg)
-		m.Piece = &DecorationPiece_Node{msg}
-		return true, err
-	case 5: // piece.definition
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(DecorationPiece_Definition)
-		err := b.DecodeMessage(msg)
-		m.Piece = &DecorationPiece_Definition_{msg}
-		return true, err
-	case 6: // piece.diagnostic
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(common_go_proto.Diagnostic)
-		err := b.DecodeMessage(msg)
-		m.Piece = &DecorationPiece_Diagnostic{msg}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _DecorationPiece_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*DecorationPiece)
-	// piece
-	switch x := m.Piece.(type) {
-	case *DecorationPiece_File:
-		s := proto.Size(x.File)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *DecorationPiece_Reference:
-		s := proto.Size(x.Reference)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *DecorationPiece_Node:
-		s := proto.Size(x.Node)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *DecorationPiece_Definition_:
-		s := proto.Size(x.Definition)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *DecorationPiece_Diagnostic:
-		s := proto.Size(x.Diagnostic)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 type DecorationPiece_Definition struct {
 	Node                 *storage_go_proto.VName          `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"`
 	Definition           *serving_go_proto.ExpandedAnchor `protobuf:"bytes,2,opt,name=definition,proto3" json:"definition,omitempty"`
@@ -446,16 +273,17 @@
 func (m *DecorationPiece_Definition) String() string { return proto.CompactTextString(m) }
 func (*DecorationPiece_Definition) ProtoMessage()    {}
 func (*DecorationPiece_Definition) Descriptor() ([]byte, []int) {
-	return fileDescriptor_pipeline_8f60de55df34b857, []int{1, 0}
+	return fileDescriptor_1b726955a4487b4b, []int{1, 0}
 }
+
 func (m *DecorationPiece_Definition) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_DecorationPiece_Definition.Unmarshal(m, b)
 }
 func (m *DecorationPiece_Definition) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_DecorationPiece_Definition.Marshal(b, m, deterministic)
 }
-func (dst *DecorationPiece_Definition) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DecorationPiece_Definition.Merge(dst, src)
+func (m *DecorationPiece_Definition) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DecorationPiece_Definition.Merge(m, src)
 }
 func (m *DecorationPiece_Definition) XXX_Size() int {
 	return xxx_messageInfo_DecorationPiece_Definition.Size(m)
@@ -486,11 +314,9 @@
 	proto.RegisterType((*DecorationPiece_Definition)(nil), "kythe.proto.pipeline.DecorationPiece.Definition")
 }
 
-func init() {
-	proto.RegisterFile("kythe/proto/pipeline.proto", fileDescriptor_pipeline_8f60de55df34b857)
-}
+func init() { proto.RegisterFile("kythe/proto/pipeline.proto", fileDescriptor_1b726955a4487b4b) }
 
-var fileDescriptor_pipeline_8f60de55df34b857 = []byte{
+var fileDescriptor_1b726955a4487b4b = []byte{
 	// 461 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x52, 0xc1, 0x8b, 0xd3, 0x4e,
 	0x14, 0x6e, 0xfb, 0x4b, 0xf3, 0x23, 0x2f, 0xa2, 0x38, 0x78, 0xc8, 0x16, 0x71, 0xcb, 0x2e, 0x48,
diff --git a/kythe/proto/repo_go_proto/repo.pb.go b/kythe/proto/repo_go_proto/repo.pb.go
index d56564c..62af6de 100644
--- a/kythe/proto/repo_go_proto/repo.pb.go
+++ b/kythe/proto/repo_go_proto/repo.pb.go
@@ -3,9 +3,11 @@
 
 package repo_go_proto
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -16,7 +18,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type BuildSystem int32
 
@@ -33,6 +35,7 @@
 	2: "GRADLE",
 	3: "BAZEL",
 }
+
 var BuildSystem_value = map[string]int32{
 	"UNKNOWN": 0,
 	"MAVEN":   1,
@@ -43,8 +46,9 @@
 func (x BuildSystem) String() string {
 	return proto.EnumName(BuildSystem_name, int32(x))
 }
+
 func (BuildSystem) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_repo_52a7aee08af1276e, []int{0}
+	return fileDescriptor_793fb1509239cce0, []int{0}
 }
 
 type JavaOptions_Version int32
@@ -58,6 +62,7 @@
 	0: "UNKNOWN",
 	1: "JAVA_1_8",
 }
+
 var JavaOptions_Version_value = map[string]int32{
 	"UNKNOWN":  0,
 	"JAVA_1_8": 1,
@@ -66,8 +71,9 @@
 func (x JavaOptions_Version) String() string {
 	return proto.EnumName(JavaOptions_Version_name, int32(x))
 }
+
 func (JavaOptions_Version) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_repo_52a7aee08af1276e, []int{2, 0}
+	return fileDescriptor_793fb1509239cce0, []int{2, 0}
 }
 
 type Config struct {
@@ -82,16 +88,17 @@
 func (m *Config) String() string { return proto.CompactTextString(m) }
 func (*Config) ProtoMessage()    {}
 func (*Config) Descriptor() ([]byte, []int) {
-	return fileDescriptor_repo_52a7aee08af1276e, []int{0}
+	return fileDescriptor_793fb1509239cce0, []int{0}
 }
+
 func (m *Config) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Config.Unmarshal(m, b)
 }
 func (m *Config) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Config.Marshal(b, m, deterministic)
 }
-func (dst *Config) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Config.Merge(dst, src)
+func (m *Config) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Config.Merge(m, src)
 }
 func (m *Config) XXX_Size() int {
 	return xxx_messageInfo_Config.Size(m)
@@ -130,16 +137,17 @@
 func (m *ExtractionHint) String() string { return proto.CompactTextString(m) }
 func (*ExtractionHint) ProtoMessage()    {}
 func (*ExtractionHint) Descriptor() ([]byte, []int) {
-	return fileDescriptor_repo_52a7aee08af1276e, []int{1}
+	return fileDescriptor_793fb1509239cce0, []int{1}
 }
+
 func (m *ExtractionHint) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ExtractionHint.Unmarshal(m, b)
 }
 func (m *ExtractionHint) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ExtractionHint.Marshal(b, m, deterministic)
 }
-func (dst *ExtractionHint) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ExtractionHint.Merge(dst, src)
+func (m *ExtractionHint) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ExtractionHint.Merge(m, src)
 }
 func (m *ExtractionHint) XXX_Size() int {
 	return xxx_messageInfo_ExtractionHint.Size(m)
@@ -189,16 +197,17 @@
 func (m *JavaOptions) String() string { return proto.CompactTextString(m) }
 func (*JavaOptions) ProtoMessage()    {}
 func (*JavaOptions) Descriptor() ([]byte, []int) {
-	return fileDescriptor_repo_52a7aee08af1276e, []int{2}
+	return fileDescriptor_793fb1509239cce0, []int{2}
 }
+
 func (m *JavaOptions) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_JavaOptions.Unmarshal(m, b)
 }
 func (m *JavaOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_JavaOptions.Marshal(b, m, deterministic)
 }
-func (dst *JavaOptions) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_JavaOptions.Merge(dst, src)
+func (m *JavaOptions) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_JavaOptions.Merge(m, src)
 }
 func (m *JavaOptions) XXX_Size() int {
 	return xxx_messageInfo_JavaOptions.Size(m)
@@ -228,16 +237,17 @@
 func (m *ExtractionTarget) String() string { return proto.CompactTextString(m) }
 func (*ExtractionTarget) ProtoMessage()    {}
 func (*ExtractionTarget) Descriptor() ([]byte, []int) {
-	return fileDescriptor_repo_52a7aee08af1276e, []int{3}
+	return fileDescriptor_793fb1509239cce0, []int{3}
 }
+
 func (m *ExtractionTarget) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ExtractionTarget.Unmarshal(m, b)
 }
 func (m *ExtractionTarget) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ExtractionTarget.Marshal(b, m, deterministic)
 }
-func (dst *ExtractionTarget) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ExtractionTarget.Merge(dst, src)
+func (m *ExtractionTarget) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ExtractionTarget.Merge(m, src)
 }
 func (m *ExtractionTarget) XXX_Size() int {
 	return xxx_messageInfo_ExtractionTarget.Size(m)
@@ -263,17 +273,17 @@
 }
 
 func init() {
+	proto.RegisterEnum("kythe.proto.repo.BuildSystem", BuildSystem_name, BuildSystem_value)
+	proto.RegisterEnum("kythe.proto.repo.JavaOptions_Version", JavaOptions_Version_name, JavaOptions_Version_value)
 	proto.RegisterType((*Config)(nil), "kythe.proto.repo.Config")
 	proto.RegisterType((*ExtractionHint)(nil), "kythe.proto.repo.ExtractionHint")
 	proto.RegisterType((*JavaOptions)(nil), "kythe.proto.repo.JavaOptions")
 	proto.RegisterType((*ExtractionTarget)(nil), "kythe.proto.repo.ExtractionTarget")
-	proto.RegisterEnum("kythe.proto.repo.BuildSystem", BuildSystem_name, BuildSystem_value)
-	proto.RegisterEnum("kythe.proto.repo.JavaOptions_Version", JavaOptions_Version_name, JavaOptions_Version_value)
 }
 
-func init() { proto.RegisterFile("kythe/proto/repo.proto", fileDescriptor_repo_52a7aee08af1276e) }
+func init() { proto.RegisterFile("kythe/proto/repo.proto", fileDescriptor_793fb1509239cce0) }
 
-var fileDescriptor_repo_52a7aee08af1276e = []byte{
+var fileDescriptor_793fb1509239cce0 = []byte{
 	// 383 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x51, 0x4d, 0xaf, 0x93, 0x40,
 	0x14, 0x75, 0xca, 0x13, 0xe4, 0xce, 0xf3, 0x89, 0xb3, 0x78, 0x61, 0x63, 0x42, 0x88, 0x26, 0xc4,
diff --git a/kythe/proto/schema_go_proto/schema.pb.go b/kythe/proto/schema_go_proto/schema.pb.go
index 8a88cb7..f1f03e4 100644
--- a/kythe/proto/schema_go_proto/schema.pb.go
+++ b/kythe/proto/schema_go_proto/schema.pb.go
@@ -3,10 +3,12 @@
 
 package schema_go_proto
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import storage_go_proto "kythe.io/kythe/proto/storage_go_proto"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	storage_go_proto "kythe.io/kythe/proto/storage_go_proto"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -17,7 +19,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type NodeKind int32
 
@@ -78,6 +80,7 @@
 	24: "VARIABLE",
 	25: "VCS",
 }
+
 var NodeKind_value = map[string]int32{
 	"UNKNOWN_NODE_KIND": 0,
 	"ABS":               1,
@@ -110,8 +113,9 @@
 func (x NodeKind) String() string {
 	return proto.EnumName(NodeKind_name, int32(x))
 }
+
 func (NodeKind) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_schema_b8bc086cc8d1c7fa, []int{0}
+	return fileDescriptor_a9abda27437812b0, []int{0}
 }
 
 type Subkind int32
@@ -157,6 +161,7 @@
 	16: "TYPE",
 	17: "UNION",
 }
+
 var Subkind_value = map[string]int32{
 	"UNKNOWN_SUBKIND": 0,
 	"CATEGORY":        1,
@@ -181,8 +186,9 @@
 func (x Subkind) String() string {
 	return proto.EnumName(Subkind_name, int32(x))
 }
+
 func (Subkind) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_schema_b8bc086cc8d1c7fa, []int{1}
+	return fileDescriptor_a9abda27437812b0, []int{1}
 }
 
 type FactName int32
@@ -232,6 +238,7 @@
 	18: "VISIBILITY",
 	19: "BUILD_CONFIG",
 }
+
 var FactName_value = map[string]int32{
 	"UNKNOWN_FACT_NAME": 0,
 	"CODE":              1,
@@ -258,8 +265,9 @@
 func (x FactName) String() string {
 	return proto.EnumName(FactName_name, int32(x))
 }
+
 func (FactName) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_schema_b8bc086cc8d1c7fa, []int{2}
+	return fileDescriptor_a9abda27437812b0, []int{2}
 }
 
 type EdgeKind int32
@@ -357,6 +365,7 @@
 	42: "TYPED",
 	43: "UNDEFINES",
 }
+
 var EdgeKind_value = map[string]int32{
 	"UNKNOWN_EDGE_KIND":        0,
 	"ALIASES":                  1,
@@ -407,8 +416,9 @@
 func (x EdgeKind) String() string {
 	return proto.EnumName(EdgeKind_name, int32(x))
 }
+
 func (EdgeKind) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_schema_b8bc086cc8d1c7fa, []int{3}
+	return fileDescriptor_a9abda27437812b0, []int{3}
 }
 
 type Index struct {
@@ -425,16 +435,17 @@
 func (m *Index) String() string { return proto.CompactTextString(m) }
 func (*Index) ProtoMessage()    {}
 func (*Index) Descriptor() ([]byte, []int) {
-	return fileDescriptor_schema_b8bc086cc8d1c7fa, []int{0}
+	return fileDescriptor_a9abda27437812b0, []int{0}
 }
+
 func (m *Index) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Index.Unmarshal(m, b)
 }
 func (m *Index) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Index.Marshal(b, m, deterministic)
 }
-func (dst *Index) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Index.Merge(dst, src)
+func (m *Index) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Index.Merge(m, src)
 }
 func (m *Index) XXX_Size() int {
 	return xxx_messageInfo_Index.Size(m)
@@ -485,16 +496,17 @@
 func (m *Index_EdgeKinds) String() string { return proto.CompactTextString(m) }
 func (*Index_EdgeKinds) ProtoMessage()    {}
 func (*Index_EdgeKinds) Descriptor() ([]byte, []int) {
-	return fileDescriptor_schema_b8bc086cc8d1c7fa, []int{0, 0}
+	return fileDescriptor_a9abda27437812b0, []int{0, 0}
 }
+
 func (m *Index_EdgeKinds) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Index_EdgeKinds.Unmarshal(m, b)
 }
 func (m *Index_EdgeKinds) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Index_EdgeKinds.Marshal(b, m, deterministic)
 }
-func (dst *Index_EdgeKinds) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Index_EdgeKinds.Merge(dst, src)
+func (m *Index_EdgeKinds) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Index_EdgeKinds.Merge(m, src)
 }
 func (m *Index_EdgeKinds) XXX_Size() int {
 	return xxx_messageInfo_Index_EdgeKinds.Size(m)
@@ -531,16 +543,17 @@
 func (m *Index_NodeKinds) String() string { return proto.CompactTextString(m) }
 func (*Index_NodeKinds) ProtoMessage()    {}
 func (*Index_NodeKinds) Descriptor() ([]byte, []int) {
-	return fileDescriptor_schema_b8bc086cc8d1c7fa, []int{0, 1}
+	return fileDescriptor_a9abda27437812b0, []int{0, 1}
 }
+
 func (m *Index_NodeKinds) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Index_NodeKinds.Unmarshal(m, b)
 }
 func (m *Index_NodeKinds) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Index_NodeKinds.Marshal(b, m, deterministic)
 }
-func (dst *Index_NodeKinds) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Index_NodeKinds.Merge(dst, src)
+func (m *Index_NodeKinds) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Index_NodeKinds.Merge(m, src)
 }
 func (m *Index_NodeKinds) XXX_Size() int {
 	return xxx_messageInfo_Index_NodeKinds.Size(m)
@@ -577,16 +590,17 @@
 func (m *Index_Subkinds) String() string { return proto.CompactTextString(m) }
 func (*Index_Subkinds) ProtoMessage()    {}
 func (*Index_Subkinds) Descriptor() ([]byte, []int) {
-	return fileDescriptor_schema_b8bc086cc8d1c7fa, []int{0, 2}
+	return fileDescriptor_a9abda27437812b0, []int{0, 2}
 }
+
 func (m *Index_Subkinds) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Index_Subkinds.Unmarshal(m, b)
 }
 func (m *Index_Subkinds) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Index_Subkinds.Marshal(b, m, deterministic)
 }
-func (dst *Index_Subkinds) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Index_Subkinds.Merge(dst, src)
+func (m *Index_Subkinds) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Index_Subkinds.Merge(m, src)
 }
 func (m *Index_Subkinds) XXX_Size() int {
 	return xxx_messageInfo_Index_Subkinds.Size(m)
@@ -623,16 +637,17 @@
 func (m *Index_FactNames) String() string { return proto.CompactTextString(m) }
 func (*Index_FactNames) ProtoMessage()    {}
 func (*Index_FactNames) Descriptor() ([]byte, []int) {
-	return fileDescriptor_schema_b8bc086cc8d1c7fa, []int{0, 3}
+	return fileDescriptor_a9abda27437812b0, []int{0, 3}
 }
+
 func (m *Index_FactNames) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Index_FactNames.Unmarshal(m, b)
 }
 func (m *Index_FactNames) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Index_FactNames.Marshal(b, m, deterministic)
 }
-func (dst *Index_FactNames) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Index_FactNames.Merge(dst, src)
+func (m *Index_FactNames) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Index_FactNames.Merge(m, src)
 }
 func (m *Index_FactNames) XXX_Size() int {
 	return xxx_messageInfo_Index_FactNames.Size(m)
@@ -678,16 +693,17 @@
 func (m *Node) String() string { return proto.CompactTextString(m) }
 func (*Node) ProtoMessage()    {}
 func (*Node) Descriptor() ([]byte, []int) {
-	return fileDescriptor_schema_b8bc086cc8d1c7fa, []int{1}
+	return fileDescriptor_a9abda27437812b0, []int{1}
 }
+
 func (m *Node) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Node.Unmarshal(m, b)
 }
 func (m *Node) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Node.Marshal(b, m, deterministic)
 }
-func (dst *Node) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Node.Merge(dst, src)
+func (m *Node) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Node.Merge(m, src)
 }
 func (m *Node) XXX_Size() int {
 	return xxx_messageInfo_Node.Size(m)
@@ -793,9 +809,9 @@
 	return ""
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*Node) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _Node_OneofMarshaler, _Node_OneofUnmarshaler, _Node_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*Node) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*Node_KytheKind)(nil),
 		(*Node_GenericKind)(nil),
 		(*Node_KytheSubkind)(nil),
@@ -803,102 +819,6 @@
 	}
 }
 
-func _Node_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*Node)
-	// kind
-	switch x := m.Kind.(type) {
-	case *Node_KytheKind:
-		b.EncodeVarint(4<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.KytheKind))
-	case *Node_GenericKind:
-		b.EncodeVarint(5<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.GenericKind)
-	case nil:
-	default:
-		return fmt.Errorf("Node.Kind has unexpected type %T", x)
-	}
-	// subkind
-	switch x := m.Subkind.(type) {
-	case *Node_KytheSubkind:
-		b.EncodeVarint(6<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.KytheSubkind))
-	case *Node_GenericSubkind:
-		b.EncodeVarint(7<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.GenericSubkind)
-	case nil:
-	default:
-		return fmt.Errorf("Node.Subkind has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _Node_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*Node)
-	switch tag {
-	case 4: // kind.kythe_kind
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Kind = &Node_KytheKind{NodeKind(x)}
-		return true, err
-	case 5: // kind.generic_kind
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.Kind = &Node_GenericKind{x}
-		return true, err
-	case 6: // subkind.kythe_subkind
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Subkind = &Node_KytheSubkind{Subkind(x)}
-		return true, err
-	case 7: // subkind.generic_subkind
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.Subkind = &Node_GenericSubkind{x}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _Node_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*Node)
-	// kind
-	switch x := m.Kind.(type) {
-	case *Node_KytheKind:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(x.KytheKind))
-	case *Node_GenericKind:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.GenericKind)))
-		n += len(x.GenericKind)
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	// subkind
-	switch x := m.Subkind.(type) {
-	case *Node_KytheSubkind:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(x.KytheSubkind))
-	case *Node_GenericSubkind:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.GenericSubkind)))
-		n += len(x.GenericSubkind)
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 type Fact struct {
 	Source *storage_go_proto.VName `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"`
 	// Types that are valid to be assigned to Name:
@@ -915,16 +835,17 @@
 func (m *Fact) String() string { return proto.CompactTextString(m) }
 func (*Fact) ProtoMessage()    {}
 func (*Fact) Descriptor() ([]byte, []int) {
-	return fileDescriptor_schema_b8bc086cc8d1c7fa, []int{2}
+	return fileDescriptor_a9abda27437812b0, []int{2}
 }
+
 func (m *Fact) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Fact.Unmarshal(m, b)
 }
 func (m *Fact) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Fact.Marshal(b, m, deterministic)
 }
-func (dst *Fact) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Fact.Merge(dst, src)
+func (m *Fact) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Fact.Merge(m, src)
 }
 func (m *Fact) XXX_Size() int {
 	return xxx_messageInfo_Fact.Size(m)
@@ -986,71 +907,14 @@
 	return nil
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*Fact) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _Fact_OneofMarshaler, _Fact_OneofUnmarshaler, _Fact_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*Fact) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*Fact_KytheName)(nil),
 		(*Fact_GenericName)(nil),
 	}
 }
 
-func _Fact_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*Fact)
-	// name
-	switch x := m.Name.(type) {
-	case *Fact_KytheName:
-		b.EncodeVarint(2<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.KytheName))
-	case *Fact_GenericName:
-		b.EncodeVarint(3<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.GenericName)
-	case nil:
-	default:
-		return fmt.Errorf("Fact.Name has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _Fact_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*Fact)
-	switch tag {
-	case 2: // name.kythe_name
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Name = &Fact_KytheName{FactName(x)}
-		return true, err
-	case 3: // name.generic_name
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.Name = &Fact_GenericName{x}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _Fact_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*Fact)
-	// name
-	switch x := m.Name.(type) {
-	case *Fact_KytheName:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(x.KytheName))
-	case *Fact_GenericName:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.GenericName)))
-		n += len(x.GenericName)
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 type Edge struct {
 	Source *storage_go_proto.VName `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"`
 	Target *storage_go_proto.VName `protobuf:"bytes,2,opt,name=target,proto3" json:"target,omitempty"`
@@ -1070,16 +934,17 @@
 func (m *Edge) String() string { return proto.CompactTextString(m) }
 func (*Edge) ProtoMessage()    {}
 func (*Edge) Descriptor() ([]byte, []int) {
-	return fileDescriptor_schema_b8bc086cc8d1c7fa, []int{3}
+	return fileDescriptor_a9abda27437812b0, []int{3}
 }
+
 func (m *Edge) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Edge.Unmarshal(m, b)
 }
 func (m *Edge) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Edge.Marshal(b, m, deterministic)
 }
-func (dst *Edge) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Edge.Merge(dst, src)
+func (m *Edge) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Edge.Merge(m, src)
 }
 func (m *Edge) XXX_Size() int {
 	return xxx_messageInfo_Edge.Size(m)
@@ -1162,71 +1027,14 @@
 	return nil
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*Edge) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _Edge_OneofMarshaler, _Edge_OneofUnmarshaler, _Edge_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*Edge) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*Edge_KytheKind)(nil),
 		(*Edge_GenericKind)(nil),
 	}
 }
 
-func _Edge_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*Edge)
-	// kind
-	switch x := m.Kind.(type) {
-	case *Edge_KytheKind:
-		b.EncodeVarint(3<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.KytheKind))
-	case *Edge_GenericKind:
-		b.EncodeVarint(4<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.GenericKind)
-	case nil:
-	default:
-		return fmt.Errorf("Edge.Kind has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _Edge_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*Edge)
-	switch tag {
-	case 3: // kind.kythe_kind
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Kind = &Edge_KytheKind{EdgeKind(x)}
-		return true, err
-	case 4: // kind.generic_kind
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.Kind = &Edge_GenericKind{x}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _Edge_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*Edge)
-	// kind
-	switch x := m.Kind.(type) {
-	case *Edge_KytheKind:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(x.KytheKind))
-	case *Edge_GenericKind:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.GenericKind)))
-		n += len(x.GenericKind)
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 type Entry struct {
 	// Types that are valid to be assigned to Entry:
 	//	*Entry_Fact
@@ -1241,16 +1049,17 @@
 func (m *Entry) String() string { return proto.CompactTextString(m) }
 func (*Entry) ProtoMessage()    {}
 func (*Entry) Descriptor() ([]byte, []int) {
-	return fileDescriptor_schema_b8bc086cc8d1c7fa, []int{4}
+	return fileDescriptor_a9abda27437812b0, []int{4}
 }
+
 func (m *Entry) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Entry.Unmarshal(m, b)
 }
 func (m *Entry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Entry.Marshal(b, m, deterministic)
 }
-func (dst *Entry) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Entry.Merge(dst, src)
+func (m *Entry) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Entry.Merge(m, src)
 }
 func (m *Entry) XXX_Size() int {
 	return xxx_messageInfo_Entry.Size(m)
@@ -1298,81 +1107,19 @@
 	return nil
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*Entry) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _Entry_OneofMarshaler, _Entry_OneofUnmarshaler, _Entry_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*Entry) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*Entry_Fact)(nil),
 		(*Entry_Edge)(nil),
 	}
 }
 
-func _Entry_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*Entry)
-	// entry
-	switch x := m.Entry.(type) {
-	case *Entry_Fact:
-		b.EncodeVarint(1<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Fact); err != nil {
-			return err
-		}
-	case *Entry_Edge:
-		b.EncodeVarint(2<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Edge); err != nil {
-			return err
-		}
-	case nil:
-	default:
-		return fmt.Errorf("Entry.Entry has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _Entry_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*Entry)
-	switch tag {
-	case 1: // entry.fact
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(Fact)
-		err := b.DecodeMessage(msg)
-		m.Entry = &Entry_Fact{msg}
-		return true, err
-	case 2: // entry.edge
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(Edge)
-		err := b.DecodeMessage(msg)
-		m.Entry = &Entry_Edge{msg}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _Entry_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*Entry)
-	// entry
-	switch x := m.Entry.(type) {
-	case *Entry_Fact:
-		s := proto.Size(x.Fact)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *Entry_Edge:
-		s := proto.Size(x.Edge)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 func init() {
+	proto.RegisterEnum("kythe.proto.schema.NodeKind", NodeKind_name, NodeKind_value)
+	proto.RegisterEnum("kythe.proto.schema.Subkind", Subkind_name, Subkind_value)
+	proto.RegisterEnum("kythe.proto.schema.FactName", FactName_name, FactName_value)
+	proto.RegisterEnum("kythe.proto.schema.EdgeKind", EdgeKind_name, EdgeKind_value)
 	proto.RegisterType((*Index)(nil), "kythe.proto.schema.Index")
 	proto.RegisterType((*Index_EdgeKinds)(nil), "kythe.proto.schema.Index.EdgeKinds")
 	proto.RegisterMapType((map[string]EdgeKind)(nil), "kythe.proto.schema.Index.EdgeKinds.EdgeKindEntry")
@@ -1386,15 +1133,11 @@
 	proto.RegisterType((*Fact)(nil), "kythe.proto.schema.Fact")
 	proto.RegisterType((*Edge)(nil), "kythe.proto.schema.Edge")
 	proto.RegisterType((*Entry)(nil), "kythe.proto.schema.Entry")
-	proto.RegisterEnum("kythe.proto.schema.NodeKind", NodeKind_name, NodeKind_value)
-	proto.RegisterEnum("kythe.proto.schema.Subkind", Subkind_name, Subkind_value)
-	proto.RegisterEnum("kythe.proto.schema.FactName", FactName_name, FactName_value)
-	proto.RegisterEnum("kythe.proto.schema.EdgeKind", EdgeKind_name, EdgeKind_value)
 }
 
-func init() { proto.RegisterFile("kythe/proto/schema.proto", fileDescriptor_schema_b8bc086cc8d1c7fa) }
+func init() { proto.RegisterFile("kythe/proto/schema.proto", fileDescriptor_a9abda27437812b0) }
 
-var fileDescriptor_schema_b8bc086cc8d1c7fa = []byte{
+var fileDescriptor_a9abda27437812b0 = []byte{
 	// 1628 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0xcd, 0x72, 0x1b, 0xb9,
 	0x11, 0x16, 0xff, 0x49, 0x90, 0x92, 0x5a, 0xb0, 0x2c, 0xd3, 0xb2, 0x93, 0x75, 0xe4, 0xfc, 0x78,
diff --git a/kythe/proto/serving_go_proto/serving.pb.go b/kythe/proto/serving_go_proto/serving.pb.go
index 381ef43..b25117a 100644
--- a/kythe/proto/serving_go_proto/serving.pb.go
+++ b/kythe/proto/serving_go_proto/serving.pb.go
@@ -3,10 +3,12 @@
 
 package serving_go_proto
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import common_go_proto "kythe.io/kythe/proto/common_go_proto"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	common_go_proto "kythe.io/kythe/proto/common_go_proto"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -17,7 +19,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type FileDirectory_Kind int32
 
@@ -32,6 +34,7 @@
 	1: "FILE",
 	2: "DIRECTORY",
 }
+
 var FileDirectory_Kind_value = map[string]int32{
 	"UNKNOWN":   0,
 	"FILE":      1,
@@ -41,8 +44,9 @@
 func (x FileDirectory_Kind) String() string {
 	return proto.EnumName(FileDirectory_Kind_name, int32(x))
 }
+
 func (FileDirectory_Kind) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_serving_52a1f687afe08df7, []int{6, 0}
+	return fileDescriptor_fa5eced3c734cc8b, []int{6, 0}
 }
 
 type FileDecorations_Override_Kind int32
@@ -56,6 +60,7 @@
 	0: "OVERRIDES",
 	1: "EXTENDS",
 }
+
 var FileDecorations_Override_Kind_value = map[string]int32{
 	"OVERRIDES": 0,
 	"EXTENDS":   1,
@@ -64,8 +69,9 @@
 func (x FileDecorations_Override_Kind) String() string {
 	return proto.EnumName(FileDecorations_Override_Kind_name, int32(x))
 }
+
 func (FileDecorations_Override_Kind) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_serving_52a1f687afe08df7, []int{11, 1, 0}
+	return fileDescriptor_fa5eced3c734cc8b, []int{11, 1, 0}
 }
 
 type Relatives_Type int32
@@ -81,6 +87,7 @@
 	1: "PARENTS",
 	2: "CHILDREN",
 }
+
 var Relatives_Type_value = map[string]int32{
 	"UNKNOWN":  0,
 	"PARENTS":  1,
@@ -90,8 +97,9 @@
 func (x Relatives_Type) String() string {
 	return proto.EnumName(Relatives_Type_name, int32(x))
 }
+
 func (Relatives_Type) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_serving_52a1f687afe08df7, []int{15, 0}
+	return fileDescriptor_fa5eced3c734cc8b, []int{15, 0}
 }
 
 type Callgraph_Type int32
@@ -107,6 +115,7 @@
 	1: "CALLER",
 	2: "CALLEE",
 }
+
 var Callgraph_Type_value = map[string]int32{
 	"UNKNOWN": 0,
 	"CALLER":  1,
@@ -116,8 +125,9 @@
 func (x Callgraph_Type) String() string {
 	return proto.EnumName(Callgraph_Type_name, int32(x))
 }
+
 func (Callgraph_Type) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_serving_52a1f687afe08df7, []int{16, 0}
+	return fileDescriptor_fa5eced3c734cc8b, []int{16, 0}
 }
 
 type Node struct {
@@ -133,16 +143,17 @@
 func (m *Node) String() string { return proto.CompactTextString(m) }
 func (*Node) ProtoMessage()    {}
 func (*Node) Descriptor() ([]byte, []int) {
-	return fileDescriptor_serving_52a1f687afe08df7, []int{0}
+	return fileDescriptor_fa5eced3c734cc8b, []int{0}
 }
+
 func (m *Node) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Node.Unmarshal(m, b)
 }
 func (m *Node) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Node.Marshal(b, m, deterministic)
 }
-func (dst *Node) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Node.Merge(dst, src)
+func (m *Node) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Node.Merge(m, src)
 }
 func (m *Node) XXX_Size() int {
 	return xxx_messageInfo_Node.Size(m)
@@ -189,16 +200,17 @@
 func (m *Edge) String() string { return proto.CompactTextString(m) }
 func (*Edge) ProtoMessage()    {}
 func (*Edge) Descriptor() ([]byte, []int) {
-	return fileDescriptor_serving_52a1f687afe08df7, []int{1}
+	return fileDescriptor_fa5eced3c734cc8b, []int{1}
 }
+
 func (m *Edge) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Edge.Unmarshal(m, b)
 }
 func (m *Edge) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Edge.Marshal(b, m, deterministic)
 }
-func (dst *Edge) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Edge.Merge(dst, src)
+func (m *Edge) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Edge.Merge(m, src)
 }
 func (m *Edge) XXX_Size() int {
 	return xxx_messageInfo_Edge.Size(m)
@@ -256,16 +268,17 @@
 func (m *EdgeGroup) String() string { return proto.CompactTextString(m) }
 func (*EdgeGroup) ProtoMessage()    {}
 func (*EdgeGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_serving_52a1f687afe08df7, []int{2}
+	return fileDescriptor_fa5eced3c734cc8b, []int{2}
 }
+
 func (m *EdgeGroup) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_EdgeGroup.Unmarshal(m, b)
 }
 func (m *EdgeGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_EdgeGroup.Marshal(b, m, deterministic)
 }
-func (dst *EdgeGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EdgeGroup.Merge(dst, src)
+func (m *EdgeGroup) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_EdgeGroup.Merge(m, src)
 }
 func (m *EdgeGroup) XXX_Size() int {
 	return xxx_messageInfo_EdgeGroup.Size(m)
@@ -302,16 +315,17 @@
 func (m *EdgeGroup_Edge) String() string { return proto.CompactTextString(m) }
 func (*EdgeGroup_Edge) ProtoMessage()    {}
 func (*EdgeGroup_Edge) Descriptor() ([]byte, []int) {
-	return fileDescriptor_serving_52a1f687afe08df7, []int{2, 0}
+	return fileDescriptor_fa5eced3c734cc8b, []int{2, 0}
 }
+
 func (m *EdgeGroup_Edge) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_EdgeGroup_Edge.Unmarshal(m, b)
 }
 func (m *EdgeGroup_Edge) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_EdgeGroup_Edge.Marshal(b, m, deterministic)
 }
-func (dst *EdgeGroup_Edge) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EdgeGroup_Edge.Merge(dst, src)
+func (m *EdgeGroup_Edge) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_EdgeGroup_Edge.Merge(m, src)
 }
 func (m *EdgeGroup_Edge) XXX_Size() int {
 	return xxx_messageInfo_EdgeGroup_Edge.Size(m)
@@ -350,16 +364,17 @@
 func (m *PagedEdgeSet) String() string { return proto.CompactTextString(m) }
 func (*PagedEdgeSet) ProtoMessage()    {}
 func (*PagedEdgeSet) Descriptor() ([]byte, []int) {
-	return fileDescriptor_serving_52a1f687afe08df7, []int{3}
+	return fileDescriptor_fa5eced3c734cc8b, []int{3}
 }
+
 func (m *PagedEdgeSet) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_PagedEdgeSet.Unmarshal(m, b)
 }
 func (m *PagedEdgeSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_PagedEdgeSet.Marshal(b, m, deterministic)
 }
-func (dst *PagedEdgeSet) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PagedEdgeSet.Merge(dst, src)
+func (m *PagedEdgeSet) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PagedEdgeSet.Merge(m, src)
 }
 func (m *PagedEdgeSet) XXX_Size() int {
 	return xxx_messageInfo_PagedEdgeSet.Size(m)
@@ -412,16 +427,17 @@
 func (m *PageIndex) String() string { return proto.CompactTextString(m) }
 func (*PageIndex) ProtoMessage()    {}
 func (*PageIndex) Descriptor() ([]byte, []int) {
-	return fileDescriptor_serving_52a1f687afe08df7, []int{4}
+	return fileDescriptor_fa5eced3c734cc8b, []int{4}
 }
+
 func (m *PageIndex) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_PageIndex.Unmarshal(m, b)
 }
 func (m *PageIndex) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_PageIndex.Marshal(b, m, deterministic)
 }
-func (dst *PageIndex) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PageIndex.Merge(dst, src)
+func (m *PageIndex) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PageIndex.Merge(m, src)
 }
 func (m *PageIndex) XXX_Size() int {
 	return xxx_messageInfo_PageIndex.Size(m)
@@ -466,16 +482,17 @@
 func (m *EdgePage) String() string { return proto.CompactTextString(m) }
 func (*EdgePage) ProtoMessage()    {}
 func (*EdgePage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_serving_52a1f687afe08df7, []int{5}
+	return fileDescriptor_fa5eced3c734cc8b, []int{5}
 }
+
 func (m *EdgePage) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_EdgePage.Unmarshal(m, b)
 }
 func (m *EdgePage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_EdgePage.Marshal(b, m, deterministic)
 }
-func (dst *EdgePage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_EdgePage.Merge(dst, src)
+func (m *EdgePage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_EdgePage.Merge(m, src)
 }
 func (m *EdgePage) XXX_Size() int {
 	return xxx_messageInfo_EdgePage.Size(m)
@@ -520,16 +537,17 @@
 func (m *FileDirectory) String() string { return proto.CompactTextString(m) }
 func (*FileDirectory) ProtoMessage()    {}
 func (*FileDirectory) Descriptor() ([]byte, []int) {
-	return fileDescriptor_serving_52a1f687afe08df7, []int{6}
+	return fileDescriptor_fa5eced3c734cc8b, []int{6}
 }
+
 func (m *FileDirectory) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_FileDirectory.Unmarshal(m, b)
 }
 func (m *FileDirectory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_FileDirectory.Marshal(b, m, deterministic)
 }
-func (dst *FileDirectory) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FileDirectory.Merge(dst, src)
+func (m *FileDirectory) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FileDirectory.Merge(m, src)
 }
 func (m *FileDirectory) XXX_Size() int {
 	return xxx_messageInfo_FileDirectory.Size(m)
@@ -576,16 +594,17 @@
 func (m *FileDirectory_Entry) String() string { return proto.CompactTextString(m) }
 func (*FileDirectory_Entry) ProtoMessage()    {}
 func (*FileDirectory_Entry) Descriptor() ([]byte, []int) {
-	return fileDescriptor_serving_52a1f687afe08df7, []int{6, 0}
+	return fileDescriptor_fa5eced3c734cc8b, []int{6, 0}
 }
+
 func (m *FileDirectory_Entry) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_FileDirectory_Entry.Unmarshal(m, b)
 }
 func (m *FileDirectory_Entry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_FileDirectory_Entry.Marshal(b, m, deterministic)
 }
-func (dst *FileDirectory_Entry) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FileDirectory_Entry.Merge(dst, src)
+func (m *FileDirectory_Entry) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FileDirectory_Entry.Merge(m, src)
 }
 func (m *FileDirectory_Entry) XXX_Size() int {
 	return xxx_messageInfo_FileDirectory_Entry.Size(m)
@@ -628,16 +647,17 @@
 func (m *CorpusRoots) String() string { return proto.CompactTextString(m) }
 func (*CorpusRoots) ProtoMessage()    {}
 func (*CorpusRoots) Descriptor() ([]byte, []int) {
-	return fileDescriptor_serving_52a1f687afe08df7, []int{7}
+	return fileDescriptor_fa5eced3c734cc8b, []int{7}
 }
+
 func (m *CorpusRoots) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CorpusRoots.Unmarshal(m, b)
 }
 func (m *CorpusRoots) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CorpusRoots.Marshal(b, m, deterministic)
 }
-func (dst *CorpusRoots) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CorpusRoots.Merge(dst, src)
+func (m *CorpusRoots) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CorpusRoots.Merge(m, src)
 }
 func (m *CorpusRoots) XXX_Size() int {
 	return xxx_messageInfo_CorpusRoots.Size(m)
@@ -668,16 +688,17 @@
 func (m *CorpusRoots_Corpus) String() string { return proto.CompactTextString(m) }
 func (*CorpusRoots_Corpus) ProtoMessage()    {}
 func (*CorpusRoots_Corpus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_serving_52a1f687afe08df7, []int{7, 0}
+	return fileDescriptor_fa5eced3c734cc8b, []int{7, 0}
 }
+
 func (m *CorpusRoots_Corpus) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CorpusRoots_Corpus.Unmarshal(m, b)
 }
 func (m *CorpusRoots_Corpus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CorpusRoots_Corpus.Marshal(b, m, deterministic)
 }
-func (dst *CorpusRoots_Corpus) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CorpusRoots_Corpus.Merge(dst, src)
+func (m *CorpusRoots_Corpus) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CorpusRoots_Corpus.Merge(m, src)
 }
 func (m *CorpusRoots_Corpus) XXX_Size() int {
 	return xxx_messageInfo_CorpusRoots_Corpus.Size(m)
@@ -722,16 +743,17 @@
 func (m *File) String() string { return proto.CompactTextString(m) }
 func (*File) ProtoMessage()    {}
 func (*File) Descriptor() ([]byte, []int) {
-	return fileDescriptor_serving_52a1f687afe08df7, []int{8}
+	return fileDescriptor_fa5eced3c734cc8b, []int{8}
 }
+
 func (m *File) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_File.Unmarshal(m, b)
 }
 func (m *File) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_File.Marshal(b, m, deterministic)
 }
-func (dst *File) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_File.Merge(dst, src)
+func (m *File) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_File.Merge(m, src)
 }
 func (m *File) XXX_Size() int {
 	return xxx_messageInfo_File.Size(m)
@@ -779,16 +801,17 @@
 func (m *RawAnchor) String() string { return proto.CompactTextString(m) }
 func (*RawAnchor) ProtoMessage()    {}
 func (*RawAnchor) Descriptor() ([]byte, []int) {
-	return fileDescriptor_serving_52a1f687afe08df7, []int{9}
+	return fileDescriptor_fa5eced3c734cc8b, []int{9}
 }
+
 func (m *RawAnchor) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_RawAnchor.Unmarshal(m, b)
 }
 func (m *RawAnchor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_RawAnchor.Marshal(b, m, deterministic)
 }
-func (dst *RawAnchor) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_RawAnchor.Merge(dst, src)
+func (m *RawAnchor) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_RawAnchor.Merge(m, src)
 }
 func (m *RawAnchor) XXX_Size() int {
 	return xxx_messageInfo_RawAnchor.Size(m)
@@ -858,16 +881,17 @@
 func (m *ExpandedAnchor) String() string { return proto.CompactTextString(m) }
 func (*ExpandedAnchor) ProtoMessage()    {}
 func (*ExpandedAnchor) Descriptor() ([]byte, []int) {
-	return fileDescriptor_serving_52a1f687afe08df7, []int{10}
+	return fileDescriptor_fa5eced3c734cc8b, []int{10}
 }
+
 func (m *ExpandedAnchor) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ExpandedAnchor.Unmarshal(m, b)
 }
 func (m *ExpandedAnchor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ExpandedAnchor.Marshal(b, m, deterministic)
 }
-func (dst *ExpandedAnchor) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ExpandedAnchor.Merge(dst, src)
+func (m *ExpandedAnchor) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ExpandedAnchor.Merge(m, src)
 }
 func (m *ExpandedAnchor) XXX_Size() int {
 	return xxx_messageInfo_ExpandedAnchor.Size(m)
@@ -943,16 +967,17 @@
 func (m *FileDecorations) String() string { return proto.CompactTextString(m) }
 func (*FileDecorations) ProtoMessage()    {}
 func (*FileDecorations) Descriptor() ([]byte, []int) {
-	return fileDescriptor_serving_52a1f687afe08df7, []int{11}
+	return fileDescriptor_fa5eced3c734cc8b, []int{11}
 }
+
 func (m *FileDecorations) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_FileDecorations.Unmarshal(m, b)
 }
 func (m *FileDecorations) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_FileDecorations.Marshal(b, m, deterministic)
 }
-func (dst *FileDecorations) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FileDecorations.Merge(dst, src)
+func (m *FileDecorations) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FileDecorations.Merge(m, src)
 }
 func (m *FileDecorations) XXX_Size() int {
 	return xxx_messageInfo_FileDecorations.Size(m)
@@ -1020,16 +1045,17 @@
 func (m *FileDecorations_Decoration) String() string { return proto.CompactTextString(m) }
 func (*FileDecorations_Decoration) ProtoMessage()    {}
 func (*FileDecorations_Decoration) Descriptor() ([]byte, []int) {
-	return fileDescriptor_serving_52a1f687afe08df7, []int{11, 0}
+	return fileDescriptor_fa5eced3c734cc8b, []int{11, 0}
 }
+
 func (m *FileDecorations_Decoration) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_FileDecorations_Decoration.Unmarshal(m, b)
 }
 func (m *FileDecorations_Decoration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_FileDecorations_Decoration.Marshal(b, m, deterministic)
 }
-func (dst *FileDecorations_Decoration) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FileDecorations_Decoration.Merge(dst, src)
+func (m *FileDecorations_Decoration) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FileDecorations_Decoration.Merge(m, src)
 }
 func (m *FileDecorations_Decoration) XXX_Size() int {
 	return xxx_messageInfo_FileDecorations_Decoration.Size(m)
@@ -1090,16 +1116,17 @@
 func (m *FileDecorations_Override) String() string { return proto.CompactTextString(m) }
 func (*FileDecorations_Override) ProtoMessage()    {}
 func (*FileDecorations_Override) Descriptor() ([]byte, []int) {
-	return fileDescriptor_serving_52a1f687afe08df7, []int{11, 1}
+	return fileDescriptor_fa5eced3c734cc8b, []int{11, 1}
 }
+
 func (m *FileDecorations_Override) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_FileDecorations_Override.Unmarshal(m, b)
 }
 func (m *FileDecorations_Override) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_FileDecorations_Override.Marshal(b, m, deterministic)
 }
-func (dst *FileDecorations_Override) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FileDecorations_Override.Merge(dst, src)
+func (m *FileDecorations_Override) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FileDecorations_Override.Merge(m, src)
 }
 func (m *FileDecorations_Override) XXX_Size() int {
 	return xxx_messageInfo_FileDecorations_Override.Size(m)
@@ -1163,16 +1190,17 @@
 func (m *PagedCrossReferences) String() string { return proto.CompactTextString(m) }
 func (*PagedCrossReferences) ProtoMessage()    {}
 func (*PagedCrossReferences) Descriptor() ([]byte, []int) {
-	return fileDescriptor_serving_52a1f687afe08df7, []int{12}
+	return fileDescriptor_fa5eced3c734cc8b, []int{12}
 }
+
 func (m *PagedCrossReferences) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_PagedCrossReferences.Unmarshal(m, b)
 }
 func (m *PagedCrossReferences) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_PagedCrossReferences.Marshal(b, m, deterministic)
 }
-func (dst *PagedCrossReferences) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PagedCrossReferences.Merge(dst, src)
+func (m *PagedCrossReferences) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PagedCrossReferences.Merge(m, src)
 }
 func (m *PagedCrossReferences) XXX_Size() int {
 	return xxx_messageInfo_PagedCrossReferences.Size(m)
@@ -1252,16 +1280,17 @@
 func (m *PagedCrossReferences_RelatedNode) String() string { return proto.CompactTextString(m) }
 func (*PagedCrossReferences_RelatedNode) ProtoMessage()    {}
 func (*PagedCrossReferences_RelatedNode) Descriptor() ([]byte, []int) {
-	return fileDescriptor_serving_52a1f687afe08df7, []int{12, 0}
+	return fileDescriptor_fa5eced3c734cc8b, []int{12, 0}
 }
+
 func (m *PagedCrossReferences_RelatedNode) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_PagedCrossReferences_RelatedNode.Unmarshal(m, b)
 }
 func (m *PagedCrossReferences_RelatedNode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_PagedCrossReferences_RelatedNode.Marshal(b, m, deterministic)
 }
-func (dst *PagedCrossReferences_RelatedNode) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PagedCrossReferences_RelatedNode.Merge(dst, src)
+func (m *PagedCrossReferences_RelatedNode) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PagedCrossReferences_RelatedNode.Merge(m, src)
 }
 func (m *PagedCrossReferences_RelatedNode) XXX_Size() int {
 	return xxx_messageInfo_PagedCrossReferences_RelatedNode.Size(m)
@@ -1300,16 +1329,17 @@
 func (m *PagedCrossReferences_Caller) String() string { return proto.CompactTextString(m) }
 func (*PagedCrossReferences_Caller) ProtoMessage()    {}
 func (*PagedCrossReferences_Caller) Descriptor() ([]byte, []int) {
-	return fileDescriptor_serving_52a1f687afe08df7, []int{12, 1}
+	return fileDescriptor_fa5eced3c734cc8b, []int{12, 1}
 }
+
 func (m *PagedCrossReferences_Caller) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_PagedCrossReferences_Caller.Unmarshal(m, b)
 }
 func (m *PagedCrossReferences_Caller) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_PagedCrossReferences_Caller.Marshal(b, m, deterministic)
 }
-func (dst *PagedCrossReferences_Caller) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PagedCrossReferences_Caller.Merge(dst, src)
+func (m *PagedCrossReferences_Caller) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PagedCrossReferences_Caller.Merge(m, src)
 }
 func (m *PagedCrossReferences_Caller) XXX_Size() int {
 	return xxx_messageInfo_PagedCrossReferences_Caller.Size(m)
@@ -1363,16 +1393,17 @@
 func (m *PagedCrossReferences_Group) String() string { return proto.CompactTextString(m) }
 func (*PagedCrossReferences_Group) ProtoMessage()    {}
 func (*PagedCrossReferences_Group) Descriptor() ([]byte, []int) {
-	return fileDescriptor_serving_52a1f687afe08df7, []int{12, 2}
+	return fileDescriptor_fa5eced3c734cc8b, []int{12, 2}
 }
+
 func (m *PagedCrossReferences_Group) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_PagedCrossReferences_Group.Unmarshal(m, b)
 }
 func (m *PagedCrossReferences_Group) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_PagedCrossReferences_Group.Marshal(b, m, deterministic)
 }
-func (dst *PagedCrossReferences_Group) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PagedCrossReferences_Group.Merge(dst, src)
+func (m *PagedCrossReferences_Group) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PagedCrossReferences_Group.Merge(m, src)
 }
 func (m *PagedCrossReferences_Group) XXX_Size() int {
 	return xxx_messageInfo_PagedCrossReferences_Group.Size(m)
@@ -1431,16 +1462,17 @@
 func (m *PagedCrossReferences_Page) String() string { return proto.CompactTextString(m) }
 func (*PagedCrossReferences_Page) ProtoMessage()    {}
 func (*PagedCrossReferences_Page) Descriptor() ([]byte, []int) {
-	return fileDescriptor_serving_52a1f687afe08df7, []int{12, 3}
+	return fileDescriptor_fa5eced3c734cc8b, []int{12, 3}
 }
+
 func (m *PagedCrossReferences_Page) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_PagedCrossReferences_Page.Unmarshal(m, b)
 }
 func (m *PagedCrossReferences_Page) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_PagedCrossReferences_Page.Marshal(b, m, deterministic)
 }
-func (dst *PagedCrossReferences_Page) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PagedCrossReferences_Page.Merge(dst, src)
+func (m *PagedCrossReferences_Page) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PagedCrossReferences_Page.Merge(m, src)
 }
 func (m *PagedCrossReferences_Page) XXX_Size() int {
 	return xxx_messageInfo_PagedCrossReferences_Page.Size(m)
@@ -1486,16 +1518,17 @@
 func (m *PagedCrossReferences_PageIndex) String() string { return proto.CompactTextString(m) }
 func (*PagedCrossReferences_PageIndex) ProtoMessage()    {}
 func (*PagedCrossReferences_PageIndex) Descriptor() ([]byte, []int) {
-	return fileDescriptor_serving_52a1f687afe08df7, []int{12, 4}
+	return fileDescriptor_fa5eced3c734cc8b, []int{12, 4}
 }
+
 func (m *PagedCrossReferences_PageIndex) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_PagedCrossReferences_PageIndex.Unmarshal(m, b)
 }
 func (m *PagedCrossReferences_PageIndex) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_PagedCrossReferences_PageIndex.Marshal(b, m, deterministic)
 }
-func (dst *PagedCrossReferences_PageIndex) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PagedCrossReferences_PageIndex.Merge(dst, src)
+func (m *PagedCrossReferences_PageIndex) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PagedCrossReferences_PageIndex.Merge(m, src)
 }
 func (m *PagedCrossReferences_PageIndex) XXX_Size() int {
 	return xxx_messageInfo_PagedCrossReferences_PageIndex.Size(m)
@@ -1551,16 +1584,17 @@
 func (m *Document) String() string { return proto.CompactTextString(m) }
 func (*Document) ProtoMessage()    {}
 func (*Document) Descriptor() ([]byte, []int) {
-	return fileDescriptor_serving_52a1f687afe08df7, []int{13}
+	return fileDescriptor_fa5eced3c734cc8b, []int{13}
 }
+
 func (m *Document) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Document.Unmarshal(m, b)
 }
 func (m *Document) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Document.Marshal(b, m, deterministic)
 }
-func (dst *Document) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Document.Merge(dst, src)
+func (m *Document) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Document.Merge(m, src)
 }
 func (m *Document) XXX_Size() int {
 	return xxx_messageInfo_Document.Size(m)
@@ -1633,16 +1667,17 @@
 func (m *IdentifierMatch) String() string { return proto.CompactTextString(m) }
 func (*IdentifierMatch) ProtoMessage()    {}
 func (*IdentifierMatch) Descriptor() ([]byte, []int) {
-	return fileDescriptor_serving_52a1f687afe08df7, []int{14}
+	return fileDescriptor_fa5eced3c734cc8b, []int{14}
 }
+
 func (m *IdentifierMatch) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_IdentifierMatch.Unmarshal(m, b)
 }
 func (m *IdentifierMatch) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_IdentifierMatch.Marshal(b, m, deterministic)
 }
-func (dst *IdentifierMatch) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_IdentifierMatch.Merge(dst, src)
+func (m *IdentifierMatch) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_IdentifierMatch.Merge(m, src)
 }
 func (m *IdentifierMatch) XXX_Size() int {
 	return xxx_messageInfo_IdentifierMatch.Size(m)
@@ -1687,16 +1722,17 @@
 func (m *IdentifierMatch_Node) String() string { return proto.CompactTextString(m) }
 func (*IdentifierMatch_Node) ProtoMessage()    {}
 func (*IdentifierMatch_Node) Descriptor() ([]byte, []int) {
-	return fileDescriptor_serving_52a1f687afe08df7, []int{14, 0}
+	return fileDescriptor_fa5eced3c734cc8b, []int{14, 0}
 }
+
 func (m *IdentifierMatch_Node) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_IdentifierMatch_Node.Unmarshal(m, b)
 }
 func (m *IdentifierMatch_Node) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_IdentifierMatch_Node.Marshal(b, m, deterministic)
 }
-func (dst *IdentifierMatch_Node) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_IdentifierMatch_Node.Merge(dst, src)
+func (m *IdentifierMatch_Node) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_IdentifierMatch_Node.Merge(m, src)
 }
 func (m *IdentifierMatch_Node) XXX_Size() int {
 	return xxx_messageInfo_IdentifierMatch_Node.Size(m)
@@ -1740,16 +1776,17 @@
 func (m *Relatives) String() string { return proto.CompactTextString(m) }
 func (*Relatives) ProtoMessage()    {}
 func (*Relatives) Descriptor() ([]byte, []int) {
-	return fileDescriptor_serving_52a1f687afe08df7, []int{15}
+	return fileDescriptor_fa5eced3c734cc8b, []int{15}
 }
+
 func (m *Relatives) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Relatives.Unmarshal(m, b)
 }
 func (m *Relatives) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Relatives.Marshal(b, m, deterministic)
 }
-func (dst *Relatives) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Relatives.Merge(dst, src)
+func (m *Relatives) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Relatives.Merge(m, src)
 }
 func (m *Relatives) XXX_Size() int {
 	return xxx_messageInfo_Relatives.Size(m)
@@ -1786,16 +1823,17 @@
 func (m *Callgraph) String() string { return proto.CompactTextString(m) }
 func (*Callgraph) ProtoMessage()    {}
 func (*Callgraph) Descriptor() ([]byte, []int) {
-	return fileDescriptor_serving_52a1f687afe08df7, []int{16}
+	return fileDescriptor_fa5eced3c734cc8b, []int{16}
 }
+
 func (m *Callgraph) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Callgraph.Unmarshal(m, b)
 }
 func (m *Callgraph) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Callgraph.Marshal(b, m, deterministic)
 }
-func (dst *Callgraph) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Callgraph.Merge(dst, src)
+func (m *Callgraph) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Callgraph.Merge(m, src)
 }
 func (m *Callgraph) XXX_Size() int {
 	return xxx_messageInfo_Callgraph.Size(m)
@@ -1821,6 +1859,10 @@
 }
 
 func init() {
+	proto.RegisterEnum("kythe.proto.serving.FileDirectory_Kind", FileDirectory_Kind_name, FileDirectory_Kind_value)
+	proto.RegisterEnum("kythe.proto.serving.FileDecorations_Override_Kind", FileDecorations_Override_Kind_name, FileDecorations_Override_Kind_value)
+	proto.RegisterEnum("kythe.proto.serving.Relatives_Type", Relatives_Type_name, Relatives_Type_value)
+	proto.RegisterEnum("kythe.proto.serving.Callgraph_Type", Callgraph_Type_name, Callgraph_Type_value)
 	proto.RegisterType((*Node)(nil), "kythe.proto.serving.Node")
 	proto.RegisterType((*Edge)(nil), "kythe.proto.serving.Edge")
 	proto.RegisterType((*EdgeGroup)(nil), "kythe.proto.serving.EdgeGroup")
@@ -1849,15 +1891,11 @@
 	proto.RegisterType((*IdentifierMatch_Node)(nil), "kythe.proto.serving.IdentifierMatch.Node")
 	proto.RegisterType((*Relatives)(nil), "kythe.proto.serving.Relatives")
 	proto.RegisterType((*Callgraph)(nil), "kythe.proto.serving.Callgraph")
-	proto.RegisterEnum("kythe.proto.serving.FileDirectory_Kind", FileDirectory_Kind_name, FileDirectory_Kind_value)
-	proto.RegisterEnum("kythe.proto.serving.FileDecorations_Override_Kind", FileDecorations_Override_Kind_name, FileDecorations_Override_Kind_value)
-	proto.RegisterEnum("kythe.proto.serving.Relatives_Type", Relatives_Type_name, Relatives_Type_value)
-	proto.RegisterEnum("kythe.proto.serving.Callgraph_Type", Callgraph_Type_name, Callgraph_Type_value)
 }
 
-func init() { proto.RegisterFile("kythe/proto/serving.proto", fileDescriptor_serving_52a1f687afe08df7) }
+func init() { proto.RegisterFile("kythe/proto/serving.proto", fileDescriptor_fa5eced3c734cc8b) }
 
-var fileDescriptor_serving_52a1f687afe08df7 = []byte{
+var fileDescriptor_fa5eced3c734cc8b = []byte{
 	// 1807 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0xef, 0x72, 0x1b, 0x49,
 	0x11, 0xbf, 0x95, 0x57, 0xb2, 0xb6, 0x57, 0xb6, 0x75, 0x93, 0x70, 0xa5, 0x28, 0x45, 0xce, 0xb7,
diff --git a/kythe/proto/status_service_go_proto/status_service.pb.go b/kythe/proto/status_service_go_proto/status_service.pb.go
index 59729ac..8de0216 100644
--- a/kythe/proto/status_service_go_proto/status_service.pb.go
+++ b/kythe/proto/status_service_go_proto/status_service.pb.go
@@ -3,9 +3,11 @@
 
 package status_service_go_proto
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -16,7 +18,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type StatusReply_Language_Support int32
 
@@ -31,6 +33,7 @@
 	1: "EXPERIMENTAL",
 	2: "SUPPORTED",
 }
+
 var StatusReply_Language_Support_value = map[string]int32{
 	"UNSUPPORTED":  0,
 	"EXPERIMENTAL": 1,
@@ -40,8 +43,9 @@
 func (x StatusReply_Language_Support) String() string {
 	return proto.EnumName(StatusReply_Language_Support_name, int32(x))
 }
+
 func (StatusReply_Language_Support) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_status_service_886f2cb548e216d7, []int{1, 1, 0}
+	return fileDescriptor_a6ff3b5f197dffee, []int{1, 1, 0}
 }
 
 type StatusRequest struct {
@@ -54,16 +58,17 @@
 func (m *StatusRequest) String() string { return proto.CompactTextString(m) }
 func (*StatusRequest) ProtoMessage()    {}
 func (*StatusRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_status_service_886f2cb548e216d7, []int{0}
+	return fileDescriptor_a6ff3b5f197dffee, []int{0}
 }
+
 func (m *StatusRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_StatusRequest.Unmarshal(m, b)
 }
 func (m *StatusRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_StatusRequest.Marshal(b, m, deterministic)
 }
-func (dst *StatusRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_StatusRequest.Merge(dst, src)
+func (m *StatusRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StatusRequest.Merge(m, src)
 }
 func (m *StatusRequest) XXX_Size() int {
 	return xxx_messageInfo_StatusRequest.Size(m)
@@ -87,16 +92,17 @@
 func (m *StatusReply) String() string { return proto.CompactTextString(m) }
 func (*StatusReply) ProtoMessage()    {}
 func (*StatusReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_status_service_886f2cb548e216d7, []int{1}
+	return fileDescriptor_a6ff3b5f197dffee, []int{1}
 }
+
 func (m *StatusReply) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_StatusReply.Unmarshal(m, b)
 }
 func (m *StatusReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_StatusReply.Marshal(b, m, deterministic)
 }
-func (dst *StatusReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_StatusReply.Merge(dst, src)
+func (m *StatusReply) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StatusReply.Merge(m, src)
 }
 func (m *StatusReply) XXX_Size() int {
 	return xxx_messageInfo_StatusReply.Size(m)
@@ -140,16 +146,17 @@
 func (m *StatusReply_Origin) String() string { return proto.CompactTextString(m) }
 func (*StatusReply_Origin) ProtoMessage()    {}
 func (*StatusReply_Origin) Descriptor() ([]byte, []int) {
-	return fileDescriptor_status_service_886f2cb548e216d7, []int{1, 0}
+	return fileDescriptor_a6ff3b5f197dffee, []int{1, 0}
 }
+
 func (m *StatusReply_Origin) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_StatusReply_Origin.Unmarshal(m, b)
 }
 func (m *StatusReply_Origin) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_StatusReply_Origin.Marshal(b, m, deterministic)
 }
-func (dst *StatusReply_Origin) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_StatusReply_Origin.Merge(dst, src)
+func (m *StatusReply_Origin) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StatusReply_Origin.Merge(m, src)
 }
 func (m *StatusReply_Origin) XXX_Size() int {
 	return xxx_messageInfo_StatusReply_Origin.Size(m)
@@ -186,16 +193,17 @@
 func (m *StatusReply_Language) String() string { return proto.CompactTextString(m) }
 func (*StatusReply_Language) ProtoMessage()    {}
 func (*StatusReply_Language) Descriptor() ([]byte, []int) {
-	return fileDescriptor_status_service_886f2cb548e216d7, []int{1, 1}
+	return fileDescriptor_a6ff3b5f197dffee, []int{1, 1}
 }
+
 func (m *StatusReply_Language) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_StatusReply_Language.Unmarshal(m, b)
 }
 func (m *StatusReply_Language) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_StatusReply_Language.Marshal(b, m, deterministic)
 }
-func (dst *StatusReply_Language) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_StatusReply_Language.Merge(dst, src)
+func (m *StatusReply_Language) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StatusReply_Language.Merge(m, src)
 }
 func (m *StatusReply_Language) XXX_Size() int {
 	return xxx_messageInfo_StatusReply_Language.Size(m)
@@ -221,18 +229,16 @@
 }
 
 func init() {
+	proto.RegisterEnum("kythe.proto.StatusReply_Language_Support", StatusReply_Language_Support_name, StatusReply_Language_Support_value)
 	proto.RegisterType((*StatusRequest)(nil), "kythe.proto.StatusRequest")
 	proto.RegisterType((*StatusReply)(nil), "kythe.proto.StatusReply")
 	proto.RegisterType((*StatusReply_Origin)(nil), "kythe.proto.StatusReply.Origin")
 	proto.RegisterType((*StatusReply_Language)(nil), "kythe.proto.StatusReply.Language")
-	proto.RegisterEnum("kythe.proto.StatusReply_Language_Support", StatusReply_Language_Support_name, StatusReply_Language_Support_value)
 }
 
-func init() {
-	proto.RegisterFile("kythe/proto/status_service.proto", fileDescriptor_status_service_886f2cb548e216d7)
-}
+func init() { proto.RegisterFile("kythe/proto/status_service.proto", fileDescriptor_a6ff3b5f197dffee) }
 
-var fileDescriptor_status_service_886f2cb548e216d7 = []byte{
+var fileDescriptor_a6ff3b5f197dffee = []byte{
 	// 357 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x92, 0xcd, 0x6e, 0xaa, 0x40,
 	0x14, 0xc7, 0x45, 0x6f, 0x50, 0x0f, 0x7a, 0x35, 0x67, 0x71, 0x2f, 0x61, 0xa3, 0xa5, 0x1b, 0xbb,
diff --git a/kythe/proto/storage_go_proto/storage.pb.go b/kythe/proto/storage_go_proto/storage.pb.go
index 98765c0..e109cc8 100644
--- a/kythe/proto/storage_go_proto/storage.pb.go
+++ b/kythe/proto/storage_go_proto/storage.pb.go
@@ -3,9 +3,11 @@
 
 package storage_go_proto
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -16,7 +18,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type VName struct {
 	Signature            string   `protobuf:"bytes,1,opt,name=signature,proto3" json:"signature,omitempty"`
@@ -33,16 +35,17 @@
 func (m *VName) String() string { return proto.CompactTextString(m) }
 func (*VName) ProtoMessage()    {}
 func (*VName) Descriptor() ([]byte, []int) {
-	return fileDescriptor_storage_afd7ed38adfdc68f, []int{0}
+	return fileDescriptor_b1438903ecc9440e, []int{0}
 }
+
 func (m *VName) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_VName.Unmarshal(m, b)
 }
 func (m *VName) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_VName.Marshal(b, m, deterministic)
 }
-func (dst *VName) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_VName.Merge(dst, src)
+func (m *VName) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_VName.Merge(m, src)
 }
 func (m *VName) XXX_Size() int {
 	return xxx_messageInfo_VName.Size(m)
@@ -103,16 +106,17 @@
 func (m *VNameMask) String() string { return proto.CompactTextString(m) }
 func (*VNameMask) ProtoMessage()    {}
 func (*VNameMask) Descriptor() ([]byte, []int) {
-	return fileDescriptor_storage_afd7ed38adfdc68f, []int{1}
+	return fileDescriptor_b1438903ecc9440e, []int{1}
 }
+
 func (m *VNameMask) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_VNameMask.Unmarshal(m, b)
 }
 func (m *VNameMask) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_VNameMask.Marshal(b, m, deterministic)
 }
-func (dst *VNameMask) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_VNameMask.Merge(dst, src)
+func (m *VNameMask) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_VNameMask.Merge(m, src)
 }
 func (m *VNameMask) XXX_Size() int {
 	return xxx_messageInfo_VNameMask.Size(m)
@@ -173,16 +177,17 @@
 func (m *Entry) String() string { return proto.CompactTextString(m) }
 func (*Entry) ProtoMessage()    {}
 func (*Entry) Descriptor() ([]byte, []int) {
-	return fileDescriptor_storage_afd7ed38adfdc68f, []int{2}
+	return fileDescriptor_b1438903ecc9440e, []int{2}
 }
+
 func (m *Entry) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Entry.Unmarshal(m, b)
 }
 func (m *Entry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Entry.Marshal(b, m, deterministic)
 }
-func (dst *Entry) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Entry.Merge(dst, src)
+func (m *Entry) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Entry.Merge(m, src)
 }
 func (m *Entry) XXX_Size() int {
 	return xxx_messageInfo_Entry.Size(m)
@@ -239,16 +244,17 @@
 func (m *Entries) String() string { return proto.CompactTextString(m) }
 func (*Entries) ProtoMessage()    {}
 func (*Entries) Descriptor() ([]byte, []int) {
-	return fileDescriptor_storage_afd7ed38adfdc68f, []int{3}
+	return fileDescriptor_b1438903ecc9440e, []int{3}
 }
+
 func (m *Entries) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Entries.Unmarshal(m, b)
 }
 func (m *Entries) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Entries.Marshal(b, m, deterministic)
 }
-func (dst *Entries) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Entries.Merge(dst, src)
+func (m *Entries) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Entries.Merge(m, src)
 }
 func (m *Entries) XXX_Size() int {
 	return xxx_messageInfo_Entries.Size(m)
@@ -278,16 +284,17 @@
 func (m *ReadRequest) String() string { return proto.CompactTextString(m) }
 func (*ReadRequest) ProtoMessage()    {}
 func (*ReadRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_storage_afd7ed38adfdc68f, []int{4}
+	return fileDescriptor_b1438903ecc9440e, []int{4}
 }
+
 func (m *ReadRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ReadRequest.Unmarshal(m, b)
 }
 func (m *ReadRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ReadRequest.Marshal(b, m, deterministic)
 }
-func (dst *ReadRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ReadRequest.Merge(dst, src)
+func (m *ReadRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ReadRequest.Merge(m, src)
 }
 func (m *ReadRequest) XXX_Size() int {
 	return xxx_messageInfo_ReadRequest.Size(m)
@@ -324,16 +331,17 @@
 func (m *WriteRequest) String() string { return proto.CompactTextString(m) }
 func (*WriteRequest) ProtoMessage()    {}
 func (*WriteRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_storage_afd7ed38adfdc68f, []int{5}
+	return fileDescriptor_b1438903ecc9440e, []int{5}
 }
+
 func (m *WriteRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_WriteRequest.Unmarshal(m, b)
 }
 func (m *WriteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_WriteRequest.Marshal(b, m, deterministic)
 }
-func (dst *WriteRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_WriteRequest.Merge(dst, src)
+func (m *WriteRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_WriteRequest.Merge(m, src)
 }
 func (m *WriteRequest) XXX_Size() int {
 	return xxx_messageInfo_WriteRequest.Size(m)
@@ -372,16 +380,17 @@
 func (m *WriteRequest_Update) String() string { return proto.CompactTextString(m) }
 func (*WriteRequest_Update) ProtoMessage()    {}
 func (*WriteRequest_Update) Descriptor() ([]byte, []int) {
-	return fileDescriptor_storage_afd7ed38adfdc68f, []int{5, 0}
+	return fileDescriptor_b1438903ecc9440e, []int{5, 0}
 }
+
 func (m *WriteRequest_Update) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_WriteRequest_Update.Unmarshal(m, b)
 }
 func (m *WriteRequest_Update) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_WriteRequest_Update.Marshal(b, m, deterministic)
 }
-func (dst *WriteRequest_Update) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_WriteRequest_Update.Merge(dst, src)
+func (m *WriteRequest_Update) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_WriteRequest_Update.Merge(m, src)
 }
 func (m *WriteRequest_Update) XXX_Size() int {
 	return xxx_messageInfo_WriteRequest_Update.Size(m)
@@ -430,16 +439,17 @@
 func (m *WriteReply) String() string { return proto.CompactTextString(m) }
 func (*WriteReply) ProtoMessage()    {}
 func (*WriteReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_storage_afd7ed38adfdc68f, []int{6}
+	return fileDescriptor_b1438903ecc9440e, []int{6}
 }
+
 func (m *WriteReply) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_WriteReply.Unmarshal(m, b)
 }
 func (m *WriteReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_WriteReply.Marshal(b, m, deterministic)
 }
-func (dst *WriteReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_WriteReply.Merge(dst, src)
+func (m *WriteReply) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_WriteReply.Merge(m, src)
 }
 func (m *WriteReply) XXX_Size() int {
 	return xxx_messageInfo_WriteReply.Size(m)
@@ -463,16 +473,17 @@
 func (m *ScanRequest) String() string { return proto.CompactTextString(m) }
 func (*ScanRequest) ProtoMessage()    {}
 func (*ScanRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_storage_afd7ed38adfdc68f, []int{7}
+	return fileDescriptor_b1438903ecc9440e, []int{7}
 }
+
 func (m *ScanRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ScanRequest.Unmarshal(m, b)
 }
 func (m *ScanRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ScanRequest.Marshal(b, m, deterministic)
 }
-func (dst *ScanRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ScanRequest.Merge(dst, src)
+func (m *ScanRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ScanRequest.Merge(m, src)
 }
 func (m *ScanRequest) XXX_Size() int {
 	return xxx_messageInfo_ScanRequest.Size(m)
@@ -516,16 +527,17 @@
 func (m *CountRequest) String() string { return proto.CompactTextString(m) }
 func (*CountRequest) ProtoMessage()    {}
 func (*CountRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_storage_afd7ed38adfdc68f, []int{8}
+	return fileDescriptor_b1438903ecc9440e, []int{8}
 }
+
 func (m *CountRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CountRequest.Unmarshal(m, b)
 }
 func (m *CountRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CountRequest.Marshal(b, m, deterministic)
 }
-func (dst *CountRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CountRequest.Merge(dst, src)
+func (m *CountRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CountRequest.Merge(m, src)
 }
 func (m *CountRequest) XXX_Size() int {
 	return xxx_messageInfo_CountRequest.Size(m)
@@ -561,16 +573,17 @@
 func (m *CountReply) String() string { return proto.CompactTextString(m) }
 func (*CountReply) ProtoMessage()    {}
 func (*CountReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_storage_afd7ed38adfdc68f, []int{9}
+	return fileDescriptor_b1438903ecc9440e, []int{9}
 }
+
 func (m *CountReply) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CountReply.Unmarshal(m, b)
 }
 func (m *CountReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CountReply.Marshal(b, m, deterministic)
 }
-func (dst *CountReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CountReply.Merge(dst, src)
+func (m *CountReply) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CountReply.Merge(m, src)
 }
 func (m *CountReply) XXX_Size() int {
 	return xxx_messageInfo_CountReply.Size(m)
@@ -600,16 +613,17 @@
 func (m *ShardRequest) String() string { return proto.CompactTextString(m) }
 func (*ShardRequest) ProtoMessage()    {}
 func (*ShardRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_storage_afd7ed38adfdc68f, []int{10}
+	return fileDescriptor_b1438903ecc9440e, []int{10}
 }
+
 func (m *ShardRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ShardRequest.Unmarshal(m, b)
 }
 func (m *ShardRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ShardRequest.Marshal(b, m, deterministic)
 }
-func (dst *ShardRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ShardRequest.Merge(dst, src)
+func (m *ShardRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ShardRequest.Merge(m, src)
 }
 func (m *ShardRequest) XXX_Size() int {
 	return xxx_messageInfo_ShardRequest.Size(m)
@@ -649,9 +663,9 @@
 	proto.RegisterType((*ShardRequest)(nil), "kythe.proto.ShardRequest")
 }
 
-func init() { proto.RegisterFile("kythe/proto/storage.proto", fileDescriptor_storage_afd7ed38adfdc68f) }
+func init() { proto.RegisterFile("kythe/proto/storage.proto", fileDescriptor_b1438903ecc9440e) }
 
-var fileDescriptor_storage_afd7ed38adfdc68f = []byte{
+var fileDescriptor_b1438903ecc9440e = []byte{
 	// 499 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x94, 0xcf, 0x6e, 0xd4, 0x30,
 	0x10, 0xc6, 0x95, 0xfd, 0x93, 0x66, 0x27, 0x39, 0x20, 0x0b, 0xa1, 0x50, 0x40, 0x5d, 0xe5, 0x80,
diff --git a/kythe/proto/storage_service_go_proto/storage_service.pb.go b/kythe/proto/storage_service_go_proto/storage_service.pb.go
index 802cc80..7da20c0 100644
--- a/kythe/proto/storage_service_go_proto/storage_service.pb.go
+++ b/kythe/proto/storage_service_go_proto/storage_service.pb.go
@@ -3,10 +3,12 @@
 
 package storage_service_go_proto
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import _ "kythe.io/kythe/proto/storage_go_proto"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	_ "kythe.io/kythe/proto/storage_go_proto"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -17,13 +19,11 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
-func init() {
-	proto.RegisterFile("kythe/proto/storage_service.proto", fileDescriptor_storage_service_87342725e7f341b8)
-}
+func init() { proto.RegisterFile("kythe/proto/storage_service.proto", fileDescriptor_67be6a87f67c26cd) }
 
-var fileDescriptor_storage_service_87342725e7f341b8 = []byte{
+var fileDescriptor_67be6a87f67c26cd = []byte{
 	// 241 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0xcc, 0xae, 0x2c, 0xc9,
 	0x48, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0xd7, 0x2f, 0x2e, 0xc9, 0x2f, 0x4a, 0x4c, 0x4f, 0x8d,
diff --git a/kythe/proto/xref_go_proto/xref.pb.go b/kythe/proto/xref_go_proto/xref.pb.go
index 5537a5d..28716bb 100644
--- a/kythe/proto/xref_go_proto/xref.pb.go
+++ b/kythe/proto/xref_go_proto/xref.pb.go
@@ -3,10 +3,12 @@
 
 package xref_go_proto
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import common_go_proto "kythe.io/kythe/proto/common_go_proto"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	common_go_proto "kythe.io/kythe/proto/common_go_proto"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -17,7 +19,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type SnippetsKind int32
 
@@ -30,6 +32,7 @@
 	0: "NONE",
 	1: "DEFAULT",
 }
+
 var SnippetsKind_value = map[string]int32{
 	"NONE":    0,
 	"DEFAULT": 1,
@@ -38,8 +41,9 @@
 func (x SnippetsKind) String() string {
 	return proto.EnumName(SnippetsKind_name, int32(x))
 }
+
 func (SnippetsKind) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_xref_a1cf2f06f9d39ad4, []int{0}
+	return fileDescriptor_c0b69b838b524f8a, []int{0}
 }
 
 type Location_Kind int32
@@ -53,6 +57,7 @@
 	0: "FILE",
 	1: "SPAN",
 }
+
 var Location_Kind_value = map[string]int32{
 	"FILE": 0,
 	"SPAN": 1,
@@ -61,8 +66,9 @@
 func (x Location_Kind) String() string {
 	return proto.EnumName(Location_Kind_name, int32(x))
 }
+
 func (Location_Kind) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_xref_a1cf2f06f9d39ad4, []int{0, 0}
+	return fileDescriptor_c0b69b838b524f8a, []int{0, 0}
 }
 
 type DecorationsRequest_SpanKind int32
@@ -76,6 +82,7 @@
 	0: "WITHIN_SPAN",
 	1: "AROUND_SPAN",
 }
+
 var DecorationsRequest_SpanKind_value = map[string]int32{
 	"WITHIN_SPAN": 0,
 	"AROUND_SPAN": 1,
@@ -84,8 +91,9 @@
 func (x DecorationsRequest_SpanKind) String() string {
 	return proto.EnumName(DecorationsRequest_SpanKind_name, int32(x))
 }
+
 func (DecorationsRequest_SpanKind) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_xref_a1cf2f06f9d39ad4, []int{1, 0}
+	return fileDescriptor_c0b69b838b524f8a, []int{1, 0}
 }
 
 type DecorationsReply_Override_Kind int32
@@ -99,6 +107,7 @@
 	0: "OVERRIDES",
 	1: "EXTENDS",
 }
+
 var DecorationsReply_Override_Kind_value = map[string]int32{
 	"OVERRIDES": 0,
 	"EXTENDS":   1,
@@ -107,8 +116,9 @@
 func (x DecorationsReply_Override_Kind) String() string {
 	return proto.EnumName(DecorationsReply_Override_Kind_name, int32(x))
 }
+
 func (DecorationsReply_Override_Kind) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_xref_a1cf2f06f9d39ad4, []int{2, 1, 0}
+	return fileDescriptor_c0b69b838b524f8a, []int{2, 1, 0}
 }
 
 type CrossReferencesRequest_DefinitionKind int32
@@ -126,6 +136,7 @@
 	2: "FULL_DEFINITIONS",
 	3: "BINDING_DEFINITIONS",
 }
+
 var CrossReferencesRequest_DefinitionKind_value = map[string]int32{
 	"NO_DEFINITIONS":      0,
 	"ALL_DEFINITIONS":     1,
@@ -136,8 +147,9 @@
 func (x CrossReferencesRequest_DefinitionKind) String() string {
 	return proto.EnumName(CrossReferencesRequest_DefinitionKind_name, int32(x))
 }
+
 func (CrossReferencesRequest_DefinitionKind) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_xref_a1cf2f06f9d39ad4, []int{3, 0}
+	return fileDescriptor_c0b69b838b524f8a, []int{3, 0}
 }
 
 type CrossReferencesRequest_DeclarationKind int32
@@ -151,6 +163,7 @@
 	0: "NO_DECLARATIONS",
 	1: "ALL_DECLARATIONS",
 }
+
 var CrossReferencesRequest_DeclarationKind_value = map[string]int32{
 	"NO_DECLARATIONS":  0,
 	"ALL_DECLARATIONS": 1,
@@ -159,8 +172,9 @@
 func (x CrossReferencesRequest_DeclarationKind) String() string {
 	return proto.EnumName(CrossReferencesRequest_DeclarationKind_name, int32(x))
 }
+
 func (CrossReferencesRequest_DeclarationKind) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_xref_a1cf2f06f9d39ad4, []int{3, 1}
+	return fileDescriptor_c0b69b838b524f8a, []int{3, 1}
 }
 
 type CrossReferencesRequest_ReferenceKind int32
@@ -178,6 +192,7 @@
 	2: "NON_CALL_REFERENCES",
 	3: "ALL_REFERENCES",
 }
+
 var CrossReferencesRequest_ReferenceKind_value = map[string]int32{
 	"NO_REFERENCES":       0,
 	"CALL_REFERENCES":     1,
@@ -188,8 +203,9 @@
 func (x CrossReferencesRequest_ReferenceKind) String() string {
 	return proto.EnumName(CrossReferencesRequest_ReferenceKind_name, int32(x))
 }
+
 func (CrossReferencesRequest_ReferenceKind) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_xref_a1cf2f06f9d39ad4, []int{3, 2}
+	return fileDescriptor_c0b69b838b524f8a, []int{3, 2}
 }
 
 type CrossReferencesRequest_CallerKind int32
@@ -205,6 +221,7 @@
 	1: "DIRECT_CALLERS",
 	2: "OVERRIDE_CALLERS",
 }
+
 var CrossReferencesRequest_CallerKind_value = map[string]int32{
 	"NO_CALLERS":       0,
 	"DIRECT_CALLERS":   1,
@@ -214,8 +231,9 @@
 func (x CrossReferencesRequest_CallerKind) String() string {
 	return proto.EnumName(CrossReferencesRequest_CallerKind_name, int32(x))
 }
+
 func (CrossReferencesRequest_CallerKind) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_xref_a1cf2f06f9d39ad4, []int{3, 3}
+	return fileDescriptor_c0b69b838b524f8a, []int{3, 3}
 }
 
 type Location struct {
@@ -231,16 +249,17 @@
 func (m *Location) String() string { return proto.CompactTextString(m) }
 func (*Location) ProtoMessage()    {}
 func (*Location) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_a1cf2f06f9d39ad4, []int{0}
+	return fileDescriptor_c0b69b838b524f8a, []int{0}
 }
+
 func (m *Location) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Location.Unmarshal(m, b)
 }
 func (m *Location) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Location.Marshal(b, m, deterministic)
 }
-func (dst *Location) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Location.Merge(dst, src)
+func (m *Location) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Location.Merge(m, src)
 }
 func (m *Location) XXX_Size() int {
 	return xxx_messageInfo_Location.Size(m)
@@ -294,16 +313,17 @@
 func (m *DecorationsRequest) String() string { return proto.CompactTextString(m) }
 func (*DecorationsRequest) ProtoMessage()    {}
 func (*DecorationsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_a1cf2f06f9d39ad4, []int{1}
+	return fileDescriptor_c0b69b838b524f8a, []int{1}
 }
+
 func (m *DecorationsRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_DecorationsRequest.Unmarshal(m, b)
 }
 func (m *DecorationsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_DecorationsRequest.Marshal(b, m, deterministic)
 }
-func (dst *DecorationsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DecorationsRequest.Merge(dst, src)
+func (m *DecorationsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DecorationsRequest.Merge(m, src)
 }
 func (m *DecorationsRequest) XXX_Size() int {
 	return xxx_messageInfo_DecorationsRequest.Size(m)
@@ -416,16 +436,17 @@
 func (m *DecorationsReply) String() string { return proto.CompactTextString(m) }
 func (*DecorationsReply) ProtoMessage()    {}
 func (*DecorationsReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_a1cf2f06f9d39ad4, []int{2}
+	return fileDescriptor_c0b69b838b524f8a, []int{2}
 }
+
 func (m *DecorationsReply) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_DecorationsReply.Unmarshal(m, b)
 }
 func (m *DecorationsReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_DecorationsReply.Marshal(b, m, deterministic)
 }
-func (dst *DecorationsReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DecorationsReply.Merge(dst, src)
+func (m *DecorationsReply) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DecorationsReply.Merge(m, src)
 }
 func (m *DecorationsReply) XXX_Size() int {
 	return xxx_messageInfo_DecorationsReply.Size(m)
@@ -508,16 +529,17 @@
 func (m *DecorationsReply_Reference) String() string { return proto.CompactTextString(m) }
 func (*DecorationsReply_Reference) ProtoMessage()    {}
 func (*DecorationsReply_Reference) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_a1cf2f06f9d39ad4, []int{2, 0}
+	return fileDescriptor_c0b69b838b524f8a, []int{2, 0}
 }
+
 func (m *DecorationsReply_Reference) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_DecorationsReply_Reference.Unmarshal(m, b)
 }
 func (m *DecorationsReply_Reference) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_DecorationsReply_Reference.Marshal(b, m, deterministic)
 }
-func (dst *DecorationsReply_Reference) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DecorationsReply_Reference.Merge(dst, src)
+func (m *DecorationsReply_Reference) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DecorationsReply_Reference.Merge(m, src)
 }
 func (m *DecorationsReply_Reference) XXX_Size() int {
 	return xxx_messageInfo_DecorationsReply_Reference.Size(m)
@@ -584,16 +606,17 @@
 func (m *DecorationsReply_Override) String() string { return proto.CompactTextString(m) }
 func (*DecorationsReply_Override) ProtoMessage()    {}
 func (*DecorationsReply_Override) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_a1cf2f06f9d39ad4, []int{2, 1}
+	return fileDescriptor_c0b69b838b524f8a, []int{2, 1}
 }
+
 func (m *DecorationsReply_Override) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_DecorationsReply_Override.Unmarshal(m, b)
 }
 func (m *DecorationsReply_Override) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_DecorationsReply_Override.Marshal(b, m, deterministic)
 }
-func (dst *DecorationsReply_Override) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DecorationsReply_Override.Merge(dst, src)
+func (m *DecorationsReply_Override) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DecorationsReply_Override.Merge(m, src)
 }
 func (m *DecorationsReply_Override) XXX_Size() int {
 	return xxx_messageInfo_DecorationsReply_Override.Size(m)
@@ -643,16 +666,17 @@
 func (m *DecorationsReply_Overrides) String() string { return proto.CompactTextString(m) }
 func (*DecorationsReply_Overrides) ProtoMessage()    {}
 func (*DecorationsReply_Overrides) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_a1cf2f06f9d39ad4, []int{2, 2}
+	return fileDescriptor_c0b69b838b524f8a, []int{2, 2}
 }
+
 func (m *DecorationsReply_Overrides) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_DecorationsReply_Overrides.Unmarshal(m, b)
 }
 func (m *DecorationsReply_Overrides) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_DecorationsReply_Overrides.Marshal(b, m, deterministic)
 }
-func (dst *DecorationsReply_Overrides) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DecorationsReply_Overrides.Merge(dst, src)
+func (m *DecorationsReply_Overrides) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DecorationsReply_Overrides.Merge(m, src)
 }
 func (m *DecorationsReply_Overrides) XXX_Size() int {
 	return xxx_messageInfo_DecorationsReply_Overrides.Size(m)
@@ -693,16 +717,17 @@
 func (m *CrossReferencesRequest) String() string { return proto.CompactTextString(m) }
 func (*CrossReferencesRequest) ProtoMessage()    {}
 func (*CrossReferencesRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_a1cf2f06f9d39ad4, []int{3}
+	return fileDescriptor_c0b69b838b524f8a, []int{3}
 }
+
 func (m *CrossReferencesRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CrossReferencesRequest.Unmarshal(m, b)
 }
 func (m *CrossReferencesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CrossReferencesRequest.Marshal(b, m, deterministic)
 }
-func (dst *CrossReferencesRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CrossReferencesRequest.Merge(dst, src)
+func (m *CrossReferencesRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CrossReferencesRequest.Merge(m, src)
 }
 func (m *CrossReferencesRequest) XXX_Size() int {
 	return xxx_messageInfo_CrossReferencesRequest.Size(m)
@@ -821,16 +846,17 @@
 func (m *Anchor) String() string { return proto.CompactTextString(m) }
 func (*Anchor) ProtoMessage()    {}
 func (*Anchor) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_a1cf2f06f9d39ad4, []int{4}
+	return fileDescriptor_c0b69b838b524f8a, []int{4}
 }
+
 func (m *Anchor) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Anchor.Unmarshal(m, b)
 }
 func (m *Anchor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Anchor.Marshal(b, m, deterministic)
 }
-func (dst *Anchor) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Anchor.Merge(dst, src)
+func (m *Anchor) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Anchor.Merge(m, src)
 }
 func (m *Anchor) XXX_Size() int {
 	return xxx_messageInfo_Anchor.Size(m)
@@ -902,16 +928,17 @@
 func (m *Printable) String() string { return proto.CompactTextString(m) }
 func (*Printable) ProtoMessage()    {}
 func (*Printable) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_a1cf2f06f9d39ad4, []int{5}
+	return fileDescriptor_c0b69b838b524f8a, []int{5}
 }
+
 func (m *Printable) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Printable.Unmarshal(m, b)
 }
 func (m *Printable) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Printable.Marshal(b, m, deterministic)
 }
-func (dst *Printable) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Printable.Merge(dst, src)
+func (m *Printable) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Printable.Merge(m, src)
 }
 func (m *Printable) XXX_Size() int {
 	return xxx_messageInfo_Printable.Size(m)
@@ -951,16 +978,17 @@
 func (m *CrossReferencesReply) String() string { return proto.CompactTextString(m) }
 func (*CrossReferencesReply) ProtoMessage()    {}
 func (*CrossReferencesReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_a1cf2f06f9d39ad4, []int{6}
+	return fileDescriptor_c0b69b838b524f8a, []int{6}
 }
+
 func (m *CrossReferencesReply) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CrossReferencesReply.Unmarshal(m, b)
 }
 func (m *CrossReferencesReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CrossReferencesReply.Marshal(b, m, deterministic)
 }
-func (dst *CrossReferencesReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CrossReferencesReply.Merge(dst, src)
+func (m *CrossReferencesReply) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CrossReferencesReply.Merge(m, src)
 }
 func (m *CrossReferencesReply) XXX_Size() int {
 	return xxx_messageInfo_CrossReferencesReply.Size(m)
@@ -1019,16 +1047,17 @@
 func (m *CrossReferencesReply_RelatedNode) String() string { return proto.CompactTextString(m) }
 func (*CrossReferencesReply_RelatedNode) ProtoMessage()    {}
 func (*CrossReferencesReply_RelatedNode) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_a1cf2f06f9d39ad4, []int{6, 0}
+	return fileDescriptor_c0b69b838b524f8a, []int{6, 0}
 }
+
 func (m *CrossReferencesReply_RelatedNode) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CrossReferencesReply_RelatedNode.Unmarshal(m, b)
 }
 func (m *CrossReferencesReply_RelatedNode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CrossReferencesReply_RelatedNode.Marshal(b, m, deterministic)
 }
-func (dst *CrossReferencesReply_RelatedNode) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CrossReferencesReply_RelatedNode.Merge(dst, src)
+func (m *CrossReferencesReply_RelatedNode) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CrossReferencesReply_RelatedNode.Merge(m, src)
 }
 func (m *CrossReferencesReply_RelatedNode) XXX_Size() int {
 	return xxx_messageInfo_CrossReferencesReply_RelatedNode.Size(m)
@@ -1074,16 +1103,17 @@
 func (m *CrossReferencesReply_RelatedAnchor) String() string { return proto.CompactTextString(m) }
 func (*CrossReferencesReply_RelatedAnchor) ProtoMessage()    {}
 func (*CrossReferencesReply_RelatedAnchor) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_a1cf2f06f9d39ad4, []int{6, 1}
+	return fileDescriptor_c0b69b838b524f8a, []int{6, 1}
 }
+
 func (m *CrossReferencesReply_RelatedAnchor) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CrossReferencesReply_RelatedAnchor.Unmarshal(m, b)
 }
 func (m *CrossReferencesReply_RelatedAnchor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CrossReferencesReply_RelatedAnchor.Marshal(b, m, deterministic)
 }
-func (dst *CrossReferencesReply_RelatedAnchor) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CrossReferencesReply_RelatedAnchor.Merge(dst, src)
+func (m *CrossReferencesReply_RelatedAnchor) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CrossReferencesReply_RelatedAnchor.Merge(m, src)
 }
 func (m *CrossReferencesReply_RelatedAnchor) XXX_Size() int {
 	return xxx_messageInfo_CrossReferencesReply_RelatedAnchor.Size(m)
@@ -1141,16 +1171,17 @@
 func (m *CrossReferencesReply_CrossReferenceSet) String() string { return proto.CompactTextString(m) }
 func (*CrossReferencesReply_CrossReferenceSet) ProtoMessage()    {}
 func (*CrossReferencesReply_CrossReferenceSet) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_a1cf2f06f9d39ad4, []int{6, 2}
+	return fileDescriptor_c0b69b838b524f8a, []int{6, 2}
 }
+
 func (m *CrossReferencesReply_CrossReferenceSet) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CrossReferencesReply_CrossReferenceSet.Unmarshal(m, b)
 }
 func (m *CrossReferencesReply_CrossReferenceSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CrossReferencesReply_CrossReferenceSet.Marshal(b, m, deterministic)
 }
-func (dst *CrossReferencesReply_CrossReferenceSet) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CrossReferencesReply_CrossReferenceSet.Merge(dst, src)
+func (m *CrossReferencesReply_CrossReferenceSet) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CrossReferencesReply_CrossReferenceSet.Merge(m, src)
 }
 func (m *CrossReferencesReply_CrossReferenceSet) XXX_Size() int {
 	return xxx_messageInfo_CrossReferencesReply_CrossReferenceSet.Size(m)
@@ -1226,16 +1257,17 @@
 func (m *CrossReferencesReply_Total) String() string { return proto.CompactTextString(m) }
 func (*CrossReferencesReply_Total) ProtoMessage()    {}
 func (*CrossReferencesReply_Total) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_a1cf2f06f9d39ad4, []int{6, 3}
+	return fileDescriptor_c0b69b838b524f8a, []int{6, 3}
 }
+
 func (m *CrossReferencesReply_Total) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CrossReferencesReply_Total.Unmarshal(m, b)
 }
 func (m *CrossReferencesReply_Total) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CrossReferencesReply_Total.Marshal(b, m, deterministic)
 }
-func (dst *CrossReferencesReply_Total) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CrossReferencesReply_Total.Merge(dst, src)
+func (m *CrossReferencesReply_Total) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CrossReferencesReply_Total.Merge(m, src)
 }
 func (m *CrossReferencesReply_Total) XXX_Size() int {
 	return xxx_messageInfo_CrossReferencesReply_Total.Size(m)
@@ -1301,16 +1333,17 @@
 func (m *DocumentationRequest) String() string { return proto.CompactTextString(m) }
 func (*DocumentationRequest) ProtoMessage()    {}
 func (*DocumentationRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_a1cf2f06f9d39ad4, []int{7}
+	return fileDescriptor_c0b69b838b524f8a, []int{7}
 }
+
 func (m *DocumentationRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_DocumentationRequest.Unmarshal(m, b)
 }
 func (m *DocumentationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_DocumentationRequest.Marshal(b, m, deterministic)
 }
-func (dst *DocumentationRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DocumentationRequest.Merge(dst, src)
+func (m *DocumentationRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DocumentationRequest.Merge(m, src)
 }
 func (m *DocumentationRequest) XXX_Size() int {
 	return xxx_messageInfo_DocumentationRequest.Size(m)
@@ -1355,16 +1388,17 @@
 func (m *DocumentationReply) String() string { return proto.CompactTextString(m) }
 func (*DocumentationReply) ProtoMessage()    {}
 func (*DocumentationReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_a1cf2f06f9d39ad4, []int{8}
+	return fileDescriptor_c0b69b838b524f8a, []int{8}
 }
+
 func (m *DocumentationReply) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_DocumentationReply.Unmarshal(m, b)
 }
 func (m *DocumentationReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_DocumentationReply.Marshal(b, m, deterministic)
 }
-func (dst *DocumentationReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DocumentationReply.Merge(dst, src)
+func (m *DocumentationReply) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DocumentationReply.Merge(m, src)
 }
 func (m *DocumentationReply) XXX_Size() int {
 	return xxx_messageInfo_DocumentationReply.Size(m)
@@ -1410,16 +1444,17 @@
 func (m *DocumentationReply_Document) String() string { return proto.CompactTextString(m) }
 func (*DocumentationReply_Document) ProtoMessage()    {}
 func (*DocumentationReply_Document) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_a1cf2f06f9d39ad4, []int{8, 0}
+	return fileDescriptor_c0b69b838b524f8a, []int{8, 0}
 }
+
 func (m *DocumentationReply_Document) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_DocumentationReply_Document.Unmarshal(m, b)
 }
 func (m *DocumentationReply_Document) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_DocumentationReply_Document.Marshal(b, m, deterministic)
 }
-func (dst *DocumentationReply_Document) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_DocumentationReply_Document.Merge(dst, src)
+func (m *DocumentationReply_Document) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DocumentationReply_Document.Merge(m, src)
 }
 func (m *DocumentationReply_Document) XXX_Size() int {
 	return xxx_messageInfo_DocumentationReply_Document.Size(m)
@@ -1459,6 +1494,14 @@
 }
 
 func init() {
+	proto.RegisterEnum("kythe.proto.SnippetsKind", SnippetsKind_name, SnippetsKind_value)
+	proto.RegisterEnum("kythe.proto.Location_Kind", Location_Kind_name, Location_Kind_value)
+	proto.RegisterEnum("kythe.proto.DecorationsRequest_SpanKind", DecorationsRequest_SpanKind_name, DecorationsRequest_SpanKind_value)
+	proto.RegisterEnum("kythe.proto.DecorationsReply_Override_Kind", DecorationsReply_Override_Kind_name, DecorationsReply_Override_Kind_value)
+	proto.RegisterEnum("kythe.proto.CrossReferencesRequest_DefinitionKind", CrossReferencesRequest_DefinitionKind_name, CrossReferencesRequest_DefinitionKind_value)
+	proto.RegisterEnum("kythe.proto.CrossReferencesRequest_DeclarationKind", CrossReferencesRequest_DeclarationKind_name, CrossReferencesRequest_DeclarationKind_value)
+	proto.RegisterEnum("kythe.proto.CrossReferencesRequest_ReferenceKind", CrossReferencesRequest_ReferenceKind_name, CrossReferencesRequest_ReferenceKind_value)
+	proto.RegisterEnum("kythe.proto.CrossReferencesRequest_CallerKind", CrossReferencesRequest_CallerKind_name, CrossReferencesRequest_CallerKind_value)
 	proto.RegisterType((*Location)(nil), "kythe.proto.Location")
 	proto.RegisterType((*DecorationsRequest)(nil), "kythe.proto.DecorationsRequest")
 	proto.RegisterType((*DecorationsReply)(nil), "kythe.proto.DecorationsReply")
@@ -1485,19 +1528,11 @@
 	proto.RegisterMapType((map[string]*Anchor)(nil), "kythe.proto.DocumentationReply.DefinitionLocationsEntry")
 	proto.RegisterMapType((map[string]*common_go_proto.NodeInfo)(nil), "kythe.proto.DocumentationReply.NodesEntry")
 	proto.RegisterType((*DocumentationReply_Document)(nil), "kythe.proto.DocumentationReply.Document")
-	proto.RegisterEnum("kythe.proto.SnippetsKind", SnippetsKind_name, SnippetsKind_value)
-	proto.RegisterEnum("kythe.proto.Location_Kind", Location_Kind_name, Location_Kind_value)
-	proto.RegisterEnum("kythe.proto.DecorationsRequest_SpanKind", DecorationsRequest_SpanKind_name, DecorationsRequest_SpanKind_value)
-	proto.RegisterEnum("kythe.proto.DecorationsReply_Override_Kind", DecorationsReply_Override_Kind_name, DecorationsReply_Override_Kind_value)
-	proto.RegisterEnum("kythe.proto.CrossReferencesRequest_DefinitionKind", CrossReferencesRequest_DefinitionKind_name, CrossReferencesRequest_DefinitionKind_value)
-	proto.RegisterEnum("kythe.proto.CrossReferencesRequest_DeclarationKind", CrossReferencesRequest_DeclarationKind_name, CrossReferencesRequest_DeclarationKind_value)
-	proto.RegisterEnum("kythe.proto.CrossReferencesRequest_ReferenceKind", CrossReferencesRequest_ReferenceKind_name, CrossReferencesRequest_ReferenceKind_value)
-	proto.RegisterEnum("kythe.proto.CrossReferencesRequest_CallerKind", CrossReferencesRequest_CallerKind_name, CrossReferencesRequest_CallerKind_value)
 }
 
-func init() { proto.RegisterFile("kythe/proto/xref.proto", fileDescriptor_xref_a1cf2f06f9d39ad4) }
+func init() { proto.RegisterFile("kythe/proto/xref.proto", fileDescriptor_c0b69b838b524f8a) }
 
-var fileDescriptor_xref_a1cf2f06f9d39ad4 = []byte{
+var fileDescriptor_c0b69b838b524f8a = []byte{
 	// 2062 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x58, 0xdd, 0x72, 0xdb, 0xc6,
 	0xf5, 0x17, 0x48, 0x90, 0x02, 0x0f, 0xf8, 0x01, 0xad, 0x15, 0xfd, 0x61, 0xe6, 0x9f, 0x58, 0x86,
diff --git a/kythe/proto/xref_serving_go_proto/xref_serving.pb.go b/kythe/proto/xref_serving_go_proto/xref_serving.pb.go
index a3f3215..be1df63 100644
--- a/kythe/proto/xref_serving_go_proto/xref_serving.pb.go
+++ b/kythe/proto/xref_serving_go_proto/xref_serving.pb.go
@@ -3,13 +3,15 @@
 
 package xref_serving_go_proto
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import common_go_proto "kythe.io/kythe/proto/common_go_proto"
-import schema_go_proto "kythe.io/kythe/proto/schema_go_proto"
-import serving_go_proto "kythe.io/kythe/proto/serving_go_proto"
-import storage_go_proto "kythe.io/kythe/proto/storage_go_proto"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	common_go_proto "kythe.io/kythe/proto/common_go_proto"
+	schema_go_proto "kythe.io/kythe/proto/schema_go_proto"
+	serving_go_proto "kythe.io/kythe/proto/serving_go_proto"
+	storage_go_proto "kythe.io/kythe/proto/storage_go_proto"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -20,7 +22,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type FileDecorations_TargetOverride_Kind int32
 
@@ -35,6 +37,7 @@
 	1: "OVERRIDES",
 	2: "EXTENDS",
 }
+
 var FileDecorations_TargetOverride_Kind_value = map[string]int32{
 	"UNKNOWN":   0,
 	"OVERRIDES": 1,
@@ -44,8 +47,9 @@
 func (x FileDecorations_TargetOverride_Kind) String() string {
 	return proto.EnumName(FileDecorations_TargetOverride_Kind_name, int32(x))
 }
+
 func (FileDecorations_TargetOverride_Kind) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_xref_serving_786243265900b36f, []int{0, 3, 0}
+	return fileDescriptor_4321824b5a70238a, []int{0, 3, 0}
 }
 
 type CrossReferences_Callsite_Kind int32
@@ -61,6 +65,7 @@
 	1: "DIRECT",
 	2: "OVERRIDE",
 }
+
 var CrossReferences_Callsite_Kind_value = map[string]int32{
 	"UNKNOWN":  0,
 	"DIRECT":   1,
@@ -70,8 +75,9 @@
 func (x CrossReferences_Callsite_Kind) String() string {
 	return proto.EnumName(CrossReferences_Callsite_Kind_name, int32(x))
 }
+
 func (CrossReferences_Callsite_Kind) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_xref_serving_786243265900b36f, []int{1, 4, 0}
+	return fileDescriptor_4321824b5a70238a, []int{1, 4, 0}
 }
 
 type FileDecorations struct {
@@ -96,16 +102,17 @@
 func (m *FileDecorations) String() string { return proto.CompactTextString(m) }
 func (*FileDecorations) ProtoMessage()    {}
 func (*FileDecorations) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_serving_786243265900b36f, []int{0}
+	return fileDescriptor_4321824b5a70238a, []int{0}
 }
+
 func (m *FileDecorations) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_FileDecorations.Unmarshal(m, b)
 }
 func (m *FileDecorations) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_FileDecorations.Marshal(b, m, deterministic)
 }
-func (dst *FileDecorations) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FileDecorations.Merge(dst, src)
+func (m *FileDecorations) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FileDecorations.Merge(m, src)
 }
 func (m *FileDecorations) XXX_Size() int {
 	return xxx_messageInfo_FileDecorations.Size(m)
@@ -251,9 +258,9 @@
 	return nil
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*FileDecorations) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _FileDecorations_OneofMarshaler, _FileDecorations_OneofUnmarshaler, _FileDecorations_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*FileDecorations) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*FileDecorations_Index_)(nil),
 		(*FileDecorations_Text_)(nil),
 		(*FileDecorations_Target_)(nil),
@@ -266,198 +273,6 @@
 	}
 }
 
-func _FileDecorations_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*FileDecorations)
-	// entry
-	switch x := m.Entry.(type) {
-	case *FileDecorations_Index_:
-		b.EncodeVarint(2<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Index); err != nil {
-			return err
-		}
-	case *FileDecorations_Text_:
-		b.EncodeVarint(3<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Text); err != nil {
-			return err
-		}
-	case *FileDecorations_Target_:
-		b.EncodeVarint(4<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Target); err != nil {
-			return err
-		}
-	case *FileDecorations_TargetOverride_:
-		b.EncodeVarint(5<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.TargetOverride); err != nil {
-			return err
-		}
-	case *FileDecorations_TargetNode_:
-		b.EncodeVarint(6<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.TargetNode); err != nil {
-			return err
-		}
-	case *FileDecorations_TargetDefinition_:
-		b.EncodeVarint(7<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.TargetDefinition); err != nil {
-			return err
-		}
-	case *FileDecorations_DefinitionLocation_:
-		b.EncodeVarint(8<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.DefinitionLocation); err != nil {
-			return err
-		}
-	case *FileDecorations_Override_:
-		b.EncodeVarint(9<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Override); err != nil {
-			return err
-		}
-	case *FileDecorations_Diagnostic_:
-		b.EncodeVarint(10<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Diagnostic); err != nil {
-			return err
-		}
-	case nil:
-	default:
-		return fmt.Errorf("FileDecorations.Entry has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _FileDecorations_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*FileDecorations)
-	switch tag {
-	case 2: // entry.index
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(FileDecorations_Index)
-		err := b.DecodeMessage(msg)
-		m.Entry = &FileDecorations_Index_{msg}
-		return true, err
-	case 3: // entry.text
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(FileDecorations_Text)
-		err := b.DecodeMessage(msg)
-		m.Entry = &FileDecorations_Text_{msg}
-		return true, err
-	case 4: // entry.target
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(FileDecorations_Target)
-		err := b.DecodeMessage(msg)
-		m.Entry = &FileDecorations_Target_{msg}
-		return true, err
-	case 5: // entry.target_override
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(FileDecorations_TargetOverride)
-		err := b.DecodeMessage(msg)
-		m.Entry = &FileDecorations_TargetOverride_{msg}
-		return true, err
-	case 6: // entry.target_node
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(FileDecorations_TargetNode)
-		err := b.DecodeMessage(msg)
-		m.Entry = &FileDecorations_TargetNode_{msg}
-		return true, err
-	case 7: // entry.target_definition
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(FileDecorations_TargetDefinition)
-		err := b.DecodeMessage(msg)
-		m.Entry = &FileDecorations_TargetDefinition_{msg}
-		return true, err
-	case 8: // entry.definition_location
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(FileDecorations_DefinitionLocation)
-		err := b.DecodeMessage(msg)
-		m.Entry = &FileDecorations_DefinitionLocation_{msg}
-		return true, err
-	case 9: // entry.override
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(FileDecorations_Override)
-		err := b.DecodeMessage(msg)
-		m.Entry = &FileDecorations_Override_{msg}
-		return true, err
-	case 10: // entry.diagnostic
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(FileDecorations_Diagnostic)
-		err := b.DecodeMessage(msg)
-		m.Entry = &FileDecorations_Diagnostic_{msg}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _FileDecorations_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*FileDecorations)
-	// entry
-	switch x := m.Entry.(type) {
-	case *FileDecorations_Index_:
-		s := proto.Size(x.Index)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *FileDecorations_Text_:
-		s := proto.Size(x.Text)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *FileDecorations_Target_:
-		s := proto.Size(x.Target)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *FileDecorations_TargetOverride_:
-		s := proto.Size(x.TargetOverride)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *FileDecorations_TargetNode_:
-		s := proto.Size(x.TargetNode)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *FileDecorations_TargetDefinition_:
-		s := proto.Size(x.TargetDefinition)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *FileDecorations_DefinitionLocation_:
-		s := proto.Size(x.DefinitionLocation)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *FileDecorations_Override_:
-		s := proto.Size(x.Override)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *FileDecorations_Diagnostic_:
-		s := proto.Size(x.Diagnostic)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 type FileDecorations_Index struct {
 	TextEncoding         string   `protobuf:"bytes,1,opt,name=text_encoding,json=textEncoding,proto3" json:"text_encoding,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -469,16 +284,17 @@
 func (m *FileDecorations_Index) String() string { return proto.CompactTextString(m) }
 func (*FileDecorations_Index) ProtoMessage()    {}
 func (*FileDecorations_Index) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_serving_786243265900b36f, []int{0, 0}
+	return fileDescriptor_4321824b5a70238a, []int{0, 0}
 }
+
 func (m *FileDecorations_Index) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_FileDecorations_Index.Unmarshal(m, b)
 }
 func (m *FileDecorations_Index) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_FileDecorations_Index.Marshal(b, m, deterministic)
 }
-func (dst *FileDecorations_Index) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FileDecorations_Index.Merge(dst, src)
+func (m *FileDecorations_Index) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FileDecorations_Index.Merge(m, src)
 }
 func (m *FileDecorations_Index) XXX_Size() int {
 	return xxx_messageInfo_FileDecorations_Index.Size(m)
@@ -509,16 +325,17 @@
 func (m *FileDecorations_Text) String() string { return proto.CompactTextString(m) }
 func (*FileDecorations_Text) ProtoMessage()    {}
 func (*FileDecorations_Text) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_serving_786243265900b36f, []int{0, 1}
+	return fileDescriptor_4321824b5a70238a, []int{0, 1}
 }
+
 func (m *FileDecorations_Text) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_FileDecorations_Text.Unmarshal(m, b)
 }
 func (m *FileDecorations_Text) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_FileDecorations_Text.Marshal(b, m, deterministic)
 }
-func (dst *FileDecorations_Text) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FileDecorations_Text.Merge(dst, src)
+func (m *FileDecorations_Text) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FileDecorations_Text.Merge(m, src)
 }
 func (m *FileDecorations_Text) XXX_Size() int {
 	return xxx_messageInfo_FileDecorations_Text.Size(m)
@@ -568,16 +385,17 @@
 func (m *FileDecorations_Target) String() string { return proto.CompactTextString(m) }
 func (*FileDecorations_Target) ProtoMessage()    {}
 func (*FileDecorations_Target) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_serving_786243265900b36f, []int{0, 2}
+	return fileDescriptor_4321824b5a70238a, []int{0, 2}
 }
+
 func (m *FileDecorations_Target) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_FileDecorations_Target.Unmarshal(m, b)
 }
 func (m *FileDecorations_Target) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_FileDecorations_Target.Marshal(b, m, deterministic)
 }
-func (dst *FileDecorations_Target) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FileDecorations_Target.Merge(dst, src)
+func (m *FileDecorations_Target) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FileDecorations_Target.Merge(m, src)
 }
 func (m *FileDecorations_Target) XXX_Size() int {
 	return xxx_messageInfo_FileDecorations_Target.Size(m)
@@ -653,71 +471,14 @@
 	return ""
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*FileDecorations_Target) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _FileDecorations_Target_OneofMarshaler, _FileDecorations_Target_OneofUnmarshaler, _FileDecorations_Target_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*FileDecorations_Target) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*FileDecorations_Target_KytheKind)(nil),
 		(*FileDecorations_Target_GenericKind)(nil),
 	}
 }
 
-func _FileDecorations_Target_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*FileDecorations_Target)
-	// kind
-	switch x := m.Kind.(type) {
-	case *FileDecorations_Target_KytheKind:
-		b.EncodeVarint(3<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.KytheKind))
-	case *FileDecorations_Target_GenericKind:
-		b.EncodeVarint(4<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.GenericKind)
-	case nil:
-	default:
-		return fmt.Errorf("FileDecorations_Target.Kind has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _FileDecorations_Target_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*FileDecorations_Target)
-	switch tag {
-	case 3: // kind.kythe_kind
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Kind = &FileDecorations_Target_KytheKind{schema_go_proto.EdgeKind(x)}
-		return true, err
-	case 4: // kind.generic_kind
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.Kind = &FileDecorations_Target_GenericKind{x}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _FileDecorations_Target_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*FileDecorations_Target)
-	// kind
-	switch x := m.Kind.(type) {
-	case *FileDecorations_Target_KytheKind:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(x.KytheKind))
-	case *FileDecorations_Target_GenericKind:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.GenericKind)))
-		n += len(x.GenericKind)
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 type FileDecorations_TargetOverride struct {
 	Overridden           *storage_go_proto.VName             `protobuf:"bytes,1,opt,name=overridden,proto3" json:"overridden,omitempty"`
 	Kind                 FileDecorations_TargetOverride_Kind `protobuf:"varint,2,opt,name=kind,proto3,enum=kythe.proto.serving.xrefs.FileDecorations_TargetOverride_Kind" json:"kind,omitempty"`
@@ -731,16 +492,17 @@
 func (m *FileDecorations_TargetOverride) String() string { return proto.CompactTextString(m) }
 func (*FileDecorations_TargetOverride) ProtoMessage()    {}
 func (*FileDecorations_TargetOverride) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_serving_786243265900b36f, []int{0, 3}
+	return fileDescriptor_4321824b5a70238a, []int{0, 3}
 }
+
 func (m *FileDecorations_TargetOverride) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_FileDecorations_TargetOverride.Unmarshal(m, b)
 }
 func (m *FileDecorations_TargetOverride) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_FileDecorations_TargetOverride.Marshal(b, m, deterministic)
 }
-func (dst *FileDecorations_TargetOverride) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FileDecorations_TargetOverride.Merge(dst, src)
+func (m *FileDecorations_TargetOverride) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FileDecorations_TargetOverride.Merge(m, src)
 }
 func (m *FileDecorations_TargetOverride) XXX_Size() int {
 	return xxx_messageInfo_FileDecorations_TargetOverride.Size(m)
@@ -783,16 +545,17 @@
 func (m *FileDecorations_TargetNode) String() string { return proto.CompactTextString(m) }
 func (*FileDecorations_TargetNode) ProtoMessage()    {}
 func (*FileDecorations_TargetNode) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_serving_786243265900b36f, []int{0, 4}
+	return fileDescriptor_4321824b5a70238a, []int{0, 4}
 }
+
 func (m *FileDecorations_TargetNode) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_FileDecorations_TargetNode.Unmarshal(m, b)
 }
 func (m *FileDecorations_TargetNode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_FileDecorations_TargetNode.Marshal(b, m, deterministic)
 }
-func (dst *FileDecorations_TargetNode) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FileDecorations_TargetNode.Merge(dst, src)
+func (m *FileDecorations_TargetNode) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FileDecorations_TargetNode.Merge(m, src)
 }
 func (m *FileDecorations_TargetNode) XXX_Size() int {
 	return xxx_messageInfo_FileDecorations_TargetNode.Size(m)
@@ -822,16 +585,17 @@
 func (m *FileDecorations_TargetDefinition) String() string { return proto.CompactTextString(m) }
 func (*FileDecorations_TargetDefinition) ProtoMessage()    {}
 func (*FileDecorations_TargetDefinition) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_serving_786243265900b36f, []int{0, 5}
+	return fileDescriptor_4321824b5a70238a, []int{0, 5}
 }
+
 func (m *FileDecorations_TargetDefinition) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_FileDecorations_TargetDefinition.Unmarshal(m, b)
 }
 func (m *FileDecorations_TargetDefinition) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_FileDecorations_TargetDefinition.Marshal(b, m, deterministic)
 }
-func (dst *FileDecorations_TargetDefinition) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FileDecorations_TargetDefinition.Merge(dst, src)
+func (m *FileDecorations_TargetDefinition) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FileDecorations_TargetDefinition.Merge(m, src)
 }
 func (m *FileDecorations_TargetDefinition) XXX_Size() int {
 	return xxx_messageInfo_FileDecorations_TargetDefinition.Size(m)
@@ -867,16 +631,17 @@
 func (m *FileDecorations_DefinitionLocation) String() string { return proto.CompactTextString(m) }
 func (*FileDecorations_DefinitionLocation) ProtoMessage()    {}
 func (*FileDecorations_DefinitionLocation) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_serving_786243265900b36f, []int{0, 6}
+	return fileDescriptor_4321824b5a70238a, []int{0, 6}
 }
+
 func (m *FileDecorations_DefinitionLocation) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_FileDecorations_DefinitionLocation.Unmarshal(m, b)
 }
 func (m *FileDecorations_DefinitionLocation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_FileDecorations_DefinitionLocation.Marshal(b, m, deterministic)
 }
-func (dst *FileDecorations_DefinitionLocation) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FileDecorations_DefinitionLocation.Merge(dst, src)
+func (m *FileDecorations_DefinitionLocation) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FileDecorations_DefinitionLocation.Merge(m, src)
 }
 func (m *FileDecorations_DefinitionLocation) XXX_Size() int {
 	return xxx_messageInfo_FileDecorations_DefinitionLocation.Size(m)
@@ -906,16 +671,17 @@
 func (m *FileDecorations_Override) String() string { return proto.CompactTextString(m) }
 func (*FileDecorations_Override) ProtoMessage()    {}
 func (*FileDecorations_Override) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_serving_786243265900b36f, []int{0, 7}
+	return fileDescriptor_4321824b5a70238a, []int{0, 7}
 }
+
 func (m *FileDecorations_Override) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_FileDecorations_Override.Unmarshal(m, b)
 }
 func (m *FileDecorations_Override) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_FileDecorations_Override.Marshal(b, m, deterministic)
 }
-func (dst *FileDecorations_Override) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FileDecorations_Override.Merge(dst, src)
+func (m *FileDecorations_Override) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FileDecorations_Override.Merge(m, src)
 }
 func (m *FileDecorations_Override) XXX_Size() int {
 	return xxx_messageInfo_FileDecorations_Override.Size(m)
@@ -951,16 +717,17 @@
 func (m *FileDecorations_Diagnostic) String() string { return proto.CompactTextString(m) }
 func (*FileDecorations_Diagnostic) ProtoMessage()    {}
 func (*FileDecorations_Diagnostic) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_serving_786243265900b36f, []int{0, 8}
+	return fileDescriptor_4321824b5a70238a, []int{0, 8}
 }
+
 func (m *FileDecorations_Diagnostic) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_FileDecorations_Diagnostic.Unmarshal(m, b)
 }
 func (m *FileDecorations_Diagnostic) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_FileDecorations_Diagnostic.Marshal(b, m, deterministic)
 }
-func (dst *FileDecorations_Diagnostic) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FileDecorations_Diagnostic.Merge(dst, src)
+func (m *FileDecorations_Diagnostic) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FileDecorations_Diagnostic.Merge(m, src)
 }
 func (m *FileDecorations_Diagnostic) XXX_Size() int {
 	return xxx_messageInfo_FileDecorations_Diagnostic.Size(m)
@@ -998,16 +765,17 @@
 func (m *CrossReferences) String() string { return proto.CompactTextString(m) }
 func (*CrossReferences) ProtoMessage()    {}
 func (*CrossReferences) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_serving_786243265900b36f, []int{1}
+	return fileDescriptor_4321824b5a70238a, []int{1}
 }
+
 func (m *CrossReferences) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CrossReferences.Unmarshal(m, b)
 }
 func (m *CrossReferences) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CrossReferences.Marshal(b, m, deterministic)
 }
-func (dst *CrossReferences) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CrossReferences.Merge(dst, src)
+func (m *CrossReferences) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CrossReferences.Merge(m, src)
 }
 func (m *CrossReferences) XXX_Size() int {
 	return xxx_messageInfo_CrossReferences.Size(m)
@@ -1127,9 +895,9 @@
 	return nil
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*CrossReferences) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _CrossReferences_OneofMarshaler, _CrossReferences_OneofUnmarshaler, _CrossReferences_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*CrossReferences) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*CrossReferences_Index_)(nil),
 		(*CrossReferences_Reference_)(nil),
 		(*CrossReferences_Relation_)(nil),
@@ -1140,162 +908,6 @@
 	}
 }
 
-func _CrossReferences_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*CrossReferences)
-	// entry
-	switch x := m.Entry.(type) {
-	case *CrossReferences_Index_:
-		b.EncodeVarint(2<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Index); err != nil {
-			return err
-		}
-	case *CrossReferences_Reference_:
-		b.EncodeVarint(3<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Reference); err != nil {
-			return err
-		}
-	case *CrossReferences_Relation_:
-		b.EncodeVarint(4<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Relation); err != nil {
-			return err
-		}
-	case *CrossReferences_Caller_:
-		b.EncodeVarint(5<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Caller); err != nil {
-			return err
-		}
-	case *CrossReferences_Callsite_:
-		b.EncodeVarint(6<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Callsite); err != nil {
-			return err
-		}
-	case *CrossReferences_RelatedNode_:
-		b.EncodeVarint(7<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.RelatedNode); err != nil {
-			return err
-		}
-	case *CrossReferences_NodeDefinition_:
-		b.EncodeVarint(8<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.NodeDefinition); err != nil {
-			return err
-		}
-	case nil:
-	default:
-		return fmt.Errorf("CrossReferences.Entry has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _CrossReferences_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*CrossReferences)
-	switch tag {
-	case 2: // entry.index
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(CrossReferences_Index)
-		err := b.DecodeMessage(msg)
-		m.Entry = &CrossReferences_Index_{msg}
-		return true, err
-	case 3: // entry.reference
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(CrossReferences_Reference)
-		err := b.DecodeMessage(msg)
-		m.Entry = &CrossReferences_Reference_{msg}
-		return true, err
-	case 4: // entry.relation
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(CrossReferences_Relation)
-		err := b.DecodeMessage(msg)
-		m.Entry = &CrossReferences_Relation_{msg}
-		return true, err
-	case 5: // entry.caller
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(CrossReferences_Caller)
-		err := b.DecodeMessage(msg)
-		m.Entry = &CrossReferences_Caller_{msg}
-		return true, err
-	case 6: // entry.callsite
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(CrossReferences_Callsite)
-		err := b.DecodeMessage(msg)
-		m.Entry = &CrossReferences_Callsite_{msg}
-		return true, err
-	case 7: // entry.related_node
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(CrossReferences_RelatedNode)
-		err := b.DecodeMessage(msg)
-		m.Entry = &CrossReferences_RelatedNode_{msg}
-		return true, err
-	case 8: // entry.node_definition
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(CrossReferences_NodeDefinition)
-		err := b.DecodeMessage(msg)
-		m.Entry = &CrossReferences_NodeDefinition_{msg}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _CrossReferences_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*CrossReferences)
-	// entry
-	switch x := m.Entry.(type) {
-	case *CrossReferences_Index_:
-		s := proto.Size(x.Index)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *CrossReferences_Reference_:
-		s := proto.Size(x.Reference)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *CrossReferences_Relation_:
-		s := proto.Size(x.Relation)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *CrossReferences_Caller_:
-		s := proto.Size(x.Caller)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *CrossReferences_Callsite_:
-		s := proto.Size(x.Callsite)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *CrossReferences_RelatedNode_:
-		s := proto.Size(x.RelatedNode)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *CrossReferences_NodeDefinition_:
-		s := proto.Size(x.NodeDefinition)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 type CrossReferences_Index struct {
 	Node                 *schema_go_proto.Node         `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"`
 	MarkedSource         *common_go_proto.MarkedSource `protobuf:"bytes,2,opt,name=marked_source,json=markedSource,proto3" json:"marked_source,omitempty"`
@@ -1309,16 +921,17 @@
 func (m *CrossReferences_Index) String() string { return proto.CompactTextString(m) }
 func (*CrossReferences_Index) ProtoMessage()    {}
 func (*CrossReferences_Index) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_serving_786243265900b36f, []int{1, 0}
+	return fileDescriptor_4321824b5a70238a, []int{1, 0}
 }
+
 func (m *CrossReferences_Index) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CrossReferences_Index.Unmarshal(m, b)
 }
 func (m *CrossReferences_Index) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CrossReferences_Index.Marshal(b, m, deterministic)
 }
-func (dst *CrossReferences_Index) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CrossReferences_Index.Merge(dst, src)
+func (m *CrossReferences_Index) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CrossReferences_Index.Merge(m, src)
 }
 func (m *CrossReferences_Index) XXX_Size() int {
 	return xxx_messageInfo_CrossReferences_Index.Size(m)
@@ -1365,16 +978,17 @@
 func (m *CrossReferences_Reference) String() string { return proto.CompactTextString(m) }
 func (*CrossReferences_Reference) ProtoMessage()    {}
 func (*CrossReferences_Reference) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_serving_786243265900b36f, []int{1, 1}
+	return fileDescriptor_4321824b5a70238a, []int{1, 1}
 }
+
 func (m *CrossReferences_Reference) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CrossReferences_Reference.Unmarshal(m, b)
 }
 func (m *CrossReferences_Reference) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CrossReferences_Reference.Marshal(b, m, deterministic)
 }
-func (dst *CrossReferences_Reference) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CrossReferences_Reference.Merge(dst, src)
+func (m *CrossReferences_Reference) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CrossReferences_Reference.Merge(m, src)
 }
 func (m *CrossReferences_Reference) XXX_Size() int {
 	return xxx_messageInfo_CrossReferences_Reference.Size(m)
@@ -1429,71 +1043,14 @@
 	return nil
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*CrossReferences_Reference) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _CrossReferences_Reference_OneofMarshaler, _CrossReferences_Reference_OneofUnmarshaler, _CrossReferences_Reference_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*CrossReferences_Reference) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*CrossReferences_Reference_KytheKind)(nil),
 		(*CrossReferences_Reference_GenericKind)(nil),
 	}
 }
 
-func _CrossReferences_Reference_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*CrossReferences_Reference)
-	// kind
-	switch x := m.Kind.(type) {
-	case *CrossReferences_Reference_KytheKind:
-		b.EncodeVarint(1<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.KytheKind))
-	case *CrossReferences_Reference_GenericKind:
-		b.EncodeVarint(2<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.GenericKind)
-	case nil:
-	default:
-		return fmt.Errorf("CrossReferences_Reference.Kind has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _CrossReferences_Reference_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*CrossReferences_Reference)
-	switch tag {
-	case 1: // kind.kythe_kind
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Kind = &CrossReferences_Reference_KytheKind{schema_go_proto.EdgeKind(x)}
-		return true, err
-	case 2: // kind.generic_kind
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.Kind = &CrossReferences_Reference_GenericKind{x}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _CrossReferences_Reference_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*CrossReferences_Reference)
-	// kind
-	switch x := m.Kind.(type) {
-	case *CrossReferences_Reference_KytheKind:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(x.KytheKind))
-	case *CrossReferences_Reference_GenericKind:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.GenericKind)))
-		n += len(x.GenericKind)
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 type CrossReferences_Relation struct {
 	Node *storage_go_proto.VName `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"`
 	// Types that are valid to be assigned to Kind:
@@ -1511,16 +1068,17 @@
 func (m *CrossReferences_Relation) String() string { return proto.CompactTextString(m) }
 func (*CrossReferences_Relation) ProtoMessage()    {}
 func (*CrossReferences_Relation) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_serving_786243265900b36f, []int{1, 2}
+	return fileDescriptor_4321824b5a70238a, []int{1, 2}
 }
+
 func (m *CrossReferences_Relation) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CrossReferences_Relation.Unmarshal(m, b)
 }
 func (m *CrossReferences_Relation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CrossReferences_Relation.Marshal(b, m, deterministic)
 }
-func (dst *CrossReferences_Relation) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CrossReferences_Relation.Merge(dst, src)
+func (m *CrossReferences_Relation) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CrossReferences_Relation.Merge(m, src)
 }
 func (m *CrossReferences_Relation) XXX_Size() int {
 	return xxx_messageInfo_CrossReferences_Relation.Size(m)
@@ -1589,71 +1147,14 @@
 	return false
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*CrossReferences_Relation) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _CrossReferences_Relation_OneofMarshaler, _CrossReferences_Relation_OneofUnmarshaler, _CrossReferences_Relation_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*CrossReferences_Relation) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*CrossReferences_Relation_KytheKind)(nil),
 		(*CrossReferences_Relation_GenericKind)(nil),
 	}
 }
 
-func _CrossReferences_Relation_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*CrossReferences_Relation)
-	// kind
-	switch x := m.Kind.(type) {
-	case *CrossReferences_Relation_KytheKind:
-		b.EncodeVarint(2<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.KytheKind))
-	case *CrossReferences_Relation_GenericKind:
-		b.EncodeVarint(3<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.GenericKind)
-	case nil:
-	default:
-		return fmt.Errorf("CrossReferences_Relation.Kind has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _CrossReferences_Relation_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*CrossReferences_Relation)
-	switch tag {
-	case 2: // kind.kythe_kind
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Kind = &CrossReferences_Relation_KytheKind{schema_go_proto.EdgeKind(x)}
-		return true, err
-	case 3: // kind.generic_kind
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.Kind = &CrossReferences_Relation_GenericKind{x}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _CrossReferences_Relation_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*CrossReferences_Relation)
-	// kind
-	switch x := m.Kind.(type) {
-	case *CrossReferences_Relation_KytheKind:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(x.KytheKind))
-	case *CrossReferences_Relation_GenericKind:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.GenericKind)))
-		n += len(x.GenericKind)
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 type CrossReferences_Caller struct {
 	Caller               *storage_go_proto.VName          `protobuf:"bytes,1,opt,name=caller,proto3" json:"caller,omitempty"`
 	Location             *serving_go_proto.ExpandedAnchor `protobuf:"bytes,2,opt,name=location,proto3" json:"location,omitempty"`
@@ -1667,16 +1168,17 @@
 func (m *CrossReferences_Caller) String() string { return proto.CompactTextString(m) }
 func (*CrossReferences_Caller) ProtoMessage()    {}
 func (*CrossReferences_Caller) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_serving_786243265900b36f, []int{1, 3}
+	return fileDescriptor_4321824b5a70238a, []int{1, 3}
 }
+
 func (m *CrossReferences_Caller) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CrossReferences_Caller.Unmarshal(m, b)
 }
 func (m *CrossReferences_Caller) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CrossReferences_Caller.Marshal(b, m, deterministic)
 }
-func (dst *CrossReferences_Caller) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CrossReferences_Caller.Merge(dst, src)
+func (m *CrossReferences_Caller) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CrossReferences_Caller.Merge(m, src)
 }
 func (m *CrossReferences_Caller) XXX_Size() int {
 	return xxx_messageInfo_CrossReferences_Caller.Size(m)
@@ -1721,16 +1223,17 @@
 func (m *CrossReferences_Callsite) String() string { return proto.CompactTextString(m) }
 func (*CrossReferences_Callsite) ProtoMessage()    {}
 func (*CrossReferences_Callsite) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_serving_786243265900b36f, []int{1, 4}
+	return fileDescriptor_4321824b5a70238a, []int{1, 4}
 }
+
 func (m *CrossReferences_Callsite) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CrossReferences_Callsite.Unmarshal(m, b)
 }
 func (m *CrossReferences_Callsite) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CrossReferences_Callsite.Marshal(b, m, deterministic)
 }
-func (dst *CrossReferences_Callsite) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CrossReferences_Callsite.Merge(dst, src)
+func (m *CrossReferences_Callsite) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CrossReferences_Callsite.Merge(m, src)
 }
 func (m *CrossReferences_Callsite) XXX_Size() int {
 	return xxx_messageInfo_CrossReferences_Callsite.Size(m)
@@ -1773,16 +1276,17 @@
 func (m *CrossReferences_RelatedNode) String() string { return proto.CompactTextString(m) }
 func (*CrossReferences_RelatedNode) ProtoMessage()    {}
 func (*CrossReferences_RelatedNode) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_serving_786243265900b36f, []int{1, 5}
+	return fileDescriptor_4321824b5a70238a, []int{1, 5}
 }
+
 func (m *CrossReferences_RelatedNode) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CrossReferences_RelatedNode.Unmarshal(m, b)
 }
 func (m *CrossReferences_RelatedNode) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CrossReferences_RelatedNode.Marshal(b, m, deterministic)
 }
-func (dst *CrossReferences_RelatedNode) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CrossReferences_RelatedNode.Merge(dst, src)
+func (m *CrossReferences_RelatedNode) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CrossReferences_RelatedNode.Merge(m, src)
 }
 func (m *CrossReferences_RelatedNode) XXX_Size() int {
 	return xxx_messageInfo_CrossReferences_RelatedNode.Size(m)
@@ -1812,16 +1316,17 @@
 func (m *CrossReferences_NodeDefinition) String() string { return proto.CompactTextString(m) }
 func (*CrossReferences_NodeDefinition) ProtoMessage()    {}
 func (*CrossReferences_NodeDefinition) Descriptor() ([]byte, []int) {
-	return fileDescriptor_xref_serving_786243265900b36f, []int{1, 6}
+	return fileDescriptor_4321824b5a70238a, []int{1, 6}
 }
+
 func (m *CrossReferences_NodeDefinition) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_CrossReferences_NodeDefinition.Unmarshal(m, b)
 }
 func (m *CrossReferences_NodeDefinition) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_CrossReferences_NodeDefinition.Marshal(b, m, deterministic)
 }
-func (dst *CrossReferences_NodeDefinition) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_CrossReferences_NodeDefinition.Merge(dst, src)
+func (m *CrossReferences_NodeDefinition) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CrossReferences_NodeDefinition.Merge(m, src)
 }
 func (m *CrossReferences_NodeDefinition) XXX_Size() int {
 	return xxx_messageInfo_CrossReferences_NodeDefinition.Size(m)
@@ -1847,6 +1352,8 @@
 }
 
 func init() {
+	proto.RegisterEnum("kythe.proto.serving.xrefs.FileDecorations_TargetOverride_Kind", FileDecorations_TargetOverride_Kind_name, FileDecorations_TargetOverride_Kind_value)
+	proto.RegisterEnum("kythe.proto.serving.xrefs.CrossReferences_Callsite_Kind", CrossReferences_Callsite_Kind_name, CrossReferences_Callsite_Kind_value)
 	proto.RegisterType((*FileDecorations)(nil), "kythe.proto.serving.xrefs.FileDecorations")
 	proto.RegisterType((*FileDecorations_Index)(nil), "kythe.proto.serving.xrefs.FileDecorations.Index")
 	proto.RegisterType((*FileDecorations_Text)(nil), "kythe.proto.serving.xrefs.FileDecorations.Text")
@@ -1865,15 +1372,11 @@
 	proto.RegisterType((*CrossReferences_Callsite)(nil), "kythe.proto.serving.xrefs.CrossReferences.Callsite")
 	proto.RegisterType((*CrossReferences_RelatedNode)(nil), "kythe.proto.serving.xrefs.CrossReferences.RelatedNode")
 	proto.RegisterType((*CrossReferences_NodeDefinition)(nil), "kythe.proto.serving.xrefs.CrossReferences.NodeDefinition")
-	proto.RegisterEnum("kythe.proto.serving.xrefs.FileDecorations_TargetOverride_Kind", FileDecorations_TargetOverride_Kind_name, FileDecorations_TargetOverride_Kind_value)
-	proto.RegisterEnum("kythe.proto.serving.xrefs.CrossReferences_Callsite_Kind", CrossReferences_Callsite_Kind_name, CrossReferences_Callsite_Kind_value)
 }
 
-func init() {
-	proto.RegisterFile("kythe/proto/xref_serving.proto", fileDescriptor_xref_serving_786243265900b36f)
-}
+func init() { proto.RegisterFile("kythe/proto/xref_serving.proto", fileDescriptor_4321824b5a70238a) }
 
-var fileDescriptor_xref_serving_786243265900b36f = []byte{
+var fileDescriptor_4321824b5a70238a = []byte{
 	// 1172 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0x5f, 0x6f, 0x1b, 0x45,
 	0x10, 0xf7, 0xf9, 0x5f, 0xec, 0xb1, 0xe3, 0x98, 0x45, 0x48, 0xd7, 0x13, 0x94, 0x34, 0x91, 0x10,