<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 async def gantry_position( self, mount: top_types.Mount, critical_point: CriticalPoint = None) -> top_types.Point: """ Return the position of the critical point as pertains to the gantry This ignores the plunger position and gives the Z-axis a predictable name (as :py:attr:`.Point.z`). `critical_point` specifies an override to the current critical point to use (see :py:meth:`current_position`). """

        cur_pos = await self.current_position(mount, critical_point)
        return top_types.Point(x=cur_pos[Axis.X],
                               y=cur_pos[Axis.Y],
                               z=cur_pos[Axis.by_mount(mount)])