parameters: (annotations, tag, value, overwrite=False)
docstring: Adds an annotation specified in C++ namespace format to an annotation dictionary
          using the namespaces to specify dict hierarchy
      @param annotations The root annotation dict to store into
      @param tag The C++ formatted tag (using either :: or . as a separator)
      @param value The value to store
docstring_summary: Adds an annotation specified in C++ namespace format to an annotation dictionary
          using the namespaces to specify dict hierarchy
docstring_tokens: Adds an annotation specified in C ++ namespace format to an annotation dictionary using the namespaces to specify dict hierarchy
function: def store_annotation(annotations, tag, value, overwrite=False):
      """ Adds an annotation specified in C++ namespace format to an annotation dictionary
          using the namespaces to specify dict hierarchy
      @param annotations The root annotation dict to store into
      @param tag The C++ formatted tag (using either :: or . as a separator)
      @param value The value to store
      """
      tag_parts = re.split(TAG_SPLIT_PATTERN, tag)
      namespace = annotations
      for part in tag_parts[0:-1]:
          # if there is a None value already in place, replace it with a table
          # this happens in cases like Serialize() and Serialize::Base<>()
          if part in namespace and not isinstance(namespace[part], dict):
              del namespace[part]
          namespace = namespace.setdefault(part, {})
      # do not stomp a parent table with a value
      if overwrite or \
          tag_parts[-1] not in namespace or \
          not isinstance(namespace[tag_parts[-1]], dict):
          namespace[tag_parts[-1]] = value
function_tokens: def store_annotation ( annotations , tag , value , overwrite = False ) : tag_parts = re . split ( TAG_SPLIT_PATTERN , tag ) namespace = annotations for part in tag_parts [ 0 : - 1 ] : # if there is a None value already in place, replace it with a table # this happens in cases like Serialize() and Serialize::Base<>() if part in namespace and not isinstance ( namespace [ part ] , dict ) : del namespace [ part ] namespace = namespace . setdefault ( part , { } ) # do not stomp a parent table with a value if overwrite or tag_parts [ - 1 ] not in namespace or not isinstance ( namespace [ tag_parts [ - 1 ] ] , dict ) : namespace [ tag_parts [ - 1 ] ] = value