@Override
        public Type visitTypeVariable(TypeVariable typeVariable, Boolean p) {
            String varName = typeVariable.toString();
            if (typeVariable.getUpperBound() != null) {
                Type type = visit(typeVariable.getUpperBound(), p);
                return new TypeExtends(varName, type);
            } else if (typeVariable.getLowerBound() != null && !(typeVariable.getLowerBound() instanceof NullType)) {
                Type type = visit(typeVariable.getLowerBound(), p);
                return new TypeSuper(varName, type);
            } else {
                return null;
            }
        }
{@code ExtendedTypeFactory} is a factory for APT-based inspection {@link Type} creation

@author tiwe
querydsl-apt/src/main/java/com/querydsl/apt/ExtendedTypeFactory.java