private void CollectMethods(IEnumerable <MethodInfo> methods, bool asExtensionAnyway) { foreach (var method in methods) { if (BindingManager.IsGenericMethod(method)) { bindingManager.Info("skip generic method: {0}", method); continue; } if (BindingManager.ContainsPointer(method)) { bindingManager.Info("skip unsafe (pointer) method: {0}", method); continue; } if (method.IsSpecialName) { if (!IsSupportedOperators(method)) { bindingManager.Info("skip special method: {0}", method); continue; } } if (method.IsDefined(typeof(JSOmitAttribute), false)) { bindingManager.Info("skip omitted method: {0}", method); continue; } if (method.IsDefined(typeof(ObsoleteAttribute), false)) { bindingManager.Info("skip obsolete method: {0}", method); continue; } if (transform.IsMemberBlocked(method.Name)) { bindingManager.Info("skip blocked method: {0}", method.Name); continue; } if (transform.Filter(method)) { bindingManager.Info("skip filtered method: {0}", method.Name); continue; } if (asExtensionAnyway || BindingManager.IsExtensionMethod(method)) { var targetType = method.GetParameters()[0].ParameterType; var targetInfo = bindingManager.GetExportedType(targetType); if (targetInfo != null) { targetInfo.AddMethod(method, true); continue; } } AddMethod(method, false); } }