/**
  * Creates a new STUN <tt>Message</tt> to be sent to the STUN server associated with the
  * <tt>StunCandidateHarvester</tt> of this instance in order to keep a specific
  * <tt>LocalCandidate</tt> (harvested by this instance) alive.
  *
  * @param candidate the <tt>LocalCandidate</tt> (harvested by this instance) to create a new
  *     keep-alive STUN message for
  * @return a new keep-alive STUN <tt>Message</tt> for the specified <tt>candidate</tt> or
  *     <tt>null</tt> if no keep-alive sending is to occur
  * @throws StunException if anything goes wrong while creating the new keep-alive STUN
  *     <tt>Message</tt> for the specified <tt>candidate</tt> or the candidate is of an unsupported
  *     <tt>CandidateType</tt>
  */
 protected Message createKeepAliveMessage(LocalCandidate candidate) throws StunException {
   /*
    * We'll not be keeping a STUN Binding alive for now. If we decide to in
    * the future, we'll have to create a Binding Indication and add support
    * for sending it.
    */
   if (CandidateType.SERVER_REFLEXIVE_CANDIDATE.equals(candidate.getType())) return null;
   else {
     throw new StunException(StunException.ILLEGAL_ARGUMENT, "candidate");
   }
 }
  /**
   * Determines whether a specific <tt>LocalCandidate</tt> is contained in the list of
   * <tt>LocalCandidate</tt>s harvested for {@link #hostCandidate} by this harvest.
   *
   * @param candidate the <tt>LocalCandidate</tt> to look for in the list of
   *     <tt>LocalCandidate</tt>s harvested for {@link #hostCandidate} by this harvest
   * @return <tt>true</tt> if the list of <tt>LocalCandidate</tt>s contains the specified
   *     <tt>candidate</tt>; otherwise, <tt>false</tt>
   */
  protected boolean containsCandidate(LocalCandidate candidate) {
    if (candidate != null) {
      LocalCandidate[] candidates = getCandidates();

      if ((candidates != null) && (candidates.length != 0)) {
        for (LocalCandidate c : candidates) {
          if (candidate.equals(c)) return true;
        }
      }
    }
    return false;
  }