Program: 107679
Project: 107679
Buggy source:
/** 
 * Starts the processing of media in this instance in a specific direction.
 * @param direction a <tt>MediaDirection</tt> value which represents thedirection of the processing of media to be started. For example, {@link MediaDirection#SENDRECV} to start both capture and playback ofmedia in this instance or  {@link MediaDirection#SENDONLY} to only startthe capture of media in this instance
 */
private void start(MediaDirection direction){
  if (direction == null)   throw new NullPointerException("String_Node_Str");
  if (direction.allowsSending() && ((startedDirection == null) || !startedDirection.allowsSending())) {
    startSendStreams();
    getDeviceSession().start(MediaDirection.SENDONLY);
    if (MediaDirection.RECVONLY.equals(startedDirection))     startedDirection=MediaDirection.SENDRECV;
 else     if (startedDirection == null)     startedDirection=MediaDirection.SENDONLY;
    logger.info(getFormat().getMediaType().toString() + "String_Node_Str" + getMediaStreamStats().getEncoding()+ "String_Node_Str"+ getMediaStreamStats().getEncodingClockRate()+ "String_Node_Str");
    logger.info(getFormat().getMediaType().toString() + "String_Node_Str" + getMediaStreamStats().getRemoteIPAddress()+ "String_Node_Str"+ String.valueOf(getMediaStreamStats().getRemotePort()));
  }
  if (direction.allowsReceiving() && ((startedDirection == null) || !startedDirection.allowsReceiving())) {
    startReceiveStreams();
    getDeviceSession().start(MediaDirection.RECVONLY);
    if (MediaDirection.SENDONLY.equals(startedDirection))     startedDirection=MediaDirection.SENDRECV;
 else     if (startedDirection == null)     startedDirection=MediaDirection.RECVONLY;
  }
}

Fixed version (ground truth):
/** 
 * Starts the processing of media in this instance in a specific direction.
 * @param direction a <tt>MediaDirection</tt> value which represents thedirection of the processing of media to be started. For example, {@link MediaDirection#SENDRECV} to start both capture and playback ofmedia in this instance or  {@link MediaDirection#SENDONLY} to only startthe capture of media in this instance
 */
private void start(MediaDirection direction){
  if (direction == null)   throw new NullPointerException("String_Node_Str");
  boolean getRTPManagerForRTPTranslator=true;
  if (direction.allowsSending() && ((startedDirection == null) || !startedDirection.allowsSending())) {
    getRTPManagerForRTPTranslator=false;
    startSendStreams();
    getDeviceSession().start(MediaDirection.SENDONLY);
    if (MediaDirection.RECVONLY.equals(startedDirection))     startedDirection=MediaDirection.SENDRECV;
 else     if (startedDirection == null)     startedDirection=MediaDirection.SENDONLY;
    logger.info(getFormat().getMediaType().toString() + "String_Node_Str" + getMediaStreamStats().getEncoding()+ "String_Node_Str"+ getMediaStreamStats().getEncodingClockRate()+ "String_Node_Str");
    logger.info(getFormat().getMediaType().toString() + "String_Node_Str" + getMediaStreamStats().getRemoteIPAddress()+ "String_Node_Str"+ String.valueOf(getMediaStreamStats().getRemotePort()));
  }
  if (direction.allowsReceiving() && ((startedDirection == null) || !startedDirection.allowsReceiving())) {
    getRTPManagerForRTPTranslator=false;
    startReceiveStreams();
    getDeviceSession().start(MediaDirection.RECVONLY);
    if (MediaDirection.SENDONLY.equals(startedDirection))     startedDirection=MediaDirection.SENDRECV;
 else     if (startedDirection == null)     startedDirection=MediaDirection.RECVONLY;
  }
  if (getRTPManagerForRTPTranslator && (rtpTranslator != null))   getRTPManager();
}