code: def find_reference(name, element_types, version):
      
      lib = load_library(version)
      ref = lib.find(name, element_types)
      return ref
docs: Look for an element of the given name and version into the given types and return its reference structure
  
      :type name: ``str``
      :param name: the element name to look for (e.g. 'MSH')
      :type types: ``list`` or ``tuple``
      :param types: the element classes where to look for the element (e.g. (Group, Segment))
      :type version: ``str``
      :param version: the version of the library where to search the element (e.g. '2.6')
      :rtype: ``dict``
      :return: a dictionary describing the element structure
      :raise: :class:`hl7apy.exceptions.ChildNotFound` if the element has not been found
  
      >>> from hl7apy.core import Message, Segment
      >>> find_reference('UNKNOWN', (Segment, ), '2.5')  # doctest: +IGNORE_EXCEPTION_DETAIL
      Traceback (most recent call last):
      ...
      ChildNotFound: No child named UNKNOWN
      >>> find_reference('ADT_A01', (Segment,),  '2.5')  # doctest: +IGNORE_EXCEPTION_DETAIL
      Traceback (most recent call last):
      ...
      ChildNotFound: No child named ADT_A01
      >>> r = find_reference('ADT_A01', (Message,),  '2.5')
      >>> print('%s %s' % (r['name'], r['cls']))
      ADT_A01 <class 'hl7apy.core.Message'>