pub fn expry_compile_expr_typed<'b, 'c>(
    expr: &'b str,
    static_value: Option<&DecodedObject<'b>>,
    allow_unbound_variables: Option<u8>,
    types: &[(&str, ExpryType)],
    custom_functions: &BTreeMap<Key<'_>, (Vec<ExpryType>, ExpryType)>,
    scope: &mut MemoryScope<'c>
) -> Result<(BytecodeRef<'b>, bool, ExpryType, Vec<ExpryTypeWarning<'b>>), CompileError<'b>>
where 'c: 'b,