@Override
	public List<? extends FunctionTag> getAllFunctionTags() {

		lock.acquire();

		try {
			List<FunctionTag> tags = new ArrayList<>();
			RecordIterator records = functionTagAdapter.getRecords();
			while (records.hasNext()) {
				DBRecord record = records.next();
				tags.add(getFunctionTagFromCache(record));
			}

			return tags;
		}
		catch (IOException e) {
			dbError(e);
		}
		finally {
			lock.release();
		}
		return Collections.emptyList();
	}
Constructor.

@param handle handle to database
@param openMode either READ_ONLY, UPDATE, or UPGRADE
@param lock the program synchronization lock
@param monitor the task monitor to use while upgrading.
@throws VersionException if the database is incompatible with the current
schema
@throws IOException if there is a problem accessing the database.
@throws CancelledException if the program loading is cancelled
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/function/FunctionTagManagerDB.java