public String insertVariable ( String typeName, String identifierName, InsertVariableType type )
	{
		// Insert variable into symbol table.
		try {
			if ( type == InsertVariableType.VARIABLE )
				mySymbolTable.insertVariable( identifierName, typeName );
			else if ( type == InsertVariableType.MAP )
				mySymbolTable.insertMap( identifierName, typeName );
			else if ( type == InsertVariableType.VARIABLE_OUTPUT )
				mySymbolTable.insertVariableOutput(identifierName, typeName);
			else if ( type == InsertVariableType.VARIABLE_MAP )
				mySymbolTable.insertVariableMap(identifierName, typeName);
				
		} catch ( SwarmSymbolDuplicateException e ) {
			ErrorHandler.getInstance().fatalError( "Duplicate variable " + identifierName );
		}
		
		// Get the variable back out of the symbol table.
		try {
			if ( type == InsertVariableType.VARIABLE
				 || type == InsertVariableType.VARIABLE_OUTPUT
				 || type == InsertVariableType.VARIABLE_MAP )
			{
				SwarmSymbolVariable variable = mySymbolTable.lookupVariable( identifierName );
				return variable.getUniqueName();
			}
			else // ( type == InsertVariableType.MAP )
			{
				SwarmSymbolMap map = mySymbolTable.lookupMap( identifierName );
				return map.getIdentifierName();
			}

		} catch ( SwarmSymbolNotFoundException e ) {
			// This can never happen.
			System.exit( -1 );
			return "Can't happen.";
		}
	}