             case .Top, .CenterY, .Baseline: return insets.top
             case .Right: return insets.right
             case .Bottom: return insets.bottom
-            case .Leading: return insets.left
-            case .Trailing: return insets.right
+                case .Leading, .LeadingMargin: return  (Config.interfaceLayoutDirection == .LeftToRight) ? insets.left : -insets.right
+                case .Trailing, .TrailingMargin: return  (Config.interfaceLayoutDirection == .LeftToRight) ? insets.right : -insets.left
             case .Width, .Height, .NotAnAttribute: return CGFloat(0)
             }
             #endif

    func offset(amount: CGSize) -> ConstraintBuilderMultipliable
    func offset(amount: EdgeInsets) -> ConstraintBuilderMultipliable
    
    func insets(amount: EdgeInsets) -> ConstraintBuilderMultipliable
}


        return self
    }
    
    // MARK: inset
    
    func inset(amount: EdgeInsets) -> ConstraintBuilderMultipliable {
        self.constant = EdgeInsets(top: amount.top, left: amount.left, bottom: -amount.bottom, right: -amount.right)
        return self
    }
    func insets(amount: EdgeInsets) -> ConstraintBuilderMultipliable {
        return self.inset(amount)
    }
    
    // MARK: Constraint
