Program: 48195
Project: 48195
Buggy source:
private synchronized Object parse(XmlPullParser parser) throws XmlPullParserException, IOException, ParserConfigurationException {
  if (parser.getName().equals("String_Node_Str")) {
    DestroyChannelResponse destroyChannelResponse=new DestroyChannelResponse();
    int eventType;
    do {
      parser.next();
      eventType=parser.getEventType();
      if (eventType == XmlPullParser.START_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
          destroyChannelResponse.setResult(this.parseResult(parser));
        }
      }
    }
 while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("String_Node_Str")));
    return destroyChannelResponse;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    EstablishChannelResponse establishChannelResponse=new EstablishChannelResponse();
    int eventType;
    do {
      parser.next();
      eventType=parser.getEventType();
      if (eventType == XmlPullParser.START_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
          establishChannelResponse.setResult(this.parseResult(parser));
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          establishChannelResponse.setAuthenticationProtocolData(this.parseDIDAuthenticationDataType(parser));
        }
      }
    }
 while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("String_Node_Str")));
    return establishChannelResponse;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    DIDAuthenticate didAuthenticate=new DIDAuthenticate();
    int eventType;
    do {
      parser.next();
      eventType=parser.getEventType();
      if (eventType == XmlPullParser.START_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
          didAuthenticate.setDIDName(parser.nextText());
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          ConnectionHandleType cht=new ConnectionHandleType();
          cht.setSlotHandle(StringUtils.toByteArray(parser.nextText()));
          didAuthenticate.setConnectionHandle(cht);
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          didAuthenticate.setAuthenticationProtocolData(this.parseDIDAuthenticationDataType(parser));
        }
      }
    }
 while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("String_Node_Str")));
    return didAuthenticate;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    StartPAOSResponse startPAOSResponse=new StartPAOSResponse();
    int eventType;
    do {
      parser.next();
      eventType=parser.getEventType();
      if (eventType == XmlPullParser.START_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
          startPAOSResponse.setResult(this.parseResult(parser));
        }
      }
    }
 while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("String_Node_Str")));
    return startPAOSResponse;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    InitializeFramework initializeFramework=new InitializeFramework();
    return initializeFramework;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    return parseConclusion(parser);
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    WaitResponse waitResponse=new WaitResponse();
    int eventType;
    do {
      parser.next();
      eventType=parser.getEventType();
      if (eventType == XmlPullParser.START_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
          waitResponse.setResult(this.parseResult(parser));
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          waitResponse.getIFDEvent().add(parseIFDStatusType(parser,"String_Node_Str"));
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          waitResponse.setSessionIdentifier(parser.nextText());
        }
      }
    }
 while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("String_Node_Str")));
    return waitResponse;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    GetStatusResponse getStatusResponse=new GetStatusResponse();
    int eventType;
    do {
      parser.next();
      eventType=parser.getEventType();
      if (eventType == XmlPullParser.START_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
          getStatusResponse.setResult(this.parseResult(parser));
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          getStatusResponse.getIFDStatus().add(parseIFDStatusType(parser,"String_Node_Str"));
        }
      }
    }
 while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("String_Node_Str")));
    return getStatusResponse;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    ListIFDs listIFDs=new ListIFDs();
    int eventType;
    do {
      parser.next();
      eventType=parser.getEventType();
      if (eventType == XmlPullParser.START_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
          listIFDs.setContextHandle(StringUtils.toByteArray(parser.nextText()));
        }
      }
    }
 while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("String_Node_Str")));
    return listIFDs;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    GetRecognitionTreeResponse resp=new GetRecognitionTreeResponse();
    RecognitionTree recTree=new RecognitionTree();
    int eventType;
    do {
      parser.next();
      eventType=parser.getEventType();
      if (eventType == XmlPullParser.START_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
          resp.setResult(this.parseResult(parser));
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          recTree.getCardCall().add(this.parseCardCall(parser));
        }
      }
 else       if (eventType == XmlPullParser.END_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
        }
      }
    }
 while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("String_Node_Str")));
    resp.setRecognitionTree(recTree);
    return resp;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    EstablishContext establishContext=new EstablishContext();
    return establishContext;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    EstablishContextResponse establishContextResponse=new EstablishContextResponse();
    int eventType;
    do {
      parser.next();
      eventType=parser.getEventType();
      if (eventType == XmlPullParser.START_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
          establishContextResponse.setResult(this.parseResult(parser));
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          establishContextResponse.setContextHandle(StringUtils.toByteArray(parser.nextText()));
        }
      }
    }
 while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("String_Node_Str")));
    return establishContextResponse;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    ListIFDsResponse listIFDsResponse=new ListIFDsResponse();
    int eventType;
    do {
      parser.next();
      eventType=parser.getEventType();
      if (eventType == XmlPullParser.START_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
          listIFDsResponse.setResult(this.parseResult(parser));
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          listIFDsResponse.getIFDName().add(parser.nextText());
        }
      }
    }
 while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("String_Node_Str")));
    return listIFDsResponse;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    ConnectResponse connectResponse=new ConnectResponse();
    int eventType;
    do {
      parser.next();
      eventType=parser.getEventType();
      if (eventType == XmlPullParser.START_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
          connectResponse.setResult(this.parseResult(parser));
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          connectResponse.setSlotHandle(StringUtils.toByteArray(parser.nextText()));
        }
      }
    }
 while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("String_Node_Str")));
    return connectResponse;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    Connect c=new Connect();
    int eventType;
    do {
      parser.next();
      eventType=parser.getEventType();
      if (eventType == XmlPullParser.START_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
          c.setIFDName(parser.nextText());
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          c.setContextHandle(StringUtils.toByteArray(parser.nextText()));
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          c.setSlot(new BigInteger(parser.nextText()));
        }
      }
    }
 while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("String_Node_Str")));
    return c;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    Disconnect d=new Disconnect();
    int eventType;
    do {
      parser.next();
      eventType=parser.getEventType();
      if (eventType == XmlPullParser.START_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
          d.setSlotHandle(StringUtils.toByteArray(parser.nextText()));
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          d.setAction(ActionType.fromValue(parser.nextText()));
        }
      }
    }
 while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("String_Node_Str")));
    return d;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    Transmit t=new Transmit();
    int eventType;
    do {
      parser.next();
      eventType=parser.getEventType();
      if (eventType == XmlPullParser.START_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
          t.getInputAPDUInfo().add(this.parseInputAPDUInfo(parser));
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          t.setSlotHandle(StringUtils.toByteArray(parser.nextText()));
        }
      }
    }
 while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("String_Node_Str")));
    return t;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    TransmitResponse transmitResponse=new TransmitResponse();
    int eventType;
    do {
      parser.next();
      eventType=parser.getEventType();
      if (eventType == XmlPullParser.START_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
          transmitResponse.setResult(this.parseResult(parser));
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          transmitResponse.getOutputAPDU().add(StringUtils.toByteArray(parser.nextText()));
        }
      }
    }
 while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("String_Node_Str")));
    return transmitResponse;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    CardInfo cardInfo=new CardInfo();
    ApplicationCapabilitiesType applicationCapabilities=new ApplicationCapabilitiesType();
    int eventType;
    do {
      parser.next();
      eventType=parser.getEventType();
      if (eventType == XmlPullParser.START_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
          CardTypeType cardType=new CardTypeType();
          cardType.setObjectIdentifier(parser.nextText());
          cardInfo.setCardType(cardType);
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          applicationCapabilities.setImplicitlySelectedApplication(StringUtils.toByteArray(parser.nextText()));
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          applicationCapabilities.getCardApplication().add(this.parseCardApplication(parser));
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          InternationalStringType internationalString=new InternationalStringType();
          internationalString.setLang(parser.getAttributeValue("String_Node_Str","String_Node_Str"));
          internationalString.setValue(parser.nextText());
          cardInfo.getCardType().getCardTypeName().add(internationalString);
        }
      }
    }
 while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("String_Node_Str")));
    cardInfo.setApplicationCapabilities(applicationCapabilities);
    return cardInfo;
  }
 else {
    return null;
  }
}

