// TODO: run dbBot() sclass ConceptsLoadedOnDemand { Map loaded; // key = just the case ID. value can be null in case of error Lock lock = lock(); Concepts get(S caseID) { ret conceptsForCase(caseID); } Concepts conceptsForCase(S caseID) { lock lock; assertNempty(+caseID); if (loaded.containsKey(caseID)) ret assertNempty("Concepts load error", loaded.get(caseID)); Concepts c = new Concepts(getDBProgramID() + "/" + caseID); loaded.put(caseID, c); ret c; } }