let compatible_return data ret_type func =
    match ret_type, func.returns with
        | None, _ -> true
        | _, None -> false
        | Some(desired), Some(given) -> is_subtype data given desired