digraph G {
  fontname = "DejaVu Sans Mono"
  fontsize = 8
  bgcolor = "transparent"

  node [
    fontname = "DejaVu Sans Mono"
    fontsize = 8
    shape = "record"
    fillcolor = "white"
    style = "filled"
  ]

  edge [
    fontname = "DejaVu Sans Mono"
    fontsize = 8
    color = "black"
    arrowhead = onormal
  ]

  Configuration [
    label = "{Configuration|+ middleware : dict\l+ modifier : dict\l+ service : dict\l|}"
  ]
  Component [
    label="{Component|+ name : string\l+ location : Vector\l+ scale : Vector\l+ rotation_euler : Vector\l|+ translate(float x, float y, float z)\l+ rotate(float x, float y, float z)\l+ properties(dict)\l+ append(Component)\l}"
  ]
  Robot [
    label = "{Robot|\l|}"
  ]
  Sensor [
    label = "{Sensor|\l|}"
  ]
  Controller [
    label = "{Controller|\l|}"
  ]
  Environement [
    label = "{Environement|\l|}"
  ]

  Robot -> Component
  Sensor -> Component
  Controller -> Component
  Environement -> Component
  Component -> Configuration [dir=both, arrowhead=vee, arrowtail=diamond, 
    taillabel=" * ", label=" _config ", headlabel=" 1 ", labelfontcolor="turquoise"]
  Component -> Component [dir=both, arrowhead=vee, arrowtail=odiamond, 
    taillabel=" 1 ", label=" children ", headlabel=" * ", labelfontcolor="turquoise"]
  // http://graphviz.org/content/attrs#karrowType
}

