def arrow(self, x, y, width, type=NORMAL, draw=True, **kwargs):
<EOL>path = self.BezierPath(**kwargs)<EOL>if type == self.NORMAL:<EOL><INDENT>head = width * <NUM_LIT><EOL>tail = width * <NUM_LIT><EOL>path.moveto(x, y)<EOL>path.lineto(x - head, y + head)<EOL>path.lineto(x - head, y + tail)<EOL>path.lineto(x - width, y + tail)<EOL>path.lineto(x - width, y - tail)<EOL>path.lineto(x - head, y - tail)<EOL>path.lineto(x - head, y - head)<EOL>path.lineto(x, y)<EOL><DEDENT>elif type == self.FORTYFIVE:<EOL><INDENT>head = <NUM_LIT><EOL>tail = <NUM_LIT:1> + head<EOL>path.moveto(x, y)<EOL>path.lineto(x, y + width * (<NUM_LIT:1> - head))<EOL>path.lineto(x - width * head, y + width)<EOL>path.lineto(x - width * head, y + width * tail * <NUM_LIT>)<EOL>path.lineto(x - width * tail * <NUM_LIT>, y + width)<EOL>path.lineto(x - width, y + width * tail * <NUM_LIT>)<EOL>path.lineto(x - width * tail * <NUM_LIT>, y + width * head)<EOL>path.lineto(x - width, y + width * head)<EOL>path.lineto(x - width * (<NUM_LIT:1> - head), y)<EOL>path.lineto(x, y)<EOL><DEDENT>else:<EOL><INDENT>raise NameError(_("<STR_LIT>"))<EOL><DEDENT>if draw:<EOL><INDENT>path.draw()<EOL><DEDENT>return path<EOL>
Draw an arrow.

        Arrows can be two types: NORMAL or FORTYFIVE.

        :param x: top left x-coordinate
        :param y: top left y-coordinate
        :param width: width of arrow
        :param type:  NORMAL or FORTYFIVE
        :draw:  If True draws arrow immediately

        :return: Path object representing the arrow.