private void validateOccurrencesDown(@NotNull PsiElement startElement,
                                       @NotNull MultiMap<PsiElement, String> conflicts,
                                       @NotNull String varName,
                                       double startOffset) {
    PsiElement child = startElement.getFirstChild();
    while (child != null) {
      // Do not check defined classes, methods, closures and blocks before
      if (child instanceof GrTypeDefinition ||
          child instanceof GrMethod ||
          GroovyRefactoringUtil.isAppropriateContainerForIntroduceVariable(child) &&
          child.getTextRange().getEndOffset() < startOffset) {
        myReporter.check(child, conflicts, varName);
        child = child.getNextSibling();
        continue;
      }
      if (child instanceof GrVariable) {
        myReporter.check(child, conflicts, varName);
      }
      validateOccurrencesDown(child, conflicts, varName, startOffset);
      child = child.getNextSibling();
    }
  }
private void validateOccurrencesDown(@NotNull PsiElement startElement,
                                       @NotNull MultiMap<PsiElement, String> conflicts,
                                       @NotNull String varName,
                                       double startOffset)