def METHOD_NAME(self, P, closed=False, itemsize=None, **kwargs):
    """
    Append a new set of vertices to the collection.
    For kwargs argument, n is the number of vertices (local) or the number
    of item (shared)
    Parameters
    ----------
    P : np.array
        Vertices positions of the path(s) to be added
    closed: bool
        Whether path(s) is/are closed
    itemsize: int or None
        Size of an individual path
    color : list, array or 4-tuple
       Path color
    """
    itemsize = itemsize or len(P)
    itemcount = len(P) / itemsize
    P = P.reshape(itemcount, itemsize, 3)
    if closed:
        V = np.empty((itemcount, itemsize + 3), dtype=self.vtype)
        # Apply default values on vertices
        for name in self.vtype.names:
            if name not in ['collection_index', 'position']:
                V[name][1:-2] = kwargs.get(name, self._defaults[name])
        V["position"][:, 1:-2] = P
        V["position"][:, -2] = V["position"][:, 1]
    else:
        V = np.empty((itemcount, itemsize + 2), dtype=self.vtype)
        # Apply default values on vertices
        for name in self.vtype.names:
            if name not in ['collection_index', 'position']:
                V[name][1:-1] = kwargs.get(name, self._defaults[name])
        V["position"][:, 1:-1] = P
    V["id"] = 1
    V[:, 0] = V[:, 1]
    V[:, -1] = V[:, -2]
    V["id"][:, 0] = 0
    V["id"][:, -1] = 0
    # Uniforms
    if self.utype:
        U = np.zeros(itemcount, dtype=self.utype)
        for name in self.utype.names:
            if name not in ["__unused__"]:
                U[name] = kwargs.get(name, self._defaults[name])
    else:
        U = None
    Collection.METHOD_NAME(self, vertices=V, uniforms=U,
                      itemsize=itemsize + 2 + closed)