protected void manipulateMutabilitySettings(boolean testDefaultSetting, boolean insideStruct,
			boolean commonStruct, Data data1, Data data2) throws Exception {

		assertSame(data1.getDataType(), data2.getDataType());

		boolean settingsAreShared =
			testDefaultSetting && (!insideStruct || (insideStruct && commonStruct));

		String[] settingNames = new String[] { "Mutability" };

		useDefaultSettings();

		assertTrue(!data1.isVolatile());
		assertTrue(!data1.isConstant());
		assertTrue(!data2.isVolatile());
		assertTrue(!data2.isConstant());

		changeSettings(testDefaultSetting, settingNames, new String[] { "constant" });
		if (settingsAreShared) {
			assertTrue(!data1.isVolatile());
			assertTrue(data1.isConstant());
		}
		assertTrue(!data2.isVolatile());
		assertTrue(data2.isConstant());

		changeSettings(testDefaultSetting, settingNames, new String[] { "volatile" });

		if (settingsAreShared) {
			assertTrue(data1.isVolatile());
			assertTrue(!data1.isConstant());
		}
		assertTrue(data2.isVolatile());
		assertTrue(!data2.isConstant());

		changeSettings(testDefaultSetting, settingNames, new String[] { "normal" });

		if (settingsAreShared) {
			assertTrue(!data1.isVolatile());
			assertTrue(!data1.isConstant());
		}
		assertTrue(!data2.isVolatile());
		assertTrue(!data2.isConstant());

	}
Test MUTABILITY data setting
@param testDefaultSetting if true test default setting, else test instance setting for data2
@param insideStruct data are inside two structure instances
@param commonStruct data structures are the same type
@param data1 data at some location with same type as data2
@param data2 data at current location
@throws Exception
Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/data/AbstractDataActionTest.java