             return (otherCoordinates.y < bestCoordinate) ? otherCoordinates.y : bestCoordinate
         })
     }
-    
+
     private func getBottomMostCoordinate(list: [CGPoint]) -> CGFloat {
         assert(list.count > 0)
         let firstCoordinate = list[0].y

        })
        return sum / CGFloat(list.count)
    }
    
    private func validateRelativeViews(_ relativeViews: [View], context: Context) -> [View]? {
        guard let _ = layoutSuperview(context) else { return nil }
        guard relativeViews.count > 0 else {
            warnWontBeApplied("At least one view must be visible (i.e. UIView.isHidden != true) ", context)
            return nil
        }
        
        return relativeViews
    }

    private func relativeContext(_ type: String, _ relativeView: View, _ aligned: VerticalAlign?) -> String {
        return relativeContext(type, "\(relativeView)", aligned: aligned == VerticalAlign.none ? nil : aligned?.description)
    }

    private func relativeContext(_ type: String, _ relativeViews: [View], _ aligned: VerticalAlign?) -> String {
        return relativeContext(type, "\(relativeViews)", aligned: aligned == VerticalAlign.none ? nil : aligned?.description)
    }

    private func relativeContext(_ type: String, _ relativeView: View, _ aligned: HorizontalAlign?) -> String {
        return relativeContext(type, "\(relativeView)", aligned: aligned == HorizontalAlign.none ? nil : aligned?.description)
    }

    private func relativeContext(_ type: String, _ relativeViews: [View], _ aligned: HorizontalAlign?) -> String {
        return relativeContext(type, "\(relativeViews)", aligned: aligned == HorizontalAlign.none ? nil : aligned?.description)
    }


        func context() -> String { return relativeContext("below", relativeViews, aligned) }
        return below(relativeViews: relativeViews, aligned: aligned, context: context)
    }

    //
    // left(of ...)
    //
