public FluentQueryBuilder RelateTo(IFactoryNode relatedFrom, IFactoryRelationship relationship, IFactoryNode relatedTo)
 {
     _relateToStack.AddLast(new RelateToQueueItem { RelatedFrom = relatedFrom, Relationship = relationship, RelatedTo = relatedTo});
     return this;
 }
 public FluentQueryBuilder Replace(IFactoryNode relatedFrom, IFactoryRelationship relationshipToRemove, IFactoryNode relatedTo, IFactoryNode createFrom, IFactoryRelationship createRelationship, IFactoryNode createTo, IFactoryNode property)
 {
     _replaceStack.AddLast(new ReplaceQueueItem
     {
         RelatedFrom = relatedFrom, 
         RelationshipToRemove = relationshipToRemove, 
         RelatedTo = relatedTo,
         CreateFrom = createFrom,
         CreateRelationship = createRelationship,
         CreateTo = createTo,
         Property = property
     });
     return this;
 }
        private void ProcessRelateTo(IFactoryNode relatedFrom, IFactoryRelationship relationship, IFactoryNode relatedTo)
        {

            if (relatedFrom == null || relatedTo == null) throw new ArgumentNullException("relatedFrom || relatedTo");


            var relatedFromQueryItems = GetQueryNodeValue(relatedFrom);
            var relatedToQueryItems = GetQueryNodeValue(relatedTo);


            var createQuery = String.Format("{0}-{1}->{2}", relatedFromQueryItems, relationship.Relationship(),
                relatedToQueryItems);



            Add(QueryTypeEnum.Merge, createQuery);

        }