                            AND n.`class-version` < 50
                         RETURN n.name AS ClassName, n.`class-version-str` AS ClassVersion
                          ORDER BY n.name
-                       ")]
-    (println "COM06 =" res)))    ;####TEST
+                       ")
+        message        (if (empty? res) "" (s/join "\n" (map #(str (get % "ClassName") " is compiled for JVM version " (get % "ClassVersion"))) res))]
+    { "COM06" message }))
 
 (defn- sec04-stb03-stb04-stb05-stb06-stb10-stb12-java-apis
   []

                                           'org.alfresco.service.cmr.search.SearchService',
                                           'org.alfresco.service.cmr.search.ResultSet'
                                         ]
                        RETURN m.name AS SearchAPI, COLLECT(DISTINCT n.name) AS UsedBy
                         ORDER BY m.name
                       ")]
    (println "STB07/STB14 =" res)))    ;####TEST

(defn- sec02-minimise-manual-authentication
  []

                         WHERE HAS(n.name)
                           AND HAS(m.name)
                           AND m.name = 'org.alfresco.repo.security.authentication.AuthenticationUtil'
                        RETURN n.name AS UsedBy, m.name AS AuthenticationUtilAPI
                         ORDER BY n.name
                       ")
        message        (if (empty? res) "" (s/join "\n" (map #(str (get % "UsedBy") " uses " (get % "AuthenticationUtilAPI")) res)))]
    { "SEC02" message }))

(defn- stb06-stb18-manual-transactions
  []
  (let [res (cy/tquery "
                         START n=NODE(*)
                         MATCH (n)-->(m)
                         WHERE HAS(n.name)
                           AND HAS(m.name)
                           AND m.name IN [
                                          'org.alfresco.repo.transaction.RetryingTransactionHelper',
                                          'org.alfresco.service.transaction.TransactionService'
                                         ]
                        RETURN n.name as UsedBy, COLLECT(DISTINCT m.name) AS TransactionAPIs
                         ORDER BY n.name
                       ")
        message        (if (empty? res) "" (s/join "\n" (map #(str (get % "UsedBy") " uses " (s/join ", " (get % "TransactionAPIs"))) res)))]
    {
      "STB06" message
      "STB18" message
    }))

(defn- validate-criteria
  [neo4j-url
