public virtual Type[] FindTypes(TypeFilter filter,Object filterCriteria)
{
StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
Type[] c = GetTypesInternal(ref stackMark);
int cnt = 0;
for (int i = 0;i<c.Length;i++) {
if (filter!=null && !filter(c[i],filterCriteria))
c[i] = null;
else
cnt++;
}
if (cnt == c.Length)
return c;
Type[] ret = new Type[cnt];
cnt=0;
for (int i=0;i<c.Length;i++) {
if (c[i] != null)
ret[cnt++] = c[i];
}
return ret;
}