private static List<kotlin.Pair<ReadWriteVariableInstruction, VariableDescriptor>> collectUsedVariableWithoutInitialization(GrTypeDefinition typeDefinition) {
    final Set<kotlin.Pair<ReadWriteVariableInstruction, VariableDescriptor>> vars = new LinkedHashSet<>();
    typeDefinition.acceptChildren(new GroovyRecursiveElementVisitor() {
      private void collectVars(GroovyControlFlow flow) {
        List<kotlin.Pair<ReadWriteVariableInstruction, VariableDescriptor>> reads = ControlFlowBuilderUtil.getReadsWithoutPriorWrites(flow, false);
        vars.addAll(reads);
      }

      @Override
      public void visitField(@NotNull GrField field) {
        GrExpression initializer = field.getInitializerGroovy();
        if (initializer != null) {
          GroovyControlFlow flow = buildControlFlow(initializer);
          collectVars(flow);
        }
      }

      @Override
      public void visitMethod(@NotNull GrMethod method) {
        GrOpenBlock block = method.getBlock();
        if (block != null) {
          collectVars(ControlFlowUtils.getGroovyControlFlow(block));
        }
      }

      @Override
      public void visitClassInitializer(@NotNull GrClassInitializer initializer) {
        collectVars(ControlFlowUtils.getGroovyControlFlow(initializer.getBlock()));
      }
    });
    return new ArrayList<>(vars);
  }
private static List<kotlin.Pair<ReadWriteVariableInstruction, VariableDescriptor>> collectUsedVariableWithoutInitialization(GrTypeDefinition typeDefinition)