Program: 9022
Project: 9022
Buggy source:
private void play(final UserSession session,JsonObject jsonMessage) throws IOException {
  String user=jsonMessage.get("String_Node_Str").getAsString();
  log.debug("String_Node_Str",user);
  JsonObject response=new JsonObject();
  response.addProperty("String_Node_Str","String_Node_Str");
  if (registry.getByName(user) != null && registry.getBySession(session.getSession()) != null) {
    PlayMediaPipeline playMediaPipeline=new PlayMediaPipeline(kurento,user,session.getSession());
    String sdpOffer=jsonMessage.get("String_Node_Str").getAsString();
    session.setPlayingWebRtcEndpoint(playMediaPipeline.getWebRtc());
    playMediaPipeline.getWebRtc().addOnIceCandidateListener(new EventListener<OnIceCandidateEvent>(){
      @Override public void onEvent(      OnIceCandidateEvent event){
        JsonObject response=new JsonObject();
        response.addProperty("String_Node_Str","String_Node_Str");
        response.add("String_Node_Str",JsonUtils.toJsonObject(event.getCandidate()));
        try {
synchronized (session) {
            session.getSession().sendMessage(new TextMessage(response.toString()));
          }
        }
 catch (        IOException e) {
          log.debug(e.getMessage());
        }
      }
    }
);
    String sdpAnswer=playMediaPipeline.generateSdpAnswer(sdpOffer);
    response.addProperty("String_Node_Str","String_Node_Str");
    response.addProperty("String_Node_Str",sdpAnswer);
    playMediaPipeline.play();
    pipelines.put(session.getSessionId(),playMediaPipeline.getPipeline());
synchronized (session.getSession()) {
      session.sendMessage(response);
    }
    playMediaPipeline.getWebRtc().gatherCandidates();
  }
 else {
    response.addProperty("String_Node_Str","String_Node_Str");
    response.addProperty("String_Node_Str","String_Node_Str" + user + "String_Node_Str");
    session.getSession().sendMessage(new TextMessage(response.toString()));
  }
}

Fixed version (ground truth):
private void play(final UserSession session,JsonObject jsonMessage) throws IOException {
  String user=jsonMessage.get("String_Node_Str").getAsString();
  log.debug("String_Node_Str",user);
  JsonObject response=new JsonObject();
  response.addProperty("String_Node_Str","String_Node_Str");
  if (registry.getByName(user) != null && registry.getBySession(session.getSession()) != null) {
    final PlayMediaPipeline playMediaPipeline=new PlayMediaPipeline(kurento,user,session.getSession());
    String sdpOffer=jsonMessage.get("String_Node_Str").getAsString();
    session.setPlayingWebRtcEndpoint(playMediaPipeline.getWebRtc());
    playMediaPipeline.getPlayer().addEndOfStreamListener(new EventListener<EndOfStreamEvent>(){
      @Override public void onEvent(      EndOfStreamEvent event){
        UserSession user=registry.getBySession(session.getSession());
        releasePipeline(user);
        playMediaPipeline.sendPlayEnd(session.getSession());
      }
    }
);
    playMediaPipeline.getWebRtc().addOnIceCandidateListener(new EventListener<OnIceCandidateEvent>(){
      @Override public void onEvent(      OnIceCandidateEvent event){
        JsonObject response=new JsonObject();
        response.addProperty("String_Node_Str","String_Node_Str");
        response.add("String_Node_Str",JsonUtils.toJsonObject(event.getCandidate()));
        try {
synchronized (session) {
            session.getSession().sendMessage(new TextMessage(response.toString()));
          }
        }
 catch (        IOException e) {
          log.debug(e.getMessage());
        }
      }
    }
);
    String sdpAnswer=playMediaPipeline.generateSdpAnswer(sdpOffer);
    response.addProperty("String_Node_Str","String_Node_Str");
    response.addProperty("String_Node_Str",sdpAnswer);
    playMediaPipeline.play();
    pipelines.put(session.getSessionId(),playMediaPipeline.getPipeline());
synchronized (session.getSession()) {
      session.sendMessage(response);
    }
    playMediaPipeline.getWebRtc().gatherCandidates();
  }
 else {
    response.addProperty("String_Node_Str","String_Node_Str");
    response.addProperty("String_Node_Str","String_Node_Str" + user + "String_Node_Str");
    session.getSession().sendMessage(new TextMessage(response.toString()));
  }
}