private void AddImplicitInterfaces(IReflect iface, IReflect[] explicitInterfaces, ArrayList implicitInterfaces){
Type ifaceT = iface as Type;
if (ifaceT != null){
Type[] implInterfaces = ifaceT.GetInterfaces();
foreach (Type implIface in implInterfaces){
if (Array.IndexOf(explicitInterfaces, implIface, 0) >= 0) return;
if (implicitInterfaces.IndexOf(implIface, 0) >= 0) return;
implicitInterfaces.Add(implIface);
}
return;
}
foreach (TypeExpression ifaceExpr in ((ClassScope)iface).owner.interfaces){
IReflect implIface = ifaceExpr.ToIReflect();
if (Array.IndexOf(explicitInterfaces, implIface, 0) >= 0) return;
if (implicitInterfaces.IndexOf(implIface, 0) >= 0) return;
implicitInterfaces.Add(implIface);
}
return;
}