code: function pickDeepParentUnits(conn, arrWitnesses, max_wl, onDone){
  	// fixed: an attacker could cover all free compatible units with his own incompatible ones, then those that were not on MC will be never included
  	//var cond = bDeep ? "is_on_main_chain=1" : "is_free=1";
  	
  	console.log("looking for deep parents, max_wl="+max_wl);
  	var and_wl = (max_wl === null) ? '' : "AND +is_on_main_chain=1 AND witnessed_level<"+max_wl;
  	conn.query(
  		"SELECT unit \n\
  		FROM units \n\
  		WHERE +sequence='good' "+and_wl+" \n\
  			AND ( \n\
  				SELECT COUNT(*) \n\
  				FROM unit_witnesses \n\
  				WHERE unit_witnesses.unit IN(units.unit, units.witness_list_unit) AND address IN(?) \n\
  			)>=? \n\
  		ORDER BY main_chain_index DESC LIMIT 1", 
  		[arrWitnesses, constants.COUNT_WITNESSES - constants.MAX_WITNESS_LIST_MUTATIONS], 
  		function(rows){
  			if (rows.length === 0)
  				return onDone("failed to find compatible parents: no deep units");
  			var arrParentUnits = rows.map(function(row){ return row.unit; });
  			checkWitnessedLevelNotRetreatingAndLookLower(conn, arrWitnesses, arrParentUnits, true, onDone);
  		}
  	);
  }
docs: if we failed to find compatible parents among free units. (This may be the case if an attacker floods the network trying to shift the witness list)