code: def get(self, key: str, default: Any = DEFAULT):
          
          if default is self.DEFAULT:
              try:
                  value = self.params.get(key)
              except KeyError:
                  raise ConfigurationError("key \"{}\" is required at location \"{}\"".format(key, self.history))
          else:
              value = self.params.get(key, default)
          return self._check_is_dict(key, value)
docs: Performs the functionality associated with dict.get(key) but also checks for returned
          dicts and returns a Params object in their place with an updated history.