static string nullName(AnalysisResultPtr ar, TypePtr type) {
    if (!type || Type::IsMappedToVariant(type)) {
        return "null_variant";
    }
    if (type->is(Type::KindOfArray)) {
        return "null_array";
    }
    if (type->is(Type::KindOfObject)) {
        return "null_object";
    }
    if (type->is(Type::KindOfString)) {
        return "null_string";
    }
    return type->getCPPDecl(ar, BlockScopeRawPtr()) + "()";
}