docs: def _check_data_port_validity(self, check_data_port):
          """Checks the validity of a data port
  
          Checks whether the data flows connected to the port do not conflict with the data types.
  
          :param rafcon.core.data_port.DataPort check_data_port: The data port to be checked
          :return bool validity, str message: validity is True, when the data port is valid, False else. message gives
              more information especially if the data port is not valid
          """
          valid, message = self._check_data_port_id(check_data_port)
          if not valid:
              return False, message
  
          valid, message = self._check_data_port_name(check_data_port)
          if not valid:
              return False, message
  
          # Check whether the type matches any connected data port type
          # Only relevant, if there is a parent state, otherwise the port cannot be connected to data flows
          # TODO: check of internal connections
          if not self.is_root_state:
              # Call the check in the parent state, where the data flows are stored
              return self.parent.check_data_port_connection(check_data_port)
          else:
              from rafcon.core.states.container_state import ContainerState
              if isinstance(self, ContainerState):
                  return self.check_data_port_connection(check_data_port)
  
          return True, "valid"