code: def pop_max_vocab_size(params: Params) -> Union[int, Dict[str, int]]:
      
      size = params.pop("max_vocab_size", None)
  
      if isinstance(size, Params):
          # This is the Dict[str, int] case.
          return size.as_dict()
      elif size is not None:
          # This is the int / str case.
          return int(size)
      else:
          return None
docs: max_vocab_size limits the size of the vocabulary, not including the @@UNKNOWN@@ token.
  
      max_vocab_size is allowed to be either an int or a Dict[str, int] (or nothing).
      But it could also be a string representing an int (in the case of environment variable
      substitution). So we need some complex logic to handle it.