docs: def xmlGenBinaryDataArrayList(binaryDataInfo, binaryDataDict,
                                compression='zlib', arrayTypes=None):
      """ #TODO: docstring
  
      :params binaryDataInfo: #TODO: docstring
      :params binaryDataDict: #TODO: docstring
      :params compression: #TODO: docstring
      :params arrayTypes: #TODO: docstring
  
      :returns: #TODO: docstring
      """
      #Note: any other value for "compression" than "zlib" results in no
      #   compression
      #Note: Use arrayTypes parameter to specify the order of the arrays
      if arrayTypes is None:
          arrayTypes = [_ for _ in viewkeys(binaryDataInfo)]
      numEntries = len(binaryDataInfo)
      xmlBinaryDataArrayList = ETREE.Element('binaryDataArrayList',
                                             {'count': str(numEntries)}
                                             )
      for arrayType in arrayTypes:
          _, dataTypeParam = maspy.xml.findBinaryDataType(binaryDataInfo[arrayType]['params'])
          binaryData = binaryDataDict[arrayType]
          bitEncoding = '64' if binaryData.dtype.str == '<f8' else '32'
          if binaryData.size > 0:
              binaryData, arrayLength = maspy.xml.encodeBinaryData(binaryData,
                                                                   bitEncoding,
                                                                   compression
                                                                   )
          else:
              binaryData = ''
              arrayLength = 0
  
          # --- define binaryDataArray parameters --- #
          params = list()
          if bitEncoding == '64':
              params.append(('MS:1000523', None, None))
          else:
              params.append(('MS:1000521', None, None))
          if compression == 'zlib':
              params.append(('MS:1000574', None, None))
          else:
              params.append(('MS:1000576', None, None))
          mandatoryAccessions = ['MS:1000523', 'MS:1000521', 'MS:1000574',
                                 'MS:1000576'
                                 ]
          for param in binaryDataInfo[arrayType]['params']:
              if param[0] not in mandatoryAccessions:
                  params.append(param)
  
          #Note: not all attributes supported
          binaryDataArrayAttrib = {'encodedLength': str(len(binaryData))}
          for attr in ['dataProcessingRef']:
              if binaryDataInfo[arrayType][attr] is not None:
                  binaryDataArrayAttrib[attr] = binaryDataInfo[arrayType][attr]
          xmlBinaryDataArray = ETREE.Element('binaryDataArray',
                                             binaryDataArrayAttrib
                                             )
          maspy.xml.xmlAddParams(xmlBinaryDataArray, params)
  
          xmlBinary = ETREE.Element('binary')
          xmlBinary.text = binaryData
          xmlBinaryDataArray.append(xmlBinary)
          xmlBinaryDataArrayList.append(xmlBinaryDataArray)
      return xmlBinaryDataArrayList