Fixed version (ground truth):
private synchronized Object parse(XmlPullParser parser) throws XmlPullParserException, IOException, ParserConfigurationException, DatatypeConfigurationException {
  if (parser.getName().equals("String_Node_Str")) {
    DestroyChannelResponse destroyChannelResponse=new DestroyChannelResponse();
    int eventType;
    do {
      parser.next();
      eventType=parser.getEventType();
      if (eventType == XmlPullParser.START_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
          destroyChannelResponse.setResult(this.parseResult(parser));
        }
      }
    }
 while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("String_Node_Str")));
    return destroyChannelResponse;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    EstablishChannelResponse establishChannelResponse=new EstablishChannelResponse();
    int eventType;
    do {
      parser.next();
      eventType=parser.getEventType();
      if (eventType == XmlPullParser.START_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
          establishChannelResponse.setResult(this.parseResult(parser));
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          establishChannelResponse.setAuthenticationProtocolData(this.parseDIDAuthenticationDataType(parser));
        }
      }
    }
 while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("String_Node_Str")));
    return establishChannelResponse;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    DIDAuthenticate didAuthenticate=new DIDAuthenticate();
    int eventType;
    do {
      parser.next();
      eventType=parser.getEventType();
      if (eventType == XmlPullParser.START_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
          didAuthenticate.setDIDName(parser.nextText());
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          ConnectionHandleType cht=new ConnectionHandleType();
          cht.setSlotHandle(StringUtils.toByteArray(parser.nextText()));
          didAuthenticate.setConnectionHandle(cht);
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          didAuthenticate.setAuthenticationProtocolData(this.parseDIDAuthenticationDataType(parser));
        }
      }
    }
 while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("String_Node_Str")));
    return didAuthenticate;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    StartPAOSResponse startPAOSResponse=new StartPAOSResponse();
    int eventType;
    do {
      parser.next();
      eventType=parser.getEventType();
      if (eventType == XmlPullParser.START_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
          startPAOSResponse.setResult(this.parseResult(parser));
        }
      }
    }
 while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("String_Node_Str")));
    return startPAOSResponse;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    InitializeFramework initializeFramework=new InitializeFramework();
    return initializeFramework;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    return parseConclusion(parser);
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    WaitResponse waitResponse=new WaitResponse();
    int eventType;
    do {
      parser.next();
      eventType=parser.getEventType();
      if (eventType == XmlPullParser.START_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
          waitResponse.setResult(this.parseResult(parser));
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          waitResponse.getIFDEvent().add(parseIFDStatusType(parser,"String_Node_Str"));
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          waitResponse.setSessionIdentifier(parser.nextText());
        }
      }
    }
 while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("String_Node_Str")));
    return waitResponse;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    GetStatusResponse getStatusResponse=new GetStatusResponse();
    int eventType;
    do {
      parser.next();
      eventType=parser.getEventType();
      if (eventType == XmlPullParser.START_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
          getStatusResponse.setResult(this.parseResult(parser));
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          getStatusResponse.getIFDStatus().add(parseIFDStatusType(parser,"String_Node_Str"));
        }
      }
    }
 while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("String_Node_Str")));
    return getStatusResponse;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    ListIFDs listIFDs=new ListIFDs();
    int eventType;
    do {
      parser.next();
      eventType=parser.getEventType();
      if (eventType == XmlPullParser.START_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
          listIFDs.setContextHandle(StringUtils.toByteArray(parser.nextText()));
        }
      }
    }
 while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("String_Node_Str")));
    return listIFDs;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    GetRecognitionTreeResponse resp=new GetRecognitionTreeResponse();
    RecognitionTree recTree=new RecognitionTree();
    int eventType;
    do {
      parser.next();
      eventType=parser.getEventType();
      if (eventType == XmlPullParser.START_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
          resp.setResult(this.parseResult(parser));
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          recTree.getCardCall().add(this.parseCardCall(parser));
        }
      }
 else       if (eventType == XmlPullParser.END_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
        }
      }
    }
 while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("String_Node_Str")));
    resp.setRecognitionTree(recTree);
    return resp;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    EstablishContext establishContext=new EstablishContext();
    return establishContext;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    EstablishContextResponse establishContextResponse=new EstablishContextResponse();
    int eventType;
    do {
      parser.next();
      eventType=parser.getEventType();
      if (eventType == XmlPullParser.START_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
          establishContextResponse.setResult(this.parseResult(parser));
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          establishContextResponse.setContextHandle(StringUtils.toByteArray(parser.nextText()));
        }
      }
    }
 while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("String_Node_Str")));
    return establishContextResponse;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    ListIFDsResponse listIFDsResponse=new ListIFDsResponse();
    int eventType;
    do {
      parser.next();
      eventType=parser.getEventType();
      if (eventType == XmlPullParser.START_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
          listIFDsResponse.setResult(this.parseResult(parser));
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          listIFDsResponse.getIFDName().add(parser.nextText());
        }
      }
    }
 while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("String_Node_Str")));
    return listIFDsResponse;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    ConnectResponse connectResponse=new ConnectResponse();
    int eventType;
    do {
      parser.next();
      eventType=parser.getEventType();
      if (eventType == XmlPullParser.START_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
          connectResponse.setResult(this.parseResult(parser));
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          connectResponse.setSlotHandle(StringUtils.toByteArray(parser.nextText()));
        }
      }
    }
 while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("String_Node_Str")));
    return connectResponse;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    Connect c=new Connect();
    int eventType;
    do {
      parser.next();
      eventType=parser.getEventType();
      if (eventType == XmlPullParser.START_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
          c.setIFDName(parser.nextText());
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          c.setContextHandle(StringUtils.toByteArray(parser.nextText()));
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          c.setSlot(new BigInteger(parser.nextText()));
        }
      }
    }
 while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("String_Node_Str")));
    return c;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    Disconnect d=new Disconnect();
    int eventType;
    do {
      parser.next();
      eventType=parser.getEventType();
      if (eventType == XmlPullParser.START_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
          d.setSlotHandle(StringUtils.toByteArray(parser.nextText()));
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          d.setAction(ActionType.fromValue(parser.nextText()));
        }
      }
    }
 while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("String_Node_Str")));
    return d;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    Transmit t=new Transmit();
    int eventType;
    do {
      parser.next();
      eventType=parser.getEventType();
      if (eventType == XmlPullParser.START_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
          t.getInputAPDUInfo().add(this.parseInputAPDUInfo(parser));
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          t.setSlotHandle(StringUtils.toByteArray(parser.nextText()));
        }
      }
    }
 while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("String_Node_Str")));
    return t;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    TransmitResponse transmitResponse=new TransmitResponse();
    int eventType;
    do {
      parser.next();
      eventType=parser.getEventType();
      if (eventType == XmlPullParser.START_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
          transmitResponse.setResult(this.parseResult(parser));
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          transmitResponse.getOutputAPDU().add(StringUtils.toByteArray(parser.nextText()));
        }
      }
    }
 while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("String_Node_Str")));
    return transmitResponse;
  }
 else   if (parser.getName().equals("String_Node_Str")) {
    CardInfo cardInfo=new CardInfo();
    ApplicationCapabilitiesType applicationCapabilities=new ApplicationCapabilitiesType();
    int eventType;
    do {
      parser.next();
      eventType=parser.getEventType();
      if (eventType == XmlPullParser.START_TAG) {
        if (parser.getName().equals("String_Node_Str")) {
          CardTypeType cardType=new CardTypeType();
          cardType.setObjectIdentifier(parser.nextText());
          cardInfo.setCardType(cardType);
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          applicationCapabilities.setImplicitlySelectedApplication(StringUtils.toByteArray(parser.nextText()));
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          applicationCapabilities.getCardApplication().add(this.parseCardApplication(parser));
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          InternationalStringType internationalString=new InternationalStringType();
          String lang=parser.getAttributeValue("String_Node_Str","String_Node_Str");
          internationalString.setLang(lang);
          internationalString.setValue(parser.nextText());
          cardInfo.getCardType().getCardTypeName().add(internationalString);
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          cardInfo.getCardType().setSpecificationBodyOrIssuer(parser.nextText());
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          cardInfo.getCardType().setStatus(parser.nextText());
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          String text=parser.nextText();
          XMLGregorianCalendar date=DatatypeFactory.newInstance().newXMLGregorianCalendar(text);
          cardInfo.getCardType().setDate(date);
        }
 else         if (parser.getName().equals("String_Node_Str")) {
          cardInfo.getCardType().setVersion(this.parseVersion(parser));
        }
      }
    }
 while (!(eventType == XmlPullParser.END_TAG && parser.getName().equals("String_Node_Str")));
    cardInfo.setApplicationCapabilities(applicationCapabilities);
    return cardInfo;
  }
 else {
    return null;
  }
}