+ @classmethod
+ def import_location(cls, state):
+ location_actions = [
+ cls.build_action(definition) for definition in state['actions']]
+ return cls(state['bitwise_operand'], location_actions)
+
+ @classmethod
+ def build_action(cls, definition):
+ action_class = getattr(actions, definition['action_class'])
+ required_bits = definition['required_bits']
+ data = definition.get('data', {})
+ return action_class(required_bits, **data)
+
+ @classmethod
+ def new_location(cls, definition):
+ return cls.import_location({
+ 'bitwise_operand': cls.generate_bitwise_operand(),
+ 'actions': definition['actions'],
+ })
+
+ def export(self):
+ return {
+ 'bitwise_operand': self.bitwise_operand,
+ 'actions': [action.export() for action in self.actions],
+ }