VersionConstraint[] unsatisfied = bundleDescription .getUnsatisfiedConstraints();
VersionConstraint[] unsatisfied = StateHelper.getUnsatisfiedConstraints(bundleDescription);
	protected String getResolutionFailureMessage() {		String defaultMessage = Msg.formatter				.getString("BUNDLE_UNRESOLVED_EXCEPTION");		// don't spend time if debug info is not needed		if (!Debug.DEBUG) {			return defaultMessage;		}		if (permissionMsg != null) {			return permissionMsg;		}		BundleDescription bundleDescription = getBundleDescription();		if (bundleDescription == null) {			return defaultMessage;		}		// just a sanity check - this would be an inconsistency between the		// framework and the state		if (bundleDescription.isResolved()) {			throw new IllegalStateException("bundle *is* resolved");		}		VersionConstraint[] unsatisfied = bundleDescription				.getUnsatisfiedConstraints();		if (unsatisfied.length == 0) {			return Msg.formatter					.getString("BUNDLE_UNRESOLVED_NOT_CHOSEN_EXCEPTION");		}		StringBuffer missing = new StringBuffer();		for (int i = 0; i < unsatisfied.length; i++) {			if (unsatisfied[i] instanceof PackageSpecification) {				missing.append(Msg.formatter.getString(						"BUNDLE_UNRESOLVED_PACKAGE", toString(unsatisfied[i])));			} else if (unsatisfied[i] instanceof BundleSpecification) {				missing.append(Msg.formatter.getString(						"BUNDLE_UNRESOLVED_BUNDLE", toString(unsatisfied[i])));			} else {				missing.append(Msg.formatter.getString(						"BUNDLE_UNRESOLVED_HOST", toString(unsatisfied[i])));			}			missing.append(',');		}		missing.deleteCharAt(missing.length() - 1);		return Msg.formatter.getString(				"BUNDLE_UNRESOLVED_UNSATISFIED_CONSTRAINT_EXCEPTION", missing						.toString());	}