[Solved] Command argument permissions

Here is the peice of code im having a bit of trouble with:

// /setprefix prefix (player)
        CommandSpec setprefix = CommandSpec.builder()
                .description(Text.of("Set a custom prefix"))
                .arguments(
                        GenericArguments.requiringPermission(GenericArguments.string(Text.of("prefix")), "mmcprefix.prefix.set.self"),
                        GenericArguments.requiringPermission(GenericArguments.player(Text.of("player")), "mmcprefix.prefix.set.other")
                )
                .executor(new setPrefix(this))
                .build();

This, From what i could understand, should only allow the player to use the certain arguments if the permission is given to them, which is correct in practice, but if i give myself the .self permission and not the .other permission, it will say i require the permission to use the last argument when i am only doing /setprefix test

Am i missing something here or do i need to approach this from a completely different angle?
I am probably missing something completely obvious here.

I think you need to optional() them as well.

Doh. I knew i was missing something completely obvious. Thank you.