package com.github.signed.microplugin.core; import com.google.inject.Binder; import com.google.inject.multibindings.Multibinder; public class ExtensionPoint<ExtensionInterface> { private final Multibinder<ExtensionInterface> multiBinder; protected ExtensionPoint(Binder binder, Class<ExtensionInterface> blueprint){ multiBinder = Multibinder.newSetBinder(binder, blueprint); } public void theImplementer(Class<? extends ExtensionInterface> implementer) { multiBinder.addBinding().to(implementer); } }