if (collectionQName.equals(name))
return new AbstractCollectionMetaData();
else if (listQName.equals(name))
return new AbstractListMetaData();
else if (setQName.equals(name))
return new AbstractSetMetaData();
else if (arrayQName.equals(name))
return new AbstractArrayMetaData();
else
throw new IllegalArgumentException("Unknown collection qname=" + name);
}