public override void CreateTestGraph(GraphDatabaseService graphDb)
        {
            using (Transaction tx = graphDb.BeginTx())
            {
                graphDb.Schema().indexFor(label("Node")).on("prop").create();
                graphDb.Schema().indexFor(label("Node")).on("prop").on("prip").create();
                tx.Success();
            }
            using (Transaction tx = graphDb.BeginTx())
            {
                graphDb.Schema().awaitIndexesOnline(5, MINUTES);
                tx.Success();
            }

            RandomValues randomValues = RandomRule.randomValues();

            ValueType[] allExceptNonOrderable = RandomValues.excluding(ValueType.STRING, ValueType.STRING_ARRAY, ValueType.GEOGRAPHIC_POINT, ValueType.GEOGRAPHIC_POINT_ARRAY, ValueType.GEOGRAPHIC_POINT_3D, ValueType.GEOGRAPHIC_POINT_3D_ARRAY, ValueType.CARTESIAN_POINT, ValueType.CARTESIAN_POINT_ARRAY, ValueType.CARTESIAN_POINT_3D, ValueType.CARTESIAN_POINT_3D_ARRAY);
            _targetedTypes = randomValues.Selection(allExceptNonOrderable, 1, allExceptNonOrderable.Length, false);
            _targetedTypes = EnsureHighEnoughCardinality(_targetedTypes);
            using (Transaction tx = graphDb.BeginTx())
            {
                for (int i = 0; i < _nNodes; i++)
                {
                    Node           node = graphDb.CreateNode(label("Node"));
                    Value          propValue;
                    Value          pripValue;
                    NodeValueTuple singleValue;
                    NodeValueTuple doubleValue;
                    do
                    {
                        propValue   = randomValues.NextValueOfTypes(_targetedTypes);
                        pripValue   = randomValues.NextValueOfTypes(_targetedTypes);
                        singleValue = new NodeValueTuple(this, node.Id, propValue);
                        doubleValue = new NodeValueTuple(this, node.Id, propValue, pripValue);
                    } while (_singlePropValues.Contains(singleValue) || _doublePropValues.Contains(doubleValue));
                    _singlePropValues.Add(singleValue);
                    _doublePropValues.Add(doubleValue);

                    node.SetProperty("prop", propValue.AsObject());
                    node.SetProperty("prip", pripValue.AsObject());
                }
                tx.Success();
            }
        }