def METHOD_NAME(cls, the_dict):
    """
    Parses an *NO2Index* instance out of a data dictionary. Only certain properties of the data dictionary
    are used: if these properties are not found or cannot be parsed, an exception is issued.
    :param the_dict: the input dictionary
    :type the_dict: `dict`
    :returns: a *NO2Index* instance or ``None`` if no data is available
    :raises: *ParseAPIResponseError* if it is impossible to find or parse the data needed to build the result
    """
    if the_dict is None:
        raise exceptions.ParseAPIResponseError('Data is None')
    try:
        # -- reference time (strip away Z and T on ISO8601 format)
        t = the_dict['time'].replace('Z', '+00:00').replace('T', ' ')
        reference_time = formatting.ISO8601_to_UNIXtime(t)
        # -- reception time (now)
        reception_time = timestamps.now('unix')
        # -- location
        lon = float(the_dict['location']['longitude'])
        lat = float(the_dict['location']['latitude'])
        place = location.Location(None, lon, lat, None)
        # -- CO samples
        no2_samples = [dict(label=key,
                            precision=the_dict['data'][key]['precision'],
                            value=the_dict['data'][key]['value']) for key in the_dict['data']]
    except KeyError:
        raise exceptions.ParseAPIResponseError(
                  ''.join([__name__, ': impossible to parse NO2Index']))
    return NO2Index(reference_time, place, None, no2_samples, reception_time)