             done[t] = agenda[t]
             delete agenda[t]
 
+    ###
+    For thisClass or any subclass, anything which has it is its type
+    or is the object of something which has the type as its range, or subject
+    of something which has the type as its domain
+    We don't bother doing subproperty (yet?)as it doesn't seeem to be used much.
+    Get all the Classes of which we can RDFS-infer the subject is a member
+    @returns a hash of URIs
+    ###
     findMembersNT: (thisClass) ->
-        # For thisClass or any subclass, anything which has it is its type
-        # or is the object of something which has the type as its range, or subject
-        # of something which has the type as its domain
-        # We don't bother doing subproperty (yet?)as it doesn't seeem to be used much.
-        # Get all the Classes of which we can RDFS-infer the subject is a member
-        # @returns hash of URIs
         seeds = {}
         seeds[thisClass.toNT()] = true
         members = {}

$rdf.Collection::sameTerm = $rdf.BlankNode::sameTerm
$rdf.Collection::compareTerm = $rdf.BlankNode::compareTerm

$rdf.term = (val) ->
    switch typeof val
        when 'object'

    findMemberURIs: (subject) ->
        @NTtoURI @findMembersNT subject

    ###
    Get all the Classes of which we can RDFS-infer the subject is a member
    todo: This will loop is there is a class subclass loop (Sublass loops are not illegal)
    Returns a hash table where key is NT of type and value is statement why we think so.
    Does NOT return terms, returns URI strings.
    We use NT representations in this version because they handle blank nodes.
    ###
    findTypesNT: (subject) ->
        rdftype = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type'
        types = []
        for st in @statementsMatching(subject, undefined, undefined) # fast
