Adding reusable type visitor - using that code in implementer so that we have a special handling for parameterized lists