public boolean ignoreClass(final Type type) {
		// First, check to see if we explicitly ignore it. If not, check
		// to see if we ignore its package. The ladies always seem to
		// ignore my package.
		if (ignoreClasses.contains(type)) {
			return (true);

		} else if (type.isPrimitive()) {
			addIgnoreClass(type);
			return (true);

		} else {
			if (this.ignoreSystem) {
				if (BloatContext.isSystem(type)) {
					addIgnoreClass(type);
					return (true);
				}
			}

			String packageName = type.className();
			final int lastSlash = packageName.lastIndexOf('/');

			if (lastSlash == -1) {
				return (false);
			}

			packageName = packageName.substring(0, lastSlash);

			// If any ignore package is a prefix of the class's package,
			// then ignore it. This makes our lives easier.
			final Iterator packages = ignorePackages.iterator();
			while (packages.hasNext()) {
				final String s = (String) packages.next();
				if (type.className().startsWith(s)) {
					addIgnoreClass(type);
					return (true);
				}
			}

			return (false);
		}
	}