docs: def walk_interface(self, name, data, in_location):
          interface = Interface()
          location = "{}.{}".format(in_location, name)
          if isinstance(data, dict):
              interface.name = de_identifier(self.require_field(location, "name", data, "", str))
              location = "{}.{}".format(in_location, clean_identifier(interface.name))
              interface.returns = de_identifier(self.require_field(location, "returns", data, "", str))
              interface.description = self.recommend_field(location, "description", data, "", str)
              # Implementations
              if "production" in data:
                  interface.production = self.walk_implementation("production", data["production"], location)
              else:
                  self.not_found_error("{}.{}".format(location, "production"))
              if "test" in data:
                  interface.test = self.walk_implementation("test", data["test"], location)
              else:
                  interface.test = None
              # Arguments
              interface.args = list(self.walk_list("{}.args".format(location), "args", data, self.walk_interface_arg))
              interface.cache = self.typecheck_field(location, "cache", data, [], list)
          else:
              self.type_error(location, dict, type(data))
          return interface
          '''
              self.require_field("url", "{}.url".format(location), data, str)
              self.require_field("verb", "{}.verb".format(location), data, set(("get", "post", "delete", "put")))
              self.recommend_field("format", "{}.format".format(location), data, set(("json", "xml", "html", "csv", "text")), not_found="Assuming json.")
              self.require_field("output", "{}.output".format(location), data, str)
              self.recommend_field(
                              "description", 
                              "{}.description".format(name),
                              data, str, not_found="There will be no documentation for {}!".format(name))
              self.typecheck_field("comment", "{}.comment".format(location), data, str)
              if "inputs" in data:
                  self.walk_list("{}.inputs".format(location), "inputs", data, self.walk_input)
                  # Ensure that every url has the requsite paths!
                  if "url" in data:
                      url_input_names = set(map(str, re.findall("<(.*?)>", data["url"])))
                      given_input_names = set([input['path'] for input in data["inputs"].values() if 'path' in input])
                      if not url_input_names.issubset(given_input_names):
                          self.error("Expected full list of url parameters {} for {}, given only {}.".format(list(url_input_names), location, list(given_input_names)))
                      
          else:
              self.type_error(location, dict, type(data))
          return interface'''