rem: if(const_cast<pkgCache::DepIterator &>(d).IsCritical())
add: pkgCache::PkgIterator parpkg = const_cast<pkgCache::DepIterator &>(d).ParentPkg(); pkgCache::VerIterator currver = parpkg.CurrentVer(); pkgCache::VerIterator parver = const_cast<pkgCache::DepIterator &>(d).ParentVer();  if(!parver.Downloadable() && (parver != currver || parpkg->CurrentState == pkgCache::State::ConfigFiles)) return false; else if(const_cast<pkgCache::DepIterator &>(d).IsCritical())
context: static bool internal_is_interesting_dep(const pkgCache::DepIterator &d,					pkgDepCache *cache){  if(const_cast<pkgCache::DepIterator &>(d).IsCritical())    return true;  else if(d->Type != pkgCache::Dep::Recommends ||	  !aptcfg->FindB(PACKAGE "::Recommends-Important", true))    return false;  else    {      pkgCache::VerIterator currver = const_cast<pkgCache::DepIterator &>(d).ParentPkg().CurrentVer();      pkgCache::VerIterator parver = const_cast<pkgCache::DepIterator &>(d).ParentVer();      // Soft deps attached to the current version are interesting iff      // they are currently satisfied.      if(currver == parver)	{	  pkgCache::DepIterator dtmp = d;	  while(!dtmp.end() && dtmp->CompareOp & pkgCache::Dep::Or)	    ++dtmp;	  if((*cache)[dtmp] & pkgDepCache::DepGNow)	    return true;	  return false;	}      else if(currver.end())	return true;      else	// Check whether the current version of this package has a dep	// that either subsumes _or is subsumed by_ this	// recommendation.  (for mathematical "correctness" we'd only	// check the first direction, but the goal is to not annoy the	// user unnecessarily; losing a few new recommendations is OK)	//	// NB: full correctness without annoyance means actually	// TRIMMING DOWN the target set of a recommendation by	// subtracting elements that are in the current version's	// recommendation list.  Needless to say, I'm ignoring this	// for now.	{	  pkgCache::DepIterator d2 = currver.DependsList();	  while(!d2.end())	    {	      if(d2->Type == pkgCache::Dep::Recommends &&		 or_group_subsumes(d2, d, &cache->GetCache()) ||		 or_group_subsumes(d, d2, &cache->GetCache()))		{		  pkgCache::DepIterator dtmp = d;		  while(!dtmp.end() && dtmp->CompareOp & pkgCache::Dep::Or)		    ++dtmp;		  if((*cache)[dtmp] & pkgDepCache::DepGNow)		    return true;		  return false;		}	      while(!d2.end() && ((d2->CompareOp & pkgCache::Dep::Or) != 0))		++d2;	      if(!d2.end())		++d2;	    }	  return true;	}    }}