PsiType () { PsiParameterStub stub = getStub(); if (stub != null) { PsiType type = dereference(myCachedType); if (type == null) { type = JavaSharedImplUtil.createTypeFromStub(this, stub.getType()); myCachedType = new SoftReference<>(type); } return type; } myCachedType = null; PsiTypeElement typeElement = getTypeElement(); if (typeElement == null || isLambdaParameter() && typeElement.isInferredType()) { assert isLambdaParameter() : this; return getLambdaParameterType(this); } else { return JavaSharedImplUtil.getType(typeElement, getNameIdentifier()); } }