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; }