def METHOD_NAME(self,m,rank_in,data,data_out):
    # data and data_out are in coefficient space
    (start_index_in,end_index_in,spin_in) = self.tensor_index(m,rank_in)
    rank_out = rank_in+1
    (start_index_out,end_index_out,spin_out) = self.tensor_index(m,rank_out)
    half = 2**(rank_out-1)
    for i in range(2**(rank_out)):
        if i//half == 0:
            operator = self.op('k+',m,spin_in[i%half])
        else:
            operator = self.op('k-',m,spin_in[i%half])
        np.copyto( data_out[start_index_out[i]:end_index_out[i]],
                   operator.dot(data[start_index_in[i%half]:end_index_in[i%half]]) )