// Path: src/main/java/org/neo4j/neode/interfaces/UpdateDataset.java
// public interface UpdateDataset<T>
// {
//     T update( Dataset dataset, int batchSize );
// 
//     T update( Dataset dataset );
// 
//     void updateNoReturn( Dataset dataset, int batchSize );
// 
//     void updateNoReturn( Dataset dataset );
// }
// 
// Path: src/main/java/org/neo4j/neode/properties/Property.java
// public abstract class Property
// {
//     public static Property property( String name )
//     {
//         return new NonIndexableProperty( name, new CounterBasedStringPropertyValueGenerator() );
//     }
// 
//     public static Property property( String name, PropertyValueGenerator generator )
//     {
//         return new NonIndexableProperty( name, generator );
//     }
// 
//     public static Property indexableProperty( GraphDatabaseService db, String label, String name, String... labelNames )
//     {
//         return indexableProperty( db,label, name, new CounterBasedStringPropertyValueGenerator(), labelNames );
//     }
// 
//     public static Property indexableProperty( GraphDatabaseService db, String label, String name, PropertyValueGenerator generator, String... labelNames )
//     {
//         return new IndexableProperty( db,label,name, generator, labelNames );
//     }
// 
//     public abstract void setProperty(PropertyContainer propertyContainer, String label,
//                                      int iteration);
// }


import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.neo4j.graphdb.DynamicLabel;
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Label;
import org.neo4j.graphdb.Node;
import org.neo4j.neode.interfaces.UpdateDataset;
import org.neo4j.neode.properties.Property;
import org.neo4j.tooling.GlobalGraphOperations;
package org.neo4j.neode;



public class NodeSpecification
{
    private final Label label;
    private final List<Property> properties;
    private final GraphDatabaseService db;

    NodeSpecification( String label, List<Property> properties, GraphDatabaseService db )
    {
        this( DynamicLabel.label(label), properties, db );
    }

    NodeSpecification( Label label, List<Property> properties, GraphDatabaseService db )
    {
        this.label = label;
        this.properties = properties;
        this.db = db;
    }

// Path: src/main/java/org/neo4j/neode/interfaces/UpdateDataset.java
// public interface UpdateDataset<T>
// {
//     T update( Dataset dataset, int batchSize );
// 
//     T update( Dataset dataset );
// 
//     void updateNoReturn( Dataset dataset, int batchSize );
// 
//     void updateNoReturn( Dataset dataset );
// }
// 
// Path: src/main/java/org/neo4j/neode/properties/Property.java
// public abstract class Property
// {
//     public static Property property( String name )
//     {
//         return new NonIndexableProperty( name, new CounterBasedStringPropertyValueGenerator() );
//     }
// 
//     public static Property property( String name, PropertyValueGenerator generator )
//     {
//         return new NonIndexableProperty( name, generator );
//     }
// 
//     public static Property indexableProperty( GraphDatabaseService db, String label, String name, String... labelNames )
//     {
//         return indexableProperty( db,label, name, new CounterBasedStringPropertyValueGenerator(), labelNames );
//     }
// 
//     public static Property indexableProperty( GraphDatabaseService db, String label, String name, PropertyValueGenerator generator, String... labelNames )
//     {
//         return new IndexableProperty( db,label,name, generator, labelNames );
//     }
// 
//     public abstract void setProperty(PropertyContainer propertyContainer, String label,
//                                      int iteration);
// }


// Path: src/main/java/org/neo4j/neode/NodeSpecification.java
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.neo4j.graphdb.DynamicLabel;
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Label;
import org.neo4j.graphdb.Node;
import org.neo4j.neode.interfaces.UpdateDataset;
import org.neo4j.neode.properties.Property;
import org.neo4j.tooling.GlobalGraphOperations;

package org.neo4j.neode;



public class NodeSpecification
{
    private final Label label;
    private final List<Property> properties;
    private final GraphDatabaseService db;

    NodeSpecification( String label, List<Property> properties, GraphDatabaseService db )
    {
        this( DynamicLabel.label(label), properties, db );
    }

    NodeSpecification( Label label, List<Property> properties, GraphDatabaseService db )
    {
        this.label = label;
        this.properties = properties;
        this.db = db;
    }

    public UpdateDataset<NodeCollection> create( int quantity )