@startuml Rectangle

skinparam DefaultFontName Fira Code

!definelong obj1(id, max, min)
  object "~#1:Rectangle" as id
  id : maxpoint = max
  id : minpoint = min
!enddefinelong

!definelong obj2(id, max, min)
  object "~#2:Rectangle" as id
  id : maxpoint = max
  id : minpoint = min
!enddefinelong

!define to(id1, id2, txt) id1 ..> id2 : txt
!define self(id, txt) id ..> id : "txt"

obj1(A, "[]", "[]")
obj1(B, "[1,2]", "[1,2]")
obj2(C, "[3,10]", "[-1,8]")
obj1(D, "[3,10]", "[-1,2]")

to(A,B,"add(1,2)")
self(B, "contains(1,2) => false")

to(B,D,"add(~#2)")
self(D, "contains(1,2) => true")


@enduml