class SimpleController
    implements IConfigurable, IReferenceable, IUnreferenceable {
  dynamic _worker;

  var _dependencyResolver = DependencyResolver.fromTuples(
      ['worker', Descriptor('*', 'worker', '*', '*', '1.0')]);

  @override
  void setReferences(references) {
    _dependencyResolver.setReferences(references);
    _worker = _dependencyResolver.getOneRequired('worker');
  }

  @override
  void configure(ConfigParams config) {
    _dependencyResolver.configure(config);
  }

  @override
  void unsetReferences() {
    _dependencyResolver = DependencyResolver();
  }
...
}

var references = References.fromTuples([
    Descriptor('sample', 'worker', 'worker1', '111', '1.0'),
    Worker1(),
    Descriptor('sample', 'worker', 'worker2', '222', '1.0'),
    Worker2()
  ]);

var config = ConfigParams.fromTuples(
    ['dependencies.worker', '*:worker:worker1:111:1.0']);

SimpleController? controller = SimpleController();
controller.configure(config);
controller.setReferences(references);
controller.greeting('world');
controller.unsetReferences();
controller = null;