@startuml

interface KV {
    + Write(key, value)
    + Get(key) value
    + Scan(range) 
}

Class LevelDB {
    + Write(key, value)
    + Get(key) value
    + Scan(range) 
}

Class PatternSet {
    - KV kv
    + WritePattern()
    + ScanPattern()
    + WriteCoverage()
    + ScanCoverage()
}

class CoverageScanner {
    - PatternSet store
    + Scan() Coverage
}

class Merger {
    + Merge()
    - PatternSet store
    - CoverageScanner[] scannerSet
}

LevelDB --|> KV

PatternSet ..> LevelDB
CoverageScanner ..> PatternSet
Merger ..> CoverageScanner
Merger  ..> PatternSet


@enduml