Regen all docs. (#700)

* Stop recursing if discovery == {}

* Generate docs with 'make docs'.
diff --git a/docs/dyn/firebaserules_v1.projects.html b/docs/dyn/firebaserules_v1.projects.html
index a42f48d..ff60b3b 100644
--- a/docs/dyn/firebaserules_v1.projects.html
+++ b/docs/dyn/firebaserules_v1.projects.html
@@ -199,10 +199,6 @@
               },
             },
           ],
-          "resource": "", # Optional resource value as it appears in persistent storage before the
-              # request is fulfilled.
-              #
-              # The resource type depends on the `request.path` value.
           "request": "", # Request context.
               #
               # The exact format of the request context is service-dependent. See the
@@ -222,6 +218,10 @@
               #
               # If the request value is not well-formed for the service, the request will
               # be rejected as an invalid argument.
+          "resource": "", # Optional resource value as it appears in persistent storage before the
+              # request is fulfilled.
+              #
+              # The resource type depends on the `request.path` value.
           "expectation": "A String", # Test expectation.
         },
       ],
@@ -251,20 +251,27 @@
             # For example: ```Unable to read variable [name: "resource"]```
           "A String",
         ],
+        "visitedExpressions": [ # The set of visited permission expressions for a given test. This returns
+            # the positions and evaluation results of all visited permission
+            # expressions which were relevant to the test case, e.g.
+            # ```
+            # match /path {
+            #   allow read if: <expr>
+            # }
+            # ```
+            # For a detailed report of the intermediate evaluation states, see the
+            # `expression_reports` field
+          { # Store the position and access outcome for an expression visited in rules.
+            "sourcePosition": { # Position in the `Source` content including its line, column number, and an # Position in the `Source` or `Ruleset` where an expression was visited.
+                # index of the `File` in the `Source` message. Used for debug purposes.
+              "column": 42, # First column on the source line associated with the source fragment.
+              "line": 42, # Line number of the source fragment. 1-based.
+              "fileName": "A String", # Name of the `File`.
+            },
+            "value": "", # The evaluated value for the visited expression, e.g. true/false
+          },
+        ],
         "state": "A String", # State of the test.
-        "errorPosition": { # Position in the `Source` content including its line, column number, and an # Position in the `Source` or `Ruleset` where the principle runtime error
-            # occurs.
-            #
-            # Evaluation of an expression may result in an error. Rules are deny by
-            # default, so a `DENY` expectation when an error is generated is valid.
-            # When there is a `DENY` with an error, the `SourcePosition` is returned.
-            #
-            # E.g. `error_position { line: 19 column: 37 }`
-            # index of the `File` in the `Source` message. Used for debug purposes.
-          "column": 42, # First column on the source line associated with the source fragment.
-          "line": 42, # Line number of the source fragment. 1-based.
-          "fileName": "A String", # Name of the `File`.
-        },
         "functionCalls": [ # The set of function calls made to service-defined methods.
             #
             # Function calls are included in the order in which they are encountered
@@ -278,6 +285,19 @@
             ],
           },
         ],
+        "errorPosition": { # Position in the `Source` content including its line, column number, and an # Position in the `Source` or `Ruleset` where the principle runtime error
+            # occurs.
+            #
+            # Evaluation of an expression may result in an error. Rules are deny by
+            # default, so a `DENY` expectation when an error is generated is valid.
+            # When there is a `DENY` with an error, the `SourcePosition` is returned.
+            #
+            # E.g. `error_position { line: 19 column: 37 }`
+            # index of the `File` in the `Source` message. Used for debug purposes.
+          "column": 42, # First column on the source line associated with the source fragment.
+          "line": 42, # Line number of the source fragment. 1-based.
+          "fileName": "A String", # Name of the `File`.
+        },
       },
     ],
     "issues": [ # Syntactic and semantic `Source` issues of varying severity. Issues of
@@ -289,8 +309,8 @@
           "line": 42, # Line number of the source fragment. 1-based.
           "fileName": "A String", # Name of the `File`.
         },
-        "description": "A String", # Short error description.
         "severity": "A String", # The severity of the issue.
+        "description": "A String", # Short error description.
       },
     ],
   }</pre>