CauseItem (PsiExpression expression, DfaProblemType type) { if (myHistoryForContext == null) return null; CauseItem cause = null; do { CauseItem item = new CauseItem(type, expression); MemoryStateChange history = myHistoryForContext.getNonMerge(); if (history.getExpression() == expression) { item.addChildren(type.findCauses(this, expression, history)); } if (cause == null) { cause = item; } else { cause = cause.merge(item); if (cause == null) return null; } } while (myHistoryForContext.advance()); return cause; }