@startuml
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\futurevalue {
 class valueHolder {
  value interface  { }
  err error
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\futurevalue {
 class Value {
  sync.RWMutex
  ref unsafe.Pointer
  initializer Initializer
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazycache {
 class StringKey {
  key string
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazycache {
 class Cache {
  name string
  m sync.Map
  initializer EntryInitializerWithData
  closed int32
  useRef bool
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazycache {
 class refOptCheck {
  useRef bool
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazyref {
 class valueHolder {
  value interface  { }
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazyref {
 class Reference {
  params
  expirationHandler expirationHandler
  initializer InitializerWithData
  ref unsafe.Pointer
  lastTimeAccessed unsafe.Pointer
  lock sync.RWMutex
  wg sync.WaitGroup
  closed uint32
  running bool
  closech chan bool
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazyref {
 class params {
  initialInit time.Duration
  finalizer Finalizer
  expirationProvider ExpirationProvider
  expiryType ExpirationType
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\rollingcounter {
 class Counter {
  index int32
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazycache {
 interface Key  {
  String()string
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazycache {
 interface future  {
  Get()(interface  { },error)
  MustGet()interface  { }
  IsSet()bool
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazycache {
 interface closable  {
  Close()
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazyref {
 interface idleExpirationSetter  {
  SetIdleExpiration(expiration time.Duration)
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazyref {
 interface absoluteExpirationSetter  {
  SetAbsoluteExpiration(expiration time.Duration)
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazyref {
 interface expirationProviderSetter  {
  SetExpirationProvider(expirationProvider ExpirationProvider,expiryType ExpirationType)
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazyref {
 interface finalizerSetter  {
  SetFinalizer(value Finalizer)
} 
}
namespace github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazyref {
 interface refreshIntervalSetter  {
  SetRefreshInterval(initialInit,refreshPeriod time.Duration)
} 
}
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazyref.Reference -|> github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazyref.params
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazycache.Key <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazycache.StringKey
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazycache.future <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\futurevalue.Value
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazycache.closable <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazycache.Cache
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazycache.closable <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazyref.Reference
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazyref.idleExpirationSetter <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazycache.refOptCheck
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazyref.idleExpirationSetter <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazyref.params
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazyref.absoluteExpirationSetter <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazycache.refOptCheck
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazyref.absoluteExpirationSetter <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazyref.params
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazyref.expirationProviderSetter <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazyref.params
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazyref.finalizerSetter <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazyref.params
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazyref.refreshIntervalSetter <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazycache.refOptCheck
github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazyref.refreshIntervalSetter <|- github.com\\fabric_sdk_sample\\fabric_sdk_go\\pkg\\util\\concurrent\\lazyref.params
@enduml