old_contents: """Generalization --"""
  
  
  from gaphor import UML
  from gaphor.diagram.presentation import LinePresentation
  from gaphor.diagram.shapes import Box, Text, stroke
  from gaphor.diagram.support import represents
  from gaphor.UML.modelfactory import stereotypes_str
  
  
  @represents(UML.Generalization)
  class GeneralizationItem(LinePresentation):
      def __init__(self, diagram, id=None):
          super().__init__(diagram, id)
  
          self.shape_middle = Box(
              Text(
                  text=lambda: stereotypes_str(self.subject),
              )
          )
          self.watch("subject.appliedStereotype.classifier.name")
  
      def draw_head(self, context):
          cr = context.cairo
          cr.move_to(0, 0)
          cr.line_to(15, -10)
          cr.line_to(15, 10)
          cr.close_path()
          stroke(context)
          cr.move_to(15, 0)
  
new_contents: """Generalization --"""
  
  from gaphor import UML
  from gaphor.core.modeling import DrawContext
  from gaphor.core.modeling.diagram import Diagram
  from gaphor.diagram.presentation import LinePresentation
  from gaphor.diagram.shapes import Box, Text
  from gaphor.diagram.support import represents
  from gaphor.UML.modelfactory import stereotypes_str
  
  
  @represents(UML.Generalization)
  class GeneralizationItem(LinePresentation):
      def __init__(self, diagram: Diagram, id: str = None):
          super().__init__(diagram, id, style={"dash-style": ()})
  
          self.shape_middle = Box(
              Text(
                  text=lambda: stereotypes_str(self.subject),
              )
          )
          self.watch("subject.appliedStereotype.classifier.name")
  
      def draw_tail(self, context: DrawContext):
          cr = context.cairo
          cr.line_to(15, 0)
          cr.move_to(15, -10)
          cr.line_to(0, 0)
          cr.line_to(15, 10)
          cr.close_path()
  
subject: Move generalization arrow to tail end