private bool Merge(VariabilityInfo a, VariabilityInfo b, out VariabilityInfo m) { m = VariabilityInfo.MergeDefs(a, b); if (m.Variability == EVariability.Constant && m.Definitions.Count() > 1) { IEnumerable <int> lcas = CFG.GetLCASet(m.Definitions); IEnumerable <int> inter = m.Definitions.Intersect(lcas); if (inter.Any()) { m = new VariabilityInfo(EVariability.LocalVariable, m.Definitions); } else { m = new VariabilityInfo( lcas.All(i => _stackStates[i].HasUniqueSuccessor()) ? EVariability.Constant : EVariability.LocalVariable, m.Definitions); } } return(!a.Equals(m)); }