AsyncOperation(
            NGCSerializerContext context
            )
        {
            if (context == null)
            {
            }

            switch (context.Action)
            {
            case SerializerAction.serializeNextDocumentReference:
            {
                NgcDocumentReferenceCollectionSerializerContext thisContext =
                    context as NgcDocumentReferenceCollectionSerializerContext;

                if (thisContext != null)
                {
                    SerializeNextDocumentReference(thisContext.Enumerator,
                                                   thisContext.ObjectContext);
                }

                break;
            }

            default:
            {
                base.AsyncOperation(context);
                break;
            }
            }
        }
        SerializeNextDocumentReference(
            IEnumerator enumerator,
            SerializableObjectContext serializableObjectContext
            )
        {
            if (enumerator.MoveNext())
            {
                NgcDocumentReferenceCollectionSerializerContext
                    context = new NgcDocumentReferenceCollectionSerializerContext(this,
                                                                                  serializableObjectContext,
                                                                                  enumerator,
                                                                                  SerializerAction.serializeNextDocumentReference);


                NgcSerializationManager.OperationStack.Push(context);

                object documentReference = enumerator.Current;

                SerializeDocumentReference(documentReference);
            }
        }
        BeginSerializeObject(
            Object serializedObject
            )
        {
            IEnumerator enumerator =
                ((System.Collections.Generic.IEnumerable <DocumentReference>)serializedObject).
                GetEnumerator();

            enumerator.Reset();

            SerializableObjectContext serializableObjectContext =
                SerializableObjectContext.CreateContext(SerializationManager,
                                                        serializedObject,
                                                        null,
                                                        null);

            NgcDocumentReferenceCollectionSerializerContext
                context = new NgcDocumentReferenceCollectionSerializerContext(this,
                                                                              serializableObjectContext,
                                                                              enumerator,
                                                                              SerializerAction.serializeNextDocumentReference);

            NgcSerializationManager.OperationStack.Push(context);
        }