I got it too.
"LocalHistory.ParallelTasks":
waiting to lock monitor 0x0a62b224 (object 0x9d5fa718, a org.netbeans.modules.projectapi.LazyLookupProviders$1$1),
which is held by "org.netbeans.modules.project.ui.ProjectsRootNode$ProjectChildren"
"org.netbeans.modules.project.ui.ProjectsRootNode$ProjectChildren":
waiting to lock monitor 0x09b978c8 (object 0x9d5fa700, a org.netbeans.modules.projectapi.LazyLookupProviders$1$1),
which is held by "LocalHistory.ParallelTasks"
at org.netbeans.modules.projectapi.LazyLookupProviders$1$1.beforeLookup(LazyLookupProviders.java:80)
- waiting to lock <0x9d5fa718> (a org.netbeans.modules.projectapi.LazyLookupProviders$1$1)
at org.openide.util.lookup.ProxyLookup.lookup(ProxyLookup.java:206)
at org.openide.util.lookup.ProxyLookup.lookup(ProxyLookup.java:214)
at org.openide.util.lookup.ExcludingLookup.lookup(ExcludingLookup.java:108)
at org.openide.util.lookup.ProxyLookup.lookup(ProxyLookup.java:214)
at org.netbeans.modules.maven.j2ee.J2eeMavenSourcesImpl.<init>(J2eeMavenSourcesImpl.java:89)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.netbeans.modules.projectapi.LazyLookupProviders.loadPSPInstance(LazyLookupProviders.java:110)
at org.netbeans.modules.projectapi.LazyLookupProviders.access$000(LazyLookupProviders.java:67)
at org.netbeans.modules.projectapi.LazyLookupProviders$1$1.beforeLookup(LazyLookupProviders.java:83)
- locked <0x9d5fa700> (a org.netbeans.modules.projectapi.LazyLookupProviders$1$1)
at org.netbeans.modules.projectapi.LazyLookupProviders$1$1.beforeLookup(LazyLookupProviders.java:80)
- waiting to lock <0x9d5fa700> (a org.netbeans.modules.projectapi.LazyLookupProviders$1$1)
at org.openide.util.lookup.ProxyLookup.lookup(ProxyLookup.java:206)
at org.openide.util.lookup.ProxyLookup.lookup(ProxyLookup.java:214)
at org.openide.util.lookup.ExcludingLookup.lookup(ExcludingLookup.java:108)
at org.openide.util.lookup.ProxyLookup.lookup(ProxyLookup.java:214)
at org.openide.util.lookup.ProxyLookup.lookup(ProxyLookup.java:214)
at org.netbeans.modules.projectapi.LazyLookupProviders.valuesFor(LazyLookupProviders.java:135)
at org.netbeans.modules.projectapi.LazyLookupProviders.loadPSPInstance(LazyLookupProviders.java:108)
at org.netbeans.modules.projectapi.LazyLookupProviders.access$000(LazyLookupProviders.java:67)
at org.netbeans.modules.projectapi.LazyLookupProviders$1$1.beforeLookup(LazyLookupProviders.java:83)
- locked <0x9d5fa718> (a org.netbeans.modules.projectapi.LazyLookupProviders$1$1)

Introduced by the fix for bug #205268. Tricky: we do not want to deadlock, but we also do not want the same service interface to be instantiated by two different threads. Probably OK if this happens so long as only one such instance actually winds up in the lookup.
The deeper problem is that in the Maven project lookup, some service impls call project.getLookup() in the constructor to find other services; this ought to be forbidden, and maybe the infrastructure should enforce this with an assertion. Can accept Lookup baseLookup as a ctor param (only certain interfaces available, like NbMavenProject); but better still to delay checking project lookup for other things until service methods are actually called.

