ArrayOf* types ganeration as separate classes

Fix #160 in ```3.x``` branch
A comment explaining the purpose of this branch of the method would be helpful.