public void Add(IList <TypeReference> types) { TypeReference[] key = types.ToArray <TypeReference>(); object obj2 = this._data; lock (obj2) { if (this._data.ContainsKey(key) || !MetadataCacheWriter.TypesDoNotExceedMaximumRecursion(types)) { return; } this._data.Add(key, (uint)this._data.Count); } foreach (TypeReference reference in key) { Il2CppTypeCollector.Add(reference, 0); } }
public void Add(MethodReference method) { object obj2 = this._data; lock (obj2) { if ((this._data.ContainsKey(method) || !MetadataCacheWriter.TypeDoesNotExceedMaximumRecursion(method.DeclaringType)) || (method.IsGenericInstance && !MetadataCacheWriter.TypesDoNotExceedMaximumRecursion(((GenericInstanceMethod)method).GenericArguments))) { return; } this._data.Add(method, (uint)this._data.Count); } if (method.DeclaringType.IsGenericInstance) { GenericInstanceType declaringType = (GenericInstanceType)method.DeclaringType; Il2CppGenericInstCollector.Add(declaringType.GenericArguments); } if (method.IsGenericInstance) { GenericInstanceMethod method2 = (GenericInstanceMethod)method; Il2CppGenericInstCollector.Add(method2.GenericArguments); } }