@Override
	public void add(ProgramFragment fragment) throws DuplicateGroupException {
		lock.acquire();
		try {
			checkDeleted();
			FragmentDB frag = (FragmentDB) fragment;
			long fragID = frag.getKey();
			// add a row to the parent/child table
			DBRecord parentChildRecord = parentChildAdapter.getParentChildRecord(key, -fragID);
			if (parentChildRecord != null) {
				throw new DuplicateGroupException(
					frag.getName() + " already exists a child of " + getName());
			}

			DBRecord pcRec = parentChildAdapter.addParentChildRecord(key, -fragID);
			updateChildCount(1);
			updateOrderField(pcRec, childCount - 1);
			moduleMgr.fragmentAdded(key, frag);
		}
		catch (IOException e) {
			moduleMgr.dbError(e);
		}
		finally {
			lock.release();
		}
	}
Constructor
@param moduleMgr module manager
@param cache ModuleDB cache
@param record database record for this module
@throws IOException if database IO error occurs
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/module/ModuleDB.java