public static Tuple <int, int>[] GetCoords(Segment segment) { if (segment is Pixel) { Tuple <int, int>[] result = { ((Pixel)segment).Coordinate }; return(result); } else { Parent seg = (Parent)segment; Tuple <int, int>[] result = new Tuple <int, int> [SegmentModule.SegmentSize(segment)]; Tuple <int, int>[] seg1Result = GetCoords(seg.Seg1); Tuple <int, int>[] seg2Result = GetCoords(seg.Seg2); for (int i = 0; i < result.Length; i++) { if (i < seg1Result.Length) { result[i] = seg1Result[i]; } else { result[i] = seg2Result[i - seg1Result.Length]; } } return(result); } }