Few options of tapping element and what to choose?

I am looking for the ways to tap on element with mobile, till now I saw:

  1. TouchActions action = new TouchActions(driver); action.singleTap(element); action.perform();
    I think that it will be deprecated

  2. Point loc = ((MobileElement) getDriver().findElement(elem)).getCenter(); PointOption pointOption = new PointOption().withCoordinates(loc.x, loc.y); new TouchAction(getDriver()).tap(pointOption).perform();
    That will not be deprecated?

  3. waitForElementToBeClickable(elem, 10); Rectangle rectangle = getDriver().findElement(elem).getRect(); Point point = new Point(rectangle.x + (rectangle.width / 2), rectangle.y + (rectangle.height / 2)); PointerInput finger = new PointerInput(PointerInput.Kind.TOUCH, "finger"); Sequence dragNDrop = new Sequence(finger, 1); dragNDrop.addAction(finger.createPointerMove(Duration.ofMillis(0), PointerInput.Origin.viewport(), point.x, point.y)); dragNDrop.addAction(finger.createPointerDown(PointerInput.MouseButton.LEFT.asArg())); dragNDrop.addAction(finger.createPointerUp(PointerInput.MouseButton.LEFT.asArg())); getDriver().perform(Arrays.asList(dragNDrop));
    that is the next gen…?
    How does it works?

What should I choose and why? and if there is more I will glad to hear
Thank you