Correct way to match any elements? OR

What is the correct way to provide appium with or a list of selectors and have it go down the list. If it can’t find one, go to the next one, and so on?

Something like:

@AndroidFindBy(s1) OR @AndroidFindBy(s2) OR @AndroidFindBy(s3)

and don’t try to look for s2 if s1 exist.

use @HowToUseAlocators annotation and set it to ALL_POSSIBLE
it is telling appium that all the specified selector are applicable.
you can add to each annotation the priority like: @AndroidFindBy(priority = 1, s1)
but you don’t have to, the default way is to check according to the order you wrote your annotations…

see here: https://github.com/appium/java-client/blob/master/docs/Page-objects.md#--any-possible

Additionally, I recommend you to read the whole document. It is very detailed and in my opinion a MUST for whoever works with appium Page Object Model.
it may not be intuitive at the beginning by it worth your time.

As well, you can also ask here or send me a private message if you want to consult.

find ALL: means whatever first element will be found. search for elements will start simultaneously:

    @iOSXCUITFindAll(value = {
            @iOSXCUITBy(id = "s1"),
            @iOSXCUITBy(id = "s2")
    })

there is no support of your logic. with your logic you need first quickly check for s1 then if not found for s2.