boolean (@NotNull final PsiClass psiClass) { for (final PsiMethod method : psiClass.getConstructors()) { for (PsiParameter parameter : method.getParameterList().getParameters()) { final PsiType type = parameter.getType(); final Boolean accept = type.accept(new PsiTypeVisitor<Boolean>() { @Override public Boolean visitArrayType(@NotNull PsiArrayType arrayType) { return arrayType.getComponentType().accept(this); } @Override public Boolean visitClassType(@NotNull PsiClassType classType) { for (PsiType psiType : classType.getParameters()) { if (psiType != null) { final Boolean typeParamFound = psiType.accept(this); if (typeParamFound != null && typeParamFound) return true; } } final PsiClass aClass = PsiUtil.resolveClassInType(classType); return aClass instanceof PsiTypeParameter && ((PsiTypeParameter)aClass).getOwner() == method; } @Override public Boolean visitWildcardType(@NotNull PsiWildcardType wildcardType) { final PsiType bound = wildcardType.getBound(); if (bound == null) return false; return bound.accept(this); } }); if (accept != null && accept.booleanValue()) return true; } } return false; }