//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void tracksNodeCommands()
        public virtual void TracksNodeCommands()
        {
            ExplicitIndexTransactionStateImpl state = NewExplicitIndexTxState();

            state.AddNode("index1", 1, "key1", "value1");
            state.RemoveNode("index1", 1, "key2", "value2");
            state.AddNode("index1", 2, "key1", "value3");
            state.AddNode("index1", 3, "key2", "value4");
            state.RemoveNode("index2", 4, "key1", "value5");

            IndexDefineCommand indexDefinedCommand = new IndexDefineCommand();

            indexDefinedCommand.GetOrAssignIndexNameId("index1");
            indexDefinedCommand.GetOrAssignIndexNameId("index2");
            indexDefinedCommand.GetOrAssignKeyId("key1");
            indexDefinedCommand.GetOrAssignKeyId("key2");

            ISet <Command> expectedCommands = new HashSet <Command>(Arrays.asList(indexDefinedCommand, AddNode(1, 1, 1, "value1"), RemoveNode(1, 1, 2, "value2"), AddNode(1, 2, 1, "value3"), AddNode(1, 3, 2, "value4"), RemoveNode(2, 4, 1, "value5")));

            assertEquals(expectedCommands, ExtractCommands(state));
        }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void nodeIndexDeletionRemovesCommands()
        public virtual void NodeIndexDeletionRemovesCommands()
        {
            ExplicitIndexTransactionStateImpl state = NewExplicitIndexTxState();

            state.AddNode("index", 1, "key", "value1");
            state.AddNode("index", 2, "key", "value2");
            state.RemoveNode("index", 3, "key", "value3");

            state.DeleteIndex(IndexEntityType.Node, "index");

            IndexDefineCommand indexDefinedCommand = new IndexDefineCommand();

            indexDefinedCommand.GetOrAssignIndexNameId("index");
            indexDefinedCommand.GetOrAssignKeyId("key");

            IndexCommand.DeleteCommand delete = new IndexCommand.DeleteCommand();
            delete.Init(1, IndexEntityType.Node.id());

            ISet <Command> expectedCommands = new HashSet <Command>(Arrays.asList(indexDefinedCommand, delete));

            assertEquals(expectedCommands, ExtractCommands(state));
        }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void removalOfRelationshipIndexDoesNotClearNodeCommandsForNodeIndexWithSameName()
        public virtual void RemovalOfRelationshipIndexDoesNotClearNodeCommandsForNodeIndexWithSameName()
        {
            ExplicitIndexTransactionStateImpl state = NewExplicitIndexTxState();

            state.AddNode("index", 1, "key", "value");
            state.AddRelationship("index", 1, "key", "value", 11, 11);
            state.DeleteIndex(IndexEntityType.Relationship, "index");

            IndexDefineCommand indexDefinedCommand = new IndexDefineCommand();

            indexDefinedCommand.GetOrAssignIndexNameId("index");
            indexDefinedCommand.GetOrAssignKeyId("key");

            IndexCommand.DeleteCommand delete = new IndexCommand.DeleteCommand();
            delete.Init(1, IndexEntityType.Relationship.id());

            ISet <Command> expectedCommands = new HashSet <Command>(Arrays.asList(indexDefinedCommand, delete, AddNode(1, 1, 1, "value")));

            assertEquals(expectedCommands, ExtractCommands(state));
        }