public Statuses GetTimeline(DateTime since) { try { String responseBody = GET(String.Format("/statuses/friends_timeline.xml?since={0}", Utility.UrlEncode(since.ToUniversalTime().ToString("r")))); Statuses statuses; if (NilClasses.CanDeserialize(responseBody)) { statuses = new Statuses(); statuses.Status = new Status[0]; } else { statuses = Statuses.Serializer.Deserialize(new StringReader(responseBody)) as Statuses; if (statuses == null || statuses.Status == null) { statuses = new Statuses(); statuses.Status = new Status[0]; } } responseBody = GET("/statuses/replies.xml"); if (!NilClasses.CanDeserialize(responseBody)) { Statuses replies = Statuses.Serializer.Deserialize(new StringReader(responseBody)) as Statuses; if (statuses != null && statuses.Status != null) { List merged = new List (); merged.AddRange (statuses.Status); merged.AddRange (replies.Status); statuses.Status = merged.ToArray (); } } return statuses; } catch (WebException we) { throw; } catch (InvalidOperationException ioe) { // XmlSerializer throw new TwitterServiceException(ioe); } catch (XmlException xe) { throw new TwitterServiceException(xe); } catch (IOException ie) { throw new TwitterServiceException(ie); } }