code: async def current_position(
              self,
              mount: top_types.Mount,
              critical_point: CriticalPoint = None) -> Dict[Axis, float]:
          
          if not self._current_position:
              raise MustHomeError
          async with self._motion_lock:
              if mount == mount.RIGHT:
                  offset = top_types.Point(0, 0, 0)
              else:
                  offset = top_types.Point(*self.config.mount_offset)
              z_ax = Axis.by_mount(mount)
              plunger_ax = Axis.of_plunger(mount)
              cp = self._critical_point_for(mount, critical_point)
              return {
                  Axis.X: self._current_position[Axis.X] + offset[0] + cp.x,
                  Axis.Y: self._current_position[Axis.Y] + offset[1] + cp.y,
                  z_ax: self._current_position[z_ax] + offset[2] + cp.z,
                  plunger_ax: self._current_position[plunger_ax]
              }
docs: Return the postion (in deck coords) of the critical point of the
          specified mount.
  
          This returns cached position to avoid hitting the smoothie driver
          unless ``refresh`` is ``True``.
  
          If `critical_point` is specified, that critical point will be applied
          instead of the default one. For instance, if
          `critical_point=CriticalPoints.MOUNT` then the position of the mount
          will be returned. If the critical point specified does not exist, then
          the next one down is returned - for instance, if there is no tip on the
          specified mount but `CriticalPoint.TIP` was specified, the position of
          the nozzle will be returned.