private void WriteNavigationLink(ODataWriter writer, Lazy<ODataReader> lazyReader, ODataNavigationLink link) { this.WriteStart(writer, link); var expanded = link.GetAnnotation<ODataNavigationLinkExpandedItemObjectModelAnnotation>(); if (expanded != null) { var feed = expanded.ExpandedItem as ODataFeed; if (feed != null) { this.WriteFeed(writer, lazyReader, feed); } else { ODataEntry entry = expanded.ExpandedItem as ODataEntry; if (entry != null || expanded.ExpandedItem == null) { this.WriteEntry(writer, lazyReader, entry); } else { ExceptionUtilities.Assert(expanded.ExpandedItem is ODataEntityReferenceLink, "Content of a nav. link can only be a feed, entry or entity reference link."); writer.WriteEntityReferenceLink((ODataEntityReferenceLink)expanded.ExpandedItem); } } } this.WriteEnd(writer, ODataReaderState.NavigationLinkEnd); this.Read(lazyReader); }