text: 
  
  from core.himesis import Himesis, HimesisPreConditionPatternLHS
  import cPickle as pickle
  from uuid import UUID
  
  class HMoveOneInputRepeatedDirectMatchDiffRulesLHS(HimesisPreConditionPatternLHS):
      def __init__(self):
          """
          Creates the himesis graph representing the AToM3 model HMoveOneInputRepeatedDirectMatchDiffRulesLHS.
          """
          # Flag this instance as compiled now
          self.is_compiled = True
          
          super(HMoveOneInputRepeatedDirectMatchDiffRulesLHS, self).__init__(name='HMoveOneInputRepeatedDirectMatchDiffRulesLHS', num_nodes=5, edges=[])
          
          # Add the edges
          self.add_edges([(4, 0), (0, 3), (4, 1), (1, 2)])
          # Set the graph attributes
          self["mm__"] = pickle.loads("""(lp1
  S'MT_pre__GM2AUTOSAR_MM'
  p2
  aS'MoTifRule'
  p3
  a.""")
          self["MT_constraint__"] = """#if len([i for i in graph.neighbors(PreNode('5').index) if graph.vs[i]['mm__'] == 'match_contains']) == 0:
  #    return True
  
  #return False
  return True
  """
          self["name"] = """"""
          self["GUID__"] = UUID('33dee8e7-0850-4201-8fbb-5f2f00cce632')
          
          # Set the node attributes
          self.vs[0]["MT_subtypeMatching__"] = False
          self.vs[0]["MT_pre__associationType"] = """
  #===============================================================================
  # This code is executed when evaluating if a node shall be matched by this rule.
  # You can access the value of the current node's attribute value by: attr_value.
  # You can access any attribute x of this node by: this['x'].
  # If the constraint relies on attribute values from other nodes,
  # use the LHS/NAC constraint instead.
  # The given constraint must evaluate to a boolean expression.
  #===============================================================================
  
  return True
  """
          self.vs[0]["MT_label__"] = """9"""
          self.vs[0]["MT_subtypes__"] = pickle.loads("""(lp1
  .""")
          self.vs[0]["mm__"] = """MT_pre__directLink_S"""
          self.vs[0]["MT_dirty__"] = False
          self.vs[0]["GUID__"] = UUID('36ae2152-bbf3-47b6-87b4-72b1298667cf')
          self.vs[1]["MT_subtypeMatching__"] = False
          self.vs[1]["MT_pre__associationType"] = """
  #===============================================================================
  # This code is executed when evaluating if a node shall be matched by this rule.
  # You can access the value of the current node's attribute value by: attr_value.
  # You can access any attribute x of this node by: this['x'].
  # If the constraint relies on attribute values from other nodes,
  # use the LHS/NAC constraint instead.
  # The given constraint must evaluate to a boolean expression.
  #===============================================================================
  
  return True
  """
          self.vs[1]["MT_label__"] = """10"""
          self.vs[1]["MT_subtypes__"] = pickle.loads("""(lp1
  .""")
          self.vs[1]["mm__"] = """MT_pre__directLink_S"""
          self.vs[1]["MT_dirty__"] = False
          self.vs[1]["GUID__"] = UUID('1910e6fe-832d-4b86-af6b-2e976dd6dca6')
          self.vs[2]["MT_pivotOut__"] = """element1"""
          self.vs[2]["MT_pre__name"] = """
  #===============================================================================
  # This code is executed when evaluating if a node shall be matched by this rule.
  # You can access the value of the current node's attribute value by: attr_value.
  # You can access any attribute x of this node by: this['x'].
  # If the constraint relies on attribute values from other nodes,
  # use the LHS/NAC constraint instead.
  # The given constraint must evaluate to a boolean expression.
  #===============================================================================
  
  return True
  """
          self.vs[2]["MT_subtypeMatching__"] = True
          self.vs[2]["MT_pre__classtype"] = """
  #===============================================================================
  # This code is executed when evaluating if a node shall be matched by this rule.
  # You can access the value of the current node's attribute value by: attr_value.
  # You can access any attribute x of this node by: this['x'].
  # If the constraint relies on attribute values from other nodes,
  # use the LHS/NAC constraint instead.
  # The given constraint must evaluate to a boolean expression.
  #===============================================================================
  
  return True
  """
          self.vs[2]["MT_pivotIn__"] = """element1"""
          self.vs[2]["MT_label__"] = """3"""
          self.vs[2]["MT_subtypes__"] = pickle.loads("""(lp1
  S'MT_pre__VirtualDevice'
  p2
  aS'MT_pre__Distributable'
  p3
  aS'MT_pre__Signal'
  p4
  aS'MT_pre__ExecFrame'
  p5
  aS'MT_pre__ECU'
  p6
  a.""")
          self.vs[2]["mm__"] = """MT_pre__MetaModelElement_S"""
          self.vs[2]["MT_dirty__"] = False
          self.vs[2]["MT_pre__cardinality"] = """
  #===============================================================================
  # This code is executed when evaluating if a node shall be matched by this rule.
  # You can access the value of the current node's attribute value by: attr_value.
  # You can access any attribute x of this node by: this['x'].
  # If the constraint relies on attribute values from other nodes,
  # use the LHS/NAC constraint instead.
  # The given constraint must evaluate to a boolean expression.
  #===============================================================================
  
  return True
  """
          self.vs[2]["GUID__"] = UUID('17f2ebb6-ba07-4110-8435-fb126470d6f4')
          self.vs[3]["MT_pivotOut__"] = """element2"""
          self.vs[3]["MT_pre__name"] = """
  #===============================================================================
  # This code is executed when evaluating if a node shall be matched by this rule.
  # You can access the value of the current node's attribute value by: attr_value.
  # You can access any attribute x of this node by: this['x'].
  # If the constraint relies on attribute values from other nodes,
  # use the LHS/NAC constraint instead.
  # The given constraint must evaluate to a boolean expression.
  #===============================================================================
  
  return True
  """
          self.vs[3]["MT_subtypeMatching__"] = True
          self.vs[3]["MT_pre__classtype"] = """
  #===============================================================================
  # This code is executed when evaluating if a node shall be matched by this rule.
  # You can access the value of the current node's attribute value by: attr_value.
  # You can access any attribute x of this node by: this['x'].
  # If the constraint relies on attribute values from other nodes,
  # use the LHS/NAC constraint instead.
  # The given constraint must evaluate to a boolean expression.
  #===============================================================================
  
  return True
  """
          self.vs[3]["MT_pivotIn__"] = """element2"""
          self.vs[3]["MT_label__"] = """4"""
          self.vs[3]["MT_subtypes__"] = pickle.loads("""(lp1
  S'MT_pre__VirtualDevice'
  p2
  aS'MT_pre__Distributable'
  p3
  aS'MT_pre__Signal'
  p4
  aS'MT_pre__ExecFrame'
  p5
  aS'MT_pre__ECU'
  p6
  a.""")
          self.vs[3]["mm__"] = """MT_pre__MetaModelElement_S"""
          self.vs[3]["MT_dirty__"] = False
          self.vs[3]["MT_pre__cardinality"] = """
  #===============================================================================
  # This code is executed when evaluating if a node shall be matched by this rule.
  # You can access the value of the current node's attribute value by: attr_value.
  # You can access any attribute x of this node by: this['x'].
  # If the constraint relies on attribute values from other nodes,
  # use the LHS/NAC constraint instead.
  # The given constraint must evaluate to a boolean expression.
  #===============================================================================
  
  return True
  """
          self.vs[3]["GUID__"] = UUID('73ce66d4-542a-4283-8afd-b10647c4137e')
          self.vs[4]["MT_pre__name"] = """
  #===============================================================================
  # This code is executed when evaluating if a node shall be matched by this rule.
  # You can access the value of the current node's attribute value by: attr_value.
  # You can access any attribute x of this node by: this['x'].
  # If the constraint relies on attribute values from other nodes,
  # use the LHS/NAC constraint instead.
  # The given constraint must evaluate to a boolean expression.
  #===============================================================================
  
  return True
  """
          self.vs[4]["MT_subtypeMatching__"] = True
          self.vs[4]["MT_pre__classtype"] = """
  #===============================================================================
  # This code is executed when evaluating if a node shall be matched by this rule.
  # You can access the value of the current node's attribute value by: attr_value.
  # You can access any attribute x of this node by: this['x'].
  # If the constraint relies on attribute values from other nodes,
  # use the LHS/NAC constraint instead.
  # The given constraint must evaluate to a boolean expression.
  #===============================================================================
  
  return True
  """
          self.vs[4]["MT_label__"] = """5"""
          self.vs[4]["MT_subtypes__"] = pickle.loads("""(lp1
  S'MT_pre__VirtualDevice'
  p2
  aS'MT_pre__Distributable'
  p3
  aS'MT_pre__Signal'
  p4
  aS'MT_pre__ExecFrame'
  p5
  aS'MT_pre__ECU'
  p6
  a.""")
          self.vs[4]["mm__"] = """MT_pre__MetaModelElement_S"""
          self.vs[4]["MT_dirty__"] = False
          self.vs[4]["MT_pre__cardinality"] = """
  #===============================================================================
  # This code is executed when evaluating if a node shall be matched by this rule.
  # You can access the value of the current node's attribute value by: attr_value.
  # You can access any attribute x of this node by: this['x'].
  # If the constraint relies on attribute values from other nodes,
  # use the LHS/NAC constraint instead.
  # The given constraint must evaluate to a boolean expression.
  #===============================================================================
  
  return True
  """
          self.vs[4]["GUID__"] = UUID('ac24f103-fe2f-4f4d-b3ba-4ae01558b878')
  
      def eval_associationType9(self, attr_value, this):
          
          #===============================================================================
          # This code is executed when evaluating if a node shall be matched by this rule.
          # You can access the value of the current node's attribute value by: attr_value.
          # You can access any attribute x of this node by: this['x'].
          # If the constraint relies on attribute values from other nodes,
          # use the LHS/NAC constraint instead.
          # The given constraint must evaluate to a boolean expression.
          #===============================================================================
          
          return True
  
  
      def eval_associationType10(self, attr_value, this):
          
          #===============================================================================
          # This code is executed when evaluating if a node shall be matched by this rule.
          # You can access the value of the current node's attribute value by: attr_value.
          # You can access any attribute x of this node by: this['x'].
          # If the constraint relies on attribute values from other nodes,
          # use the LHS/NAC constraint instead.
          # The given constraint must evaluate to a boolean expression.
          #===============================================================================
          
          return True
  
  
      def eval_name3(self, attr_value, this):
          
          #===============================================================================
          # This code is executed when evaluating if a node shall be matched by this rule.
          # You can access the value of the current node's attribute value by: attr_value.
          # You can access any attribute x of this node by: this['x'].
          # If the constraint relies on attribute values from other nodes,
          # use the LHS/NAC constraint instead.
          # The given constraint must evaluate to a boolean expression.
          #===============================================================================
          
          return True
  
  
      def eval_classtype3(self, attr_value, this):
          
          #===============================================================================
          # This code is executed when evaluating if a node shall be matched by this rule.
          # You can access the value of the current node's attribute value by: attr_value.
          # You can access any attribute x of this node by: this['x'].
          # If the constraint relies on attribute values from other nodes,
          # use the LHS/NAC constraint instead.
          # The given constraint must evaluate to a boolean expression.
          #===============================================================================
          
          return True
  
  
      def eval_cardinality3(self, attr_value, this):
          
          #===============================================================================
          # This code is executed when evaluating if a node shall be matched by this rule.
          # You can access the value of the current node's attribute value by: attr_value.
          # You can access any attribute x of this node by: this['x'].
          # If the constraint relies on attribute values from other nodes,
          # use the LHS/NAC constraint instead.
          # The given constraint must evaluate to a boolean expression.
          #===============================================================================
          
          return True
  
  
      def eval_name4(self, attr_value, this):
          
          #===============================================================================
          # This code is executed when evaluating if a node shall be matched by this rule.
          # You can access the value of the current node's attribute value by: attr_value.
          # You can access any attribute x of this node by: this['x'].
          # If the constraint relies on attribute values from other nodes,
          # use the LHS/NAC constraint instead.
          # The given constraint must evaluate to a boolean expression.
          #===============================================================================
          
          return True
  
  
      def eval_classtype4(self, attr_value, this):
          
          #===============================================================================
          # This code is executed when evaluating if a node shall be matched by this rule.
          # You can access the value of the current node's attribute value by: attr_value.
          # You can access any attribute x of this node by: this['x'].
          # If the constraint relies on attribute values from other nodes,
          # use the LHS/NAC constraint instead.
          # The given constraint must evaluate to a boolean expression.
          #===============================================================================
          
          return True
  
  
      def eval_cardinality4(self, attr_value, this):
          
          #===============================================================================
          # This code is executed when evaluating if a node shall be matched by this rule.
          # You can access the value of the current node's attribute value by: attr_value.
          # You can access any attribute x of this node by: this['x'].
          # If the constraint relies on attribute values from other nodes,
          # use the LHS/NAC constraint instead.
          # The given constraint must evaluate to a boolean expression.
          #===============================================================================
          
          return True
  
  
      def eval_name5(self, attr_value, this):
          
          #===============================================================================
          # This code is executed when evaluating if a node shall be matched by this rule.
          # You can access the value of the current node's attribute value by: attr_value.
          # You can access any attribute x of this node by: this['x'].
          # If the constraint relies on attribute values from other nodes,
          # use the LHS/NAC constraint instead.
          # The given constraint must evaluate to a boolean expression.
          #===============================================================================
          
          return True
  
  
      def eval_classtype5(self, attr_value, this):
          
          #===============================================================================
          # This code is executed when evaluating if a node shall be matched by this rule.
          # You can access the value of the current node's attribute value by: attr_value.
          # You can access any attribute x of this node by: this['x'].
          # If the constraint relies on attribute values from other nodes,
          # use the LHS/NAC constraint instead.
          # The given constraint must evaluate to a boolean expression.
          #===============================================================================
          
          return True
  
  
      def eval_cardinality5(self, attr_value, this):
          
          #===============================================================================
          # This code is executed when evaluating if a node shall be matched by this rule.
          # You can access the value of the current node's attribute value by: attr_value.
          # You can access any attribute x of this node by: this['x'].
          # If the constraint relies on attribute values from other nodes,
          # use the LHS/NAC constraint instead.
          # The given constraint must evaluate to a boolean expression.
          #===============================================================================
          
          return True
  
  
      def constraint(self, PreNode, graph):
          """
              Executable constraint code. 
              @param PreNode: Function taking an integer as parameter
                              and returns the node corresponding to that label.
          """
          #if len([i for i in graph.neighbors(PreNode('5').index) if graph.vs[i]['mm__'] == 'match_contains']) == 0:
          #    return True
          
          #return False
          return True
  
  