def METHOD_NAME(self, x, y, n, edge='e', hole=None, move=None, callback=None, label=""):
    r, h, side  = self.regularPolygon(2*n+2, h=y/2.0)
    t = self.thickness
    if n % 2:
        lx = x - 2 * h + side
    else:
        lx = x - 2 * r + side
    edge = self.edges.get(edge, edge)
    tx = x + 2 * edge.spacing()
    ty = y + 2 * edge.spacing()
    if self.move(tx, ty, move, before=True):
        return
    self.moveTo((tx-lx)/2., edge.margin())
    if hole:
        with self.saved_context():
            hr, hh, hside  = self.regularPolygon(2*n+2, h=y/2.0-t)
            dx = side - hside
            hlx = lx - dx
            self.moveTo(dx/2.0, t+edge.spacing())
            for i, l in enumerate(([hlx] + ([hside] * n))* 2):
                self.edge(l)
                self.corner(360.0/(2*n + 2))
    for i, l in enumerate(([lx] + ([side] * n))* 2):
        self.cc(callback, i, 0, edge.startwidth() + self.burn)
        edge(l)
        self.edgeCorner(edge, edge, 360.0/(2*n + 2))
    self.move(tx, ty, move, label=label)