         }
     }
 
-    // Note: thrown error is always a SymbolError
+    // Note: thrown error is always a LayoutError
     private var _settingUpExpressions = false
     private var _expressionsSetUp = false
     private func setUpExpressions() throws {

            return try getter()
        }
        assert(expressions[symbol] == nil)
        let getter: () throws -> Any
        switch symbol {
        case "left":

                    self._evaluating.removeLast()
                }
                let value = try SymbolError.wrap(evaluate, for: symbol)
                if self._setupComplete, symbols.isEmpty {
                    if isViewControllerExpression {
                        try self._viewController?.setValue(value, forExpression: symbol)
                    } else if isViewExpression {
                        try self._view?.setValue(value, forExpression: symbol)
                    }
                    // Replace getter with cached result
                    self._getters[symbol] = { value }
                }
                cachedValue = value
                return value
            },
            symbols: expression.symbols
        )
        _getters[symbol] = expression.evaluate

        // Store expression
        if isViewControllerExpression {
