protected TrackingGraph performOperation(GraphComponent component, Operation operation, boolean externalCall)
	{
		if(isShadow && externalCall)
			throw new UnsupportedOperationException(
					"A shadow graph only takes modifications from its transaction queue.");
		if(externalCall)
			if(((operation == Operation.ADD) && !contains(component))
					|| ((operation == Operation.REMOVE) && contains(component)))
				addTransaction(new Transaction(component, operation));
		switch(operation)
		{
		case ADD:
			super.add(component);
			break;
		case REMOVE:
			super.remove(component);
			break;
		}
		return this;
	}