Fixed synchronization for add/remove listener contention.
diff --git a/java/maven/src/org/netbeans/modules/maven/queries/MavenDependencyResult.java b/java/maven/src/org/netbeans/modules/maven/queries/MavenDependencyResult.java
index 07237e9..685ddd8 100644
--- a/java/maven/src/org/netbeans/modules/maven/queries/MavenDependencyResult.java
+++ b/java/maven/src/org/netbeans/modules/maven/queries/MavenDependencyResult.java
@@ -130,19 +130,15 @@
             if (listeners == null) {
                 attach = true;
                 listeners = new ArrayList<>();
+                wL = WeakListeners.propertyChange(this, mavenProject);
+                mavenProject.addPropertyChangeListener(wL);
             }
             listeners.add(l);
         }
-        if (!attach) {
-            return;
-        }
-        wL = WeakListeners.propertyChange(this, mavenProject);
-        mavenProject.addPropertyChangeListener(wL);
     }
 
     @Override
     public void removeChangeListener(ChangeListener l) {
-        boolean detach = false;
         synchronized (this) {
             if (listeners == null) {
                 return;
@@ -150,6 +146,7 @@
             listeners.remove(l);
             if (listeners.isEmpty()) {
                 mavenProject.removePropertyChangeListener(wL);
+                listeners = null;
             }
         }
     }