public object Retrieve(string messagename, params object[] p)
{
if (p.Length == 0 || p[0] == null) return new List<Record>();
StreamReader reader = p[0] as StreamReader;
if (reader == null) return new List<Record>();
MessageDefinition definition = MessagingManager.Read(MessageDefinitionType.XSD, messagename);
XElement xmlMessage = XElement.Load(reader);
return xmlMessage.Elements().Select(element => CreateRecord(definition, element)).ToList();
}