[FLAPI-179] Support for parsing array types.
a continuation of [FLAPI-166]

If a method is optional (dynamic) then it isn't really a viable
alternative to the loop. Therefore only methods which are
required will prevent an exception from being thrown when
an infinite loop / cycle is detected in the descriptor.