<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def make_cutter(self):
 """ Makes a shape to be used as a negative; it can be cut away from other shapes to make a perfectly shaped pocket for this part. For example, for a countersunk screw with a neck, the following cutter would be generated. .. image:: /_static/img/fastenerpart/male.cutter.png If the head were an externally driven shape (like a hex bolt), then the cutter's head would be wide enough to accommodate a tool to fasten it. """

        # head
        obj = self.head.make_cutter()

        # neck
        if self.neck_length:
            # neck cut diameter (if thread is larger than the neck, thread must fit through)
            (inner_radius, outer_radius) = self.thread.get_radii()
            neck_cut_radius = max(outer_radius, self.neck_diam / 2)

            neck = cadquery.Workplane(
                'XY', origin=(0, 0, -self.neck_length)
            ).circle(neck_cut_radius).extrude(self.neck_length)
            obj = obj.union(neck)

        # thread (pilot hole)
        pilot_hole = self.thread.make_pilothole_cutter() \
            .translate((0, 0, -self.length))
        obj = obj.union(pilot_hole)

        return obj