code: public static <T> List<T> createList(final Class<T> type) {
          return new AbstractList<T>() {
              private ExtensionList<T> storage() {
                  return Jenkins.getInstance().getExtensionList(type);
              }
  
              @Override
              public Iterator<T> iterator() {
                  return storage().iterator();
              }
  
              public T get(int index) {
                  return storage().get(index);
              }
  
              public int size() {
                  return storage().size();
              }
  
              @Override
              public boolean add(T t) {
                  return storage().add(t);
              }
  
              @Override
              public void add(int index, T t) {
                  // index ignored
                  storage().add(t);
              }
  
              @Override
              public T remove(int index) {
                  return storage().remove(index);
              }
  
              @Override
              public boolean remove(Object o) {
                  return storage().remove(o);
              }
          };
      }
docs: Creates a plain {@link List} backed by the current {@link ExtensionList}.