public VariableStorage getVariableStorage() {
		lock.acquire();
		try {
			if (!checkIsValid() || variableStorage != null) {
				return variableStorage;
			}
			if (address instanceof OldGenericNamespaceAddress) {
				// old use case for upgrade
				try {
					variableStorage = new VariableStorage(symbolMgr.getProgram(),
						((OldGenericNamespaceAddress) address).getGlobalAddress(),
						getDataType().getLength());
				}
				catch (InvalidInputException e) {
					variableStorage = VariableStorage.BAD_STORAGE;
				}
			}
			else {
				variableStorage = variableMgr.getVariableStorage(address);
				if (variableStorage == null) {
					variableStorage = (type != SymbolType.PARAMETER) ? VariableStorage.BAD_STORAGE
							: VariableStorage.UNASSIGNED_STORAGE;
				}
			}
		}
		catch (IOException e) {
			symbolMgr.dbError(e);
		}
		finally {
			lock.release();
		}
		return variableStorage;
	}
Constructs a new VariableSymbol
@param symbolMgr the symbol manager
@param cache symbol object cache
@param type the symbol type.
@param variableMgr variable storage manager
@param address the address of the symbol (stack address)
@param record the record for the symbol
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/symbol/VariableSymbolDB.java