'Overloads and calls base class generic() method, returning
None if a TypingError occurred.
Returning None for operators is important since operators are
heavily overloaded, and by suppressing type errors, we allow
type inference to check other possibilities before giving up
(particularly user-defined operators).'

def generic(self, args, kws):

    try:
        sig = super(NumpyRulesArrayOperator, self).generic(args, kws)
    except TypingError:
        return None
    if (sig is None):
        return None
    args = sig.args
    if (not any((isinstance(arg, types.ArrayCompatible) for arg in args))):
        return None
    return sig
