def METHOD_NAME(self, global_indices=None):
    """Gather a :class:`Vector` to all processes
    :arg global_indices: the globally numbered indices to gather
                        (should be the same on all processes).  If
                        `None`, gather the entire :class:`Vector`."""
    if global_indices is None:
        N = self.size()
        v = PETSc.Vec().createSeq(N, comm=PETSc.COMM_SELF)
        is_ = PETSc.IS().createStride(N, 0, 1, comm=PETSc.COMM_SELF)
    else:
        global_indices = np.asarray(global_indices, dtype=np.int32)
        N = len(global_indices)
        v = PETSc.Vec().createSeq(N, comm=PETSc.COMM_SELF)
        is_ = PETSc.IS().createGeneral(global_indices, comm=PETSc.COMM_SELF)
    with self.dat.vec_ro as vec:
        vscat = PETSc.Scatter().create(vec, is_, v, None)
        vscat.scatterBegin(vec, v, addv=PETSc.InsertMode.INSERT_VALUES)
        vscat.scatterEnd(vec, v, addv=PETSc.InsertMode.INSERT_VALUES)
    return v.array