_array_structure_list.axis_set_id AXISSETID
    _array_structure_list.array_id ARRAYID
    _array_structure_list.array_section_id ARRAYSECTIONID
    _array_structure_list.dimension DIM
    _array_structure_list.direction DIR
    _array_structure_list.index INDEX
    _array_structure_list.precedence PRECEDENCE
    _array_structure_list_section.array_id ARRAYID -->
    _array_structure_list_section.id ARRAYSECTIONID -->
    _array_structure_list_section.index PRECEDENCE-->
    _array_structure_list_section.end END -->
    _array_structure_list_section.start START -->
    _array_structure_list_section.stride STRIDE -->
     loop_
    _array_structure_list_axis.axis_id
    _array_structure_list_axis.axis_set_id
    _array_structure_list_axis.angle
    _array_structure_list_axis.angle_increment
    _array_structure_list_axis.displacement
    _array_structure_list_axis.fract_displacement
    _array_structure_list_axis.displacement_increment
    _array_structure_list_axis.fract_displacement_increment
    _array_structure_list_axis.angular_pitch
    _array_structure_list_axis.reference_angle
    _array_structure_list_axis.reference_displacement REFDISP
    AXISID1 AXISSETID ANGLE1 ANGLEINC1 DISP1 FRACTDISP1
         DISPINC1 FRACTINC1 ANGPITCH1 REFANG1
    AXISID2 AXISSETID ANGLE2 ANGLEINC2 DISP2 FRACTDISP2
         DISPINC2 FRACTINC2 ANGPITCH2 REFANG2
    AXISID3 AXISSETID ANGLE3 ANGLEINC3 DISP3 FRACTDISP3
         DISPINC3 FRACTINC3 ANGPITCH3 REFANG3
    _diffrn_data_frame.array_id ARRAYID
    _diffrn_data_frame.binary_id BINARYID
    _diffrn_data_frame.center_fast CENF
    _diffrn_data_frame.center_slow CENS
    _diffrn_data_frame.center_units UNITS
    _diffrn_data_frame.detector_element_id ELEMENTID
    _diffrn_data_frame.id FRAMEID
    _diffrn_data_frame.details DETAILS
    -->
    ...
   /entry:NXentry
     /data_ARRAYID_BINARYID:NXdata
        @signal="data_ARRAYID_BINARY_ID"
        /data_ARRAYID_BINARYID[ the data for the array ARRAYID,
                                binary BINARYID, all sections,
                                all FRAMES]
        @axes=[...,AXISID1,...] with AXISID1 inserted at PRECEDENCE-1
        @AXISID1_indices=[PRECEDENCE-1]
        @AXISID2_indices=[PRECEDENCE-1]
        @AXISID3_indices=[PRECEDENCE-1]
        @AXISID1_origins=[origin1]  (default 0)
        @AXISID2_origins=[origin2]  (default 0)
        @AXISID3_origins=[origin3]  (default 0)
        @AXISID1_sizes=[size1]
        @AXISID2_sizes=[size2]
        @AXISID3_sizes=[size3]
        @AXISID1_strides=[stride1]
        @AXISID2_strides=[stride2]
        @AXISID3_strides=[stride3]
        ...
        /AXISID1 -->
            /entry/instrument/DETECTORELEMENTNAME/transformations/AXISID1
        /AXISID2 -->
            /entry/instrument/DETECTORELEMENTNAME/transformations/AXISID2
        /AXISID2 -->
            /entry/instrument/DETECTORELEMENTNAME/transformations/AXISID3
        ...
     /instrument:NXinstrument
       /DETECTORNAME:NXdetector_group
       /DETECTORELEMENTNAME:NXdetector
           /data_ARRAYID_BINARYID -->
                /entry/data_ARRAYID_BINARYID/data_ARRAYID_BINARYID
           /AXISID1 -->
                /entry/instrument/DETECTORELEMENTNAME/transformations/AXISID1
           /AXISID2 -->
                /entry/instrument/DETECTORELEMENTNAME/transformations/AXISID2
           /AXISID2 -->
                /entry/instrument/DETECTORELEMENTNAME/transformations/AXISID3
           /ARRAYSECTIONID:NXdetector_module
             /data_origin=[...] -- the 0-based origins indices of ARRAYSECTIONID
             /data_size=[...] the sizes in pixels of ARRAYSECTIONID
             /data_stride[...] the strides of ARRAYSECTIONID
               ..
           /transformations:NXtransformations
             /AXISID1=[DISP1,DISP1+DISPINC1,...]   (or using angles where appropriate)
                @depends_on=...   determined from AXIS definitions
                @equipment="detector"
                @offset=[...] determined from AXIS definitions
                @offset_units="mm"
                @transformation_type="..." from AXIS definitions
                @units="mm"
                @vector=[...] determined from AXIS definitions
                @CBF_array_structure_list_axis__axis_id="AXISID1"
                @CBF_array_structure_list_axis__axis_set_id="AXISSETID"
                @CBF_array_structure_list_axis__angle=ANGLE1
                @CBF_array_structure_list_axis__angle_increment=ANGLEINC1
                @CBF_array_structure_list_axis__displacement=DISP1
                @CBF_array_structure_list_axis__displacement=FRACTDISP1
                @CBF_array_structure_list_axis__displacement_increment=DISPINC1
                @CBF_array_structure_list_axis__fract_displacement_increment=FRACTINC1
                @CBF_array_structure_list_axis__angular_pitch=ANGPITCH1
                @CBF_array_structure_list_axis__radial_pitch=RADPITCH1
                @CBF_array_structure_list_axis__reference_angle=REFANG1
                @CBF_array_structure_list_axis__reference_displacement=REFDISP1
             /AXISID2=[DISP2,DISP2+DISPINC2,...]   (or using angles where appropriate)
                @depends_on=...   determined from AXIS definitions
                @equipment="detector"
                @offset=[...] determined from AXIS definitions
                @offset_units="mm"
                @transformation_type="..." from AXIS definitions
                @units="mm"
                @vector=[...] determined from AXIS definitions
                @CBF_array_structure_list_axis__axis_id="AXISID2"
                @CBF_array_structure_list_axis__axis_set_id="AXISSETID"
                @CBF_array_structure_list_axis__angle=ANGLE2
                @CBF_array_structure_list_axis__angle_increment=ANGLEINC2
                @CBF_array_structure_list_axis__displacement=DISP2
                @CBF_array_structure_list_axis__displacement=FRACTDISP2
                @CBF_array_structure_list_axis__displacement_increment=DISPINC2
                @CBF_array_structure_list_axis__fract_displacement_increment=FRACTINC2
                @CBF_array_structure_list_axis__angular_pitch=ANGPITCH2
                @CBF_array_structure_list_axis__radial_pitch=RADPITCH2
                @CBF_array_structure_list_axis__reference_angle=REFANG2
                @CBF_array_structure_list_axis__reference_displacement=REFDISP2
             /AXISID3=[DISP3,DISP3+DISPINC3,...]   (or using angles where appropriate)
                @depends_on=...   determined from AXIS definitions
                @equipment="detector"
                @offset=[...] determined from AXIS definitions
                @offset_units="mm"
                @transformation_type="..." from AXIS definitions
                @units="mm"
                @vector=[...] determined from AXIS definitions
                @CBF_array_structure_list_axis__axis_id="AXISID3"
                @CBF_array_structure_list_axis__axis_set_id="AXISSETID"
                @CBF_array_structure_list_axis__angle=ANGLE3
                @CBF_array_structure_list_axis__angle_increment=ANGLEINC3
                @CBF_array_structure_list_axis__displacement=DISP3
                @CBF_array_structure_list_axis__displacement=FRACTDISP3
                @CBF_array_structure_list_axis__displacement_increment=DISPINC3
                @CBF_array_structure_list_axis__fract_displacement_increment=FRACTINC3
                @CBF_array_structure_list_axis__angular_pitch=ANGPITCH3
                @CBF_array_structure_list_axis__radial_pitch=RADPITCH3
                @CBF_array_structure_list_axis__reference_angle=REFANG3
                @CBF_array_structure_list_axis__reference_displacement=REFDISP3
    Notes: The same axis AXISIDn may appear in multiple axis sets for different
           values of PRECEDENCE of the data array, in which case the values
           in AXISIDn_indices will be the sorted list of PRECEDENCE-1 values
           and the array section information will be organized by the
           same ordering.