package com.intellij.flex.uiDesigner; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; import org.jetbrains.io.IdPool; import java.util.ArrayList; abstract class EmbedAssetManager<I extends EmbedAssetInfo> { protected final IdPool idPool = new IdPool(); protected final ArrayList<I> assets = new ArrayList<>(); protected void add(@NotNull I info) { if (info.id == assets.size()) { assets.add(info); } else { assets.set(info.id, info); } } protected void remove(int id) { assets.set(id, null); idPool.dispose(id); } public I getInfo(int id) { return assets.get(id); } } abstract class EmbedAssetInfo { public final VirtualFile file; public final int id; public EmbedAssetInfo(@NotNull VirtualFile file, int id) { this.file = file; this.id = id; } }