Doc* Doc::findRep() {
  if (!parent_) {
    return this;
  } else {
    // Flatten the tree structure: important optimization to attain inverse ackermann running time
    parent_ = parent_->findRep();
    return parent_;
  }
}