code: def _make_endpoint(self, root_node, endpoint):
          # type: (ElementTree.Element, EndpointDescription) -> None
          
          endpoint_node = ElementTree.SubElement(
              root_node, TAG_ENDPOINT_DESCRIPTION
          )
  
          for name, value in endpoint.get_properties().items():
              # Compute value type
              vtype = self._get_type(name, value)
  
              # Prepare the property node
              prop_node = ElementTree.SubElement(
                  endpoint_node, TAG_PROPERTY, {ATTR_NAME: name}
              )
  
              if vtype == XML_VALUE:
                  # Special case, we have to store the value as a child
                  # without a value-type attribute
                  prop_node.append(value)
                  continue
  
              # Set the value type
              prop_node.set(ATTR_VALUE_TYPE, vtype)
  
              # Compute value node or attribute
              if isinstance(value, tuple):
                  # Array
                  self._add_container(prop_node, TAG_ARRAY, value)
  
              elif isinstance(value, list):
                  # List
                  self._add_container(prop_node, TAG_ARRAY, value)
  
              elif isinstance(value, set):
                  # Set
                  self._add_container(prop_node, TAG_SET, value)
  
              elif isinstance(value, type(root_node)):
                  # XML (direct addition)
                  prop_node.append(value)
  
              else:
                  # Simple value -> Attribute
                  prop_node.set(ATTR_VALUE, str(value))
docs: Converts the given endpoint bean to an XML Element
  
          :param root_node: The XML root Element
          :param endpoint: An EndpointDescription bean