@Nullable
  public static PsiType inferType(PsiTypeElement typeElement) {
    PsiType psiType = null;

    if (canInferType(typeElement)) {
      final PsiElement parent = typeElement.getParent();
      if (parent instanceof PsiLocalVariable) {
        psiType = processLocalVariableInitializer(((PsiLocalVariable) parent).getInitializer());
      } else {
        psiType = processParameterDeclaration(((PsiParameter) parent).getDeclarationScope());
      }

      if (null == psiType) {
        psiType = PsiType.getJavaLangObject(typeElement.getManager(), typeElement.getResolveScope());
      }
    }
    return psiType;
  }
@Nullable
  public static PsiType inferType(PsiTypeElement typeElement)