//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void concurrentlyCommittingTransactionsMustNotRotateOutLoggedCommandsOfFailingTransaction() throws Exception
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
        public virtual void ConcurrentlyCommittingTransactionsMustNotRotateOutLoggedCommandsOfFailingTransaction()
        {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final org.neo4j.adversaries.ClassGuardedAdversary adversary = new org.neo4j.adversaries.ClassGuardedAdversary(new org.neo4j.adversaries.CountingAdversary(1, false), org.neo4j.kernel.impl.transaction.command.Command.RelationshipCommand.class);
            ClassGuardedAdversary adversary = new ClassGuardedAdversary(new CountingAdversary(1, false), typeof(Command.RelationshipCommand));

            adversary.Disable();

            File storeDir = Dir.storeDir();
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final java.util.Map<String,String> params = stringMap(org.neo4j.graphdb.factory.GraphDatabaseSettings.pagecache_memory.name(), "8m");
            IDictionary <string, string> @params = stringMap(GraphDatabaseSettings.pagecache_memory.name(), "8m");
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final org.neo4j.graphdb.facade.embedded.EmbeddedGraphDatabase db = new TestEmbeddedGraphDatabase(storeDir, params)
            EmbeddedGraphDatabase db = new TestEmbeddedGraphDatabaseAnonymousInnerClass(this, storeDir, @params, adversary);

            Node a;
            Node b;
            Node c;
            Node d;

            using (Transaction tx = Db.beginTx())
            {
                a = Db.createNode();
                b = Db.createNode();
                c = Db.createNode();
                d = Db.createNode();
                tx.Success();
            }

            adversary.Enable();
            System.Threading.CountdownEvent latch = new System.Threading.CountdownEvent(1);
            Thread t1 = new Thread(CreateRelationship(db, a, b, latch), "T1");
            Thread t2 = new Thread(CreateRelationship(db, c, d, latch), "T2");

            t1.Start();
            t2.Start();
            // Wait for both threads to get going
            t1.Join(10);
            t2.Join(10);
            latch.Signal();

            // Wait for the transactions to finish
            t1.Join(25000);
            t2.Join(25000);
            Db.shutdown();

            // We should observe the store in a consistent state
            EmbeddedGraphDatabase db2 = new TestEmbeddedGraphDatabase(storeDir, @params);

            try
            {
                using (Transaction tx = db2.BeginTx())
                {
                    Node x = db2.GetNodeById(a.Id);
                    Node y = db2.GetNodeById(b.Id);
                    Node z = db2.GetNodeById(c.Id);
                    Node w = db2.GetNodeById(d.Id);
                    IEnumerator <Relationship> itrRelX = x.Relationships.GetEnumerator();
                    IEnumerator <Relationship> itrRelY = y.Relationships.GetEnumerator();
                    IEnumerator <Relationship> itrRelZ = z.Relationships.GetEnumerator();
                    IEnumerator <Relationship> itrRelW = w.Relationships.GetEnumerator();

//JAVA TO C# CONVERTER TODO TASK: Java iterators are only converted within the context of 'while' and 'for' loops:
                    if (itrRelX.hasNext() != itrRelY.hasNext())
                    {
                        fail("Node x and y have inconsistent relationship counts");
                    }
//JAVA TO C# CONVERTER TODO TASK: Java iterators are only converted within the context of 'while' and 'for' loops:
                    else if (itrRelX.hasNext())
                    {
//JAVA TO C# CONVERTER TODO TASK: Java iterators are only converted within the context of 'while' and 'for' loops:
                        Relationship rel = itrRelX.next();
//JAVA TO C# CONVERTER TODO TASK: Java iterators are only converted within the context of 'while' and 'for' loops:
                        assertEquals(rel, itrRelY.next());
//JAVA TO C# CONVERTER TODO TASK: Java iterators are only converted within the context of 'while' and 'for' loops:
                        assertFalse(itrRelX.hasNext());
//JAVA TO C# CONVERTER TODO TASK: Java iterators are only converted within the context of 'while' and 'for' loops:
                        assertFalse(itrRelY.hasNext());
                    }

//JAVA TO C# CONVERTER TODO TASK: Java iterators are only converted within the context of 'while' and 'for' loops:
                    if (itrRelZ.hasNext() != itrRelW.hasNext())
                    {
                        fail("Node z and w have inconsistent relationship counts");
                    }
//JAVA TO C# CONVERTER TODO TASK: Java iterators are only converted within the context of 'while' and 'for' loops:
                    else if (itrRelZ.hasNext())
                    {
//JAVA TO C# CONVERTER TODO TASK: Java iterators are only converted within the context of 'while' and 'for' loops:
                        Relationship rel = itrRelZ.next();
//JAVA TO C# CONVERTER TODO TASK: Java iterators are only converted within the context of 'while' and 'for' loops:
                        assertEquals(rel, itrRelW.next());
//JAVA TO C# CONVERTER TODO TASK: Java iterators are only converted within the context of 'while' and 'for' loops:
                        assertFalse(itrRelZ.hasNext());
//JAVA TO C# CONVERTER TODO TASK: Java iterators are only converted within the context of 'while' and 'for' loops:
                        assertFalse(itrRelW.hasNext());
                    }
                }
            }
            finally
            {
                db2.Shutdown();
            }
        }
 public GraphDatabaseFacadeFactoryAnonymousInnerClass(TestEmbeddedGraphDatabaseAnonymousInnerClass outerInstance, DatabaseInfo community, File storeDir, GraphDatabaseFacadeFactory.Dependencies dependencies) : base(community, CommunityEditionModule::new)