code: def add_protocol_versions(cls, values: dict) -> dict:
      if "supported_protocols" not in values:
          data_protocol = get_data_protocol()
          values[
              "supported_protocols"
          ] = data_protocol.supported_protocols
      return values
  
imports: from __future__ import annotations
  from typing import Callable
  from typing import List
  from typing import Optional
  from packaging import version
  from pydantic import BaseModel
  from pydantic import root_validator
  from ...abstract_node import NodeType
  from ...node.credentials import SyftVerifyKey
  from ...protocol.data_protocol import get_data_protocol
  from ...serde.serializable import serializable
  from ...types.syft_object import SYFT_OBJECT_VERSION_1
  from ...types.syft_object import SYFT_OBJECT_VERSION_2
  from ...types.syft_object import SYFT_OBJECT_VERSION_3
  from ...types.syft_object import StorableObjectType
  from ...types.syft_object import SyftObject
  from ...types.transforms import convert_types
  from ...types.transforms import drop
  from ...types.transforms import rename
  from ...types.transforms import transform
  from ...types.uid import UID
label_desc: Use image node_id 1 for calling the NodeMetadataJSON obj's underlying member method code with example usage: obj.add_protocol_versions(cls, values) and returns: values