/// <summary>
        /// Adds triples with a given predicate and blank node objects to the subject indicated by the last call to <see cref="M:StartTriple"/>.
        /// </summary>
        /// <param name="predicate">The predicate.</param>
        /// <param name="objectsAsCollection">Indicates whether the objects are to be added as a collection rather than as individual triples.</param>
        /// <param name="object">The first object.</param>
        /// <param name="moreObjects">More objects.</param>
        /// <exception cref="ArgumentNullException"><paramref name="predicate"/> is <see langword="null"/>.</exception>
        /// <exception cref="ArgumentException"><paramref name="object"/> or any of the elements of <paramref name="moreObjects"/> was not created by the current Turtle writer.</exception>
        /// <exception cref="InvalidOperationException"><see cref="M:StartTriple"/> has not been called before.</exception>
        public void AddToTriple(Uri predicate, bool objectsAsCollection, TurtleBlankNode @object, params TurtleBlankNode[] moreObjects)
        {
            if (predicate == null) {
                throw new ArgumentNullException("predicate");
            }

            AddToTriple(predicate, objectsAsCollection,
                        Enumerable.Concat(new[] { @object }, moreObjects ?? new TurtleBlankNode[0]));
        }
        /// <summary>
        /// Starts a new triple with a given blank node as a subject.
        /// </summary>
        /// <param name="subject">The subject.</param>
        /// <exception cref="ArgumentNullException"><paramref name="subject"/> is <see langword="null"/>.</exception>
        /// <exception cref="ArgumentException"><paramref name="subject"/> was not created by the current Turtle writer.</exception>
        public void StartTriple(TurtleBlankNode subject)
        {
            if (subject == null) {
                throw new ArgumentNullException("subject");
            }
            subject.CheckOwner(this);

            storedSubject = "\n" + subject.TurtleRepresentation;
            isAnonymousSubjectStored = false;
            anonymousSubjectTriples = 0;
        }
 /// <summary>
 /// Adds individual triples with a given predicate and blank node objects to the subject indicated by the last call to <see cref="M:StartTriple"/>.
 /// </summary>
 /// <param name="predicate">The predicate.</param>
 /// <param name="object">The first object.</param>
 /// <param name="moreObjects">More objects.</param>
 /// <exception cref="ArgumentNullException"><paramref name="predicate"/> is <see langword="null"/>.</exception>
 /// <exception cref="ArgumentException"><paramref name="object"/> or any of the elements of <paramref name="moreObjects"/> was not created by the current Turtle writer.</exception>
 /// <exception cref="InvalidOperationException"><see cref="M:StartTriple"/> has not been called before.</exception>
 public void AddToTriple(Uri predicate, TurtleBlankNode @object, params TurtleBlankNode[] moreObjects)
 {
     AddToTriple(predicate, false, @object, moreObjects);
 }