├── graph-w-legend.png ├── readme.txt ├── pom.xml ├── src └── net │ └── n01se │ └── clojure_classes.clj ├── epl-v10.html ├── graph.dot └── graph.svg /graph-w-legend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Chouser/clojure-classes/HEAD/graph-w-legend.png -------------------------------------------------------------------------------- /readme.txt: -------------------------------------------------------------------------------- 1 | The code in src/net/n01se/clojure_classes.clj uses Clojure, the 2 | Clojure .java sources, and the Graphviz "dot" program to produce 3 | "graph.dot". 4 | 5 | I run it like: 6 | mvn clojure:run 7 | 8 | The "graph.svg" file is then produced using: 9 | dot -Tsvg < graph.dot > graph.svg 10 | 11 | Adjustments to line thickness in graph.svg were made by: 12 | sed -b 's/stroke:#\w*;/&stroke-width:1.5;/g' graph.svg 13 | 14 | Inkscape is used to add the legend and make other minor manual 15 | adjustments seen in "graph-w-legend.svg" and "graph-w-legend.png". 16 | 17 | The graph-w-legend.png has also been run through gimp to reduce the 18 | number of colors and therefore the file size. 19 | 20 | --Chouser, Feb 2009 21 | [updated Feb 2011] 22 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 3 | 4.0.0 4 | net.n01se 5 | clojure-classes 6 | jar 7 | 1.0-SNAPSHOT 8 | clojure-classes 9 | Generate inheritance graph for Clojure classes 10 | 11 | 12 | org.clojure 13 | clojure 14 | 1.3.0 15 | 16 | 17 | 18 | 19 | 20 | 21 | com.theoryinpractise 22 | clojure-maven-plugin 23 | 1.3.8 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | clojure 34 | http://build.clojure.org/releases 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /src/net/n01se/clojure_classes.clj: -------------------------------------------------------------------------------- 1 | ; clojure-classes.clj - produces graphviz dot graph for Clojure Java classes 2 | ; Copyright (c) Chris Houser, Dec 2008. All rights reserved. 3 | ; The use and distribution terms for this software are covered by the 4 | ; Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) 5 | ; which can be found in the file epl-v10.html at the root of this distribution. 6 | ; By using this software in any fashion, you are agreeing to be bound by 7 | ; the terms of this license. 8 | ; You must not remove this notice, or any other, from this software. 9 | 10 | (ns net.n01se.clojure-classes 11 | (:use [clojure.java.shell :only (sh)]) 12 | (:import (javax.swing JFrame JLabel JScrollPane ImageIcon) 13 | (clojure.lang PersistentQueue))) 14 | 15 | (def srcpath "/home/chouser/proj/clojure/src/jvm/clojure/lang/") 16 | 17 | (defmacro str-for [& for-stuff] 18 | `(apply str (for ~@for-stuff))) 19 | 20 | (def colors ["#d70000" "#d7009e" "#b300d7" "#5a00d7" "#0061d7" "#00d0d7" 21 | "#00d764" "#76d700" "#d78100"]) 22 | ; Some lighter colors: 23 | ; "#ff817f" "#ff7fea" "#b47fff" "#7fa5ff" "#7ffffb" "#a8ff7f" "#ffd97f" 24 | 25 | (def preds '{ISeq seq?, IPersistentMap map?, IPersistentVector vector?, 26 | Symbol symbol?, Keyword keyword?, Var var?, 27 | IPersistentCollection coll?, IPersistentList list?, 28 | IPersistentSet set?, Number number?, IFn ifn?, 29 | Associative associative?, Sequential sequential?, 30 | Sorted sorted?, Reversible reversible?, Ratio ratio? 31 | Fn fn?, Delay delay?, Class class?, BigDecimal decimal?, 32 | String string?}) 33 | 34 | (def ctors '{IteratorSeq iterator-seq PersistentList list ISeq seq 35 | EnumerationSeq enumeration-seq Var "intern, with-local-vars" 36 | LazilyPersistentVector "vector, vec" 37 | PersistentHashMap hash-map PersistentHashSet "hash-set, set" 38 | PersistentArrayMap array-map 39 | PersistentTreeMap "sorted-map, sorted-map-by" 40 | PersistentTreeSet sorted-set 41 | PersistentStructMap$Def create-struct 42 | PersistentStructMap "struct-map, struct" 43 | LazyCons lazy-cons Range range FnSeq fnseq 44 | MultiFn defmulti Keyword keyword Symbol "symbol, gensym"}) 45 | 46 | (def clusters '#{}) 47 | 48 | (def badges 49 | '{IMeta M Iterable T Counted 1 Streamable S Serializable Z 50 | Reversible R Named N Comparable =}) 51 | 52 | (def color-override '{PersistentList "#76d700" PersistentQueue "#0061d7" 53 | LazySeq "#d78100"}) 54 | 55 | (def aliases '{core$future_call$reify__5684 "(future)"}) 56 | 57 | (def extra-seed-classes [clojure.core$future_call$reify__5684]) 58 | 59 | (defn class-filter [cls] 60 | (let [package (-> cls .getPackage .getName)] 61 | (or (= package "clojure.lang") 62 | (and (.startsWith package "java") (.isInterface cls))))) 63 | 64 | (defn choose-shape [cls] 65 | (cond 66 | (not (-> cls .getPackage .getName (.startsWith "clojure"))) "diamond" 67 | (.isInterface cls) "octagon" 68 | :else "oval")) 69 | 70 | (defn class-name [cls] 71 | (symbol (.getSimpleName cls))) 72 | 73 | (defn class-label [cls] 74 | (let [clsname (class-name cls) 75 | a (aliases clsname (str clsname)) 76 | pred (preds clsname) 77 | ctor (ctors clsname) 78 | anc (set (map class-name (ancestors cls)))] 79 | (str a 80 | ;(when ctor (str (when-not (empty? a) "\\n") ctor)) 81 | (when pred (str \\ \n pred)) 82 | (when-let [badge (seq (filter identity (map badges (map anc (keys badges)))))] 83 | (str "\\n[" (apply str badge) "]"))))) 84 | 85 | (defn class-color [cls] 86 | (color-override (class-name cls) 87 | (nth colors (rem (Math/abs (hash (str cls))) (count colors))))) 88 | 89 | (def graph 90 | (loop [found {} 91 | work (into 92 | (into PersistentQueue/EMPTY extra-seed-classes) 93 | (filter #(and % (some class-filter (bases %))) 94 | (for [file (.listFiles (java.io.File. srcpath))] 95 | (let [[cname ext] (.split (.getName file) "\\.")] 96 | (when (= ext "java") 97 | (Class/forName (str "clojure.lang." cname)))))))] 98 | (if (empty? work) 99 | found 100 | (let [cls (peek work) 101 | kids (seq (filter class-filter (bases cls)))] 102 | (recur (assoc found cls kids) 103 | (into (pop work) (remove found kids))))))) 104 | 105 | (def classes (sort-by #(.getSimpleName %) (keys graph))) 106 | 107 | (def dotstr 108 | (str 109 | "digraph {\n" 110 | " rankdir=LR;\n" 111 | " dpi=55;\n" 112 | " nodesep=0.10;\n" 113 | " ranksep=1.2;\n" 114 | " mclimit=2500.0;\n" 115 | ;" splines=true;\n" 116 | ;" overlap=scale;\n" 117 | " node[ fontname=Helvetica shape=box ];\n" 118 | " 119 | subgraph cluster_legend { 120 | label=\"Legend\" 121 | fontname=\"Helvetica Bold\" 122 | fontsize=19 123 | bgcolor=\"#dddddd\" 124 | \"Clojure Interface\" [ shape=octagon fillcolor=\"#ffffff\" style=filled ]; 125 | \"Java Interface\" [ shape=diamond fillcolor=\"#ffffff\" style=filled ]; 126 | \"Clojure class\" [ shape=oval fillcolor=\"#ffffff\" style=filled ]; 127 | " 128 | (when (seq badges) 129 | (str " 130 | badges [ 131 | shape=record 132 | style=filled 133 | fillcolor=\"#ffffff\" 134 | label=\"{{" 135 | (apply str (interpose "|" (vals badges))) 136 | "}|{" 137 | (apply str (interpose "|" (keys badges))) 138 | "}}\" 139 | ]")) 140 | " 141 | } 142 | " 143 | (str-for [cls classes] 144 | (when-not (badges (class-name cls)) 145 | (let [color (class-color cls) 146 | node (str " \"" cls "\" [ label=\"" (class-label cls) "\" " 147 | "color=\"" color "\" " 148 | "shape=\"" (choose-shape cls) "\"];\n") 149 | cluster (some #(clusters (class-name %)) 150 | (cons cls (ancestors cls)))] 151 | (str (when cluster (str "subgraph cluster_" cluster " {\n")) 152 | node 153 | (when cluster "}\n") 154 | (str-for [sub (graph cls)] 155 | (when-not (badges (class-name sub)) 156 | (str " \"" cls "\" -> \"" sub "\"" 157 | " [ color=\"" color "\" ];\n"))))))) 158 | "}\n")) 159 | 160 | (spit "graph.dot" dotstr) 161 | 162 | (doto (JFrame. "Clojure Classes") 163 | (.add (-> (sh "dot" "-Tpng" :in dotstr :out-enc :bytes) :out ImageIcon. 164 | JLabel. JScrollPane.)) 165 | (.setSize 600 400) 166 | (.setDefaultCloseOperation javax.swing.WindowConstants/DISPOSE_ON_CLOSE) 167 | (.setVisible true)) 168 | -------------------------------------------------------------------------------- /epl-v10.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Eclipse Public License - Version 1.0 8 | 25 | 26 | 27 | 28 | 29 | 30 |

Eclipse Public License - v 1.0

31 | 32 |

THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE 33 | PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR 34 | DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS 35 | AGREEMENT.

36 | 37 |

1. DEFINITIONS

38 | 39 |

