Added the guard clause to Visit(AssemblyElement).
Introduced Visit(TypeElement[]).
Added guard clause to Visit(TypeElement[]).
Addressed empty type elements

on Visit(TypeElement[]).
Addressed non-empty type elements

on Visit(TypeElement[]).
Added the params keyword.
Extrated the TypeWithField calss

and added one more field.
Introduced Visit(FieldInfoElement[]).
Addressed the conflict

between ReflectionVisitor and ValueCollectingVisitor.
Moved TypeWithCtor to outer scope

and added one more constructor to it.
Pulled the Visit methods up to IReflectionVisitor.
Introduced Visit(ConstructorInfoElement[]).
Moved TypeWithProperty to outer scope.
Introduced some Visit methods

for visiting plural refelction elements.
Addressed relaying PropertyInfoElement[]

in Visit(TypeElement).
Moved TypeWithMethod to outer scope.
Addressed relaying MethodInfoElement[]

in Visit(TypeElement).
Moved the GetTypeElements method

to AssemblyElement.
Moved some methods to TypeElement.
Renamed the method to add the 'Info' word.