old_contents: """Defines Hello message."""
  
  # System imports
  
  # Third-party imports
  
  from pyof.v0x01.symmetric.hello import Hello
  __all__ = ('Hello',)
  
new_contents: """Defines Hello message."""
  
  # System imports
  
  from enum import Enum
  
  from pyof.foundation.base import GenericMessage, GenericStruct
  from pyof.foundation.basic_types import BinaryData, FixedTypeList, UBInt16
  from pyof.v0x04.common.header import Header, Type
  
  # Third-party imports
  
  
  __all__ = ('Hello', 'HelloElemHeader', 'HelloElemType',
             'HelloElemVersionbitmap', 'ListOfHelloElements')
  
  # Enums
  
  
  class HelloElemType(Enum):
      """Hello element types."""
  
      #: Bitmap of version supported.
      OFPHET_VERSIONBITMAP = 1
  
  
  # Classes
  
  
  class HelloElemHeader(GenericStruct):
      """Common header for all Hello Elements."""
  
      element_type = UBInt16(enum_ref=HelloElemType)
      length = UBInt16()
  
      def __init__(self, element_type=None, length=None):
          """The constructor just assigns parameters to object attributes.
  
          Args:
              element_type: One of OFPHET_*.
              length: Length in bytes of the element, including this header,
                  excluding padding.
          """
          super().__init__()
          self.element_type = element_type
          self.length = length
  
  
  class ListOfHelloElements(FixedTypeList):
      """List of Hello elements.
  
      Represented by instances of HelloElemHeader and used on Hello
      objects.
      """
  
      def __init__(self, items=None):
          """The constructor just assigns parameters to object attributes.
  
          Args:
              items (HelloElemHeader): Instance or a list of instances.
          """
          super().__init__(pyof_class=HelloElemHeader, items=items)
  
  
  class Hello(GenericMessage):
      """OpenFlow Hello Message OFPT_HELLO.
  
      This message includes zero or more hello elements having variable size.
      Unknown element types must be ignored/skipped, to allow for future
      extensions.
      """
  
      header = Header(message_type=Type.OFPT_HELLO, length=8)
      #: Hello element list
      elements = ListOfHelloElements()
  
      def __init__(self, xid=None, elements=None):
          """The constructor takes the parameters below.
  
          Args:
              xid (int): xid to be used on the message header.
              elements: List of elements - 0 or more
          """
          super().__init__(xid)
          self.elements = elements
  
  
  class HelloElemVersionbitmap(HelloElemHeader):
      """Version bitmap Hello Element."""
  
      #: List of bitmaps - supported versions
      bitmaps = BinaryData()
  
      def __init__(self, bitmaps=b''):
          """The constructor just assigns parameters to object attributes.
  
          Args:
              bitmaps: -Exactly (length - 4) bytes containing the bitmaps,then
                       -Exactly (length + 7)/8*8 - (length) (between 0 and 7)
                        bytes of all-zero bytes.
          """
          super().__init__(element_type=HelloElemType.OFPHET_VERSIONBITMAP,
                           length=None)
          self.bitmaps = bitmaps
  
subject: Add Hello class and related classes for v0x04