I realized that this check is also brittle
assert(!departEdge || departEdge->target());

Both inEdgeFromAny and outEdgeToAny are not NULLPartEdge. It should be something like
assert( (departEdge? departEdge->target() :  false) || !departEdge)

if(!departEdge || !departEdge->source()) departEdge = NULLPartEdge; 
should be
if(!departEdge && !departEdge->source()) departEdge = NULLPartEdge;

Regarding checking for invalidity of concrete edge, consider this: given a concrete edge to this function and if I have info on NULLPartEdge, getLattice_ex should not abort right ? We are counting on getLattice_ex to return NULL when we don't find the info for the given edge.