Instead of exposing these fields as protected, lets make a different variant of toObjectWalkWithSameObjects available:

  public ObjectWalk toObjectWalkWithSameObjects() {
    return toObjectWalkWithSameObjects(new ObjectWalk(reader));
  }

  protected <T extends ObjectWalk> toObjectWalkWithSameObjects(T dst) {
    RevWalk rw = dst;
    rw.objects = objects;
    rw.freeFlags = freeFlags;
    return rw;
  }

This way DepthRevWalk doesn't have to know what to copy over, or get to see these private state fields of the RevWalk.