Still another deadlock possible:
Found one Java-level deadlock:
=============================
"Parsing & Indexing Loop (20111129-9efe76f9f5d3)":
waiting to lock monitor 0x094550b8 (object 0x9ceec258, a org.netbeans.modules.projectapi.LazyLookupProviders$1$1),
which is held by "ErrorAnnotator worker"
"ErrorAnnotator worker":
waiting to lock monitor 0x091a7264 (object 0x9ce58bf8, a java.util.ArrayList),
which is held by "Parsing & Indexing Loop (20111129-9efe76f9f5d3)"
Java stack information for the threads listed above:
===================================================
"Parsing & Indexing Loop (20111129-9efe76f9f5d3)":
at org.netbeans.modules.projectapi.LazyLookupProviders$1$1.beforeLookup(LazyLookupProviders.java:87)
- waiting to lock <0x9ceec258> (a org.netbeans.modules.projectapi.LazyLookupProviders$1$1)
at org.openide.util.lookup.ProxyLookup$R.myBeforeLookup(ProxyLookup.java:672)
at org.openide.util.lookup.ProxyLookup$R.beforeLookup(ProxyLookup.java:691)
at org.openide.util.lookup.ProxyLookup$R.myBeforeLookup(ProxyLookup.java:680)
at org.openide.util.lookup.ProxyLookup$R.beforeLookup(ProxyLookup.java:691)
at org.openide.util.lookup.ExcludingLookup$R.beforeLookup(ExcludingLookup.java:294)
at org.openide.util.lookup.ProxyLookup$R.myBeforeLookup(ProxyLookup.java:680)
at org.openide.util.lookup.ProxyLookup$R.computeResult(ProxyLookup.java:526)
at org.openide.util.lookup.ProxyLookup$R.allItems(ProxyLookup.java:517)
at org.openide.util.lookup.ProxyLookup$R.collectFires(ProxyLookup.java:628)
at org.openide.util.lookup.ProxyLookup.setLookups(ProxyLookup.java:168)
at org.openide.util.lookup.ProxyLookup.setLookups(ProxyLookup.java:124)
at org.netbeans.spi.project.support.DelegatingLookupImpl.doDelegate(DelegatingLookupImpl.java:176)
- locked <0x9ce58bf8> (a java.util.ArrayList)
at org.netbeans.spi.project.support.DelegatingLookupImpl.stateChanged(DelegatingLookupImpl.java:112)
at org.openide.util.WeakListenerImpl$Change.stateChanged(WeakListenerImpl.java:329)
at org.openide.util.ChangeSupport.fireChange(ChangeSupport.java:133)
at org.openide.util.ChangeSupport.fireChange(ChangeSupport.java:119)
at org.netbeans.modules.projectapi.LazyLookupProviders$2.probing(LazyLookupProviders.java:188)
at org.netbeans.spi.project.support.DelegatingLookupImpl.beforeLookup(DelegatingLookupImpl.java:106)
at org.openide.util.lookup.ProxyLookup.lookup(ProxyLookup.java:206)
at org.netbeans.modules.maven.queries.MavenForBinaryQueryImpl$BinResult.preferSources(MavenForBinaryQueryImpl.java:339)
at org.netbeans.api.java.queries.SourceForBinaryQuery$Result2.preferSources(SourceForBinaryQuery.java:228)
at org.netbeans.modules.parsing.impl.indexing.PathRegistry.createResources(PathRegistry.java:626)
at org.netbeans.modules.parsing.impl.indexing.PathRegistry.getSources(PathRegistry.java:234)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$RootsWork.getDone(RepositoryUpdater.java:3455)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.doTheWork(RepositoryUpdater.java:2505)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task._run(RepositoryUpdater.java:4518)
at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task.run(RepositoryUpdater.java:4455)
at org.netbeans.modules.parsing.impl.TaskProcessor.callParserResultTask(TaskProcessor.java:618)
at org.netbeans.modules.parsing.impl.TaskProcessor$CompilationJob.run(TaskProcessor.java:728)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
"ErrorAnnotator worker":
at org.netbeans.spi.project.support.DelegatingLookupImpl.doDelegate(DelegatingLookupImpl.java:117)
- waiting to lock <0x9ce58bf8> (a java.util.ArrayList)
at org.netbeans.spi.project.support.DelegatingLookupImpl.resultChanged(DelegatingLookupImpl.java:101)
at org.openide.util.lookup.ProxyLookup$1Notify.run(ProxyLookup.java:179)
at org.openide.util.lookup.ProxyLookup.setLookups(ProxyLookup.java:188)
at org.openide.util.lookup.ProxyLookup.setLookups(ProxyLookup.java:124)
at org.netbeans.modules.projectapi.LazyLookupProviders$1$1.beforeLookup(LazyLookupProviders.java:103)
- locked <0x9ceec258> (a org.netbeans.modules.projectapi.LazyLookupProviders$1$1)
at org.openide.util.lookup.ProxyLookup$R.myBeforeLookup(ProxyLookup.java:672)
at org.openide.util.lookup.ProxyLookup$R.beforeLookup(ProxyLookup.java:691)
at org.openide.util.lookup.ProxyLookup$R.myBeforeLookup(ProxyLookup.java:680)
at org.openide.util.lookup.ProxyLookup$R.computeResult(ProxyLookup.java:526)
at org.openide.util.lookup.ProxyLookup$R.allInstances(ProxyLookup.java:497)
at org.openide.util.Lookup.lookupAll(Lookup.java:263)
at org.netbeans.modules.maven.queries.ForeignClassBundlerMerger$1.preferSources(ForeignClassBundlerMerger.java:55)
at org.netbeans.modules.maven.queries.MavenForBinaryQueryImpl$BinResult.preferSources(MavenForBinaryQueryImpl.java:339)
at org.netbeans.api.java.queries.SourceForBinaryQuery$Result2.preferSources(SourceForBinaryQuery.java:228)
at org.netbeans.modules.parsing.impl.indexing.PathRegistry.createResources(PathRegistry.java:626)
at org.netbeans.modules.parsing.impl.indexing.PathRegistry.getSources(PathRegistry.java:234)
at org.netbeans.modules.parsing.impl.indexing.errors.Utilities.findIndexedRootsUnderDirectory(Utilities.java:85)
at org.netbeans.modules.parsing.impl.indexing.errors.ErrorAnnotator$1.run(ErrorAnnotator.java:316)
at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1411)
at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:1991)

