internal override AnalysisValue UnionMergeTypes(AnalysisValue ns, int strength) { var bmi = ns as BoundMethodInfo; if (bmi == null || (Function.Equals(bmi.Function) && _instanceInfo.Equals(bmi._instanceInfo))) { return(this); } else { bool changed1, changed2; var cmp = UnionComparer.Instances[strength]; var newFunc = cmp.MergeTypes(Function, bmi.Function, out changed1) as FunctionInfo; var newInst = cmp.MergeTypes(_instanceInfo, bmi._instanceInfo, out changed2); if (newFunc != null && newInst != null && (changed1 | changed2)) { return(new BoundMethodInfo(newFunc, newInst)); } } return(this); }
protected override bool Equals(Protocol other) => _actualType.Equals((other as TypeDelegateProtocol)._actualType);