getAttributeSubscribersMetas(matcher, options) {
        let exact = false;
        if (options !== undefined && options.exact !== undefined) {
            exact = options.exact;
        }
        return this.subscribers.filter((meta) => {
            if (meta.matcher.attributeClass !== matcher.attributeClass) {
                return false;
            }
            if (((!exact && meta.matcher.attributeType !== undefined) || exact) && meta.matcher.attributeType !== matcher.attributeType) {
                return false;
            }
            // noinspection RedundantIfStatementJS // screw the linter, readability first
            if (((!exact && meta.matcher.attributeSubType !== undefined) || exact) && meta.matcher.attributeSubType !== matcher.attributeSubType) {
                return false;
            }
            return true;
        });
    }
@private
@param {AttributeMatcher|any} matcher
@param {object} [options]
@param {boolean} [options.exact]
@return {Array<AttributeSubscribersMeta>}