public override bool Overlaps(BaseShape shape, Rect2 target, double radius, IDictionary <Type, HitTestBase> registered) { var group = shape as GroupShape; if (group == null) { throw new ArgumentNullException(nameof(shape)); } foreach (var GroupShape in group.Shapes.Reverse()) { var hitTest = registered[GroupShape.GetType()]; var result = hitTest.Overlaps(GroupShape, target, radius, registered); if (result == true) { return(true); } } return(false); }