(In reply to comment #2)
> The deeper problem is that in the Maven project lookup, some service impls call
> project.getLookup() in the constructor to find other services; this ought to be
> forbidden, and maybe the infrastructure should enforce this with an assertion.
Should be addressed in core-main #4a0289b39cb6.

Still not enough:
at org.netbeans.modules.projectapi.LazyLookupProviders$1$1.beforeLookup(LazyLookupProviders.java:90)
- waiting to lock <0xb3b10678> (a org.netbeans.modules.projectapi.LazyLookupProviders$1$1)
at org.openide.util.lookup.ProxyLookup$R.myBeforeLookup(ProxyLookup.java:672)
at org.openide.util.lookup.ProxyLookup$R.beforeLookup(ProxyLookup.java:691)
at org.openide.util.lookup.ProxyLookup$R.myBeforeLookup(ProxyLookup.java:680)
at org.openide.util.lookup.ProxyLookup$R.beforeLookup(ProxyLookup.java:691)
at org.openide.util.lookup.ExcludingLookup$R.beforeLookup(ExcludingLookup.java:294)
at org.openide.util.lookup.ProxyLookup$R.myBeforeLookup(ProxyLookup.java:680)
at org.openide.util.lookup.ProxyLookup$R.computeResult(ProxyLookup.java:526)
at org.openide.util.lookup.ProxyLookup$R.allInstances(ProxyLookup.java:497)
at org.openide.util.lookup.ProxyLookup$R.collectFires(ProxyLookup.java:634)
at org.openide.util.lookup.ProxyLookup.setLookups(ProxyLookup.java:168)
at org.openide.util.lookup.ProxyLookup.setLookups(ProxyLookup.java:124)
at org.netbeans.spi.project.support.DelegatingLookupImpl.doDelegate(DelegatingLookupImpl.java:178)
at org.netbeans.spi.project.support.DelegatingLookupImpl.resultChanged(DelegatingLookupImpl.java:101)
at org.openide.util.lookup.ProxyLookup$1Notify.run(ProxyLookup.java:179)
at org.openide.util.lookup.ProxyLookup.setLookups(ProxyLookup.java:188)
at org.openide.util.lookup.ProxyLookup.setLookups(ProxyLookup.java:124)
at org.netbeans.modules.projectapi.LazyLookupProviders$1$1.beforeLookup(LazyLookupProviders.java:106)
- locked <0xb3bb7918> (a org.netbeans.modules.projectapi.LazyLookupProviders$1$1)
at org.netbeans.modules.projectapi.LazyLookupProviders$1$1.beforeLookup(LazyLookupProviders.java:90)
- waiting to lock <0xb3bb7918> (a org.netbeans.modules.projectapi.LazyLookupProviders$1$1)
at org.openide.util.lookup.ProxyLookup$R.myBeforeLookup(ProxyLookup.java:672)
at org.openide.util.lookup.ProxyLookup$R.beforeLookup(ProxyLookup.java:691)
at org.openide.util.lookup.ProxyLookup$R.myBeforeLookup(ProxyLookup.java:680)
at org.openide.util.lookup.ProxyLookup$R.computeResult(ProxyLookup.java:526)
at org.openide.util.lookup.ProxyLookup$R.allItems(ProxyLookup.java:517)
at org.openide.util.lookup.ProxyLookup$R.collectFires(ProxyLookup.java:639)
at org.openide.util.lookup.ProxyLookup$WeakResult.collectFires(ProxyLookup.java:756)
at org.openide.util.lookup.AbstractLookup.notifyListeners(AbstractLookup.java:562)
at org.openide.util.lookup.ProxyLookup$R.collectFires(ProxyLookup.java:662)
at org.openide.util.lookup.ProxyLookup.setLookups(ProxyLookup.java:168)
at org.openide.util.lookup.ProxyLookup.setLookups(ProxyLookup.java:124)
at org.netbeans.modules.projectapi.LazyLookupProviders$1$1.beforeLookup(LazyLookupProviders.java:106)
- locked <0xb3b10678> (a org.netbeans.modules.projectapi.LazyLookupProviders$1$1)

Does not look like I can assure that only one instance of the service will ever appear in the project lookup without enough synchronization that some deadlocks will occur. The race condition seems preferable.