private void processPattern(@NotNull PsiPattern pattern) {
    PsiPatternVariable patternVariable = JavaPsiPatternUtil.getPatternVariable(pattern);
    if (patternVariable != null) {
      generateWriteInstruction(patternVariable);
    }
    if (pattern instanceof PsiDeconstructionPattern) {
      PsiDeconstructionPattern deconstructionPattern = (PsiDeconstructionPattern)pattern;
      PsiPattern[] deconstructionComponents = deconstructionPattern.getDeconstructionList().getDeconstructionComponents();
      for (PsiPattern deconstructionComponent : deconstructionComponents) {
        ProgressManager.checkCanceled();
        processPattern(deconstructionComponent);
      }
    }
  }
private void processPattern(@NotNull PsiPattern pattern)