private Item TryCall(Func <Item> targetFunction)
        {
            try
            {
                return(targetFunction());
            }
            catch (InnovatorServerException e)
            {
                XmlDocument faultDocument = Innovator.newXMLDocument();
                e.ToSoapFault(faultDocument);

                Item errorItem = NewItem();
                errorItem.loadAML(faultDocument.OuterXml);

                return(errorItem);
            }
        }