Templetazied ForeachStatement

I am currently stuck at the semantic analysis.
because depending on the type of the expression that is itterated foreach does diffrent things
how I check If the itterated type has thoose methods ?
-  `popFront()`/`front()`
-  `opApply`

It's not too complex.
Actually there are just 4 diffrent types that can be canidates for foreach.
`ArrayType`s nearly the same as `SliceType`s (just the length has to be fetched at runtime)
`StructType`s and `ClassType`s which have `front/popFront` or `opApply`  methods.
All of thoose can be lowerd to ForLoops.