public KeyValuePair fromStream(InputStream is) throws IOException {
// Debug.p("CASTransportable.fromStream");
boolean done = false;
try {
XTalkToSAX converter = new XTalkToSAX();
// Debug.p("parsing...");
converter.parse(is, this);
// Debug.p("...done parsing.");
done = true;
} catch (SAXException e) {
//if SAXException wraps an IOException, throw the IOException. This is
//important since different types of IOExceptions (e.g. SocketTimeoutExceptions)