@Override
    public TypeElement visitTypeVariable(TypeVariable t, Void p) {
        if (t.getUpperBound() != null) {
            return visit(t.getUpperBound());
        } else if (t.getLowerBound() != null) {
            return visit(t.getLowerBound());
        } else {
            return null;
        }
    }
{@code TypeExtractor} is a visitor implementation which extracts a concrete type from a generic {@link TypeElement}

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