def METHOD_NAME(self, grad, var, indices,
                                           **kwargs):
    """Add ops to apply sparse gradients to `handle`, with repeated indices.
    Optimizers which override this method must deal with repeated indices. See
    the docstring of `_apply_sparse_duplicate_indices` for details. By default
    the correct behavior, to sum non-unique indices and their associated
    gradients, is enforced by first pre-processing `grad` and `indices` and
    passing them on to `_resource_apply_sparse`. Optimizers which deal correctly
    with duplicate indices may instead override this method to avoid the
    overhead of summing.
    Args:
    grad: a `Tensor` representing the gradient for the affected indices.
    handle: a `Tensor` of dtype `resource` which points to the variable to be
        updated.
    indices: a `Tensor` of integral type representing the indices for which
        the gradient is nonzero. Indices may be repeated.
    **kwargs: May optionally contain `apply_state`
        `apply_state` is a dict, which contains the map from (var_device, var_type) to 
            a dict and that dict contains "lr_t" which is learning_rate. In other words,
            apply_state might looks like: {(var_device, var_type): {"lr_t": learning_rate_tensor}}
    Returns:
    An `Operation` which updates the value of the variable.
    """
    raise NotImplementedError("_resource_apply_sparse_duplicate_indices not implemented")