docs: @Override
      public boolean removeAll(Collection<?> c) {
          final ReentrantLock lock = this.lock;
          lock.lock();
          try {
              Object[] elements = getArray();
              int len = elements.length;
              if (len != 0) {
                  // temp array holds those elements we know we want to keep
                  int newlen = 0;
                  Object[] temp = new Object[len];
                  for (int i = 0; i < len; ++i) {
                      Object element = elements[i];
                      if (!c.contains(element))
                          temp[newlen++] = element;
                  }
                  if (newlen != len) {
                      setArray(Arrays.copyOf(temp, newlen));
                      return true;
                  }
              }
              return false;
          } finally {
              lock.unlock();
          }
      }