terraria-cpp2il-methodrecon v1.4.4.9
Terraria mobile dump, with reconstructed method body. Dump with CallAnalysis: https://infinitynichto.github.io/terraria-cpp2il
Loading...
Searching...
No Matches
MonoCustomAttrs.cs
Go to the documentation of this file.
1using System;
5
6namespace System
7{
8 // Token: 0x02000181 RID: 385
9 internal static class MonoCustomAttrs
10 {
11 // Token: 0x06000F0D RID: 3853 RVA: 0x000200D4 File Offset: 0x0001E2D4
12 private static bool IsUserCattrProvider(object obj)
13 {
14 bool flag;
15 return flag;
16 }
17
18 // Token: 0x06000F0E RID: 3854 RVA: 0x0000207A File Offset: 0x0000027A
20 {
21 throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
22 }
23
24 // Token: 0x06000F0F RID: 3855 RVA: 0x000200E8 File Offset: 0x0001E2E8
26 {
27 object[] array;
28 return array;
29 }
30
31 // Token: 0x06000F10 RID: 3856 RVA: 0x0002010C File Offset: 0x0001E30C
32 private static object[] GetPseudoCustomAttributes(Type type)
33 {
35 }
36
37 // Token: 0x06000F11 RID: 3857 RVA: 0x00020120 File Offset: 0x0001E320
39 {
40 /*
41An exception occurred when decompiling this method (06000F11)
42
43ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Object[] System.MonoCustomAttrs::GetCustomAttributesBase(System.Reflection.ICustomAttributeProvider,System.Type,System.Boolean)
44
45 ---> System.Exception: Basic block has to end with unconditional control flow.
46{
47 IL_000B:
48 brtrue(IL_0000, logicnot:bool(ldloc:object[][exp:bool](var_2)))
49}
50
51 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
52 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
53 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
54 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1846
55 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
56 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
57 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
58 --- End of inner exception stack trace ---
59 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
60 at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1683
61*/;
62 }
63
64 // Token: 0x06000F12 RID: 3858 RVA: 0x0002013C File Offset: 0x0001E33C
66 {
67 if (!false)
68 {
69 }
71 if (!attributeUsageAttribute._inherited)
72 {
73 }
74 int num = 16;
75 int num2 = Math.Max(0, num);
76 long num3 = 0L;
78 bool allowMultiple;
79 if ((num3 == 0L && num3 == 0L) || attributeUsageAttribute2._inherited)
80 {
83 {
84 }
85 }
86 if (!allowMultiple)
87 {
88 }
90 if (customAttributeProvider != null)
91 {
92 object[] array;
93 return array;
94 }
96 if (array2 != null)
97 {
98 if (array2 == null)
99 {
100 throw new InvalidCastException();
101 }
102 }
104 if (array3 != null && array3 == null)
105 {
106 throw new InvalidCastException();
107 }
108 return "obj";
109 }
110
111 // Token: 0x06000F13 RID: 3859 RVA: 0x000201D8 File Offset: 0x0001E3D8
113 {
114 object[] array;
115 return array;
116 }
117
118 // Token: 0x06000F14 RID: 3860 RVA: 0x0000207A File Offset: 0x0000027A
120 {
121 throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
122 }
123
124 // Token: 0x06000F15 RID: 3861 RVA: 0x000201F4 File Offset: 0x0001E3F4
130
131 // Token: 0x06000F16 RID: 3862 RVA: 0x00020204 File Offset: 0x0001E404
140
141 // Token: 0x06000F17 RID: 3863 RVA: 0x00020368 File Offset: 0x0001E568
143 {
144 /*
145An exception occurred when decompiling this method (06000F17)
146
147ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Collections.Generic.IList`1<System.Reflection.CustomAttributeData> System.MonoCustomAttrs::GetCustomAttributesDataBase(System.Reflection.ICustomAttributeProvider,System.Type,System.Boolean)
148
149 ---> System.Exception: Basic block has to end with unconditional control flow.
150{
151 Block_0:
152 stloc:class System.Collections.Generic.IList`1<valuetype System.Reflection.CustomAttributeTypedArgument>(var_2_0C, ldfld:class System.Collections.Generic.IList`1<valuetype System.Reflection.CustomAttributeTypedArgument>(CustomAttributeData::ctorArgs, ldloc:class System.Reflection.CustomAttributeData[][exp:CustomAttributeData](var_1)))
153 stloc:class System.Collections.Generic.IList`1<valuetype System.Reflection.CustomAttributeTypedArgument>(var_3_13, ldfld:class System.Collections.Generic.IList`1<valuetype System.Reflection.CustomAttributeTypedArgument>(CustomAttributeData::ctorArgs, ldloc:class System.Reflection.CustomAttributeData[][exp:CustomAttributeData](var_1)))
154}
155
156 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
157 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
158 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
159 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
160 --- End of inner exception stack trace ---
161 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
162 at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1683
163*/;
164 }
165
166 // Token: 0x06000F18 RID: 3864 RVA: 0x00020388 File Offset: 0x0001E588
172
173 // Token: 0x06000F19 RID: 3865 RVA: 0x000203C0 File Offset: 0x0001E5C0
175 {
176 if (!false)
177 {
178 }
179 throw new ArrayTypeMismatchException();
180 }
181
182 // Token: 0x06000F1A RID: 3866 RVA: 0x000203D8 File Offset: 0x0001E5D8
184 {
185 /*
186An exception occurred when decompiling this method (06000F1A)
187
188ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Boolean System.MonoCustomAttrs::IsDefined(System.Reflection.ICustomAttributeProvider,System.Type,System.Boolean)
189
190 ---> System.Exception: Basic block has to end with unconditional control flow.
191{
192 IL_0032:
193 stloc:int64(var_10_38, ldfld:int64(int64::m_value, ldc.i4:int32[exp:int64&](0)))
194}
195
196 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
197 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
198 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
199 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
200 --- End of inner exception stack trace ---
201 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
202 at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1683
203*/;
204 }
205
206 // Token: 0x06000F1B RID: 3867 RVA: 0x0000207A File Offset: 0x0000027A
207 internal static bool IsDefinedInternal(ICustomAttributeProvider obj, Type AttributeType)
208 {
209 throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
210 }
211
212 // Token: 0x06000F1C RID: 3868 RVA: 0x00020420 File Offset: 0x0001E620
214 {
215 bool flag;
216 if (flag)
217 {
218 }
219 bool flag2;
220 if (flag2 && flag)
221 {
223 return propertyInfo;
224 }
226 return propertyInfo2;
227 }
228
229 // Token: 0x06000F1D RID: 3869 RVA: 0x00020450 File Offset: 0x0001E650
231 {
232 bool flag;
233 if (flag)
234 {
235 }
236 throw new InvalidCastException();
237 }
238
239 // Token: 0x06000F1E RID: 3870 RVA: 0x00020468 File Offset: 0x0001E668
241 {
242 if (false)
243 {
244 }
246 while (methodInfo == null)
247 {
248 }
250 bool flag = methodInfo2 == methodInfo;
251 throw new InvalidCastException();
252 }
253
254 // Token: 0x06000F1F RID: 3871 RVA: 0x0002049C File Offset: 0x0001E69C
256 {
257 object[] array;
258 do
259 {
260 if (!true)
261 {
262 }
263 Type type;
264 bool flag = type == type;
265 if (!true)
266 {
267 }
268 }
269 while (array == null);
270 throw new InvalidCastException();
271 }
272
273 // Token: 0x06000F20 RID: 3872 RVA: 0x000204C4 File Offset: 0x0001E6C4
275 {
276 /*
277An exception occurred when decompiling this method (06000F20)
278
279ICSharpCode.Decompiler.DecompilerException: Error decompiling System.AttributeUsageAttribute System.MonoCustomAttrs::RetrieveAttributeUsage(System.Type)
280
281 ---> System.Exception: Basic block has to end with unconditional control flow.
282{
283 IL_0000:
284 brtrue(IL_0000, ldc.i4:bool(1))
285}
286
287 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
288 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
289 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
290 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1846
291 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
292 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
293 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
294 --- End of inner exception stack trace ---
295 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
296 at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1683
297*/;
298 }
299
300 // Token: 0x06000F21 RID: 3873 RVA: 0x000204D4 File Offset: 0x0001E6D4
301 // Note: this type is marked as 'beforefieldinit'.
303 {
304 }
305
306 // Token: 0x04000683 RID: 1667
307 private static Assembly corlib;
308
309 // Token: 0x04000684 RID: 1668
312
313 // Token: 0x04000685 RID: 1669
315
316 // Token: 0x02000182 RID: 386
317 private class AttributeInfo
318 {
319 // Token: 0x06000F22 RID: 3874 RVA: 0x000204E4 File Offset: 0x0001E6E4
323
324 // Token: 0x1700015D RID: 349
325 // (get) Token: 0x06000F23 RID: 3875 RVA: 0x00020500 File Offset: 0x0001E700
327 {
328 get
329 {
330 return this._usage;
331 }
332 }
333
334 // Token: 0x1700015E RID: 350
335 // (get) Token: 0x06000F24 RID: 3876 RVA: 0x00020514 File Offset: 0x0001E714
337 {
338 get
339 {
340 return this._inheritanceLevel;
341 }
342 }
343
344 // Token: 0x04000686 RID: 1670
346
347 // Token: 0x04000687 RID: 1671
349 }
350 }
351}
class f__AnonymousType0<< Count > j__TPar
static byte Max(byte val1, byte val2)
Definition Math.cs:111
AttributeInfo(AttributeUsageAttribute usage, int inheritanceLevel)
static CustomAttributeData[] GetPseudoCustomAttributesData(Type type)
static bool IsDefined(ICustomAttributeProvider obj, Type attributeType, bool inherit)
static EventInfo GetBaseEventDefinition(RuntimeEventInfo evt)
static PropertyInfo GetBasePropertyDefinition(RuntimePropertyInfo property)
static bool IsDefinedInternal(ICustomAttributeProvider obj, Type AttributeType)
static IList< CustomAttributeData > GetCustomAttributesData(ICustomAttributeProvider obj, bool inherit=false)
static AttributeUsageAttribute RetrieveAttributeUsageNoCache(Type attributeType)
static object[] GetCustomAttributes(ICustomAttributeProvider obj, Type attributeType, bool inherit)
static object[] GetPseudoCustomAttributes(ICustomAttributeProvider obj, Type attributeType)
static bool IsUserCattrProvider(object obj)
static readonly AttributeUsageAttribute DefaultAttributeUsage
static object[] GetPseudoCustomAttributes(Type type)
static Dictionary< Type, AttributeUsageAttribute > usage_cache
static AttributeUsageAttribute RetrieveAttributeUsage(Type attributeType)
static IList< CustomAttributeData > GetCustomAttributesDataBase(ICustomAttributeProvider obj, Type attributeType, bool inheritedOnly)
static ICustomAttributeProvider GetBase(ICustomAttributeProvider obj)
static IList< CustomAttributeData > GetCustomAttributesData(ICustomAttributeProvider obj, Type attributeType, bool inherit)
static CustomAttributeData[] GetPseudoCustomAttributesData(ICustomAttributeProvider obj, Type attributeType)
static object[] GetCustomAttributesBase(ICustomAttributeProvider obj, Type attributeType, bool inheritedOnly)
static CustomAttributeData[] GetCustomAttributesDataInternal(ICustomAttributeProvider obj)
static Attribute[] GetCustomAttributesInternal(ICustomAttributeProvider obj, Type attributeType, bool pseudoAttrs)
static object[] GetCustomAttributes(ICustomAttributeProvider obj, bool inherit)