public static List<Pair<ReadWriteVariableInstruction, VariableDescriptor>> getReadsWithoutPriorWrites(GroovyControlFlow flow, boolean onlyFirstRead) {
    ReadBeforeWriteState lastState = getLastReadBeforeWriteState(flow.getFlow(), onlyFirstRead);
    if (lastState == null) {
      return Collections.emptyList();
    }
    BitSet reads = lastState.getReads();
    ArrayList<Pair<ReadWriteVariableInstruction, VariableDescriptor>> result = new ArrayList<>();
    for (int i = reads.nextSetBit(0); i >= 0; i = reads.nextSetBit(i + 1)) {
      if (i == Integer.MAX_VALUE) break;
      ReadWriteVariableInstruction instr = (ReadWriteVariableInstruction)flow.getFlow()[i];
      result.add(new Pair<>(instr, flow.getVarIndices()[instr.getDescriptor()]));
    }
    return result;
  }
public static List<Pair<ReadWriteVariableInstruction, VariableDescriptor>> getReadsWithoutPriorWrites(GroovyControlFlow flow, boolean onlyFirstRead)