protected Set<Integer> getQualifiedTypes(MOB ableM)
	{
		final Set<Integer> set=new TreeSet<Integer>();
		final boolean checkUnMet=ableM.charStats().getCurrentClass().showThinQualifyList();
		for(final Enumeration<Ability> a=CMClass.abilities();a.hasMoreElements();)
		{
			final Ability A=a.nextElement();
			final int level=CMLib.ableMapper().qualifyingLevel(ableM,A);
			if((CMLib.ableMapper().qualifiesByLevel(ableM,A))
			&&(level<(CMLib.ableMapper().qualifyingClassLevel(ableM,A)+1))
			&&(CMLib.ableComponents().getSpecialSkillRemainder(ableM, A).specificSkillLimit() > 0)
			&&(!checkUnMet || CMLib.ableMapper().getUnmetPreRequisites(ableM,A).size()==0))
			{
				Integer acode =Integer.valueOf(A.classificationCode() & Ability.ALL_ACODES);
				Integer dcode =Integer.valueOf(A.classificationCode() & Ability.ALL_DOMAINS);
				if(!set.contains(acode))
					set.add(acode);
				if(!set.contains(dcode))
					set.add(dcode);
			}
		}
		return set;
	}