if (satisfiedCPS.implies(perm)) {
boolean newEmpty = !satisfiedCPS.isNonEmpty(); if (!newEmpty && satisfiedCPS.implies(perm)) {
	public boolean implies(Permission perm) {		processPending();		if (satisfiedCPS.implies(perm)) {			this.empty = false;			return true;		}		boolean newEmpty = !satisfiedCPS.isNonEmpty();		boolean satisfied = false;		Vector unevalCondsSets = null;		SecurityManager sm = System.getSecurityManager();		FrameworkSecurityManager fsm = null;		if (sm instanceof FrameworkSecurityManager) {			fsm = (FrameworkSecurityManager) sm;		}		ConditionalPermissionSet cpsArray[] = (ConditionalPermissionSet[]) satisfiableCPSs.toArray(new ConditionalPermissionSet[0]);		cpsLoop: for (int i = 0; i < cpsArray.length; i++) {			if (cpsArray[i].isNonEmpty()) {				newEmpty = false;				if (cpsArray[i].implies(perm)) {					Condition conds[] = cpsArray[i].getNeededConditions();					Vector unevaluatedConds = null;					for (int j = 0; j < conds.length; j++) {						if (conds[j] == null) {							continue;						}						if (!conds[j].isPostponed() && !conds[j].isSatisfied()) {							continue cpsLoop;						}						if (conds[j].isPostponed()) {							if (fsm == null) {								// If there is no FrameworkSecurityManager, we must evaluate now								if (!conds[j].isSatisfied()) {									continue cpsLoop;								}							} else {								if (unevaluatedConds == null) {									unevaluatedConds = new Vector();								}								unevaluatedConds.add(conds[j]);							}						}					}					if (unevaluatedConds == null) {						this.empty = false;						return true;					}					if (unevalCondsSets == null)						unevalCondsSets = new Vector(2);					unevalCondsSets.add(unevaluatedConds.toArray(new Condition[0]));					satisfied = true;				}			} else {				satisfiedCPIs.remove(cpsArray[i]);			}		}		this.empty = newEmpty;		if (satisfied && fsm != null) {			// There must be at least one set of Conditions to evaluate since			// we didn't return right we we realized the permission was satisfied			// so unevalCondsSets must be non-null.			Condition[][] condArray = (Condition[][]) unevalCondsSets.toArray(new Condition[0][]);			satisfied = fsm.addConditionsForDomain(condArray);		}		return satisfied;	}