"Contribution" means:

40 | 41 |

a) in the case of the initial Contributor, the initial 42 | code and documentation distributed under this Agreement, and

43 |

b) in the case of each subsequent Contributor:

44 |

i) changes to the Program, and

45 |

ii) additions to the Program;

46 |

where such changes and/or additions to the Program 47 | originate from and are distributed by that particular Contributor. A 48 | Contribution 'originates' from a Contributor if it was added to the 49 | Program by such Contributor itself or anyone acting on such 50 | Contributor's behalf. Contributions do not include additions to the 51 | Program which: (i) are separate modules of software distributed in 52 | conjunction with the Program under their own license agreement, and (ii) 53 | are not derivative works of the Program.

54 | 55 |

"Contributor" means any person or entity that distributes 56 | the Program.

57 | 58 |

"Licensed Patents" mean patent claims licensable by a 59 | Contributor which are necessarily infringed by the use or sale of its 60 | Contribution alone or when combined with the Program.

61 | 62 |

"Program" means the Contributions distributed in accordance 63 | with this Agreement.

64 | 65 |

"Recipient" means anyone who receives the Program under 66 | this Agreement, including all Contributors.

67 | 68 |

2. GRANT OF RIGHTS

69 | 70 |

a) Subject to the terms of this Agreement, each 71 | Contributor hereby grants Recipient a non-exclusive, worldwide, 72 | royalty-free copyright license to reproduce, prepare derivative works 73 | of, publicly display, publicly perform, distribute and sublicense the 74 | Contribution of such Contributor, if any, and such derivative works, in 75 | source code and object code form.

76 | 77 |

b) Subject to the terms of this Agreement, each 78 | Contributor hereby grants Recipient a non-exclusive, worldwide, 79 | royalty-free patent license under Licensed Patents to make, use, sell, 80 | offer to sell, import and otherwise transfer the Contribution of such 81 | Contributor, if any, in source code and object code form. This patent 82 | license shall apply to the combination of the Contribution and the 83 | Program if, at the time the Contribution is added by the Contributor, 84 | such addition of the Contribution causes such combination to be covered 85 | by the Licensed Patents. The patent license shall not apply to any other 86 | combinations which include the Contribution. No hardware per se is 87 | licensed hereunder.

88 | 89 |

c) Recipient understands that although each Contributor 90 | grants the licenses to its Contributions set forth herein, no assurances 91 | are provided by any Contributor that the Program does not infringe the 92 | patent or other intellectual property rights of any other entity. Each 93 | Contributor disclaims any liability to Recipient for claims brought by 94 | any other entity based on infringement of intellectual property rights 95 | or otherwise. As a condition to exercising the rights and licenses 96 | granted hereunder, each Recipient hereby assumes sole responsibility to 97 | secure any other intellectual property rights needed, if any. For 98 | example, if a third party patent license is required to allow Recipient 99 | to distribute the Program, it is Recipient's responsibility to acquire 100 | that license before distributing the Program.

101 | 102 |

d) Each Contributor represents that to its knowledge it 103 | has sufficient copyright rights in its Contribution, if any, to grant 104 | the copyright license set forth in this Agreement.

105 | 106 |

3. REQUIREMENTS

107 | 108 |

A Contributor may choose to distribute the Program in object code 109 | form under its own license agreement, provided that:

110 | 111 |

a) it complies with the terms and conditions of this 112 | Agreement; and

113 | 114 |

b) its license agreement:

115 | 116 |

i) effectively disclaims on behalf of all Contributors 117 | all warranties and conditions, express and implied, including warranties 118 | or conditions of title and non-infringement, and implied warranties or 119 | conditions of merchantability and fitness for a particular purpose;

120 | 121 |

ii) effectively excludes on behalf of all Contributors 122 | all liability for damages, including direct, indirect, special, 123 | incidental and consequential damages, such as lost profits;

124 | 125 |

iii) states that any provisions which differ from this 126 | Agreement are offered by that Contributor alone and not by any other 127 | party; and

128 | 129 |

iv) states that source code for the Program is available 130 | from such Contributor, and informs licensees how to obtain it in a 131 | reasonable manner on or through a medium customarily used for software 132 | exchange.

133 | 134 |

When the Program is made available in source code form:

135 | 136 |

a) it must be made available under this Agreement; and

137 | 138 |

b) a copy of this Agreement must be included with each 139 | copy of the Program.

140 | 141 |

Contributors may not remove or alter any copyright notices contained 142 | within the Program.

143 | 144 |

Each Contributor must identify itself as the originator of its 145 | Contribution, if any, in a manner that reasonably allows subsequent 146 | Recipients to identify the originator of the Contribution.

147 | 148 |

4. COMMERCIAL DISTRIBUTION

149 | 150 |

Commercial distributors of software may accept certain 151 | responsibilities with respect to end users, business partners and the 152 | like. While this license is intended to facilitate the commercial use of 153 | the Program, the Contributor who includes the Program in a commercial 154 | product offering should do so in a manner which does not create 155 | potential liability for other Contributors. Therefore, if a Contributor 156 | includes the Program in a commercial product offering, such Contributor 157 | ("Commercial Contributor") hereby agrees to defend and 158 | indemnify every other Contributor ("Indemnified Contributor") 159 | against any losses, damages and costs (collectively "Losses") 160 | arising from claims, lawsuits and other legal actions brought by a third 161 | party against the Indemnified Contributor to the extent caused by the 162 | acts or omissions of such Commercial Contributor in connection with its 163 | distribution of the Program in a commercial product offering. The 164 | obligations in this section do not apply to any claims or Losses 165 | relating to any actual or alleged intellectual property infringement. In 166 | order to qualify, an Indemnified Contributor must: a) promptly notify 167 | the Commercial Contributor in writing of such claim, and b) allow the 168 | Commercial Contributor to control, and cooperate with the Commercial 169 | Contributor in, the defense and any related settlement negotiations. The 170 | Indemnified Contributor may participate in any such claim at its own 171 | expense.

172 | 173 |

For example, a Contributor might include the Program in a commercial 174 | product offering, Product X. That Contributor is then a Commercial 175 | Contributor. If that Commercial Contributor then makes performance 176 | claims, or offers warranties related to Product X, those performance 177 | claims and warranties are such Commercial Contributor's responsibility 178 | alone. Under this section, the Commercial Contributor would have to 179 | defend claims against the other Contributors related to those 180 | performance claims and warranties, and if a court requires any other 181 | Contributor to pay any damages as a result, the Commercial Contributor 182 | must pay those damages.

183 | 184 |

5. NO WARRANTY

185 | 186 |

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS 187 | PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS 188 | OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, 189 | ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY 190 | OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely 191 | responsible for determining the appropriateness of using and 192 | distributing the Program and assumes all risks associated with its 193 | exercise of rights under this Agreement , including but not limited to 194 | the risks and costs of program errors, compliance with applicable laws, 195 | damage to or loss of data, programs or equipment, and unavailability or 196 | interruption of operations.

197 | 198 |

6. DISCLAIMER OF LIABILITY

199 | 200 |

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT 201 | NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, 202 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING 203 | WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF 204 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 205 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR 206 | DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED 207 | HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

208 | 209 |

7. GENERAL

210 | 211 |

If any provision of this Agreement is invalid or unenforceable under 212 | applicable law, it shall not affect the validity or enforceability of 213 | the remainder of the terms of this Agreement, and without further action 214 | by the parties hereto, such provision shall be reformed to the minimum 215 | extent necessary to make such provision valid and enforceable.

216 | 217 |

If Recipient institutes patent litigation against any entity 218 | (including a cross-claim or counterclaim in a lawsuit) alleging that the 219 | Program itself (excluding combinations of the Program with other 220 | software or hardware) infringes such Recipient's patent(s), then such 221 | Recipient's rights granted under Section 2(b) shall terminate as of the 222 | date such litigation is filed.

223 | 224 |

All Recipient's rights under this Agreement shall terminate if it 225 | fails to comply with any of the material terms or conditions of this 226 | Agreement and does not cure such failure in a reasonable period of time 227 | after becoming aware of such noncompliance. If all Recipient's rights 228 | under this Agreement terminate, Recipient agrees to cease use and 229 | distribution of the Program as soon as reasonably practicable. However, 230 | Recipient's obligations under this Agreement and any licenses granted by 231 | Recipient relating to the Program shall continue and survive.

232 | 233 |

Everyone is permitted to copy and distribute copies of this 234 | Agreement, but in order to avoid inconsistency the Agreement is 235 | copyrighted and may only be modified in the following manner. The 236 | Agreement Steward reserves the right to publish new versions (including 237 | revisions) of this Agreement from time to time. No one other than the 238 | Agreement Steward has the right to modify this Agreement. The Eclipse 239 | Foundation is the initial Agreement Steward. The Eclipse Foundation may 240 | assign the responsibility to serve as the Agreement Steward to a 241 | suitable separate entity. Each new version of the Agreement will be 242 | given a distinguishing version number. The Program (including 243 | Contributions) may always be distributed subject to the version of the 244 | Agreement under which it was received. In addition, after a new version 245 | of the Agreement is published, Contributor may elect to distribute the 246 | Program (including its Contributions) under the new version. Except as 247 | expressly stated in Sections 2(a) and 2(b) above, Recipient receives no 248 | rights or licenses to the intellectual property of any Contributor under 249 | this Agreement, whether expressly, by implication, estoppel or 250 | otherwise. All rights in the Program not expressly granted under this 251 | Agreement are reserved.

252 | 253 |

This Agreement is governed by the laws of the State of New York and 254 | the intellectual property laws of the United States of America. No party 255 | to this Agreement will bring a legal action under this Agreement more 256 | than one year after the cause of action arose. Each party waives its 257 | rights to a jury trial in any resulting litigation.

