private static MemberInfo[] FilterInvalidMembers(MemberInfo[] Members) { if ((Members == null) || (Members.Length == 0)) { return(null); } int num2 = 0; int index = 0; int num4 = Members.Length - 1; for (index = 0; index <= num4; index++) { PropertyInfo info3; ParameterInfo[] destinationArray = null; Type returnType = null; switch (Members[index].MemberType) { case MemberTypes.Constructor: case MemberTypes.Method: { MethodInfo info = (MethodInfo)Members[index]; destinationArray = info.GetParameters(); returnType = info.ReturnType; goto Label_00F9; } case MemberTypes.Field: returnType = ((FieldInfo)Members[index]).FieldType; goto Label_00F9; case MemberTypes.Property: { info3 = (PropertyInfo)Members[index]; MethodInfo getMethod = info3.GetGetMethod(); if (getMethod == null) { break; } destinationArray = getMethod.GetParameters(); goto Label_00DF; } default: goto Label_00F9; } ParameterInfo[] parameters = info3.GetSetMethod().GetParameters(); destinationArray = new ParameterInfo[(parameters.Length - 2) + 1]; Array.Copy(parameters, destinationArray, destinationArray.Length); Label_00DF: returnType = info3.PropertyType; Label_00F9: if (Symbols.AreParametersAndReturnTypesValid(destinationArray, returnType)) { num2++; } else { Members[index] = null; } } if (num2 == Members.Length) { return(Members); } if (num2 <= 0) { return(null); } MemberInfo[] infoArray4 = new MemberInfo[(num2 - 1) + 1]; int num3 = 0; int num5 = Members.Length - 1; for (index = 0; index <= num5; index++) { if (Members[index] != null) { infoArray4[num3] = Members[index]; num3++; } } return(infoArray4); }