 
     @discardableResult
     func margin(_ vertical: Percent, _ horizontal: Percent) -> PinLayout {
-        return marginVertical(vertical).marginHorizontal(horizontal)
+        func context() -> String { return "margin(vertical: \(vertical.description), horizontal: \(horizontal.description)"}
+        return marginVertical(vertical, context).marginHorizontal(horizontal, context)
     }
 
     @discardableResult func margin(_ top: CGFloat, _ horizontal: CGFloat, _ bottom: CGFloat) -> PinLayout {

    @discardableResult
    func marginBottom(_ percent: Percent) -> PinLayout {
        func context() -> String { return "marginBottom(\(percent.description))" }
        guard let layoutSuperviewRect = layoutSuperviewRect(context) else { return self }
        marginBottom = percent.of(layoutSuperviewRect.height)
        return self


    @discardableResult
    func marginEnd(_ percent: Percent) -> PinLayout {
        func context() -> String { return "marginEnd(\(percent.description))" }
        return isLTR() ? marginRight(percent, context) : marginLeft(percent, context)
    }

    @discardableResult
