public synchronized void add(Node obj) {

    ArrayList newList = new ArrayList<>(list);
    newList.add(obj);
    list = Collections.unmodifiableList(newList);
    // incrementVersion("a->" + obj);
    incrementVersion();
  }
Adds obj to the list. Addition is done by making a copy of the existing list and then adding
the obj to the new list and assigning the old list to the new unmodifiable list. This is to
ensure that the iterator of the list doesn't get ConcurrentModificationException.

@see java.util.ConcurrentModificationException
geode-core/src/main/java/org/apache/geode/internal/util/VersionedArrayList.java