<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def find_reference(name, element_types, version):
 """ 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 Traceback (most recent call last):
 ChildNotFound: No child named UNKNOWN Traceback (most recent call last):
 ChildNotFound: No child named ADT_A01 ADT_A01 <class 'hl7apy.core.Message'> """

    lib = load_library(version)
    ref = lib.find(name, element_types)
    return ref