@startuml
'https://plantuml.com/class-diagram

interface Vision{
    val parent: Vision?
    fun getProperty(name): MetaItem?
    fun setProperty(name, value)
}

class VisionBase{
    basic vision
    implementation
}
Vision <|-- VisionBase

interface VisionGroup{
    A group of Visions
}
Vision <|-- VisionGroup

interface Solid{
    The base for 3D geometry
}

Vision <|-- Solid

class SolidGroup

Solid <|-- SolidGroup
VisionGroup <|-- SolidGroup

class Composite
Solid <|-- Composite
VisionGroup <|-- Composite

class Box
Solid <|-- Box

class Tube
Solid <|-- Tube

class Sphere
Solid <|-- Sphere

@enduml