Apply Guice Multibinder to Section injection
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Module.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Module.java
index 79baa9d..154978f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Module.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/Module.java
@@ -19,7 +19,7 @@
 import com.google.gerrit.extensions.registration.DynamicSet;
 import com.google.inject.AbstractModule;
 import com.google.inject.assistedinject.FactoryModuleBuilder;
-import com.google.inject.name.Names;
+import com.google.inject.multibindings.Multibinder;
 
 import com.googlesource.gerrit.plugins.rabbitmq.config.PluginProperties;
 import com.googlesource.gerrit.plugins.rabbitmq.config.Properties;
@@ -48,11 +48,12 @@
 
   @Override
   protected void configure() {
-    bind(Section.class).annotatedWith(Names.named("amqp")).to(AMQP.class);
-    bind(Section.class).annotatedWith(Names.named("exchange")).to(Exchange.class);
-    bind(Section.class).annotatedWith(Names.named("gerrit")).to(Gerrit.class);
-    bind(Section.class).annotatedWith(Names.named("message")).to(Message.class);
-    bind(Section.class).annotatedWith(Names.named("monitor")).to(Monitor.class);
+    Multibinder<Section> sectionBinder = Multibinder.newSetBinder(binder(), Section.class);
+    sectionBinder.addBinding().to(AMQP.class);
+    sectionBinder.addBinding().to(Exchange.class);
+    sectionBinder.addBinding().to(Gerrit.class);
+    sectionBinder.addBinding().to(Message.class);
+    sectionBinder.addBinding().to(Monitor.class);
 
     install(new FactoryModuleBuilder().implement(Solver.class, SolverImpl.class).build(SolverFactory.class));
     install(new FactoryModuleBuilder().implement(Session.class, AMQPSession.class).build(SessionFactory.class));
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/PluginProperties.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/PluginProperties.java
index 3fec0c5..9c978b2 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/PluginProperties.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/PluginProperties.java
@@ -16,7 +16,6 @@
 
 import com.google.inject.assistedinject.Assisted;
 import com.google.inject.assistedinject.AssistedInject;
-import com.google.inject.name.Named;
 
 import com.googlesource.gerrit.plugins.rabbitmq.config.section.Gerrit;
 import com.googlesource.gerrit.plugins.rabbitmq.config.section.Monitor;
@@ -34,10 +33,8 @@
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collections;
-import java.util.List;
+import java.util.Set;
 
 public class PluginProperties implements Properties {
 
@@ -45,35 +42,18 @@
 
   private final static int MINIMUM_CONNECTION_MONITOR_INTERVAL = 5000;
 
-  private final List<Section> sections = new ArrayList<>();
+  private final Set<Section> sections;
   private final Path propertiesFile;
   private AMQProperties amqProperties;
 
   @AssistedInject
-  public PluginProperties(
-      @Named("amqp") final Section amqp,
-      @Named("exchange") final Section exchange,
-      @Named("gerrit") final Section gerrit,
-      @Named("message") final Section message,
-      @Named("monitor") final Section monitor) {
-    this(amqp, exchange, gerrit, message, monitor, null);
+  public PluginProperties(Set<Section> sections) {
+    this(sections, null);
   }
 
   @AssistedInject
-  public PluginProperties(
-      @Named("amqp") final Section amqp,
-      @Named("exchange") final Section exchange,
-      @Named("gerrit") final Section gerrit,
-      @Named("message") final Section message,
-      @Named("monitor") final Section monitor,
-      @Assisted Path propertiesFile) {
-    this.sections.addAll(Arrays.asList(
-        amqp,
-        exchange,
-        gerrit,
-        message,
-        monitor
-    ));
+  public PluginProperties(Set<Section> sections, @Assisted Path propertiesFile) {
+    this.sections = sections;
     this.propertiesFile = propertiesFile;
   }
 
@@ -141,8 +121,8 @@
   }
 
   @Override
-  public List<Section> getSections() {
-    return Collections.unmodifiableList(sections);
+  public Set<Section> getSections() {
+    return Collections.unmodifiableSet(sections);
   }
 
   @Override
diff --git a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/Properties.java b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/Properties.java
index a51ad90..d81379b 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/Properties.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/rabbitmq/config/Properties.java
@@ -5,7 +5,7 @@
 import org.eclipse.jgit.lib.Config;
 
 import java.nio.file.Path;
-import java.util.List;
+import java.util.Set;
 
 public interface Properties extends Cloneable {
   public Config toConfig();
@@ -13,7 +13,7 @@
   public boolean load(Properties baseProperties);
   public Path getPath();
   public String getName();
-  public List<Section> getSections();
+  public Set<Section> getSections();
   public <T extends Section> T getSection(Class<T> clazz);
   public AMQProperties getAMQProperties();
 }