public static Ability[] EFFECTA(int code)
		{
			final CODES c=c();
			final int cd=code&RESOURCE_MASK;
			Ability[] As = c.effectAs[cd];
			if(As!=null) return As;
			synchronized(c.effectAs)
			{
				As = c.effectAs[cd];
				if(As!=null) return As;
				final List<String> effectsV=CMParms.parseSafeSemicolonList(c.effect(code),true);
				if(effectsV.size()==0)
					c.effectAs[cd]=new Ability[0];
				else
				{
					String abilityID;
					String parms;
					final Vector<Ability> listA=new Vector<Ability>();
					for(final Iterator<String> e=effectsV.iterator();e.hasNext();)
					{
						abilityID=e.next();
						parms="";
						if((abilityID==null)||(abilityID.length()==0)) continue;
						if(abilityID.charAt(abilityID.length()-1)==')')
						{
							final int x=abilityID.indexOf('(');
							if(x>0)
							{
								parms=abilityID.substring(x+1,abilityID.length()-1);
								abilityID=abilityID.substring(0,x);
							}
						}
						final Ability A=CMClass.getAbility(abilityID);
						if(A==null)
							Log.errOut("RawMaterial","Unknown ability "+abilityID+" in "+c.effect(code));
						else
						{
							A.setMiscText(parms);
							listA.add(A);
						}
					}
					c.effectAs[cd]=listA.toArray(new Ability[0]);
				}
			}
			return c.effectAs[cd];
		}