@Override
	public StringPropertyMap createStringPropertyMap(String propertyName)
			throws DuplicateNameException {

		lock.acquire();
		try {
			if (propertyMapCache.containsKey(propertyName)) {
				throw new DuplicateNameException();
			}
			StringPropertyMapDB pm = null;
			try {
				pm = new StringPropertyMapDB(dbHandle, OpenMode.CREATE, program, changeMgr, addrMap,
					propertyName, TaskMonitor.DUMMY);
				propertiesDBAdapter.putRecord(propertyName, STRING_PROPERTY_TYPE, null);
				propertyMapCache.put(propertyName, pm);
			}
			catch (VersionException e) {
				throw new AssertException();
			}
			catch (CancelledException e) {
				// will not happen
			}
			catch (IOException e) {
				program.dbError(e);
			}
			return pm;
		}
		finally {
			lock.release();
		}
	}
Creates a new StringPropertyMap with the given name.
@param propertyName the name of the property to create.
@exception DuplicateNameException thrown if a PropertyMap already
exists with that name.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/properties/DBPropertyMapManager.java