Java.util.ArrayList.ArrayList::add had a time complexity of O(1) (constant time), but when I looked, it calls ArrayList::grow, which calls System::arrayCopy, which iterates over the length of the original array to copy the values (or pointers, in Java) of each element. I suspect this would make ArrayList::add have a time complexity proportional to the original length of the array (so, O(n)); am I incorrect?