text: 
  
  from core.himesis import Himesis, HimesisPreConditionPatternLHS
  import cPickle as pickle
  from uuid import UUID
  
  class HLocalDef1orMoreDefPart2_CompleteLHS(HimesisPreConditionPatternLHS):
      def __init__(self):
          """
          Creates the himesis graph representing the AToM3 model HLocalDef1orMoreDefPart2_CompleteLHS.
          """
          # Flag this instance as compiled now
          self.is_compiled = True
          
          super(HLocalDef1orMoreDefPart2_CompleteLHS, self).__init__(name='HLocalDef1orMoreDefPart2_CompleteLHS', num_nodes=3, edges=[])
          
          # Add the edges
          self.add_edges([(0, 2), (2, 1)])
          # Set the graph attributes
          self["mm__"] = pickle.loads("""(lp1
  S'MT_pre__UMLRT2Kiltera_MM'
  p2
  aS'MoTifRule'
  p3
  a.""")
          self["MT_constraint__"] = """#===============================================================================
  # This code is executed after the nodes in the LHS have been matched.
  # You can access a matched node labelled n by: PreNode('n').
  # To access attribute x of node n, use: PreNode('n')['x'].
  # The given constraint must evaluate to a boolean expression:
  #    returning True enables the rule to be applied,
  #    returning False forbids the rule from being applied.
  #===============================================================================
  
  return True
  """
          self["name"] = """"""
          self["GUID__"] = UUID('d0918c3d-ad28-41aa-898e-218d455fe173')
          
          # Set the node attributes
          self.vs[0]["MT_subtypeMatching__"] = False
          self.vs[0]["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[0]["MT_pivotIn__"] = """element1"""
          self.vs[0]["MT_label__"] = """1"""
          self.vs[0]["MT_subtypes__"] = pickle.loads("""(lp1
  .""")
          self.vs[0]["MT_dirty__"] = False
          self.vs[0]["mm__"] = """MT_pre__LocalDef"""
          self.vs[0]["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[0]["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[0]["GUID__"] = UUID('7ac0be3c-16aa-45ae-b2ff-b812029ba191')
          self.vs[1]["MT_subtypeMatching__"] = True
          self.vs[1]["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[1]["MT_label__"] = """2"""
          self.vs[1]["MT_subtypes__"] = pickle.loads("""(lp1
  S'MT_pre__ProcDef'
  p2
  aS'MT_pre__FuncDef'
  p3
  aS'MT_pre__Module'
  p4
  a.""")
          self.vs[1]["MT_dirty__"] = False
          self.vs[1]["mm__"] = """MT_pre__Def"""
          self.vs[1]["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[1]["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[1]["GUID__"] = UUID('fde5947f-f1f7-4b5d-90d8-103d82ce3a34')
          self.vs[2]["MT_subtypeMatching__"] = False
          self.vs[2]["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[2]["MT_label__"] = """3"""
          self.vs[2]["MT_subtypes__"] = pickle.loads("""(lp1
  .""")
          self.vs[2]["MT_dirty__"] = False
          self.vs[2]["mm__"] = """MT_pre__directLink_T"""
          self.vs[2]["GUID__"] = UUID('b2b179be-37fc-41fa-aad3-4b0d19730c25')
  
      def eval_classtype1(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_cardinality1(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_name1(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_classtype2(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_cardinality2(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_name2(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_associationType3(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.
          """
          #===============================================================================
          # This code is executed after the nodes in the LHS have been matched.
          # You can access a matched node labelled n by: PreNode('n').
          # To access attribute x of node n, use: PreNode('n')['x'].
          # The given constraint must evaluate to a boolean expression:
          #    returning True enables the rule to be applied,
          #    returning False forbids the rule from being applied.
          #===============================================================================
          
          return True
  
  