@Override
  public SessionInfo build(Node applicationNode) {
    boolean expired = false;
    Integer playsLeft = 30;
    Integer playsElapsed = 0;

    node = applicationNode;
    Node radioPermissionsNode = XMLUtil.findNamedElementNode(node, "radioPermission");

    Node userNode = XMLUtil.findNamedElementNode(radioPermissionsNode, "user");
    boolean radio = !XMLUtil.getChildContents(userNode, "radio").contentEquals("0");
    boolean freeTrial = !XMLUtil.getChildContents(userNode, "freetrial").contentEquals("0");

    Node trialNode = XMLUtil.findNamedElementNode(userNode, "trial");
    if (trialNode != null) {
      expired = !XMLUtil.getChildContents(trialNode, "expired").contentEquals("0");
      playsLeft = Integer.parseInt(XMLUtil.getChildContents(trialNode, "playsleft"));
      playsElapsed = Integer.parseInt(XMLUtil.getChildContents(trialNode, "playselapsed"));
    }

    return new SessionInfo(radio, freeTrial, expired, playsLeft, playsElapsed);
  }
  @Override
  public RadioPlayList build(Node radioTracklistNode) {
    node = radioTracklistNode;

    String title = getText("title");
    String creator = getText("creator");
    String date = getText("date");
    String link = getText("link");
    String id = getText("id");
    boolean streamable = true;
    if (getText("streamable") != null && getText("streamable").contentEquals("0"))
      streamable = false;
    Node trackListNode = getChildNode("trackList");
    RadioTrack[] tracks = null;
    if (trackListNode != null) {
      List<Node> trackNodes = XMLUtil.findNamedElementNodes(trackListNode, "track");
      tracks = new RadioTrack[trackNodes.size()];
      int i = 0;
      for (Node trackNode : trackNodes) {
        tracks[i++] = trackBuilder.build(trackNode);
      }
    }
    return new RadioPlayList(title, creator, date, link, tracks, id, streamable);
  }