The reason I say this is that the method has extra parameters that don't correspond to the SQL %Fimd.Highlight SQL function.  

What do you mean? Highlight method signature:

ClassMethod Highlight(pText As %String, pSearchString As %String, pSearchOption As %String = {$$$IFSEARCHNORMAL}, pTags As %String = {$$$IFDEFAULTHLTAGS}, pLimit As %Integer = 0, pLanguage As %String = "en", Output pSC As %Status) As %String [ SqlName = Highlight, SqlProc ]

Shows that it is available in SQL context (bolded). All classmethod arguments (except sc) can be passed from SQL.

Read method does read 32000 characters by default, you can specify an amount of characters up to $$$MaxStringLength (3 641 144 characters).

If you want to set property to a stream you can do it like this:

do objInArrMain.%Set("Content", fileStreamBase64, "stream")

I'm not sure when it became available, here's a simple check code:

set stream = ##class(%Stream.TmpCharacter).%New()
do stream.Write(123)
d obj.%Set("prop", stream, "stream")

It should output:  {"prop":"123"}

One other note: you're using file streams for temporary outputs (when building fileStreamBase64), replace file stream with temp stream for better performance.

Recommended approach - always use macros for al your GLVN needs (see: DeepSee, %Dictionary). This way reporting is easy - just open inc file and you're done.

%Compiler package contains Traveler/Visitor implementation for ObjectScript but it's not officially supported - use at your own risk.

Although the task is unfortunately unsolvable at compile-time due to the abundant meta programming, such as indirection and xecute.

In your proposed solution you can enable checkbox "Use Wildcards" in Find & Replace and search for * which is essentially everything.

Have you tried sending the message to several recipients directly? Not CC but TO:

do m.To.Insert("mail1@domain.com")
do m.To.Insert("mail2@domain.com")

Or you can send the same email object to several recipients one by one:

for to = "mail1@domain.com", "mail2@domain.com" {
    do m.To.Clear()
    do m.To.Insert(to)
    set status = ..Adapter.SendMail(m)
    do:$$$ISERR(status) $system.OBJ.DisplayError(status)
}

Here's what I came up with:

Query ClassListAll() As %SQLQuery
{
SELECT Name
FROM %Dictionary.ClassDefinition
}

Query ClassListNS(namespace) As %SQLQuery
{
SELECT Name
FROM %Dictionary.ClassDefinitionQuery_SubclassOf('%XML.Adaptor') c
WHERE 1=1
    AND EXISTS (SELECT 1
                FROM %Dictionary.ParameterDefinition
                WHERE parent = c.Name
                AND Name = 'NAMESPACE'
                AND _Default = :namespace)
}

/// Should be rewritten to return only non-empty namespaces
Query NSList() As %SQLQuery
{
SELECT DISTINCT _Default Name
FROM %Dictionary.ParameterDefinition
WHERE 1=1
    AND Name = 'NAMESPACE'
}

/// do ##class().ExportAllSchemas()
ClassMethod ExportAllSchemas()
{
    set rs = ..NSListFunc()
    while rs.%Next() {
        write "Exporting: ", rs.Name,!
        do ..ExportSchema(rs.Name)
    }
}

/// do ##class().ExportSchema()
ClassMethod ExportSchema(namespace)
{
    kill %objlasterror
    set schema=##class(%XML.Schema).%New()
    set schema.DefaultNamespace=namespace

    
    #dim empty As %Boolean = $$$YES
    #dim rs As %SQL.ISelectResult
    set rs = ..ClassListNSFunc(namespace)
    while rs.%Next() {
        set empty = $$$NO
        set sc = schema.AddSchemaType(rs.Name)
        write:$$$ISERR(sc) $System.Status.GetErrorText(sc)
    }
    if empty {
        write "Empty namespace",!
        quit
    }
    
    do ..AddImports(namespace, schema)
    
    set schema=schema.GetSchema(namespace)

    #dim writer As %XML.Writer = ##class(%XML.Writer).%New()
    set writer.NoXMLDeclaration = $$$YES
    set writer.Indent = $$$YES
    set writer.SuppressXmlns = $$$YES
    do writer.AddSchemaNamespace("s")
    do writer.OutputToFile(..NsToFullFileName(namespace))

    do writer.AddSchemaNamespace()
    do writer.AddNamespace(namespace)

    set sc = writer.DocumentNode(schema)
    write:$$$ISERR(sc) $System.Status.GetErrorText(sc)
}

ClassMethod AddImports(namespace, schema As %XML.Schema)
{
    set rs = ..NSListFunc()
    while rs.%Next() {
        set curNS = rs.Name
        continue:curNS=namespace
        do schema.DefineLocation(curNS, ..NsToLocalFileName(curNS))
    }
}

ClassMethod NsToFullFileName(namespace) As %String [ CodeMode = expression ]
{
##class(%File).SubDirectoryName($system.Util.ManagerDirectory(), "Temp", 1) _ ..NsToLocalFileName(namespace)
}

ClassMethod NsToLocalFileName(namespace) As %String [ CodeMode = expression ]
{
..NsToFileName(namespace) _ ".xsd"
}

ClassMethod NsToFileName(namespace) As %String [ CodeMode = expression ]
{
$p(namespace, "/", *-1)
}

Interesting article.

Note that comparison with 1 would always be the fastest regardless of where it is:

Here's your code on my PC:

Time for If: .037652 seconds
Time for ElseIf #1: .045029 seconds
Time for ElseIf #2: .057766 seconds
Time for Else: .053267 seconds

And here's a modified code with comparison to 1 third:

ClassMethod Run3()
{
    For i=1:1:4 {
        Set time(i,"start")=$zh
        For j=1:1:1000000 {
            If i=3 {
                set a=1
            } ElseIf i=2 {
                set a=1
            } ElseIf i=1 {
                set a=1
            } Else {
                set a=1
            }
        }
        Set time(i,"end")=$zh
    }
    
    W "Time for If: ",time(1,"end")-time(1,"start")," seconds",!
    W "Time for ElseIf #1: ",time(2,"end")-time(2,"start")," seconds",!
    W "Time for ElseIf #2: ",time(3,"end")-time(3,"start")," seconds",!
    W "Time for Else: ",time(4,"end")-time(4,"start")," seconds",!
}

Running this code yields these results:

Time for If: .109513 seconds
Time for ElseIf #1: .048419 seconds
Time for ElseIf #2: .029746 seconds
Time for Else: .059306 seconds

Regardless of where comparison to 1 happens it would be the fastest one.