# Call Analyzer This processing layer analyzes method instructions for calls to other methods and emits attributes based on that. For this processor, 9 new attributes are injected: ```cs using System; namespace Cpp2ILInjected.CallAnalysis; /// /// This method's instructions have been deduplicated by the compiler, and it shares its address with other methods. /// [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] public sealed class DeduplicatedMethodAttribute : Attribute { } /// /// This method has no instructions to analyze and is not abstract nor an interface declaration. /// [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] public sealed class CallAnalysisNotSupportedAttribute : Attribute { } /// /// This method is called from the method specified. /// /// /// This attribute is not emitted if there are a large amount of callers. /// [AttributeUsage(AttributeTargets.Method, AllowMultiple = true)] public sealed class CalledByAttribute : Attribute { public object Type; public string Member; public object[] MemberTypeParameters; public object[] MemberParameters; public object ReturnType; } /// /// This method calls the method specified. /// [AttributeUsage(AttributeTargets.Method, AllowMultiple = true)] public sealed class CallsAttribute : Attribute { public object Type; public string Member; public object[] MemberTypeParameters; public object[] MemberParameters; public object ReturnType; } /// /// The number of direct calls to this method. /// /// /// This attribute is similar in form and function to the one generated by Unhollower. /// [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] public sealed class CallerCountAttribute : Attribute { public int Count; } /// /// This method calls at least one deduplicated method. /// [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] public sealed class CallsDeduplicatedMethodsAttribute : Attribute { public int Count; } /// /// This method calls at least one unknown method. /// [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] public sealed class CallsUnknownMethodsAttribute : Attribute { public int Count; } /// /// This method contains at least one instruction that is invalid. /// [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] public sealed class ContainsInvalidInstructionsAttribute : Attribute { } /// /// This method contains at least one instruction that is not implemented. /// [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] public sealed class ContainsUnimplementedInstructionsAttribute : Attribute { } ```