That looks good.
But I can not use the index in SQL

. . . WHERE FOR SOME %ELEMENTS(Sample.Person1.AR) (%value......) works as expected.
But
how can I force the  new index  ?

. . . WHERE FOR SOME %ELEMENTS(Sample.Person1.AR.State)  is not accepted
. . . WHERE FOR SOME %ELEMENTS(Sample.Person1.AR_State)  is not accepted
.... ??? what else ??

Thank you @Timothy Leavitt !
A child object gives more flexibility and is easier to understand for people doing support in 1 year or 2  

 

Thank you @Benjamin De Boe !
As you described it:  I followed the doc not being aware that it does not apply to Array!

Using a calculated property as you describe is excellent!

Thanks!
Index arc On AR(ELEMENTS);

works, but it holds the complete serial object. not just the state.
tried:

ClassMethod ARBuildValueArray(value, ByRef valueArray As %Library.String) As %Status { ..... quit $$$OK}

But it refuses compilation:
ERROR #5272: Can't change final 'Method' : 'BuildValueArray'

What happens to old code as 
- all kind of $ZU() funktions ? Some well documented, some poor, some not
- self written System Commands and Functions ?
Rewrite it ?  or are they the same for Iris ? 
Documentation that I found was not so detailed. Any article available ?