code: func (s *Serf) handleNodeJoinIntent(joinMsg *messageJoin) bool {
  	// Witness a potentially newer time
  	s.clock.Witness(joinMsg.LTime)
  
  	s.memberLock.Lock()
  	defer s.memberLock.Unlock()
  
  	member, ok := s.members[joinMsg.Node]
  	if !ok {
  		// Rebroadcast only if this was an update we hadn't seen before.
  		return upsertIntent(s.recentIntents, joinMsg.Node, messageJoinType, joinMsg.LTime, time.Now)
  	}
  
  	// Check if this time is newer than what we have
  	if joinMsg.LTime <= member.statusLTime {
  		return false
  	}
  
  	// Update the LTime
  	member.statusLTime = joinMsg.LTime
  
  	// If we are in the leaving state, we should go back to alive,
  	// since the leaving message must have been for an older time
  	if member.Status == StatusLeaving {
  		member.Status = StatusAlive
  	}
  	return true
  }
docs: // handleNodeJoinIntent is called when a node broadcasts a
  // join message to set the lamport time of its join