@Nullable
  private CauseItem findProblemCause(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;
  }
@Nullable
  private CauseItem findProblemCause(PsiExpression expression, DfaProblemType type)