'Return False of this parameter can not be matched to the supplied
HDA, otherwise return a description of the match (either a
HdaDirectMatch describing a direct match or a HdaImplicitMatch
describing an implicit conversion.)'

def valid_hda_match(self, hda, check_implicit_conversions=True, check_security=False):

    rval = False
    formats = self.param.formats
    if hda.datatype.matches_any(formats):
        rval = HdaDirectMatch(hda)
    else:
        if (not check_implicit_conversions):
            return False
        (target_ext, converted_dataset) = hda.find_conversion_destination(formats)
        if target_ext:
            original_hda = hda
            if converted_dataset:
                hda = converted_dataset
            if (check_security and (not self.__can_access_dataset(hda.dataset))):
                return False
            rval = HdaImplicitMatch(hda, target_ext, original_hda)
        else:
            return False
    if self.filter(hda):
        return False
    return rval
