@startuml
left to right direction

interface Term
interface Struct
interface Collection

interface Tuple {
  + left: Term
  + right: Term
  ' + {static} of(left: Term, right: Term): Tuple
  ' + {static} of(**varargs** items: Term): Tuple
  ' + {static} of(items: Iterable<Term>): Tuple
}

Term <|-- Struct
Struct <|-- Collection

Collection <|-- Tuple
@enduml