function penalizeUnderscoreValueCompare(a, b) {
        var aName = a.value.toLowerCase(), bName = b.value.toLowerCase();
        // this sort function will cause _ to sort lower than lower case
        // alphabetical letters
        if (aName[0] === "_" && bName[0] !== "_") {
            return 1;
        } else if (bName[0] === "_" && aName[0] !== "_") {
            return -1;
        }
        if (aName < bName) {
            return -1;
        } else if (aName > bName) {
            return 1;
        }
        return 0;
    }
Get the type of the current session, i.e., whether it is a property
lookup and, if so, what the context of the lookup is.

@return {{property: boolean,
                 context: string} - an Object consisting
     of a {boolean} "property" that indicates whether or not the type of
     the session is a property lookup, and a {string} "context" that
     indicates the object context (as described in getContext above) of
     the property lookup, or null if there is none. The context is
     always null for non-property lookups.