// Path: src/main/java/org/neo4j/neode/logging/Log.java
// public interface Log
// {
//     void write( String value );
// }


import java.util.ArrayList;
import java.util.List;
import org.neo4j.neode.logging.Log;
package org.neo4j.neode;



class Commands
{
    private final List<BatchCommand<NodeCollection>> commands;
    private final CommandSelectionStrategy commandSelectionStrategy;

    Commands( List<BatchCommand<NodeCollection>> commands, CommandSelectionStrategy commandSelectionStrategy )
    {
        this.commands = commands;
        this.commandSelectionStrategy = commandSelectionStrategy;
    }

    public BatchCommand<NodeCollection> nextCommand()
    {
        return commandSelectionStrategy.nextCommand( commands );
    }

    public List<NodeCollection> results()
    {
        List<NodeCollection> results = new ArrayList<NodeCollection>();
        for ( BatchCommand<NodeCollection> command : commands )
        {
            results.add( command.results() );
        }
        return results;
    }

// Path: src/main/java/org/neo4j/neode/logging/Log.java
// public interface Log
// {
//     void write( String value );
// }


// Path: src/main/java/org/neo4j/neode/Commands.java
import java.util.ArrayList;
import java.util.List;
import org.neo4j.neode.logging.Log;

package org.neo4j.neode;



class Commands
{
    private final List<BatchCommand<NodeCollection>> commands;
    private final CommandSelectionStrategy commandSelectionStrategy;

    Commands( List<BatchCommand<NodeCollection>> commands, CommandSelectionStrategy commandSelectionStrategy )
    {
        this.commands = commands;
        this.commandSelectionStrategy = commandSelectionStrategy;
    }

    public BatchCommand<NodeCollection> nextCommand()
    {
        return commandSelectionStrategy.nextCommand( commands );
    }

    public List<NodeCollection> results()
    {
        List<NodeCollection> results = new ArrayList<NodeCollection>();
        for ( BatchCommand<NodeCollection> command : commands )
        {
            results.add( command.results() );
        }
        return results;
    }

    public void onBegin( Log log )