def METHOD_NAME(self, o, expr, coefficients, arguments, cds):
    argument, = arguments
    if (isinstance(argument, Zero)
        or (isinstance(argument, ListTensor)
            and all(isinstance(a, Zero) for a in argument.ufl_operands))):
        # If we're only taking a derivative wrt part of an argument in
        # a mixed space other bits might come back as zero. We want to
        # propagate a zero in that case.
        return Zero(o.ufl_shape, o.ufl_free_indices, o.ufl_index_dimensions)
    else:
        return self.reuse_if_untouched(o, expr, coefficients, arguments, cds)