protected virtual void DefineTopNiveis(Nivel nvl, long IDUpperNivel) { // séries e documentos soltos são usados como ponto de partida; // no caso de o nivel actual ter um produtor associado acima, então trata-se de uma série ou documento // solto if (prodHT.ContainsKey(IDUpperNivel)) { if (!topNiveis.Contains(nvl)) { topNiveis.Add(nvl); } nvl.AddProdutor((Nivel)prodHT[IDUpperNivel]); } else { CreateNivelIfNonExistent(IDUpperNivel); } nvl.IDNivelUpper = IDUpperNivel; }