GetMultipleObjects and preselect

I’m using Rhino.Input.RhinoGet.GetMultipleObjects with filters but if the user preselects objects, they are able to select objects that should be filtered out. This is fine - everything works and the script ignores those filtered-out objects, but they remain selected on screen at the end of the script and I want the screen to highlight only objects were actually filtered. How do I deselect the objects that should be filtered out? Or, how can I deselect everything and then select just the objects that were filtered?

The normal Rhino behavior if preselecting is allowed but some of the preselected objects do not match the filter criteria is:

If at least one of the objects does match the filter criteria, it leaves the others selected as well, or,
if none of the objects match, to unselect everything and force a post-selection.

Rhinoscriptsyntax GetObjects() does the same - but it uses a custom Rhino.Input.Custom.GetObject() with GetMultiple(). (not GetMultipleObjects)

What you can do if you want the preselected non-matching objects to be deselected is:

While still in the object getter function, unselect everything, then re-select the objects that were actually filtered. Below is an example:

import Rhino
import rhinoscriptsyntax as rs
import scriptcontext as sc

def CustomGetObjs(prompt,g_filt=None,a_filt=None,c_filt=None,ps=True):
    go = Rhino.Input.Custom.GetObject()
    #allow preselected object
    #main object type filter
    if g_filt: go.GeometryFilter=g_filt
    #secondary object attribute filter
    if a_filt: go.GeometryAttributeFilter=a_filt
    #custom geometry filter - can be anything
    if c_filt: go.SetCustomGeometryFilter(c_filt)
    get_rc = go.GetMultiple(1,0)
    if get_rc==Rhino.Input.GetResult.Cancel: return
    if get_rc==Rhino.Input.GetResult.Object:
        #some objects match selection criteria
        #unselect all
        #select only the objects that were filtered
        for i in range(go.ObjectCount):
        return go.Objects()

#planar closed curves
def cp_crv_filt(rhino_object, geometry, component_index):
    return rs.IsCurvePlanar(geometry) and rs.IsCurveClosed(geometry)
def TestFunction():
    prompt="Select objects"
    if result is None: return
    print result