human
I wrote the below code

    def wrapper(maker):
        @local_optimizer([GpuElemwise])
        @wraps(maker)
        def opt(node):
            if (isinstance(node.op, GpuElemwise) and (node.op.scalar_op == scal.add) and (node.nin == 2)):
                targ = find_node(node.inputs[0], cls)
                W = node.inputs[1]
                if (targ is None):
                    targ = find_node(node.inputs[1], cls)
                    W = node.inputs[0]
                if (targ is None):
                    return None
                if (W.dtype != targ.outputs[0].dtype):
                    return None
                if (not is_equal(targ.inputs[beta_in], 0.0)):
                    return None
                if (W.broadcastable != targ.inputs[out_in].broadcastable):
                    return None
                inputs = list(targ.inputs)
                inputs[out_in] = W
                inputs[beta_in] = _one.clone()
                return maker(targ, *inputs)
        return opt
    return wrapper

What's a good function header?
 ... Here's a good function header?
assistant
#Here's a good function header.

def output_merge(cls, alpha_in, beta_in, out_in):