old_contents: from . import Operation
  
  class SetTransformOperation(Operation.Operation):
      def __init__(self, node, transform):
          super().__init__()
          self._node = node
          self._old_transform = node.getLocalTransformation()
          self._new_transform = transform
  
      def undo(self):
          self._node.setLocalTransformation(self._old_transform)
  
      def redo(self):
          self._node.setLocalTransformation(self._new_transform)
  
      def mergeWith(self, other):
          if type(other) is not SetTransformOperation:
              return False
  
          if other._node != self._node:
              return False
  
          op = SetTransformOperation(self._node, self._new_transform)
          op._old_transform = other._old_transform
          return op
  
      def __repr__(self):
          return "SetTransformOperation(node = {0}, old_transform={1}, new_transform={2})".format(self._node, self._old_transform, self._new_transform)
  
new_contents: from . import Operation
  
  class SetTransformOperation(Operation.Operation):
      def __init__(self, node, translation = None, orientation = None, scale = None):
          super().__init__()
          self._node = node
  
          self._old_translation = node.getPosition()
          self._old_orientation = node.getOrientation()
          self._old_scale = node.getScale()
  
          self._new_translation = translation
          self._new_orientation = orientation
          self._new_scale = scale
  
      def undo(self):
          self._node.setPosition(self._old_translation)
          self._node.setOrientation(self._old_orientation)
          self._node.setScale(self._old_scale)
  
      def redo(self):
          if self._new_translation:
              self._node.setPosition(self._new_translation)
          if self._new_orientation:
              self._node.setOrientation(self._new_orientation)
          if self._new_scale:
              self._node.setScale(self._new_scale)
  
      def mergeWith(self, other):
          if type(other) is not SetTransformOperation:
              return False
  
          if other._node != self._node:
              return False
  
          if other._new_translation is None or self._new_translation is None:
              return False
  
          if other._new_orientation is None or self._new_orientation is None:
              return False
  
          if other._new_scale is None or self._new_scale is None:
              return False
  
          op = SetTransformOperation(self._node, self._new_translation, self._new_orientation, self._new_scale)
          op._old_translation = other._old_translation
          op._old_orientation = other._old_orientation
          op._old_scale = other._old_scale
          return op
  
      def __repr__(self):
          return "SetTransformOperation(node = {0}, old_transform={1}, new_transform={2})".format(self._node, self._old_transform, self._new_transform)
  
subject: Update SetTransformOperation to work with the new SceneNode API