public RewriteEvent replaceEntry(ASTNode entry, ASTNode newEntry) {
    if (entry == null) {
      throw new IllegalArgumentException();
    }

    List entries = getEntries();
    int nEntries = entries.size();
    for (int i = 0; i < nEntries; i++) {
      NodeRewriteEvent curr = (NodeRewriteEvent) entries.get(i);
      if (curr.getOriginalValue() == entry || curr.getNewValue() == entry) {
        curr.setNewValue(newEntry);
        if (curr.getNewValue() == null
            && curr.getOriginalValue() == null) { // removed an inserted node
          entries.remove(i);
          return null;
        }
        return curr;
      }
    }
    return null;
  }