boolean (PsiExpression nullBranch, PsiExpression notNullBranch) { PsiType notNullType = ((PsiExpression)notNullBranch.copy()).getType(); PsiType nullType = ((PsiExpression)nullBranch.copy()).getType(); if (nullType == null || notNullType == null) return false; if (nullType.isAssignableFrom(notNullType)) return true; if (nullType.equals(PsiTypes.nullType())) return true; if (OptionalUtil.isOptionalEmptyCall(nullBranch) && TypeUtils.isOptional(notNullType)) return true; return false; }