public void reborn(int oldAgentId, int newAgentId) {

		/*古い様式のtraitsリストの中に最古のtraitが入っていた場合は、preferenceLengthの値を更新する必要がある可能性がある*/
		Trait oldTrait = traitMap.get(oldAgentId);
		traitMap.remove(oldAgentId); //古い様式をHashMapから取り除く
		if (oldTrait.containsValue(OLDEST_TRAIT_NUM)) {

			final int INFINITE = 10000; //わざと不正に大きな値

			Iterator it = traitMap.keySet().iterator();
			boolean isOtherOldestTrait = false;
			int NEW_OLDEST_TRAIT_NUM = INFINITE;//わざと不正な値を入れておく
			while (it.hasNext()) {
				int agentId = (Integer) it.next();
				Trait t = traitMap.get(agentId);
				if (t.containsValue(OLDEST_TRAIT_NUM)) { //他のTraitがOLDEST_TRAIT_NUM番の様式を持っていた場合、preferenceLengthの値は更新する必要がない
					isOtherOldestTrait = true;
					break;
				} else {
					if (t.getSmallestValue() != -1) {
						if (t.getSmallestValue() < NEW_OLDEST_TRAIT_NUM) {
							NEW_OLDEST_TRAIT_NUM = t.getSmallestValue();
						}
					}
				}
			}

			if (isOtherOldestTrait == false) { //この場合OLDEST_TRAIT_NUM番の様式は死滅したことになる
				if (NEW_OLDEST_TRAIT_NUM != INFINITE) {
					OLDEST_TRAIT_NUM = NEW_OLDEST_TRAIT_NUM;//新しい値
				} else {
					OLDEST_TRAIT_NUM = 0; //全エージェントのTraitが死滅。。。（ほぼありえないケースだが。。。）
				}
			}

		}

		/*traitsがない新しい様式を作成し、HashMapに代入する*/
		Trait newTrait = new Trait(newAgentId, "reborn");
		traitMap.put(newAgentId, newTrait);
	}