             }
         case (.vertical, .normal):
             iterate(&elements, measures) { e1, e2, e2s in
-                let size = saveMeasure(e2s: e2s, e2: &e2, size: frame.size)
+                let size = calculateSizeForLayout(
+                    withOrientation: .vertical,
+                    forChild: &e2,
+                    cachedSize: e2s,
+                    ownSize: frame.size)
                 let origin: CGPoint
                 if let e1 = e1 {
                     origin = CGPoint(

            }
        }
        return resultSize
    }
}


        switch (orientation, direction) {
        case (.horizontal, .normal):
            iterate(&elements, measures) { e1, e2, e2s in
                let size = calculateSizeForLayout(
                    withOrientation: .horizontal,
                    forChild: &e2,
                    cachedSize: e2s,
                    ownSize: frame.size)
                let origin: CGPoint
                if let e1 = e1 {
                    origin = CGPoint(
