fix handling of altparams
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/projects/RoyaleProject.java b/compiler/src/main/java/org/apache/royale/compiler/internal/projects/RoyaleProject.java
index f4ad3d1..7609413 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/internal/projects/RoyaleProject.java
+++ b/compiler/src/main/java/org/apache/royale/compiler/internal/projects/RoyaleProject.java
@@ -2349,27 +2349,50 @@
 		{
 			if (meta.getTagName().equals(IMetaAttributeConstants.ATTRIBUTE_SWFOVERRIDE))
 			{
-				IMetaTagAttribute attr = meta.getAttribute(IMetaAttributeConstants.NAME_SWFOVERRIDE_ALTPARAMS);
-				if (attr != null)
+				IMetaTagAttribute altattr = meta.getAttribute(IMetaAttributeConstants.NAME_SWFOVERRIDE_ALTPARAMS);
+				if (altattr != null)
 				{
-					// format is expectedQName:allowedQName,expectedQName:allowedQName.
-					// we don't know which parameter it is so we're assuming for now that any mapping
-					// applies to all occurences of that type in the parameter list
-					String paramList = attr.getValue();
-					String[] paramMap;
-					if (paramList.contains(","))
-						paramMap = paramList.split(",");
+					String altparamList = altattr.getValue();
+					String[] altparamMap;
+					if (altparamList.contains(","))
+						altparamMap = altparamList.split(",");
 					else
 					{
-						paramMap = new String[1];
-						paramMap[0] = paramList;
+						altparamMap = new String[1];
+						altparamMap[0] = altparamList;
 					}
-					for (String item : paramMap)
+					IMetaTagAttribute attr = meta.getAttribute(IMetaAttributeConstants.NAME_SWFOVERRIDE_PARAMS);
+					if (attr != null)
 					{
-						String[] parts = item.split(":");
-						if (expectedDefinition.getQualifiedName().equals(parts[0]))
-							if (((ITypeDefinition)actualDefinition).isInstanceOf(parts[1], this))
-								return true;
+						String paramList = attr.getValue();
+						String[] paramMap;
+						if (paramList.contains(","))
+							paramMap = paramList.split(",");
+						else
+						{
+							paramMap = new String[1];
+							paramMap[0] = paramList;
+						}
+						int n = paramMap.length;
+						for (int i = 0; i < n; i++)
+						{
+							String item = paramMap[i];
+							if (expectedDefinition.getQualifiedName().equals(item))
+							{
+								String alts = altparamMap[i];
+								String[] altList;
+								if (alts.contains(":"))
+									altList = alts.split(":");
+								else
+								{
+									altList = new String[1];
+									altList[0] = alts;
+								}
+								for (String alt : altList)
+									if (((ITypeDefinition)actualDefinition).isInstanceOf(alt, this))
+										return true;
+							}
+						}
 					}
 				}
 			}