docs: public static <T> CopyOnWriteList<T> createCopyOnWriteList(final Class<T> type) {
          return new CopyOnWriteList<T>() {
              private ExtensionList<T> storage() {
                  return Jenkins.getInstance().getExtensionList(type);
              }
  
              @Override
              public void add(T t) {
                  storage().add(t);
              }
  
              @Override
              public boolean remove(T t) {
                  return storage().remove(t);
              }
  
              @Override
              public Iterator<T> iterator() {
                  return storage().iterator();
              }
  
              @Override
              public void replaceBy(CopyOnWriteList<? extends T> that) {
                  throw new UnsupportedOperationException();
              }
  
              @Override
              public void replaceBy(Collection<? extends T> that) {
                  throw new UnsupportedOperationException();
              }
  
              @Override
              public void replaceBy(T... that) {
                  throw new UnsupportedOperationException();
              }
  
              @Override
              public void clear() {
                  throw new UnsupportedOperationException();
              }
  
              @Override
              public <T> T[] toArray(T[] array) {
                  return storage().toArray(array);
              }
  
              @Override
              public List<T> getView() {
                  return storage();
              }
  
              @Override
              public void addAllTo(Collection<? super T> dst) {
                  dst.addAll(storage());
              }
  
              @Override
              public boolean isEmpty() {
                  return storage().isEmpty();
              }
          };
      }