258 | 259 | 260 | 261 | 262 | -------------------------------------------------------------------------------- /graph.dot: -------------------------------------------------------------------------------- 1 | digraph { 2 | rankdir=LR; 3 | dpi=55; 4 | nodesep=0.10; 5 | ranksep=1.2; 6 | mclimit=2500.0; 7 | node[ fontname=Helvetica shape=box ]; 8 | 9 | subgraph cluster_legend { 10 | label="Legend" 11 | fontname="Helvetica Bold" 12 | fontsize=19 13 | bgcolor="#dddddd" 14 | "Clojure Interface" [ shape=octagon fillcolor="#ffffff" style=filled ]; 15 | "Java Interface" [ shape=diamond fillcolor="#ffffff" style=filled ]; 16 | "Clojure class" [ shape=oval fillcolor="#ffffff" style=filled ]; 17 | 18 | badges [ 19 | shape=record 20 | style=filled 21 | fillcolor="#ffffff" 22 | label="{{M|T|1|S|Z|R|N|=}|{IMeta|Iterable|Counted|Streamable|Serializable|Reversible|Named|Comparable}}" 23 | ] 24 | } 25 | "class clojure.lang.AFn" [ label="AFn" color="#76d700" shape="oval"]; 26 | "class clojure.lang.AFn" -> "interface clojure.lang.IFn" [ color="#76d700" ]; 27 | "class clojure.lang.AFunction" [ label="AFunction\n[MZ]" color="#d70000" shape="oval"]; 28 | "class clojure.lang.AFunction" -> "class clojure.lang.AFn" [ color="#d70000" ]; 29 | "class clojure.lang.AFunction" -> "interface clojure.lang.IObj" [ color="#d70000" ]; 30 | "class clojure.lang.AFunction" -> "interface java.util.Comparator" [ color="#d70000" ]; 31 | "class clojure.lang.AFunction" -> "interface clojure.lang.Fn" [ color="#d70000" ]; 32 | "class clojure.lang.AMapEntry" [ label="AMapEntry\n[T1ZR=]" color="#5a00d7" shape="oval"]; 33 | "class clojure.lang.AMapEntry" -> "class clojure.lang.APersistentVector" [ color="#5a00d7" ]; 34 | "class clojure.lang.AMapEntry" -> "interface clojure.lang.IMapEntry" [ color="#5a00d7" ]; 35 | "class clojure.lang.APersistentMap" [ label="APersistentMap\n[T1Z]" color="#b300d7" shape="oval"]; 36 | "class clojure.lang.APersistentMap" -> "class clojure.lang.AFn" [ color="#b300d7" ]; 37 | "class clojure.lang.APersistentMap" -> "interface clojure.lang.IPersistentMap" [ color="#b300d7" ]; 38 | "class clojure.lang.APersistentMap" -> "interface java.util.Map" [ color="#b300d7" ]; 39 | "class clojure.lang.APersistentMap" -> "interface clojure.lang.MapEquivalence" [ color="#b300d7" ]; 40 | "class clojure.lang.APersistentSet" [ label="APersistentSet\n[T1Z]" color="#5a00d7" shape="oval"]; 41 | "class clojure.lang.APersistentSet" -> "class clojure.lang.AFn" [ color="#5a00d7" ]; 42 | "class clojure.lang.APersistentSet" -> "interface clojure.lang.IPersistentSet" [ color="#5a00d7" ]; 43 | "class clojure.lang.APersistentSet" -> "interface java.util.Collection" [ color="#5a00d7" ]; 44 | "class clojure.lang.APersistentSet" -> "interface java.util.Set" [ color="#5a00d7" ]; 45 | "class clojure.lang.APersistentVector" [ label="APersistentVector\n[T1ZR=]" color="#b300d7" shape="oval"]; 46 | "class clojure.lang.APersistentVector" -> "class clojure.lang.AFn" [ color="#b300d7" ]; 47 | "class clojure.lang.APersistentVector" -> "interface clojure.lang.IPersistentVector" [ color="#b300d7" ]; 48 | "class clojure.lang.APersistentVector" -> "interface java.util.List" [ color="#b300d7" ]; 49 | "class clojure.lang.APersistentVector" -> "interface java.util.RandomAccess" [ color="#b300d7" ]; 50 | "class clojure.lang.ARef" [ label="ARef\n[M]" color="#00d0d7" shape="oval"]; 51 | "class clojure.lang.ARef" -> "class clojure.lang.AReference" [ color="#00d0d7" ]; 52 | "class clojure.lang.ARef" -> "interface clojure.lang.IRef" [ color="#00d0d7" ]; 53 | "class clojure.lang.AReference" [ label="AReference\n[M]" color="#d70000" shape="oval"]; 54 | "class clojure.lang.AReference" -> "interface clojure.lang.IReference" [ color="#d70000" ]; 55 | "class clojure.lang.ASeq" [ label="ASeq\n[MTZ]" color="#00d0d7" shape="oval"]; 56 | "class clojure.lang.ASeq" -> "class clojure.lang.Obj" [ color="#00d0d7" ]; 57 | "class clojure.lang.ASeq" -> "interface clojure.lang.ISeq" [ color="#00d0d7" ]; 58 | "class clojure.lang.ASeq" -> "interface clojure.lang.Sequential" [ color="#00d0d7" ]; 59 | "class clojure.lang.ASeq" -> "interface java.util.List" [ color="#00d0d7" ]; 60 | "class clojure.lang.ATransientMap" [ label="ATransientMap\n[1]" color="#d78100" shape="oval"]; 61 | "class clojure.lang.ATransientMap" -> "class clojure.lang.AFn" [ color="#d78100" ]; 62 | "class clojure.lang.ATransientMap" -> "interface clojure.lang.ITransientMap" [ color="#d78100" ]; 63 | "class clojure.lang.ATransientSet" [ label="ATransientSet\n[1]" color="#76d700" shape="oval"]; 64 | "class clojure.lang.ATransientSet" -> "class clojure.lang.AFn" [ color="#76d700" ]; 65 | "class clojure.lang.ATransientSet" -> "interface clojure.lang.ITransientSet" [ color="#76d700" ]; 66 | "class clojure.lang.Agent" [ label="Agent\n[M]" color="#00d764" shape="oval"]; 67 | "class clojure.lang.Agent" -> "class clojure.lang.ARef" [ color="#00d764" ]; 68 | "class clojure.lang.ArrayChunk" [ label="ArrayChunk\n[1Z]" color="#76d700" shape="oval"]; 69 | "class clojure.lang.ArrayChunk" -> "interface clojure.lang.IChunk" [ color="#76d700" ]; 70 | "class clojure.lang.ArraySeq" [ label="ArraySeq\n[MT1Z]" color="#5a00d7" shape="oval"]; 71 | "class clojure.lang.ArraySeq" -> "class clojure.lang.ASeq" [ color="#5a00d7" ]; 72 | "class clojure.lang.ArraySeq" -> "interface clojure.lang.IndexedSeq" [ color="#5a00d7" ]; 73 | "class clojure.lang.ArraySeq" -> "interface clojure.lang.IReduce" [ color="#5a00d7" ]; 74 | "interface clojure.lang.Associative" [ label="Associative\nassociative?" color="#76d700" shape="octagon"]; 75 | "interface clojure.lang.Associative" -> "interface clojure.lang.IPersistentCollection" [ color="#76d700" ]; 76 | "interface clojure.lang.Associative" -> "interface clojure.lang.ILookup" [ color="#76d700" ]; 77 | "class clojure.lang.Atom" [ label="Atom\n[M]" color="#b300d7" shape="oval"]; 78 | "class clojure.lang.Atom" -> "class clojure.lang.ARef" [ color="#b300d7" ]; 79 | "interface java.util.concurrent.Callable" [ label="Callable" color="#00d764" shape="diamond"]; 80 | "class clojure.lang.ChunkBuffer" [ label="ChunkBuffer\n[1]" color="#b300d7" shape="oval"]; 81 | "class clojure.lang.ChunkedCons" [ label="ChunkedCons\n[MTZ]" color="#5a00d7" shape="oval"]; 82 | "class clojure.lang.ChunkedCons" -> "class clojure.lang.ASeq" [ color="#5a00d7" ]; 83 | "class clojure.lang.ChunkedCons" -> "interface clojure.lang.IChunkedSeq" [ color="#5a00d7" ]; 84 | "interface java.util.Collection" [ label="Collection\n[T]" color="#00d764" shape="diamond"]; 85 | "interface java.util.Comparator" [ label="Comparator" color="#00d0d7" shape="diamond"]; 86 | "interface java.util.concurrent.ConcurrentMap" [ label="ConcurrentMap" color="#0061d7" shape="diamond"]; 87 | "interface java.util.concurrent.ConcurrentMap" -> "interface java.util.Map" [ color="#0061d7" ]; 88 | "class clojure.lang.Cons" [ label="Cons\n[MTZ]" color="#76d700" shape="oval"]; 89 | "class clojure.lang.Cons" -> "class clojure.lang.ASeq" [ color="#76d700" ]; 90 | "class clojure.lang.Delay" [ label="Delay\ndelay?" color="#5a00d7" shape="oval"]; 91 | "class clojure.lang.Delay" -> "interface clojure.lang.IDeref" [ color="#5a00d7" ]; 92 | "class clojure.lang.Delay" -> "interface clojure.lang.IPending" [ color="#5a00d7" ]; 93 | "interface java.util.Map$Entry" [ label="Entry" color="#d7009e" shape="diamond"]; 94 | "interface java.util.Enumeration" [ label="Enumeration" color="#5a00d7" shape="diamond"]; 95 | "class clojure.lang.EnumerationSeq" [ label="EnumerationSeq\n[MTZ]" color="#00d0d7" shape="oval"]; 96 | "class clojure.lang.EnumerationSeq" -> "class clojure.lang.ASeq" [ color="#00d0d7" ]; 97 | "interface clojure.lang.Fn" [ label="Fn\nfn?" color="#0061d7" shape="octagon"]; 98 | "class clojure.lang.FnLoaderThunk" [ label="FnLoaderThunk\n[MZ]" color="#76d700" shape="oval"]; 99 | "class clojure.lang.FnLoaderThunk" -> "class clojure.lang.RestFn" [ color="#76d700" ]; 100 | "interface java.util.concurrent.Future" [ label="Future" color="#5a00d7" shape="diamond"]; 101 | "interface clojure.lang.IBlockingDeref" [ label="IBlockingDeref" color="#5a00d7" shape="octagon"]; 102 | "interface clojure.lang.IChunk" [ label="IChunk\n[1]" color="#0061d7" shape="octagon"]; 103 | "interface clojure.lang.IChunk" -> "interface clojure.lang.Indexed" [ color="#0061d7" ]; 104 | "interface clojure.lang.IChunkedSeq" [ label="IChunkedSeq" color="#d70000" shape="octagon"]; 105 | "interface clojure.lang.IChunkedSeq" -> "interface clojure.lang.ISeq" [ color="#d70000" ]; 106 | "interface clojure.lang.IChunkedSeq" -> "interface clojure.lang.Sequential" [ color="#d70000" ]; 107 | "interface clojure.lang.IDeref" [ label="IDeref" color="#00d764" shape="octagon"]; 108 | "interface clojure.lang.IEditableCollection" [ label="IEditableCollection" color="#76d700" shape="octagon"]; 109 | "interface clojure.lang.IFn" [ label="IFn\nifn?" color="#0061d7" shape="octagon"]; 110 | "interface clojure.lang.IFn" -> "interface java.util.concurrent.Callable" [ color="#0061d7" ]; 111 | "interface clojure.lang.IFn" -> "interface java.lang.Runnable" [ color="#0061d7" ]; 112 | "interface clojure.lang.ILookup" [ label="ILookup" color="#00d764" shape="octagon"]; 113 | "interface clojure.lang.ILookupSite" [ label="ILookupSite" color="#00d764" shape="octagon"]; 114 | "interface clojure.lang.ILookupThunk" [ label="ILookupThunk" color="#00d0d7" shape="octagon"]; 115 | "interface clojure.lang.IMapEntry" [ label="IMapEntry" color="#00d0d7" shape="octagon"]; 116 | "interface clojure.lang.IMapEntry" -> "interface java.util.Map$Entry" [ color="#00d0d7" ]; 117 | "interface clojure.lang.IObj" [ label="IObj\n[M]" color="#0061d7" shape="octagon"]; 118 | "interface clojure.lang.IPending" [ label="IPending" color="#d70000" shape="octagon"]; 119 | "interface clojure.lang.IPersistentCollection" [ label="IPersistentCollection\ncoll?" color="#d7009e" shape="octagon"]; 120 | "interface clojure.lang.IPersistentCollection" -> "interface clojure.lang.Seqable" [ color="#d7009e" ]; 121 | "interface clojure.lang.IPersistentList" [ label="IPersistentList\nlist?" color="#5a00d7" shape="octagon"]; 122 | "interface clojure.lang.IPersistentList" -> "interface clojure.lang.Sequential" [ color="#5a00d7" ]; 123 | "interface clojure.lang.IPersistentList" -> "interface clojure.lang.IPersistentStack" [ color="#5a00d7" ]; 124 | "interface clojure.lang.IPersistentMap" [ label="IPersistentMap\nmap?\n[T1]" color="#d70000" shape="octagon"]; 125 | "interface clojure.lang.IPersistentMap" -> "interface clojure.lang.Associative" [ color="#d70000" ]; 126 | "interface clojure.lang.IPersistentSet" [ label="IPersistentSet\nset?\n[1]" color="#d7009e" shape="octagon"]; 127 | "interface clojure.lang.IPersistentSet" -> "interface clojure.lang.IPersistentCollection" [ color="#d7009e" ]; 128 | "interface clojure.lang.IPersistentStack" [ label="IPersistentStack" color="#00d764" shape="octagon"]; 129 | "interface clojure.lang.IPersistentStack" -> "interface clojure.lang.IPersistentCollection" [ color="#00d764" ]; 130 | "interface clojure.lang.IPersistentVector" [ label="IPersistentVector\nvector?\n[1R]" color="#d7009e" shape="octagon"]; 131 | "interface clojure.lang.IPersistentVector" -> "interface clojure.lang.Associative" [ color="#d7009e" ]; 132 | "interface clojure.lang.IPersistentVector" -> "interface clojure.lang.Sequential" [ color="#d7009e" ]; 133 | "interface clojure.lang.IPersistentVector" -> "interface clojure.lang.IPersistentStack" [ color="#d7009e" ]; 134 | "interface clojure.lang.IPersistentVector" -> "interface clojure.lang.Indexed" [ color="#d7009e" ]; 135 | "interface clojure.lang.IReduce" [ label="IReduce" color="#d7009e" shape="octagon"]; 136 | "interface clojure.lang.IRef" [ label="IRef" color="#b300d7" shape="octagon"]; 137 | "interface clojure.lang.IRef" -> "interface clojure.lang.IDeref" [ color="#b300d7" ]; 138 | "interface clojure.lang.IReference" [ label="IReference\n[M]" color="#d78100" shape="octagon"]; 139 | "interface clojure.lang.ISeq" [ label="ISeq\nseq?" color="#b300d7" shape="octagon"]; 140 | "interface clojure.lang.ISeq" -> "interface clojure.lang.IPersistentCollection" [ color="#b300d7" ]; 141 | "interface clojure.lang.ITransientAssociative" [ label="ITransientAssociative" color="#b300d7" shape="octagon"]; 142 | "interface clojure.lang.ITransientAssociative" -> "interface clojure.lang.ITransientCollection" [ color="#b300d7" ]; 143 | "interface clojure.lang.ITransientAssociative" -> "interface clojure.lang.ILookup" [ color="#b300d7" ]; 144 | "interface clojure.lang.ITransientCollection" [ label="ITransientCollection" color="#b300d7" shape="octagon"]; 145 | "interface clojure.lang.ITransientMap" [ label="ITransientMap\n[1]" color="#00d0d7" shape="octagon"]; 146 | "interface clojure.lang.ITransientMap" -> "interface clojure.lang.ITransientAssociative" [ color="#00d0d7" ]; 147 | "interface clojure.lang.ITransientSet" [ label="ITransientSet\n[1]" color="#00d764" shape="octagon"]; 148 | "interface clojure.lang.ITransientSet" -> "interface clojure.lang.ITransientCollection" [ color="#00d764" ]; 149 | "interface clojure.lang.ITransientVector" [ label="ITransientVector\n[1]" color="#d7009e" shape="octagon"]; 150 | "interface clojure.lang.ITransientVector" -> "interface clojure.lang.ITransientAssociative" [ color="#d7009e" ]; 151 | "interface clojure.lang.ITransientVector" -> "interface clojure.lang.Indexed" [ color="#d7009e" ]; 152 | "interface clojure.lang.Indexed" [ label="Indexed\n[1]" color="#00d0d7" shape="octagon"]; 153 | "interface clojure.lang.IndexedSeq" [ label="IndexedSeq\n[1]" color="#0061d7" shape="octagon"]; 154 | "interface clojure.lang.IndexedSeq" -> "interface clojure.lang.ISeq" [ color="#0061d7" ]; 155 | "interface clojure.lang.IndexedSeq" -> "interface clojure.lang.Sequential" [ color="#0061d7" ]; 156 | "interface java.lang.reflect.InvocationHandler" [ label="InvocationHandler" color="#b300d7" shape="diamond"]; 157 | "interface java.util.Iterator" [ label="Iterator" color="#5a00d7" shape="diamond"]; 158 | "class clojure.lang.IteratorSeq" [ label="IteratorSeq\n[MTZ]" color="#0061d7" shape="oval"]; 159 | "class clojure.lang.IteratorSeq" -> "class clojure.lang.ASeq" [ color="#0061d7" ]; 160 | "class clojure.lang.Keyword" [ label="Keyword\nkeyword?\n[ZN=]" color="#76d700" shape="oval"]; 161 | "class clojure.lang.Keyword" -> "interface clojure.lang.IFn" [ color="#76d700" ]; 162 | "class clojure.lang.KeywordLookupSite" [ label="KeywordLookupSite" color="#d70000" shape="oval"]; 163 | "class clojure.lang.KeywordLookupSite" -> "interface clojure.lang.ILookupSite" [ color="#d70000" ]; 164 | "class clojure.lang.KeywordLookupSite" -> "interface clojure.lang.ILookupThunk" [ color="#d70000" ]; 165 | "class clojure.lang.LazySeq" [ label="LazySeq\n[MTZ]" color="#d78100" shape="oval"]; 166 | "class clojure.lang.LazySeq" -> "class clojure.lang.Obj" [ color="#d78100" ]; 167 | "class clojure.lang.LazySeq" -> "interface clojure.lang.ISeq" [ color="#d78100" ]; 168 | "class clojure.lang.LazySeq" -> "interface clojure.lang.Sequential" [ color="#d78100" ]; 169 | "class clojure.lang.LazySeq" -> "interface java.util.List" [ color="#d78100" ]; 170 | "class clojure.lang.LazySeq" -> "interface clojure.lang.IPending" [ color="#d78100" ]; 171 | "interface java.util.List" [ label="List\n[T]" color="#00d764" shape="diamond"]; 172 | "interface java.util.List" -> "interface java.util.Collection" [ color="#00d764" ]; 173 | "interface java.util.Map" [ label="Map" color="#00d764" shape="diamond"]; 174 | "class clojure.lang.MapEntry" [ label="MapEntry\n[T1ZR=]" color="#0061d7" shape="oval"]; 175 | "class clojure.lang.MapEntry" -> "class clojure.lang.AMapEntry" [ color="#0061d7" ]; 176 | "interface clojure.lang.MapEquivalence" [ label="MapEquivalence" color="#d78100" shape="octagon"]; 177 | "class clojure.lang.MultiFn" [ label="MultiFn" color="#76d700" shape="oval"]; 178 | "class clojure.lang.MultiFn" -> "class clojure.lang.AFn" [ color="#76d700" ]; 179 | "class clojure.lang.Namespace" [ label="Namespace\n[MZ]" color="#76d700" shape="oval"]; 180 | "class clojure.lang.Namespace" -> "class clojure.lang.AReference" [ color="#76d700" ]; 181 | "class clojure.lang.Obj" [ label="Obj\n[MZ]" color="#00d764" shape="oval"]; 182 | "class clojure.lang.Obj" -> "interface clojure.lang.IObj" [ color="#00d764" ]; 183 | "class clojure.lang.PersistentArrayMap" [ label="PersistentArrayMap\n[MT1Z]" color="#5a00d7" shape="oval"]; 184 | "class clojure.lang.PersistentArrayMap" -> "class clojure.lang.APersistentMap" [ color="#5a00d7" ]; 185 | "class clojure.lang.PersistentArrayMap" -> "interface clojure.lang.IObj" [ color="#5a00d7" ]; 186 | "class clojure.lang.PersistentArrayMap" -> "interface clojure.lang.IEditableCollection" [ color="#5a00d7" ]; 187 | "class clojure.lang.PersistentHashMap" [ label="PersistentHashMap\n[MT1Z]" color="#0061d7" shape="oval"]; 188 | "class clojure.lang.PersistentHashMap" -> "class clojure.lang.APersistentMap" [ color="#0061d7" ]; 189 | "class clojure.lang.PersistentHashMap" -> "interface clojure.lang.IEditableCollection" [ color="#0061d7" ]; 190 | "class clojure.lang.PersistentHashMap" -> "interface clojure.lang.IObj" [ color="#0061d7" ]; 191 | "class clojure.lang.PersistentHashSet" [ label="PersistentHashSet\n[MT1Z]" color="#5a00d7" shape="oval"]; 192 | "class clojure.lang.PersistentHashSet" -> "class clojure.lang.APersistentSet" [ color="#5a00d7" ]; 193 | "class clojure.lang.PersistentHashSet" -> "interface clojure.lang.IObj" [ color="#5a00d7" ]; 194 | "class clojure.lang.PersistentHashSet" -> "interface clojure.lang.IEditableCollection" [ color="#5a00d7" ]; 195 | "class clojure.lang.PersistentList" [ label="PersistentList\n[MT1Z]" color="#76d700" shape="oval"]; 196 | "class clojure.lang.PersistentList" -> "class clojure.lang.ASeq" [ color="#76d700" ]; 197 | "class clojure.lang.PersistentList" -> "interface clojure.lang.IPersistentList" [ color="#76d700" ]; 198 | "class clojure.lang.PersistentList" -> "interface clojure.lang.IReduce" [ color="#76d700" ]; 199 | "class clojure.lang.PersistentList" -> "interface java.util.List" [ color="#76d700" ]; 200 | "class clojure.lang.PersistentQueue" [ label="PersistentQueue\n[MT1Z]" color="#0061d7" shape="oval"]; 201 | "class clojure.lang.PersistentQueue" -> "class clojure.lang.Obj" [ color="#0061d7" ]; 202 | "class clojure.lang.PersistentQueue" -> "interface clojure.lang.IPersistentList" [ color="#0061d7" ]; 203 | "class clojure.lang.PersistentQueue" -> "interface java.util.Collection" [ color="#0061d7" ]; 204 | "class clojure.lang.PersistentStructMap" [ label="PersistentStructMap\n[MT1Z]" color="#00d0d7" shape="oval"]; 205 | "class clojure.lang.PersistentStructMap" -> "class clojure.lang.APersistentMap" [ color="#00d0d7" ]; 206 | "class clojure.lang.PersistentStructMap" -> "interface clojure.lang.IObj" [ color="#00d0d7" ]; 207 | "class clojure.lang.PersistentTreeMap" [ label="PersistentTreeMap\n[MT1ZR]" color="#d78100" shape="oval"]; 208 | "class clojure.lang.PersistentTreeMap" -> "class clojure.lang.APersistentMap" [ color="#d78100" ]; 209 | "class clojure.lang.PersistentTreeMap" -> "interface clojure.lang.IObj" [ color="#d78100" ]; 210 | "class clojure.lang.PersistentTreeMap" -> "interface clojure.lang.Sorted" [ color="#d78100" ]; 211 | "class clojure.lang.PersistentTreeSet" [ label="PersistentTreeSet\n[MT1ZR]" color="#d70000" shape="oval"]; 212 | "class clojure.lang.PersistentTreeSet" -> "class clojure.lang.APersistentSet" [ color="#d70000" ]; 213 | "class clojure.lang.PersistentTreeSet" -> "interface clojure.lang.IObj" [ color="#d70000" ]; 214 | "class clojure.lang.PersistentTreeSet" -> "interface clojure.lang.Sorted" [ color="#d70000" ]; 215 | "class clojure.lang.PersistentVector" [ label="PersistentVector\n[MT1ZR=]" color="#d78100" shape="oval"]; 216 | "class clojure.lang.PersistentVector" -> "class clojure.lang.APersistentVector" [ color="#d78100" ]; 217 | "class clojure.lang.PersistentVector" -> "interface clojure.lang.IObj" [ color="#d78100" ]; 218 | "class clojure.lang.PersistentVector" -> "interface clojure.lang.IEditableCollection" [ color="#d78100" ]; 219 | "class clojure.lang.ProxyHandler" [ label="ProxyHandler" color="#0061d7" shape="oval"]; 220 | "class clojure.lang.ProxyHandler" -> "interface java.lang.reflect.InvocationHandler" [ color="#0061d7" ]; 221 | "interface java.util.RandomAccess" [ label="RandomAccess" color="#d7009e" shape="diamond"]; 222 | "class clojure.lang.Range" [ label="Range\n[MT1Z]" color="#00d0d7" shape="oval"]; 223 | "class clojure.lang.Range" -> "class clojure.lang.ASeq" [ color="#00d0d7" ]; 224 | "class clojure.lang.Range" -> "interface clojure.lang.IReduce" [ color="#00d0d7" ]; 225 | "class clojure.lang.Ratio" [ label="Ratio\nratio?\n[Z=]" color="#d78100" shape="oval"]; 226 | "class clojure.lang.Ref" [ label="Ref\n[M=]" color="#d78100" shape="oval"]; 227 | "class clojure.lang.Ref" -> "class clojure.lang.ARef" [ color="#d78100" ]; 228 | "class clojure.lang.Ref" -> "interface clojure.lang.IFn" [ color="#d78100" ]; 229 | "class clojure.lang.Ref" -> "interface clojure.lang.IRef" [ color="#d78100" ]; 230 | "class clojure.lang.RestFn" [ label="RestFn\n[MZ]" color="#0061d7" shape="oval"]; 231 | "class clojure.lang.RestFn" -> "class clojure.lang.AFunction" [ color="#0061d7" ]; 232 | "interface java.lang.Runnable" [ label="Runnable" color="#00d0d7" shape="diamond"]; 233 | "class clojure.lang.SeqEnumeration" [ label="SeqEnumeration" color="#0061d7" shape="oval"]; 234 | "class clojure.lang.SeqEnumeration" -> "interface java.util.Enumeration" [ color="#0061d7" ]; 235 | "class clojure.lang.SeqIterator" [ label="SeqIterator" color="#76d700" shape="oval"]; 236 | "class clojure.lang.SeqIterator" -> "interface java.util.Iterator" [ color="#76d700" ]; 237 | "interface clojure.lang.Seqable" [ label="Seqable" color="#d78100" shape="octagon"]; 238 | "interface clojure.lang.Sequential" [ label="Sequential\nsequential?" color="#d78100" shape="octagon"]; 239 | "interface java.util.Set" [ label="Set\n[T]" color="#00d0d7" shape="diamond"]; 240 | "interface java.util.Set" -> "interface java.util.Collection" [ color="#00d0d7" ]; 241 | "interface clojure.lang.Settable" [ label="Settable" color="#0061d7" shape="octagon"]; 242 | "interface clojure.lang.Sorted" [ label="Sorted\nsorted?" color="#5a00d7" shape="octagon"]; 243 | "class clojure.lang.StringSeq" [ label="StringSeq\n[MT1Z]" color="#d7009e" shape="oval"]; 244 | "class clojure.lang.StringSeq" -> "class clojure.lang.ASeq" [ color="#d7009e" ]; 245 | "class clojure.lang.StringSeq" -> "interface clojure.lang.IndexedSeq" [ color="#d7009e" ]; 246 | "class clojure.lang.Symbol" [ label="Symbol\nsymbol?\n[MZN=]" color="#0061d7" shape="oval"]; 247 | "class clojure.lang.Symbol" -> "class clojure.lang.AFn" [ color="#0061d7" ]; 248 | "class clojure.lang.Symbol" -> "interface clojure.lang.IObj" [ color="#0061d7" ]; 249 | "class clojure.lang.TransactionalHashMap" [ label="TransactionalHashMap" color="#d7009e" shape="oval"]; 250 | "class clojure.lang.TransactionalHashMap" -> "interface java.util.concurrent.ConcurrentMap" [ color="#d7009e" ]; 251 | "class clojure.lang.Var" [ label="Var\nvar?\n[M]" color="#00d0d7" shape="oval"]; 252 | "class clojure.lang.Var" -> "class clojure.lang.ARef" [ color="#00d0d7" ]; 253 | "class clojure.lang.Var" -> "interface clojure.lang.IFn" [ color="#00d0d7" ]; 254 | "class clojure.lang.Var" -> "interface clojure.lang.IRef" [ color="#00d0d7" ]; 255 | "class clojure.lang.Var" -> "interface clojure.lang.Settable" [ color="#00d0d7" ]; 256 | "class clojure.core$future_call$reify__5684" [ label="(future)\n[M]" color="#0061d7" shape="oval"]; 257 | "class clojure.core$future_call$reify__5684" -> "interface java.util.concurrent.Future" [ color="#0061d7" ]; 258 | "class clojure.core$future_call$reify__5684" -> "interface clojure.lang.IBlockingDeref" [ color="#0061d7" ]; 259 | "class clojure.core$future_call$reify__5684" -> "interface clojure.lang.IPending" [ color="#0061d7" ]; 260 | "class clojure.core$future_call$reify__5684" -> "interface clojure.lang.IDeref" [ color="#0061d7" ]; 261 | "class clojure.core$future_call$reify__5684" -> "interface clojure.lang.IObj" [ color="#0061d7" ]; 262 | } 263 | -------------------------------------------------------------------------------- /graph.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | _anonymous_0 11 | 12 | cluster_legend 13 | 14 | Legend 15 | 16 | 17 | Clojure Interface 18 | 19 | Clojure Interface 20 | 21 | 22 | Java Interface 23 | 24 | Java Interface 25 | 26 | 27 | Clojure class 28 | 29 | Clojure class 30 | 31 | 32 | badges 33 | 34 | M 35 | 36 | T 37 | 38 | 1 39 | 40 | S 41 | 42 | Z 43 | 44 | R 45 | 46 | N 47 | 48 | = 49 | 50 | IMeta 51 | 52 | Iterable 53 | 54 | Counted 55 | 56 | Streamable 57 | 58 | Serializable 59 | 60 | Reversible 61 | 62 | Named 63 | 64 | Comparable 65 | 66 | 67 | class clojure.lang.AFn 68 | 69 | AFn 70 | 71 | 72 | interface clojure.lang.IFn 73 | 74 | IFn 75 | ifn? 76 | 77 | 78 | class clojure.lang.AFn->interface clojure.lang.IFn 79 | 80 | 81 | 82 | 83 | interface java.util.concurrent.Callable 84 | 85 | Callable 86 | 87 | 88 | interface clojure.lang.IFn->interface java.util.concurrent.Callable 89 | 90 | 91 | 92 | 93 | interface java.lang.Runnable 94 | 95 | Runnable 96 | 97 | 98 | interface clojure.lang.IFn->interface java.lang.Runnable 99 | 100 | 101 | 102 | 103 | class clojure.lang.AFunction 104 | 105 | AFunction 106 | [MZ] 107 | 108 | 109 | class clojure.lang.AFunction->class clojure.lang.AFn 110 | 111 | 112 | 113 | 114 | interface clojure.lang.IObj 115 | 116 | IObj 117 | [M] 118 | 119 | 120 | class clojure.lang.AFunction->interface clojure.lang.IObj 121 | 122 | 123 | 124 | 125 | interface java.util.Comparator 126 | 127 | Comparator 128 | 129 | 130 | class clojure.lang.AFunction->interface java.util.Comparator 131 | 132 | 133 | 134 | 135 | interface clojure.lang.Fn 136 | 137 | Fn 138 | fn? 139 | 140 | 141 | class clojure.lang.AFunction->interface clojure.lang.Fn 142 | 143 | 144 | 145 | 146 | class clojure.lang.AMapEntry 147 | 148 | AMapEntry 149 | [T1ZR=] 150 | 151 | 152 | class clojure.lang.APersistentVector 153 | 154 | APersistentVector 155 | [T1ZR=] 156 | 157 | 158 | class clojure.lang.AMapEntry->class clojure.lang.APersistentVector 159 | 160 | 161 | 162 | 163 | interface clojure.lang.IMapEntry 164 | 165 | IMapEntry 166 | 167 | 168 | class clojure.lang.AMapEntry->interface clojure.lang.IMapEntry 169 | 170 | 171 | 172 | 173 | class clojure.lang.APersistentVector->class clojure.lang.AFn 174 | 175 | 176 | 177 | 178 | interface clojure.lang.IPersistentVector 179 | 180 | IPersistentVector 181 | vector? 182 | [1R] 183 | 184 | 185 | class clojure.lang.APersistentVector->interface clojure.lang.IPersistentVector 186 | 187 | 188 | 189 | 190 | interface java.util.List 191 | 192 | List 193 | [T] 194 | 195 | 196 | class clojure.lang.APersistentVector->interface java.util.List 197 | 198 | 199 | 200 | 201 | interface java.util.RandomAccess 202 | 203 | RandomAccess 204 | 205 | 206 | class clojure.lang.APersistentVector->interface java.util.RandomAccess 207 | 208 | 209 | 210 | 211 | interface java.util.Map$Entry 212 | 213 | Entry 214 | 215 | 216 | interface clojure.lang.IMapEntry->interface java.util.Map$Entry 217 | 218 | 219 | 220 | 221 | class clojure.lang.APersistentMap 222 | 223 | APersistentMap 224 | [T1Z] 225 | 226 | 227 | class clojure.lang.APersistentMap->class clojure.lang.AFn 228 | 229 | 230 | 231 | 232 | interface clojure.lang.IPersistentMap 233 | 234 | IPersistentMap 235 | map? 236 | [T1] 237 | 238 | 239 | class clojure.lang.APersistentMap->interface clojure.lang.IPersistentMap 240 | 241 | 242 | 243 | 244 | interface java.util.Map 245 | 246 | Map 247 | 248 | 249 | class clojure.lang.APersistentMap->interface java.util.Map 250 | 251 | 252 | 253 | 254 | interface clojure.lang.MapEquivalence 255 | 256 | MapEquivalence 257 | 258 | 259 | class clojure.lang.APersistentMap->interface clojure.lang.MapEquivalence 260 | 261 | 262 | 263 | 264 | interface clojure.lang.Associative 265 | 266 | Associative 267 | associative? 268 | 269 | 270 | interface clojure.lang.IPersistentMap->interface clojure.lang.Associative 271 | 272 | 273 | 274 | 275 | class clojure.lang.APersistentSet 276 | 277 | APersistentSet 278 | [T1Z] 279 | 280 | 281 | class clojure.lang.APersistentSet->class clojure.lang.AFn 282 | 283 | 284 | 285 | 286 | interface clojure.lang.IPersistentSet 287 | 288 | IPersistentSet 289 | set? 290 | [1] 291 | 292 | 293 | class clojure.lang.APersistentSet->interface clojure.lang.IPersistentSet 294 | 295 | 296 | 297 | 298 | interface java.util.Collection 299 | 300 | Collection 301 | [T] 302 | 303 | 304 | class clojure.lang.APersistentSet->interface java.util.Collection 305 | 306 | 307 | 308 | 309 | interface java.util.Set 310 | 311 | Set 312 | [T] 313 | 314 | 315 | class clojure.lang.APersistentSet->interface java.util.Set 316 | 317 | 318 | 319 | 320 | interface clojure.lang.IPersistentCollection 321 | 322 | IPersistentCollection 323 | coll? 324 | 325 | 326 | interface clojure.lang.IPersistentSet->interface clojure.lang.IPersistentCollection 327 | 328 | 329 | 330 | 331 | interface java.util.Set->interface java.util.Collection 332 | 333 | 334 | 335 | 336 | interface clojure.lang.Sequential 337 | 338 | Sequential 339 | sequential? 340 | 341 | 342 | interface clojure.lang.IPersistentVector->interface clojure.lang.Sequential 343 | 344 | 345 | 346 | 347 | interface clojure.lang.IPersistentVector->interface clojure.lang.Associative 348 | 349 | 350 | 351 | 352 | interface clojure.lang.Indexed 353 | 354 | Indexed 355 | [1] 356 | 357 | 358 | interface clojure.lang.IPersistentVector->interface clojure.lang.Indexed 359 | 360 | 361 | 362 | 363 | interface clojure.lang.IPersistentStack 364 | 365 | IPersistentStack 366 | 367 | 368 | interface clojure.lang.IPersistentVector->interface clojure.lang.IPersistentStack 369 | 370 | 371 | 372 | 373 | interface java.util.List->interface java.util.Collection 374 | 375 | 376 | 377 | 378 | class clojure.lang.ARef 379 | 380 | ARef 381 | [M] 382 | 383 | 384 | class clojure.lang.AReference 385 | 386 | AReference 387 | [M] 388 | 389 | 390 | class clojure.lang.ARef->class clojure.lang.AReference 391 | 392 | 393 | 394 | 395 | interface clojure.lang.IRef 396 | 397 | IRef 398 | 399 | 400 | class clojure.lang.ARef->interface clojure.lang.IRef 401 | 402 | 403 | 404 | 405 | interface clojure.lang.IReference 406 | 407 | IReference 408 | [M] 409 | 410 | 411 | class clojure.lang.AReference->interface clojure.lang.IReference 412 | 413 | 414 | 415 | 416 | interface clojure.lang.IDeref 417 | 418 | IDeref 419 | 420 | 421 | interface clojure.lang.IRef->interface clojure.lang.IDeref 422 | 423 | 424 | 425 | 426 | class clojure.lang.ASeq 427 | 428 | ASeq 429 | [MTZ] 430 | 431 | 432 | class clojure.lang.ASeq->interface java.util.List 433 | 434 | 435 | 436 | 437 | class clojure.lang.Obj 438 | 439 | Obj 440 | [MZ] 441 | 442 | 443 | class clojure.lang.ASeq->class clojure.lang.Obj 444 | 445 | 446 | 447 | 448 | interface clojure.lang.ISeq 449 | 450 | ISeq 451 | seq? 452 | 453 | 454 | class clojure.lang.ASeq->interface clojure.lang.ISeq 455 | 456 | 457 | 458 | 459 | class clojure.lang.ASeq->interface clojure.lang.Sequential 460 | 461 | 462 | 463 | 464 | class clojure.lang.Obj->interface clojure.lang.IObj 465 | 466 | 467 | 468 | 469 | interface clojure.lang.ISeq->interface clojure.lang.IPersistentCollection 470 | 471 | 472 | 473 | 474 | class clojure.lang.ATransientMap 475 | 476 | ATransientMap 477 | [1] 478 | 479 | 480 | class clojure.lang.ATransientMap->class clojure.lang.AFn 481 | 482 | 483 | 484 | 485 | interface clojure.lang.ITransientMap 486 | 487 | ITransientMap 488 | [1] 489 | 490 | 491 | class clojure.lang.ATransientMap->interface clojure.lang.ITransientMap 492 | 493 | 494 | 495 | 496 | interface clojure.lang.ITransientAssociative 497 | 498 | ITransientAssociative 499 | 500 | 501 | interface clojure.lang.ITransientMap->interface clojure.lang.ITransientAssociative 502 | 503 | 504 | 505 | 506 | class clojure.lang.ATransientSet 507 | 508 | ATransientSet 509 | [1] 510 | 511 | 512 | class clojure.lang.ATransientSet->class clojure.lang.AFn 513 | 514 | 515 | 516 | 517 | interface clojure.lang.ITransientSet 518 | 519 | ITransientSet 520 | [1] 521 | 522 | 523 | class clojure.lang.ATransientSet->interface clojure.lang.ITransientSet 524 | 525 | 526 | 527 | 528 | interface clojure.lang.ITransientCollection 529 | 530 | ITransientCollection 531 | 532 | 533 | interface clojure.lang.ITransientSet->interface clojure.lang.ITransientCollection 534 | 535 | 536 | 537 | 538 | class clojure.lang.Agent 539 | 540 | Agent 541 | [M] 542 | 543 | 544 | class clojure.lang.Agent->class clojure.lang.ARef 545 | 546 | 547 | 548 | 549 | class clojure.lang.ArrayChunk 550 | 551 | ArrayChunk 552 | [1Z] 553 | 554 | 555 | interface clojure.lang.IChunk 556 | 557 | IChunk 558 | [1] 559 | 560 | 561 | class clojure.lang.ArrayChunk->interface clojure.lang.IChunk 562 | 563 | 564 | 565 | 566 | interface clojure.lang.IChunk->interface clojure.lang.Indexed 567 | 568 | 569 | 570 | 571 | class clojure.lang.ArraySeq 572 | 573 | ArraySeq 574 | [MT1Z] 575 | 576 | 577 | class clojure.lang.ArraySeq->class clojure.lang.ASeq 578 | 579 | 580 | 581 | 582 | interface clojure.lang.IndexedSeq 583 | 584 | IndexedSeq 585 | [1] 586 | 587 | 588 | class clojure.lang.ArraySeq->interface clojure.lang.IndexedSeq 589 | 590 | 591 | 592 | 593 | interface clojure.lang.IReduce 594 | 595 | IReduce 596 | 597 | 598 | class clojure.lang.ArraySeq->interface clojure.lang.IReduce 599 | 600 | 601 | 602 | 603 | interface clojure.lang.IndexedSeq->interface clojure.lang.ISeq 604 | 605 | 606 | 607 | 608 | interface clojure.lang.IndexedSeq->interface clojure.lang.Sequential 609 | 610 | 611 | 612 | 613 | interface clojure.lang.Associative->interface clojure.lang.IPersistentCollection 614 | 615 | 616 | 617 | 618 | interface clojure.lang.ILookup 619 | 620 | ILookup 621 | 622 | 623 | interface clojure.lang.Associative->interface clojure.lang.ILookup 624 | 625 | 626 | 627 | 628 | interface clojure.lang.Seqable 629 | 630 | Seqable 631 | 632 | 633 | interface clojure.lang.IPersistentCollection->interface clojure.lang.Seqable 634 | 635 | 636 | 637 | 638 | class clojure.lang.Atom 639 | 640 | Atom 641 | [M] 642 | 643 | 644 | class clojure.lang.Atom->class clojure.lang.ARef 645 | 646 | 647 | 648 | 649 | class clojure.lang.ChunkBuffer 650 | 651 | ChunkBuffer 652 | [1] 653 | 654 | 655 | class clojure.lang.ChunkedCons 656 | 657 | ChunkedCons 658 | [MTZ] 659 | 660 | 661 | class clojure.lang.ChunkedCons->class clojure.lang.ASeq 662 | 663 | 664 | 665 | 666 | interface clojure.lang.IChunkedSeq 667 | 668 | IChunkedSeq 669 | 670 | 671 | class clojure.lang.ChunkedCons->interface clojure.lang.IChunkedSeq 672 | 673 | 674 | 675 | 676 | interface clojure.lang.IChunkedSeq->interface clojure.lang.ISeq 677 | 678 | 679 | 680 | 681 | interface clojure.lang.IChunkedSeq->interface clojure.lang.Sequential 682 | 683 | 684 | 685 | 686 | interface java.util.concurrent.ConcurrentMap 687 | 688 | ConcurrentMap 689 | 690 | 691 | interface java.util.concurrent.ConcurrentMap->interface java.util.Map 692 | 693 | 694 | 695 | 696 | class clojure.lang.Cons 697 | 698 | Cons 699 | [MTZ] 700 | 701 | 702 | class clojure.lang.Cons->class clojure.lang.ASeq 703 | 704 | 705 | 706 | 707 | class clojure.lang.Delay 708 | 709 | Delay 710 | delay? 711 | 712 | 713 | class clojure.lang.Delay->interface clojure.lang.IDeref 714 | 715 | 716 | 717 | 718 | interface clojure.lang.IPending 719 | 720 | IPending 721 | 722 | 723 | class clojure.lang.Delay->interface clojure.lang.IPending 724 | 725 | 726 | 727 | 728 | interface java.util.Enumeration 729 | 730 | Enumeration 731 | 732 | 733 | class clojure.lang.EnumerationSeq 734 | 735 | EnumerationSeq 736 | [MTZ] 737 | 738 | 739 | class clojure.lang.EnumerationSeq->class clojure.lang.ASeq 740 | 741 | 742 | 743 | 744 | class clojure.lang.FnLoaderThunk 745 | 746 | FnLoaderThunk 747 | [MZ] 748 | 749 | 750 | class clojure.lang.RestFn 751 | 752 | RestFn 753 | [MZ] 754 | 755 | 756 | class clojure.lang.FnLoaderThunk->class clojure.lang.RestFn 757 | 758 | 759 | 760 | 761 | class clojure.lang.RestFn->class clojure.lang.AFunction 762 | 763 | 764 | 765 | 766 | interface java.util.concurrent.Future 767 | 768 | Future 769 | 770 | 771 | interface clojure.lang.IBlockingDeref 772 | 773 | IBlockingDeref 774 | 775 | 776 | interface clojure.lang.IEditableCollection 777 | 778 | IEditableCollection 779 | 780 | 781 | interface clojure.lang.ILookupSite 782 | 783 | ILookupSite 784 | 785 | 786 | interface clojure.lang.ILookupThunk 787 | 788 | ILookupThunk 789 | 790 | 791 | interface clojure.lang.IPersistentList 792 | 793 | IPersistentList 794 | list? 795 | 796 | 797 | interface clojure.lang.IPersistentList->interface clojure.lang.Sequential 798 | 799 | 800 | 801 | 802 | interface clojure.lang.IPersistentList->interface clojure.lang.IPersistentStack 803 | 804 | 805 | 806 | 807 | interface clojure.lang.IPersistentStack->interface clojure.lang.IPersistentCollection 808 | 809 | 810 | 811 | 812 | interface clojure.lang.ITransientAssociative->interface clojure.lang.ILookup 813 | 814 | 815 | 816 | 817 | interface clojure.lang.ITransientAssociative->interface clojure.lang.ITransientCollection 818 | 819 | 820 | 821 | 822 | interface clojure.lang.ITransientVector 823 | 824 | ITransientVector 825 | [1] 826 | 827 | 828 | interface clojure.lang.ITransientVector->interface clojure.lang.Indexed 829 | 830 | 831 | 832 | 833 | interface clojure.lang.ITransientVector->interface clojure.lang.ITransientAssociative 834 | 835 | 836 | 837 | 838 | interface java.lang.reflect.InvocationHandler 839 | 840 | InvocationHandler 841 | 842 | 843 | interface java.util.Iterator 844 | 845 | Iterator 846 | 847 | 848 | class clojure.lang.IteratorSeq 849 | 850 | IteratorSeq 851 | [MTZ] 852 | 853 | 854 | class clojure.lang.IteratorSeq->class clojure.lang.ASeq 855 | 856 | 857 | 858 | 859 | class clojure.lang.Keyword 860 | 861 | Keyword 862 | keyword? 863 | [ZN=] 864 | 865 | 866 | class clojure.lang.Keyword->interface clojure.lang.IFn 867 | 868 | 869 | 870 | 871 | class clojure.lang.KeywordLookupSite 872 | 873 | KeywordLookupSite 874 | 875 | 876 | class clojure.lang.KeywordLookupSite->interface clojure.lang.ILookupSite 877 | 878 | 879 | 880 | 881 | class clojure.lang.KeywordLookupSite->interface clojure.lang.ILookupThunk 882 | 883 | 884 | 885 | 886 | class clojure.lang.LazySeq 887 | 888 | LazySeq 889 | [MTZ] 890 | 891 | 892 | class clojure.lang.LazySeq->interface java.util.List 893 | 894 | 895 | 896 | 897 | class clojure.lang.LazySeq->class clojure.lang.Obj 898 | 899 | 900 | 901 | 902 | class clojure.lang.LazySeq->interface clojure.lang.ISeq 903 | 904 | 905 | 906 | 907 | class clojure.lang.LazySeq->interface clojure.lang.Sequential 908 | 909 | 910 | 911 | 912 | class clojure.lang.LazySeq->interface clojure.lang.IPending 913 | 914 | 915 | 916 | 917 | class clojure.lang.MapEntry 918 | 919 | MapEntry 920 | [T1ZR=] 921 | 922 | 923 | class clojure.lang.MapEntry->class clojure.lang.AMapEntry 924 | 925 | 926 | 927 | 928 | class clojure.lang.MultiFn 929 | 930 | MultiFn 931 | 932 | 933 | class clojure.lang.MultiFn->class clojure.lang.AFn 934 | 935 | 936 | 937 | 938 | class clojure.lang.Namespace 939 | 940 | Namespace 941 | [MZ] 942 | 943 | 944 | class clojure.lang.Namespace->class clojure.lang.AReference 945 | 946 | 947 | 948 | 949 | class clojure.lang.PersistentArrayMap 950 | 951 | PersistentArrayMap 952 | [MT1Z] 953 | 954 | 955 | class clojure.lang.PersistentArrayMap->interface clojure.lang.IObj 956 | 957 | 958 | 959 | 960 | class clojure.lang.PersistentArrayMap->class clojure.lang.APersistentMap 961 | 962 | 963 | 964 | 965 | class clojure.lang.PersistentArrayMap->interface clojure.lang.IEditableCollection 966 | 967 | 968 | 969 | 970 | class clojure.lang.PersistentHashMap 971 | 972 | PersistentHashMap 973 | [MT1Z] 974 | 975 | 976 | class clojure.lang.PersistentHashMap->interface clojure.lang.IObj 977 | 978 | 979 | 980 | 981 | class clojure.lang.PersistentHashMap->class clojure.lang.APersistentMap 982 | 983 | 984 | 985 | 986 | class clojure.lang.PersistentHashMap->interface clojure.lang.IEditableCollection 987 | 988 | 989 | 990 | 991 | class clojure.lang.PersistentHashSet 992 | 993 | PersistentHashSet 994 | [MT1Z] 995 | 996 | 997 | class clojure.lang.PersistentHashSet->interface clojure.lang.IObj 998 | 999 | 1000 | 1001 | 1002 | class clojure.lang.PersistentHashSet->class clojure.lang.APersistentSet 1003 | 1004 | 1005 | 1006 | 1007 | class clojure.lang.PersistentHashSet->interface clojure.lang.IEditableCollection 1008 | 1009 | 1010 | 1011 | 1012 | class clojure.lang.PersistentList 1013 | 1014 | PersistentList 1015 | [MT1Z] 1016 | 1017 | 1018 | class clojure.lang.PersistentList->interface java.util.List 1019 | 1020 | 1021 | 1022 | 1023 | class clojure.lang.PersistentList->class clojure.lang.ASeq 1024 | 1025 | 1026 | 1027 | 1028 | class clojure.lang.PersistentList->interface clojure.lang.IReduce 1029 | 1030 | 1031 | 1032 | 1033 | class clojure.lang.PersistentList->interface clojure.lang.IPersistentList 1034 | 1035 | 1036 | 1037 | 1038 | class clojure.lang.PersistentQueue 1039 | 1040 | PersistentQueue 1041 | [MT1Z] 1042 | 1043 | 1044 | class clojure.lang.PersistentQueue->interface java.util.Collection 1045 | 1046 | 1047 | 1048 | 1049 | class clojure.lang.PersistentQueue->class clojure.lang.Obj 1050 | 1051 | 1052 | 1053 | 1054 | class clojure.lang.PersistentQueue->interface clojure.lang.IPersistentList 1055 | 1056 | 1057 | 1058 | 1059 | class clojure.lang.PersistentStructMap 1060 | 1061 | PersistentStructMap 1062 | [MT1Z] 1063 | 1064 | 1065 | class clojure.lang.PersistentStructMap->interface clojure.lang.IObj 1066 | 1067 | 1068 | 1069 | 1070 | class clojure.lang.PersistentStructMap->class clojure.lang.APersistentMap 1071 | 1072 | 1073 | 1074 | 1075 | class clojure.lang.PersistentTreeMap 1076 | 1077 | PersistentTreeMap 1078 | [MT1ZR] 1079 | 1080 | 1081 | class clojure.lang.PersistentTreeMap->interface clojure.lang.IObj 1082 | 1083 | 1084 | 1085 | 1086 | class clojure.lang.PersistentTreeMap->class clojure.lang.APersistentMap 1087 | 1088 | 1089 | 1090 | 1091 | interface clojure.lang.Sorted 1092 | 1093 | Sorted 1094 | sorted? 1095 | 1096 | 1097 | class clojure.lang.PersistentTreeMap->interface clojure.lang.Sorted 1098 | 1099 | 1100 | 1101 | 1102 | class clojure.lang.PersistentTreeSet 1103 | 1104 | PersistentTreeSet 1105 | [MT1ZR] 1106 | 1107 | 1108 | class clojure.lang.PersistentTreeSet->interface clojure.lang.IObj 1109 | 1110 | 1111 | 1112 | 1113 | class clojure.lang.PersistentTreeSet->class clojure.lang.APersistentSet 1114 | 1115 | 1116 | 1117 | 1118 | class clojure.lang.PersistentTreeSet->interface clojure.lang.Sorted 1119 | 1120 | 1121 | 1122 | 1123 | class clojure.lang.PersistentVector 1124 | 1125 | PersistentVector 1126 | [MT1ZR=] 1127 | 1128 | 1129 | class clojure.lang.PersistentVector->interface clojure.lang.IObj 1130 | 1131 | 1132 | 1133 | 1134 | class clojure.lang.PersistentVector->class clojure.lang.APersistentVector 1135 | 1136 | 1137 | 1138 | 1139 | class clojure.lang.PersistentVector->interface clojure.lang.IEditableCollection 1140 | 1141 | 1142 | 1143 | 1144 | class clojure.lang.ProxyHandler 1145 | 1146 | ProxyHandler 1147 | 1148 | 1149 | class clojure.lang.ProxyHandler->interface java.lang.reflect.InvocationHandler 1150 | 1151 | 1152 | 1153 | 1154 | class clojure.lang.Range 1155 | 1156 | Range 1157 | [MT1Z] 1158 | 1159 | 1160 | class clojure.lang.Range->class clojure.lang.ASeq 1161 | 1162 | 1163 | 1164 | 1165 | class clojure.lang.Range->interface clojure.lang.IReduce 1166 | 1167 | 1168 | 1169 | 1170 | class clojure.lang.Ratio 1171 | 1172 | Ratio 1173 | ratio? 1174 | [Z=] 1175 | 1176 | 1177 | class clojure.lang.Ref 1178 | 1179 | Ref 1180 | [M=] 1181 | 1182 | 1183 | class clojure.lang.Ref->interface clojure.lang.IFn 1184 | 1185 | 1186 | 1187 | 1188 | class clojure.lang.Ref->class clojure.lang.ARef 1189 | 1190 | 1191 | 1192 | 1193 | class clojure.lang.Ref->interface clojure.lang.IRef 1194 | 1195 | 1196 | 1197 | 1198 | class clojure.lang.SeqEnumeration 1199 | 1200 | SeqEnumeration 1201 | 1202 | 1203 | class clojure.lang.SeqEnumeration->interface java.util.Enumeration 1204 | 1205 | 1206 | 1207 | 1208 | class clojure.lang.SeqIterator 1209 | 1210 | SeqIterator 1211 | 1212 | 1213 | class clojure.lang.SeqIterator->interface java.util.Iterator 1214 | 1215 | 1216 | 1217 | 1218 | interface clojure.lang.Settable 1219 | 1220 | Settable 1221 | 1222 | 1223 | class clojure.lang.StringSeq 1224 | 1225 | StringSeq 1226 | [MT1Z] 1227 | 1228 | 1229 | class clojure.lang.StringSeq->class clojure.lang.ASeq 1230 | 1231 | 1232 | 1233 | 1234 | class clojure.lang.StringSeq->interface clojure.lang.IndexedSeq 1235 | 1236 | 1237 | 1238 | 1239 | class clojure.lang.Symbol 1240 | 1241 | Symbol 1242 | symbol? 1243 | [MZN=] 1244 | 1245 | 1246 | class clojure.lang.Symbol->class clojure.lang.AFn 1247 | 1248 | 1249 | 1250 | 1251 | class clojure.lang.Symbol->interface clojure.lang.IObj 1252 | 1253 | 1254 | 1255 | 1256 | class clojure.lang.TransactionalHashMap 1257 | 1258 | TransactionalHashMap 1259 | 1260 | 1261 | class clojure.lang.TransactionalHashMap->interface java.util.concurrent.ConcurrentMap 1262 | 1263 | 1264 | 1265 | 1266 | class clojure.lang.Var 1267 | 1268 | Var 1269 | var? 1270 | [M] 1271 | 1272 | 1273 | class clojure.lang.Var->interface clojure.lang.IFn 1274 | 1275 | 1276 | 1277 | 1278 | class clojure.lang.Var->class clojure.lang.ARef 1279 | 1280 | 1281 | 1282 | 1283 | class clojure.lang.Var->interface clojure.lang.IRef 1284 | 1285 | 1286 | 1287 | 1288 | class clojure.lang.Var->interface clojure.lang.Settable 1289 | 1290 | 1291 | 1292 | 1293 | class clojure.core$future_call$reify__5684 1294 | 1295 | (future) 1296 | [M] 1297 | 1298 | 1299 | class clojure.core$future_call$reify__5684->interface clojure.lang.IObj 1300 | 1301 | 1302 | 1303 | 1304 | class clojure.core$future_call$reify__5684->interface clojure.lang.IDeref 1305 | 1306 | 1307 | 1308 | 1309 | class clojure.core$future_call$reify__5684->interface clojure.lang.IPending 1310 | 1311 | 1312 | 1313 | 1314 | class clojure.core$future_call$reify__5684->interface java.util.concurrent.Future 1315 | 1316 | 1317 | 1318 | 1319 | class clojure.core$future_call$reify__5684->interface clojure.lang.IBlockingDeref 1320 | 1321 | 1322 | 1323 | 1324 | 1325 | --------------------------------------------------------------------------------