class InitAnalysis extends ForwardFlowAnalysis<Unit, FlowSet<Local>> {

  protected final FlowSet<Local> allLocals = new ArraySparseSet<Local>();

  public InitAnalysis(DirectedBodyGraph<Unit> g) {
    super(g);

    FlowSet<Local> allLocalsRef = this.allLocals;
    for (Local loc : g.getBody().getLocals()) {
      allLocalsRef.add(loc);
    }

    doAnalysis();
  }

  @Override
  protected FlowSet<Local> entryInitialFlow() {
    return new HashSparseSet<Local>();
  }

  @Override
  protected FlowSet<Local> newInitialFlow() {
    FlowSet<Local> ret = new HashSparseSet<Local>();
    allLocals.copy(ret);
    return ret;
  }

  @Override
  protected void flowThrough(FlowSet<Local> in, Unit unit, FlowSet<Local> out) {<FILL_FUNCTION_BODY>}

  @Override
  protected void merge(FlowSet<Local> in1, FlowSet<Local> in2, FlowSet<Local> out) {
    in1.intersection(in2, out);
  }

  @Override
  protected void copy(FlowSet<Local> source, FlowSet<Local> dest) {
    source.copy(dest);
  }
}

    in.copy(out);

    for (ValueBox defBox : unit.getDefBoxes()) {
      Value lhs = defBox.getValue();
      if (lhs instanceof Local) {
        out.add((Local) lhs);
      }
    }
  
<methods>public void <init>(DirectedGraph<soot.Unit>) <variables>