public IDifferenceFormatter GetFormatter(Difference difference) { if (customFormatters.TryGetValue(difference.GetType(), out var formatter)) { return(formatter); } switch (difference) { case MissingEntryDifference _: return(new MissingEntryDifferenceFormatter()); case SetDifference _: return(new SetDifferenceFormatter()); case BasicDifference _: return(new BasicDifferenceFormatter()); default: return(new BreadcrumbDifferenceFormatter()); } }