class_docstr: The tokenizerwrapper is for the t5-lm-adapted version proposed by
  `The Power of Scale for Parameter-Efficient Prompt Tuning <https://arxiv.org/abs/2104.08691>`_
  Since this model is a autogressive language model fashion, it only support generation from the
  and of the text.
  
  Given wrapped example, e.g. A fun movie ! it is {"mask"}
  The encoder input is :  A fun movie ! it is </s>
  (Note that </s> is added in T5 encoder inputs, this will yield better result compared to not using </s>)
  The decoder input is : <pad> <extra_id_0> </s>
  The expected output is : good
  Under teacher forcing mode, the decoder input is   <pad> <extra_id_0>  good </s>, where good and </s> requires loss
code: def num_special_tokens_to_add(self):
      if not hasattr(self, "_num_specials"):
          self._num_specials = (
              self.tokenizer.num_special_tokens_to_add()
          )
      return self._num_specials
  
imports: from json import decoder
  from transformers.tokenization_utils import PreTrainedTokenizer
  from openprompt.plms.utils import TokenizerWrapper
  from typing import List, Dict, Optional
  from collections import defaultdict
  from openprompt.utils.logging import logger
label_desc: Use image node_id 4 for calling the T5LMTokenizerWrapper obj's underlying member method code with example usage: obj.num_special_tokens_to_add() and returns: self