public static DocumentPlaceholder <T, TData> CreatePlaceholderAndReverse(int targetId, TData targetData,
                                                                          IDocumentPlaceholder targetPlaceholder,
                                                                          int currentDocId, IDocumentPointerData currentData)
 {
     UpdatePeerPointerReverse(targetPlaceholder, currentDocId, currentData);
     return(CreatePlaceholder(targetId, targetData));
 }
        private static void UpdatePeerPointerReverse(IDocumentPlaceholder targetPlaceholder,
                                                     int currentDocId, IDocumentPointerData currentData)
        {
            if (targetPlaceholder == null)
            {
                throw new ArgumentNullException("targetPlaceholder");
            }
            targetPlaceholder.DocId = currentDocId;

            if (currentData != null)
            {
                targetPlaceholder.Data = currentData;
            }
        }