private static MemberInfo[] FilterInvalidMembers(MemberInfo[] Members) { if (Members == null || Members.Length == 0) { return((MemberInfo[])null); } int num1 = 0; int num2 = 0; int num3 = checked (Members.Length - 1); int index1 = num2; while (index1 <= num3) { ParameterInfo[] Parameters = (ParameterInfo[])null; Type ReturnType = (Type)null; switch (Members[index1].MemberType) { case MemberTypes.Constructor: case MemberTypes.Method: MethodInfo member1 = (MethodInfo)Members[index1]; Parameters = member1.GetParameters(); ReturnType = member1.ReturnType; break; case MemberTypes.Field: ReturnType = ((FieldInfo)Members[index1]).FieldType; break; case MemberTypes.Property: PropertyInfo member2 = (PropertyInfo)Members[index1]; MethodInfo getMethod = member2.GetGetMethod(); if (getMethod != null) { Parameters = getMethod.GetParameters(); } else { ParameterInfo[] parameters = member2.GetSetMethod().GetParameters(); Parameters = new ParameterInfo[checked (parameters.Length - 2 + 1)]; Array.Copy((Array)parameters, (Array)Parameters, Parameters.Length); } ReturnType = member2.PropertyType; break; } if (Symbols.AreParametersAndReturnTypesValid(Parameters, ReturnType)) { checked { ++num1; } } else { Members[index1] = (MemberInfo)null; } checked { ++index1; } } if (num1 == Members.Length) { return(Members); } if (num1 <= 0) { return((MemberInfo[])null); } MemberInfo[] memberInfoArray = new MemberInfo[checked (num1 - 1 + 1)]; int index2 = 0; int num4 = 0; int num5 = checked (Members.Length - 1); int index3 = num4; while (index3 <= num5) { if (Members[index3] != null) { memberInfoArray[index2] = Members[index3]; checked { ++index2; } } checked { ++index3; } } return(memberInfoArray); }