private void Split() { // só acontece em uma folha cheia!
		No b = new No(folha, tamanho); // irmão
		int i;

		if (tamanhoLista() % 2 == 0) // o tamanho é um número duplo, os cortar
										// ao meio
			i = tamanhoLista() / 2;
		else
			// o tamanho é um número ímpar, a maioria dos registros permanecem
			// no nó antigo
			i = tamanhoLista() / 2 + 1;

		while (i != tamanhoLista()) {
			if (!folha)
				setPeso(peso - ((Chave) get(i)).getDireita().getPeso()); // ajusta
																			// o
																			// peso
																			// de
																			// uma
																			// chave
			else
				this.pesoDecrementa(); // ajusta o peso de um registro
			b.inserir(this.remove(i)); // remove do antigo nó e insere no novo
										// nó
		}
		// Após este loop, 'a' é cortado a metade e 'b' tem a outra metade
		Chave k = new Chave(listaInterna.lastElement().getNumero()); // cria
																		// nova
																		// chave
																		// depois
																		// de
																		// seu
																		// sucessor;
		k.setEsquerda(this); // seta o filho esquerdo da chave
		k.setDireita(b); // seta o filho direito da chave
		int w = 0; // ajustando o peso de b
		i = 0;

		// cuidando de b
		if (!b.isFolha()) {
			while (i != b.tamanhoLista()) {
				((Chave) b.get(i)).getEsquerda().setPai(b); // Atribui um novo
															// pai para o filho
															// esquerdo
				w += ((Chave) b.get(i)).getEsquerda().getPeso(); // Conta o peso
				i++;
			}
			((Chave) b.ultimo()).getDireita().setPai(b); // Atribui um novo pai
															// para o filho
															// direito
			w += ((Chave) b.ultimo()).getDireita().getPeso(); // conta o peso
			b.setPeso(w); // seta o peso de b
		}

		if (folha) { // Se b é uma folha ajustar suas folhas seguintes e
						// anteriores
			b.setProximo(this.getProximo());
			setProximo(b);
			b.setAnterior(this);
		} else { // o nó é interno, é preciso remover a chave
			setPeso(peso - ((Chave) ultimo()).getDireita().getPeso()); // ajusta
																		// o
																		// peso
			listaInterna.remove(listaInterna.lastElement()); // remove a última
																// chave
			tamanhoContador--; // ajusta o tamanho
		}

		if (pai == null) { // não há pai para este nó, provavelmente é a raiz
			No f = new No(false, tamanho); // cria um novo nó para ser o pai
			f.inserir(k); // insere a chave para o novo pai, faz divisão, se
							// necessário
			setPai(f); // seta o pai do nó
			b.setPai(f); // mesmo pai para o irmão
			pai.setPeso(this.peso + b.peso);
		} else { // já é um pai
			b.setPai(pai);
			pai.inserir(k); // recursivo se pai está cheio
		}
	}