internal void Analyze(Instruction inst) { Debug.Assert(inst != null, $"{nameof(inst)} != null"); Debug.Assert(inst.Operand != null, $"{nameof(inst)}.Operand != null"); var operand = inst.Operand; var currentRefType = operand.GetType(); while (currentRefType != typeof(object)) { if (Analyzers.TryGetValue(currentRefType, out var analyzer)) { analyzer.ProcessOperand(TargetMethod, inst, operand); break; } currentRefType = currentRefType.BaseType; } }