//Get as of date information
 private void GetInstantDateInformation()
 {
     var elements = instanceElement.ElementsByLocalName("Assets|AssetsCurrent|LiabilitiesAndStockholdersEquity").Where(e => e.Attribute("contextRef") != null);
     var contextList = elements.Select(e => contexts[e.Attribute("contextRef").Value]).Distinct().Where(c => c.ExplicitMember == null && c.EndDate == DocumentPeriodEndDate && c.Type == "instant");
     instantContext = contextList.LastOrDefault();
 }
 private void LoadContexts()
 {
     contexts = instanceElement.ElementsByLocalName("context").Select(
         e =>
         {
             Context context = new Context(e);
             return new KeyValuePair<string, Context>(context.Id, context);
         }
         ).ToDictionary(kv => kv.Key, kv => kv.Value);
 }
 private void GetDurationDateInformation()
 {
     var elements = instanceElement.ElementsByLocalName("CashAndCashEquivalentsPeriodIncreaseDecrease|CashPeriodIncreaseDecrease|NetIncomeLoss|DocumentPeriodEndDate").Where(e => e.Attribute("contextRef") != null);
     var contextList = elements.Select(e => contexts[e.Attribute("contextRef").Value]).Distinct().Where(c => c.ExplicitMember == null && c.EndDate == DocumentPeriodEndDate && c.Type == "duration");
     DateTime startDate = DateTime.MaxValue;
     foreach (Context context in contextList)
     {
         if (context.StartDate < startDate) // && (context.EndDate.Month - context.StartDate.Month < 4 || DocumentType == "10-K")
         {
             startDate = context.StartDate;
             durationContext = context;
         }
     }
 }