clojure 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1378) hide show
  1. data/.document +5 -0
  2. data/.gitignore +21 -0
  3. data/LICENSE +23 -0
  4. data/README.rdoc +18 -0
  5. data/Rakefile +18 -0
  6. data/VERSION +1 -0
  7. data/bin/clj +13 -0
  8. data/epl-v10.html +261 -0
  9. data/lib/clojure/asm/AnnotationVisitor.class +0 -0
  10. data/lib/clojure/asm/AnnotationWriter.class +0 -0
  11. data/lib/clojure/asm/Attribute.class +0 -0
  12. data/lib/clojure/asm/ByteVector.class +0 -0
  13. data/lib/clojure/asm/ClassAdapter.class +0 -0
  14. data/lib/clojure/asm/ClassReader.class +0 -0
  15. data/lib/clojure/asm/ClassVisitor.class +0 -0
  16. data/lib/clojure/asm/ClassWriter.class +0 -0
  17. data/lib/clojure/asm/Edge.class +0 -0
  18. data/lib/clojure/asm/FieldVisitor.class +0 -0
  19. data/lib/clojure/asm/FieldWriter.class +0 -0
  20. data/lib/clojure/asm/Frame.class +0 -0
  21. data/lib/clojure/asm/Handler.class +0 -0
  22. data/lib/clojure/asm/Item.class +0 -0
  23. data/lib/clojure/asm/Label.class +0 -0
  24. data/lib/clojure/asm/MethodAdapter.class +0 -0
  25. data/lib/clojure/asm/MethodVisitor.class +0 -0
  26. data/lib/clojure/asm/MethodWriter.class +0 -0
  27. data/lib/clojure/asm/Opcodes.class +0 -0
  28. data/lib/clojure/asm/Type.class +0 -0
  29. data/lib/clojure/asm/commons/AdviceAdapter.class +0 -0
  30. data/lib/clojure/asm/commons/AnalyzerAdapter.class +0 -0
  31. data/lib/clojure/asm/commons/CodeSizeEvaluator.class +0 -0
  32. data/lib/clojure/asm/commons/EmptyVisitor.class +0 -0
  33. data/lib/clojure/asm/commons/GeneratorAdapter.class +0 -0
  34. data/lib/clojure/asm/commons/LocalVariablesSorter.class +0 -0
  35. data/lib/clojure/asm/commons/Method.class +0 -0
  36. data/lib/clojure/asm/commons/SerialVersionUIDAdder$Item.class +0 -0
  37. data/lib/clojure/asm/commons/SerialVersionUIDAdder.class +0 -0
  38. data/lib/clojure/asm/commons/StaticInitMerger.class +0 -0
  39. data/lib/clojure/asm/commons/TableSwitchGenerator.class +0 -0
  40. data/lib/clojure/core$_DOT__DOT___3630.class +0 -0
  41. data/lib/clojure/core$_EQ__EQ___3398.class +0 -0
  42. data/lib/clojure/core$_EQ___3291.class +0 -0
  43. data/lib/clojure/core$_GT__EQ___3390.class +0 -0
  44. data/lib/clojure/core$_GT___3382.class +0 -0
  45. data/lib/clojure/core$_LT__EQ___3374.class +0 -0
  46. data/lib/clojure/core$_LT___3366.class +0 -0
  47. data/lib/clojure/core$_PLUS___3332.class +0 -0
  48. data/lib/clojure/core$_SLASH___3350.class +0 -0
  49. data/lib/clojure/core$_STAR___3341.class +0 -0
  50. data/lib/clojure/core$__GT___3634.class +0 -0
  51. data/lib/clojure/core$___3358.class +0 -0
  52. data/lib/clojure/core$accessor__4294.class +0 -0
  53. data/lib/clojure/core$aclone__4211.class +0 -0
  54. data/lib/clojure/core$add_classpath__4707.class +0 -0
  55. data/lib/clojure/core$add_doc__5153.class +0 -0
  56. data/lib/clojure/core$add_watch__3697.class +0 -0
  57. data/lib/clojure/core$add_watcher__3703$fn__3705.class +0 -0
  58. data/lib/clojure/core$add_watcher__3703.class +0 -0
  59. data/lib/clojure/core$agent__3684.class +0 -0
  60. data/lib/clojure/core$agent_errors__3712.class +0 -0
  61. data/lib/clojure/core$aget__4217.class +0 -0
  62. data/lib/clojure/core$alength__4205.class +0 -0
  63. data/lib/clojure/core$alias__4367.class +0 -0
  64. data/lib/clojure/core$all_ns__4318.class +0 -0
  65. data/lib/clojure/core$alter__3759.class +0 -0
  66. data/lib/clojure/core$alter_meta_BANG___3750.class +0 -0
  67. data/lib/clojure/core$alter_var_root__4827.class +0 -0
  68. data/lib/clojure/core$amap__4725.class +0 -0
  69. data/lib/clojure/core$ancestors__4866$fn__4869.class +0 -0
  70. data/lib/clojure/core$ancestors__4866.class +0 -0
  71. data/lib/clojure/core$and__3308.class +0 -0
  72. data/lib/clojure/core$apply__3243.class +0 -0
  73. data/lib/clojure/core$areduce__4729.class +0 -0
  74. data/lib/clojure/core$array__4040.class +0 -0
  75. data/lib/clojure/core$array_map__4401.class +0 -0
  76. data/lib/clojure/core$aset__4224.class +0 -0
  77. data/lib/clojure/core$aset_boolean__4244.class +0 -0
  78. data/lib/clojure/core$aset_byte__4260.class +0 -0
  79. data/lib/clojure/core$aset_char__4264.class +0 -0
  80. data/lib/clojure/core$aset_double__4252.class +0 -0
  81. data/lib/clojure/core$aset_float__4248.class +0 -0
  82. data/lib/clojure/core$aset_int__4236.class +0 -0
  83. data/lib/clojure/core$aset_long__4240.class +0 -0
  84. data/lib/clojure/core$aset_short__4256.class +0 -0
  85. data/lib/clojure/core$asm_type__5683.class +0 -0
  86. data/lib/clojure/core$assert__4528.class +0 -0
  87. data/lib/clojure/core$assert_args__3659.class +0 -0
  88. data/lib/clojure/core$assoc__3148.class +0 -0
  89. data/lib/clojure/core$assoc_in__5075.class +0 -0
  90. data/lib/clojure/core$associative_QMARK___5102.class +0 -0
  91. data/lib/clojure/core$atom__3728.class +0 -0
  92. data/lib/clojure/core$await1__4014.class +0 -0
  93. data/lib/clojure/core$await__4007$count_down__4009.class +0 -0
  94. data/lib/clojure/core$await__4007.class +0 -0
  95. data/lib/clojure/core$await_for__4017$count_down__4019.class +0 -0
  96. data/lib/clojure/core$await_for__4017.class +0 -0
  97. data/lib/clojure/core$bases__4836.class +0 -0
  98. data/lib/clojure/core$bean__5303$fn__5305$fn__5307.class +0 -0
  99. data/lib/clojure/core$bean__5303$fn__5305.class +0 -0
  100. data/lib/clojure/core$bean__5303$fn__5321$thisfn__5323$fn__5324.class +0 -0
  101. data/lib/clojure/core$bean__5303$fn__5321$thisfn__5323.class +0 -0
  102. data/lib/clojure/core$bean__5303$fn__5321.class +0 -0
  103. data/lib/clojure/core$bean__5303$fn__5330.class +0 -0
  104. data/lib/clojure/core$bean__5303$fn__5333.class +0 -0
  105. data/lib/clojure/core$bean__5303$fn__5336.class +0 -0
  106. data/lib/clojure/core$bean__5303$fn__5339.class +0 -0
  107. data/lib/clojure/core$bean__5303$fn__5342.class +0 -0
  108. data/lib/clojure/core$bean__5303$fn__5346.class +0 -0
  109. data/lib/clojure/core$bean__5303$fn__5349.class +0 -0
  110. data/lib/clojure/core$bean__5303$snapshot__5315$fn__5317.class +0 -0
  111. data/lib/clojure/core$bean__5303$snapshot__5315.class +0 -0
  112. data/lib/clojure/core$bean__5303$v__5312.class +0 -0
  113. data/lib/clojure/core$bean__5303.class +0 -0
  114. data/lib/clojure/core$bigdec__4136.class +0 -0
  115. data/lib/clojure/core$bigint__4133.class +0 -0
  116. data/lib/clojure/core$binding__3672$var_ize__3674.class +0 -0
  117. data/lib/clojure/core$binding__3672.class +0 -0
  118. data/lib/clojure/core$bit_and__3509.class +0 -0
  119. data/lib/clojure/core$bit_and_not__3524.class +0 -0
  120. data/lib/clojure/core$bit_clear__3527.class +0 -0
  121. data/lib/clojure/core$bit_flip__3533.class +0 -0
  122. data/lib/clojure/core$bit_not__3503.class +0 -0
  123. data/lib/clojure/core$bit_or__3515.class +0 -0
  124. data/lib/clojure/core$bit_set__3530.class +0 -0
  125. data/lib/clojure/core$bit_shift_left__3539.class +0 -0
  126. data/lib/clojure/core$bit_shift_right__3542.class +0 -0
  127. data/lib/clojure/core$bit_test__3536.class +0 -0
  128. data/lib/clojure/core$bit_xor__3521.class +0 -0
  129. data/lib/clojure/core$boolean__4101.class +0 -0
  130. data/lib/clojure/core$bound_fn__4679$fn__4681.class +0 -0
  131. data/lib/clojure/core$bound_fn__4679.class +0 -0
  132. data/lib/clojure/core$butlast__3156.class +0 -0
  133. data/lib/clojure/core$byte__4089.class +0 -0
  134. data/lib/clojure/core$cast__3160.class +0 -0
  135. data/lib/clojure/core$char__4095.class +0 -0
  136. data/lib/clojure/core$class_QMARK___4824.class +0 -0
  137. data/lib/clojure/core$class__4043.class +0 -0
  138. data/lib/clojure/core$clear_agent_errors__3715.class +0 -0
  139. data/lib/clojure/core$clojure_version__5781.class +0 -0
  140. data/lib/clojure/core$coll_QMARK___5087.class +0 -0
  141. data/lib/clojure/core$comment__4501.class +0 -0
  142. data/lib/clojure/core$commute__3756.class +0 -0
  143. data/lib/clojure/core$comp__3775$fn__3777.class +0 -0
  144. data/lib/clojure/core$comp__3775.class +0 -0
  145. data/lib/clojure/core$comparator__3965$fn__3967.class +0 -0
  146. data/lib/clojure/core$comparator__3965.class +0 -0
  147. data/lib/clojure/core$compare__3304.class +0 -0
  148. data/lib/clojure/core$compare_and_set_BANG___3738.class +0 -0
  149. data/lib/clojure/core$compile__5065$fn__5067.class +0 -0
  150. data/lib/clojure/core$compile__5065.class +0 -0
  151. data/lib/clojure/core$complement__3551$fn__3553.class +0 -0
  152. data/lib/clojure/core$complement__3551.class +0 -0
  153. data/lib/clojure/core$concat__3255$cat__3269$fn__3270.class +0 -0
  154. data/lib/clojure/core$concat__3255$cat__3269.class +0 -0
  155. data/lib/clojure/core$concat__3255$fn__3257.class +0 -0
  156. data/lib/clojure/core$concat__3255$fn__3261.class +0 -0
  157. data/lib/clojure/core$concat__3255$fn__3265.class +0 -0
  158. data/lib/clojure/core$concat__3255.class +0 -0
  159. data/lib/clojure/core$cond__3237.class +0 -0
  160. data/lib/clojure/core$condp__5146$emit__5148.class +0 -0
  161. data/lib/clojure/core$condp__5146.class +0 -0
  162. data/lib/clojure/core$conj__3121.class +0 -0
  163. data/lib/clojure/core$cons__3107.class +0 -0
  164. data/lib/clojure/core$constantly__3560$fn__3562.class +0 -0
  165. data/lib/clojure/core$constantly__3560.class +0 -0
  166. data/lib/clojure/core$construct_proxy__5265.class +0 -0
  167. data/lib/clojure/core$contains_QMARK___3582.class +0 -0
  168. data/lib/clojure/core$count__3569.class +0 -0
  169. data/lib/clojure/core$counted_QMARK___5111.class +0 -0
  170. data/lib/clojure/core$create_ns__4312.class +0 -0
  171. data/lib/clojure/core$create_struct__4282.class +0 -0
  172. data/lib/clojure/core$ctor_sigs__5565$iter__5567__5569$fn__5570.class +0 -0
  173. data/lib/clojure/core$ctor_sigs__5565$iter__5567__5569.class +0 -0
  174. data/lib/clojure/core$ctor_sigs__5565.class +0 -0
  175. data/lib/clojure/core$cycle__3899$fn__3901.class +0 -0
  176. data/lib/clojure/core$cycle__3899.class +0 -0
  177. data/lib/clojure/core$dec__3422.class +0 -0
  178. data/lib/clojure/core$decimal_QMARK___4121.class +0 -0
  179. data/lib/clojure/core$declare__5118$fn__5120.class +0 -0
  180. data/lib/clojure/core$declare__5118.class +0 -0
  181. data/lib/clojure/core$def_aset__4233.class +0 -0
  182. data/lib/clojure/core$definline__4716.class +0 -0
  183. data/lib/clojure/core$defmacro__3190.class +0 -0
  184. data/lib/clojure/core$defmethod__3641.class +0 -0
  185. data/lib/clojure/core$defmulti__3638.class +0 -0
  186. data/lib/clojure/core$defn__3158.class +0 -0
  187. data/lib/clojure/core$defn___4565.class +0 -0
  188. data/lib/clojure/core$defonce__4973.class +0 -0
  189. data/lib/clojure/core$defstruct__4285.class +0 -0
  190. data/lib/clojure/core$delay_QMARK___3278.class +0 -0
  191. data/lib/clojure/core$delay__3275.class +0 -0
  192. data/lib/clojure/core$deref__3725.class +0 -0
  193. data/lib/clojure/core$derive__4877$tf__4880$fn__4882.class +0 -0
  194. data/lib/clojure/core$derive__4877$tf__4880.class +0 -0
  195. data/lib/clojure/core$derive__4877.class +0 -0
  196. data/lib/clojure/core$descendants__4873.class +0 -0
  197. data/lib/clojure/core$destructure__4413$pb__4415$pmap__4419$fn__4421$fn__4423.class +0 -0
  198. data/lib/clojure/core$destructure__4413$pb__4415$pmap__4419$fn__4421.class +0 -0
  199. data/lib/clojure/core$destructure__4413$pb__4415$pmap__4419$fn__4427.class +0 -0
  200. data/lib/clojure/core$destructure__4413$pb__4415$pmap__4419$fn__4430.class +0 -0
  201. data/lib/clojure/core$destructure__4413$pb__4415$pmap__4419.class +0 -0
  202. data/lib/clojure/core$destructure__4413$pb__4415$pvec__4416.class +0 -0
  203. data/lib/clojure/core$destructure__4413$pb__4415.class +0 -0
  204. data/lib/clojure/core$destructure__4413$process_entry__4436.class +0 -0
  205. data/lib/clojure/core$destructure__4413.class +0 -0
  206. data/lib/clojure/core$disj__3594.class +0 -0
  207. data/lib/clojure/core$dissoc__3589.class +0 -0
  208. data/lib/clojure/core$distinct_QMARK___4901.class +0 -0
  209. data/lib/clojure/core$distinct__4646$step__4648$fn__4649$fn__4652.class +0 -0
  210. data/lib/clojure/core$distinct__4646$step__4648$fn__4649.class +0 -0
  211. data/lib/clojure/core$distinct__4646$step__4648.class +0 -0
  212. data/lib/clojure/core$distinct__4646.class +0 -0
  213. data/lib/clojure/core$doall__4003.class +0 -0
  214. data/lib/clojure/core$doc__4590.class +0 -0
  215. data/lib/clojure/core$dorun__3998.class +0 -0
  216. data/lib/clojure/core$doseq__3993$step__3995.class +0 -0
  217. data/lib/clojure/core$doseq__3993.class +0 -0
  218. data/lib/clojure/core$dosync__4672.class +0 -0
  219. data/lib/clojure/core$dotimes__4025.class +0 -0
  220. data/lib/clojure/core$doto__4187$fn__4189.class +0 -0
  221. data/lib/clojure/core$doto__4187.class +0 -0
  222. data/lib/clojure/core$double__4077.class +0 -0
  223. data/lib/clojure/core$double_array__4742.class +0 -0
  224. data/lib/clojure/core$doubles__4790.class +0 -0
  225. data/lib/clojure/core$drop__3872$fn__3878.class +0 -0
  226. data/lib/clojure/core$drop__3872$step__3874.class +0 -0
  227. data/lib/clojure/core$drop__3872.class +0 -0
  228. data/lib/clojure/core$drop_last__3882$fn__3885.class +0 -0
  229. data/lib/clojure/core$drop_last__3882.class +0 -0
  230. data/lib/clojure/core$drop_while__3889$fn__3895.class +0 -0
  231. data/lib/clojure/core$drop_while__3889$step__3891.class +0 -0
  232. data/lib/clojure/core$drop_while__3889.class +0 -0
  233. data/lib/clojure/core$empty_QMARK___5084.class +0 -0
  234. data/lib/clojure/core$empty__4721.class +0 -0
  235. data/lib/clojure/core$ensure__3765.class +0 -0
  236. data/lib/clojure/core$enumeration_seq__4935.class +0 -0
  237. data/lib/clojure/core$escape_class_name__5576.class +0 -0
  238. data/lib/clojure/core$eval__3990.class +0 -0
  239. data/lib/clojure/core$eval__4760$fn__4762.class +0 -0
  240. data/lib/clojure/core$eval__4760.class +0 -0
  241. data/lib/clojure/core$eval__4772$fn__4774.class +0 -0
  242. data/lib/clojure/core$eval__4772.class +0 -0
  243. data/lib/clojure/core$eval__4784$fn__4786.class +0 -0
  244. data/lib/clojure/core$eval__4784.class +0 -0
  245. data/lib/clojure/core$eval__4796$fn__4798.class +0 -0
  246. data/lib/clojure/core$eval__4796.class +0 -0
  247. data/lib/clojure/core$even_QMARK___3545.class +0 -0
  248. data/lib/clojure/core$every_QMARK___3806.class +0 -0
  249. data/lib/clojure/core$false_QMARK___3202.class +0 -0
  250. data/lib/clojure/core$ffirst__3125.class +0 -0
  251. data/lib/clojure/core$file_seq__4601$fn__4603.class +0 -0
  252. data/lib/clojure/core$file_seq__4601$fn__4606.class +0 -0
  253. data/lib/clojure/core$file_seq__4601.class +0 -0
  254. data/lib/clojure/core$filter__3845$fn__3851.class +0 -0
  255. data/lib/clojure/core$filter__3845$step__3847.class +0 -0
  256. data/lib/clojure/core$filter__3845.class +0 -0
  257. data/lib/clojure/core$filter_key__4306.class +0 -0
  258. data/lib/clojure/core$find__3599.class +0 -0
  259. data/lib/clojure/core$find_doc__4571.class +0 -0
  260. data/lib/clojure/core$find_field__5583$fn__5585.class +0 -0
  261. data/lib/clojure/core$find_field__5583.class +0 -0
  262. data/lib/clojure/core$find_ns__4309.class +0 -0
  263. data/lib/clojure/core$find_var__3678.class +0 -0
  264. data/lib/clojure/core$first__3115.class +0 -0
  265. data/lib/clojure/core$float_QMARK___4124.class +0 -0
  266. data/lib/clojure/core$float__4071.class +0 -0
  267. data/lib/clojure/core$float_array__4735.class +0 -0
  268. data/lib/clojure/core$floats__4766.class +0 -0
  269. data/lib/clojure/core$flush__4156.class +0 -0
  270. data/lib/clojure/core$fn_QMARK___5099.class +0 -0
  271. data/lib/clojure/core$fn__3113.class +0 -0
  272. data/lib/clojure/core$fn__3288.class +0 -0
  273. data/lib/clojure/core$fn__3301.class +0 -0
  274. data/lib/clojure/core$fn__3329.class +0 -0
  275. data/lib/clojure/core$fn__3338.class +0 -0
  276. data/lib/clojure/core$fn__3347.class +0 -0
  277. data/lib/clojure/core$fn__3355.class +0 -0
  278. data/lib/clojure/core$fn__3363.class +0 -0
  279. data/lib/clojure/core$fn__3371.class +0 -0
  280. data/lib/clojure/core$fn__3379.class +0 -0
  281. data/lib/clojure/core$fn__3387.class +0 -0
  282. data/lib/clojure/core$fn__3395.class +0 -0
  283. data/lib/clojure/core$fn__3413.class +0 -0
  284. data/lib/clojure/core$fn__3419.class +0 -0
  285. data/lib/clojure/core$fn__3425.class +0 -0
  286. data/lib/clojure/core$fn__3431.class +0 -0
  287. data/lib/clojure/core$fn__3437.class +0 -0
  288. data/lib/clojure/core$fn__3443.class +0 -0
  289. data/lib/clojure/core$fn__3449.class +0 -0
  290. data/lib/clojure/core$fn__3455.class +0 -0
  291. data/lib/clojure/core$fn__3461.class +0 -0
  292. data/lib/clojure/core$fn__3467.class +0 -0
  293. data/lib/clojure/core$fn__3473.class +0 -0
  294. data/lib/clojure/core$fn__3479.class +0 -0
  295. data/lib/clojure/core$fn__3485.class +0 -0
  296. data/lib/clojure/core$fn__3500.class +0 -0
  297. data/lib/clojure/core$fn__3506.class +0 -0
  298. data/lib/clojure/core$fn__3512.class +0 -0
  299. data/lib/clojure/core$fn__3518.class +0 -0
  300. data/lib/clojure/core$fn__4050.class +0 -0
  301. data/lib/clojure/core$fn__4056.class +0 -0
  302. data/lib/clojure/core$fn__4062.class +0 -0
  303. data/lib/clojure/core$fn__4068.class +0 -0
  304. data/lib/clojure/core$fn__4074.class +0 -0
  305. data/lib/clojure/core$fn__4080.class +0 -0
  306. data/lib/clojure/core$fn__4086.class +0 -0
  307. data/lib/clojure/core$fn__4092.class +0 -0
  308. data/lib/clojure/core$fn__4098.class +0 -0
  309. data/lib/clojure/core$fn__4139.class +0 -0
  310. data/lib/clojure/core$fn__4142.class +0 -0
  311. data/lib/clojure/core$fn__4202.class +0 -0
  312. data/lib/clojure/core$fn__4208.class +0 -0
  313. data/lib/clojure/core$fn__4214.class +0 -0
  314. data/lib/clojure/core$fn__4221.class +0 -0
  315. data/lib/clojure/core$fn__4443$psig__4445.class +0 -0
  316. data/lib/clojure/core$fn__4443.class +0 -0
  317. data/lib/clojure/core$fn__4732.class +0 -0
  318. data/lib/clojure/core$fn__4739.class +0 -0
  319. data/lib/clojure/core$fn__4746.class +0 -0
  320. data/lib/clojure/core$fn__4753.class +0 -0
  321. data/lib/clojure/core$fn__4769.class +0 -0
  322. data/lib/clojure/core$fn__4781.class +0 -0
  323. data/lib/clojure/core$fn__4793.class +0 -0
  324. data/lib/clojure/core$fn__4805.class +0 -0
  325. data/lib/clojure/core$fn__4976.class +0 -0
  326. data/lib/clojure/core$fn__4980.class +0 -0
  327. data/lib/clojure/core$fn__4984.class +0 -0
  328. data/lib/clojure/core$fn__5379$fn__5381.class +0 -0
  329. data/lib/clojure/core$fn__5379.class +0 -0
  330. data/lib/clojure/core$fn__5385.class +0 -0
  331. data/lib/clojure/core$fn__5388.class +0 -0
  332. data/lib/clojure/core$fn__5394.class +0 -0
  333. data/lib/clojure/core$fn__5397.class +0 -0
  334. data/lib/clojure/core$fn__5400.class +0 -0
  335. data/lib/clojure/core$fn__5403.class +0 -0
  336. data/lib/clojure/core$fn__5406$fn__5408.class +0 -0
  337. data/lib/clojure/core$fn__5406.class +0 -0
  338. data/lib/clojure/core$fn__5412$fn__5414.class +0 -0
  339. data/lib/clojure/core$fn__5412.class +0 -0
  340. data/lib/clojure/core$fn__5418.class +0 -0
  341. data/lib/clojure/core$fn__5421.class +0 -0
  342. data/lib/clojure/core$fn__5427.class +0 -0
  343. data/lib/clojure/core$fn__5430.class +0 -0
  344. data/lib/clojure/core$fn__5433.class +0 -0
  345. data/lib/clojure/core$fn__5436.class +0 -0
  346. data/lib/clojure/core$fn__5439.class +0 -0
  347. data/lib/clojure/core$fn__5442.class +0 -0
  348. data/lib/clojure/core$fn__5445.class +0 -0
  349. data/lib/clojure/core$fn__5448.class +0 -0
  350. data/lib/clojure/core$fn__5453$fn__5455.class +0 -0
  351. data/lib/clojure/core$fn__5453.class +0 -0
  352. data/lib/clojure/core$fn__5459.class +0 -0
  353. data/lib/clojure/core$fn__5462.class +0 -0
  354. data/lib/clojure/core$fn__5467.class +0 -0
  355. data/lib/clojure/core$fn__5470.class +0 -0
  356. data/lib/clojure/core$fn__5479.class +0 -0
  357. data/lib/clojure/core$fn__5484$fn__5486.class +0 -0
  358. data/lib/clojure/core$fn__5484.class +0 -0
  359. data/lib/clojure/core$fn__5490.class +0 -0
  360. data/lib/clojure/core$fn__5493.class +0 -0
  361. data/lib/clojure/core$fn__5496.class +0 -0
  362. data/lib/clojure/core$fn__5500.class +0 -0
  363. data/lib/clojure/core$fn__5503.class +0 -0
  364. data/lib/clojure/core$fn__5506.class +0 -0
  365. data/lib/clojure/core$fn__5509.class +0 -0
  366. data/lib/clojure/core$fn__5512.class +0 -0
  367. data/lib/clojure/core$fn__5515.class +0 -0
  368. data/lib/clojure/core$fn__5518.class +0 -0
  369. data/lib/clojure/core$fn__5521.class +0 -0
  370. data/lib/clojure/core$fn__5524.class +0 -0
  371. data/lib/clojure/core$fn__5527.class +0 -0
  372. data/lib/clojure/core$fn__5530.class +0 -0
  373. data/lib/clojure/core$fn__5533.class +0 -0
  374. data/lib/clojure/core$fn__5536.class +0 -0
  375. data/lib/clojure/core$fn__5544.class +0 -0
  376. data/lib/clojure/core$fn__5547.class +0 -0
  377. data/lib/clojure/core$fn__5550.class +0 -0
  378. data/lib/clojure/core$fn__5774$prop__5777.class +0 -0
  379. data/lib/clojure/core$fn__5774.class +0 -0
  380. data/lib/clojure/core$fnext__3129.class +0 -0
  381. data/lib/clojure/core$for__4475$emit_bind__4489$do_mod__4495.class +0 -0
  382. data/lib/clojure/core$for__4475$emit_bind__4489.class +0 -0
  383. data/lib/clojure/core$for__4475$err__4485.class +0 -0
  384. data/lib/clojure/core$for__4475$to_groups__4477$fn__4480.class +0 -0
  385. data/lib/clojure/core$for__4475$to_groups__4477.class +0 -0
  386. data/lib/clojure/core$for__4475.class +0 -0
  387. data/lib/clojure/core$force__3281.class +0 -0
  388. data/lib/clojure/core$format__4938.class +0 -0
  389. data/lib/clojure/core$future__5722.class +0 -0
  390. data/lib/clojure/core$future_call__5702$fn__5704.class +0 -0
  391. data/lib/clojure/core$future_call__5702$fn__5707.class +0 -0
  392. data/lib/clojure/core$future_call__5702$fn__5710.class +0 -0
  393. data/lib/clojure/core$future_call__5702$fn__5713.class +0 -0
  394. data/lib/clojure/core$future_call__5702$fn__5717.class +0 -0
  395. data/lib/clojure/core$future_call__5702.class +0 -0
  396. data/lib/clojure/core$gen_class__5679.class +0 -0
  397. data/lib/clojure/core$gen_interface__5698.class +0 -0
  398. data/lib/clojure/core$generate_class__5596$arg_types__5608.class +0 -0
  399. data/lib/clojure/core$generate_class__5596$emit_forwarding_method__5642.class +0 -0
  400. data/lib/clojure/core$generate_class__5596$emit_get_var__5636.class +0 -0
  401. data/lib/clojure/core$generate_class__5596$emit_unsupported__5639.class +0 -0
  402. data/lib/clojure/core$generate_class__5596$fn__5614.class +0 -0
  403. data/lib/clojure/core$generate_class__5596$fn__5619.class +0 -0
  404. data/lib/clojure/core$generate_class__5596$fn__5624.class +0 -0
  405. data/lib/clojure/core$generate_class__5596$fn__5629$fn__5632.class +0 -0
  406. data/lib/clojure/core$generate_class__5596$fn__5629.class +0 -0
  407. data/lib/clojure/core$generate_class__5596$fn__5651.class +0 -0
  408. data/lib/clojure/core$generate_class__5596$fn__5654.class +0 -0
  409. data/lib/clojure/core$generate_class__5596$fn__5657.class +0 -0
  410. data/lib/clojure/core$generate_class__5596$fn__5664.class +0 -0
  411. data/lib/clojure/core$generate_class__5596$iname__5599.class +0 -0
  412. data/lib/clojure/core$generate_class__5596$to_types__5605.class +0 -0
  413. data/lib/clojure/core$generate_class__5596$totype__5602.class +0 -0
  414. data/lib/clojure/core$generate_class__5596$var_name__5611.class +0 -0
  415. data/lib/clojure/core$generate_class__5596.class +0 -0
  416. data/lib/clojure/core$generate_interface__5689$fn__5692.class +0 -0
  417. data/lib/clojure/core$generate_interface__5689.class +0 -0
  418. data/lib/clojure/core$generate_proxy__5188$fn__5209$fn__5212.class +0 -0
  419. data/lib/clojure/core$generate_proxy__5188$fn__5209.class +0 -0
  420. data/lib/clojure/core$generate_proxy__5188$fn__5237.class +0 -0
  421. data/lib/clojure/core$generate_proxy__5188$fn__5240.class +0 -0
  422. data/lib/clojure/core$generate_proxy__5188$fn__5247.class +0 -0
  423. data/lib/clojure/core$generate_proxy__5188$fn__5251.class +0 -0
  424. data/lib/clojure/core$generate_proxy__5188$gen_bridge__5199.class +0 -0
  425. data/lib/clojure/core$generate_proxy__5188$gen_method__5203.class +0 -0
  426. data/lib/clojure/core$generate_proxy__5188$iname__5190.class +0 -0
  427. data/lib/clojure/core$generate_proxy__5188$iter__5221__5225$fn__5226$iter__5223__5228$fn__5229.class +0 -0
  428. data/lib/clojure/core$generate_proxy__5188$iter__5221__5225$fn__5226$iter__5223__5228.class +0 -0
  429. data/lib/clojure/core$generate_proxy__5188$iter__5221__5225$fn__5226.class +0 -0
  430. data/lib/clojure/core$generate_proxy__5188$iter__5221__5225.class +0 -0
  431. data/lib/clojure/core$generate_proxy__5188$to_types__5196.class +0 -0
  432. data/lib/clojure/core$generate_proxy__5188$totype__5193.class +0 -0
  433. data/lib/clojure/core$generate_proxy__5188.class +0 -0
  434. data/lib/clojure/core$gensym__3233.class +0 -0
  435. data/lib/clojure/core$get__3585.class +0 -0
  436. data/lib/clojure/core$get_in__5071.class +0 -0
  437. data/lib/clojure/core$get_method__3653.class +0 -0
  438. data/lib/clojure/core$get_proxy_class__5259.class +0 -0
  439. data/lib/clojure/core$get_super_and_interfaces__5256.class +0 -0
  440. data/lib/clojure/core$get_validator__3747.class +0 -0
  441. data/lib/clojure/core$group_by_sig__5170$fn__5173.class +0 -0
  442. data/lib/clojure/core$group_by_sig__5170.class +0 -0
  443. data/lib/clojure/core$hash__4710.class +0 -0
  444. data/lib/clojure/core$hash_map__3173.class +0 -0
  445. data/lib/clojure/core$hash_set__3177.class +0 -0
  446. data/lib/clojure/core$identity__3566.class +0 -0
  447. data/lib/clojure/core$if_let__3663.class +0 -0
  448. data/lib/clojure/core$if_not__3284.class +0 -0
  449. data/lib/clojure/core$ifn_QMARK___5096.class +0 -0
  450. data/lib/clojure/core$import__4028.class +0 -0
  451. data/lib/clojure/core$inc__3416.class +0 -0
  452. data/lib/clojure/core$init_proxy__5268.class +0 -0
  453. data/lib/clojure/core$instance_QMARK___3135.class +0 -0
  454. data/lib/clojure/core$int__4059.class +0 -0
  455. data/lib/clojure/core$int_array__4749.class +0 -0
  456. data/lib/clojure/core$integer_QMARK___4107.class +0 -0
  457. data/lib/clojure/core$interleave__4383.class +0 -0
  458. data/lib/clojure/core$intern__5131.class +0 -0
  459. data/lib/clojure/core$interpose__4713.class +0 -0
  460. data/lib/clojure/core$into__4037.class +0 -0
  461. data/lib/clojure/core$into_array__4033.class +0 -0
  462. data/lib/clojure/core$ints__4778.class +0 -0
  463. data/lib/clojure/core$io_BANG___3771.class +0 -0
  464. data/lib/clojure/core$isa_QMARK___4843$fn__4846.class +0 -0
  465. data/lib/clojure/core$isa_QMARK___4843.class +0 -0
  466. data/lib/clojure/core$iterate__3922$fn__3924.class +0 -0
  467. data/lib/clojure/core$iterate__3922.class +0 -0
  468. data/lib/clojure/core$iterator_seq__4932.class +0 -0
  469. data/lib/clojure/core$key__3611.class +0 -0
  470. data/lib/clojure/core$keys__3605.class +0 -0
  471. data/lib/clojure/core$keyword_QMARK___3222.class +0 -0
  472. data/lib/clojure/core$keyword__3229.class +0 -0
  473. data/lib/clojure/core$last__3154.class +0 -0
  474. data/lib/clojure/core$lazy_cat__4466$fn__4468.class +0 -0
  475. data/lib/clojure/core$lazy_cat__4466.class +0 -0
  476. data/lib/clojure/core$lazy_seq__3252.class +0 -0
  477. data/lib/clojure/core$let__3109.class +0 -0
  478. data/lib/clojure/core$let__4440.class +0 -0
  479. data/lib/clojure/core$letfn__5768$fn__5770.class +0 -0
  480. data/lib/clojure/core$letfn__5768.class +0 -0
  481. data/lib/clojure/core$libspec_QMARK___4995.class +0 -0
  482. data/lib/clojure/core$line_seq__3959$fn__3961.class +0 -0
  483. data/lib/clojure/core$line_seq__3959.class +0 -0
  484. data/lib/clojure/core$list_QMARK___5090.class +0 -0
  485. data/lib/clojure/core$list_STAR___3249.class +0 -0
  486. data/lib/clojure/core$load__5058$fn__5061.class +0 -0
  487. data/lib/clojure/core$load__5058.class +0 -0
  488. data/lib/clojure/core$load_all__5019$fn__5021$fn__5023.class +0 -0
  489. data/lib/clojure/core$load_all__5019$fn__5021$fn__5026.class +0 -0
  490. data/lib/clojure/core$load_all__5019$fn__5021.class +0 -0
  491. data/lib/clojure/core$load_all__5019.class +0 -0
  492. data/lib/clojure/core$load_lib__5031.class +0 -0
  493. data/lib/clojure/core$load_libs__5043.class +0 -0
  494. data/lib/clojure/core$load_one__5010$fn__5012.class +0 -0
  495. data/lib/clojure/core$load_one__5010.class +0 -0
  496. data/lib/clojure/core$load_reader__4297.class +0 -0
  497. data/lib/clojure/core$load_string__4300.class +0 -0
  498. data/lib/clojure/core$loaded_libs__5055.class +0 -0
  499. data/lib/clojure/core$locking__3627.class +0 -0
  500. data/lib/clojure/core$long__4065.class +0 -0
  501. data/lib/clojure/core$long_array__4756.class +0 -0
  502. data/lib/clojure/core$longs__4802.class +0 -0
  503. data/lib/clojure/core$loop__3111.class +0 -0
  504. data/lib/clojure/core$loop__4450$fn__4452.class +0 -0
  505. data/lib/clojure/core$loop__4450$fn__4456.class +0 -0
  506. data/lib/clojure/core$loop__4450.class +0 -0
  507. data/lib/clojure/core$macroexpand_1__4276.class +0 -0
  508. data/lib/clojure/core$macroexpand__4279.class +0 -0
  509. data/lib/clojure/core$make_array__4268.class +0 -0
  510. data/lib/clojure/core$make_hierarchy__4830.class +0 -0
  511. data/lib/clojure/core$map_QMARK___3141.class +0 -0
  512. data/lib/clojure/core$map__3815$fn__3817.class +0 -0
  513. data/lib/clojure/core$map__3815$fn__3822.class +0 -0
  514. data/lib/clojure/core$map__3815$fn__3827.class +0 -0
  515. data/lib/clojure/core$map__3815$fn__3838.class +0 -0
  516. data/lib/clojure/core$map__3815$step__3833$fn__3834.class +0 -0
  517. data/lib/clojure/core$map__3815$step__3833.class +0 -0
  518. data/lib/clojure/core$map__3815.class +0 -0
  519. data/lib/clojure/core$mapcat__3842.class +0 -0
  520. data/lib/clojure/core$max__3403.class +0 -0
  521. data/lib/clojure/core$max_key__4628$fn__4632.class +0 -0
  522. data/lib/clojure/core$max_key__4628.class +0 -0
  523. data/lib/clojure/core$memfn__4194.class +0 -0
  524. data/lib/clojure/core$memoize__5138$fn__5140.class +0 -0
  525. data/lib/clojure/core$memoize__5138.class +0 -0
  526. data/lib/clojure/core$merge__3938$fn__3940.class +0 -0
  527. data/lib/clojure/core$merge__3938.class +0 -0
  528. data/lib/clojure/core$merge_with__3945$merge2__3950.class +0 -0
  529. data/lib/clojure/core$merge_with__3945$merge_entry__3947.class +0 -0
  530. data/lib/clojure/core$merge_with__3945.class +0 -0
  531. data/lib/clojure/core$meta__3150.class +0 -0
  532. data/lib/clojure/core$method_sig__5156.class +0 -0
  533. data/lib/clojure/core$methods__3650.class +0 -0
  534. data/lib/clojure/core$min__3408.class +0 -0
  535. data/lib/clojure/core$min_key__4638$fn__4642.class +0 -0
  536. data/lib/clojure/core$min_key__4638.class +0 -0
  537. data/lib/clojure/core$mod__4114.class +0 -0
  538. data/lib/clojure/core$most_specific__5160$fn__5162$fn__5164.class +0 -0
  539. data/lib/clojure/core$most_specific__5160$fn__5162.class +0 -0
  540. data/lib/clojure/core$most_specific__5160.class +0 -0
  541. data/lib/clojure/core$name__3620.class +0 -0
  542. data/lib/clojure/core$namespace__3623.class +0 -0
  543. data/lib/clojure/core$neg_QMARK___3482.class +0 -0
  544. data/lib/clojure/core$newline__4153.class +0 -0
  545. data/lib/clojure/core$next__3117.class +0 -0
  546. data/lib/clojure/core$nfirst__3127.class +0 -0
  547. data/lib/clojure/core$nil_QMARK___3199.class +0 -0
  548. data/lib/clojure/core$nnext__3131.class +0 -0
  549. data/lib/clojure/core$non_private_methods__5553$fn__5556.class +0 -0
  550. data/lib/clojure/core$non_private_methods__5553.class +0 -0
  551. data/lib/clojure/core$not_EQ___3296.class +0 -0
  552. data/lib/clojure/core$not__3208.class +0 -0
  553. data/lib/clojure/core$not_empty__4833.class +0 -0
  554. data/lib/clojure/core$ns__4948$fn__4958.class +0 -0
  555. data/lib/clojure/core$ns__4948$fn__4961.class +0 -0
  556. data/lib/clojure/core$ns__4948$fn__4964.class +0 -0
  557. data/lib/clojure/core$ns__4948$process_reference__4951$fn__4954.class +0 -0
  558. data/lib/clojure/core$ns__4948$process_reference__4951.class +0 -0
  559. data/lib/clojure/core$ns__4948.class +0 -0
  560. data/lib/clojure/core$ns_aliases__4370.class +0 -0
  561. data/lib/clojure/core$ns_imports__4342.class +0 -0
  562. data/lib/clojure/core$ns_interns__4360$fn__4362.class +0 -0
  563. data/lib/clojure/core$ns_interns__4360.class +0 -0
  564. data/lib/clojure/core$ns_map__4328.class +0 -0
  565. data/lib/clojure/core$ns_name__4325.class +0 -0
  566. data/lib/clojure/core$ns_publics__4334$fn__4336.class +0 -0
  567. data/lib/clojure/core$ns_publics__4334.class +0 -0
  568. data/lib/clojure/core$ns_refers__4353$fn__4355.class +0 -0
  569. data/lib/clojure/core$ns_refers__4353.class +0 -0
  570. data/lib/clojure/core$ns_resolve__4395.class +0 -0
  571. data/lib/clojure/core$ns_unalias__4373.class +0 -0
  572. data/lib/clojure/core$ns_unmap__4331.class +0 -0
  573. data/lib/clojure/core$nth__3578.class +0 -0
  574. data/lib/clojure/core$nthnext__4405.class +0 -0
  575. data/lib/clojure/core$num__4053.class +0 -0
  576. data/lib/clojure/core$number_QMARK___4104.class +0 -0
  577. data/lib/clojure/core$odd_QMARK___3548.class +0 -0
  578. data/lib/clojure/core$or__3314.class +0 -0
  579. data/lib/clojure/core$overload_name__5579.class +0 -0
  580. data/lib/clojure/core$parents__4861.class +0 -0
  581. data/lib/clojure/core$partial__3781$fn__3783.class +0 -0
  582. data/lib/clojure/core$partial__3781$fn__3787.class +0 -0
  583. data/lib/clojure/core$partial__3781$fn__3791.class +0 -0
  584. data/lib/clojure/core$partial__3781$fn__3795.class +0 -0
  585. data/lib/clojure/core$partial__3781.class +0 -0
  586. data/lib/clojure/core$partition__3982$fn__3985.class +0 -0
  587. data/lib/clojure/core$partition__3982.class +0 -0
  588. data/lib/clojure/core$pcalls__5754$fn__5756.class +0 -0
  589. data/lib/clojure/core$pcalls__5754.class +0 -0
  590. data/lib/clojure/core$peek__3572.class +0 -0
  591. data/lib/clojure/core$pmap__5727$fn__5729$fn__5731.class +0 -0
  592. data/lib/clojure/core$pmap__5727$fn__5729.class +0 -0
  593. data/lib/clojure/core$pmap__5727$fn__5749.class +0 -0
  594. data/lib/clojure/core$pmap__5727$step__5736$fn__5738.class +0 -0
  595. data/lib/clojure/core$pmap__5727$step__5736.class +0 -0
  596. data/lib/clojure/core$pmap__5727$step__5744$fn__5745.class +0 -0
  597. data/lib/clojure/core$pmap__5727$step__5744.class +0 -0
  598. data/lib/clojure/core$pmap__5727.class +0 -0
  599. data/lib/clojure/core$pop__3575.class +0 -0
  600. data/lib/clojure/core$pos_QMARK___3476.class +0 -0
  601. data/lib/clojure/core$pr__4148.class +0 -0
  602. data/lib/clojure/core$pr_on__4145.class +0 -0
  603. data/lib/clojure/core$pr_str__4512.class +0 -0
  604. data/lib/clojure/core$prefer_method__3647.class +0 -0
  605. data/lib/clojure/core$prefers__3656.class +0 -0
  606. data/lib/clojure/core$prependss__5001.class +0 -0
  607. data/lib/clojure/core$print__4162.class +0 -0
  608. data/lib/clojure/core$print_ctor__5391.class +0 -0
  609. data/lib/clojure/core$print_doc__4568.class +0 -0
  610. data/lib/clojure/core$print_map__5473$fn__5475.class +0 -0
  611. data/lib/clojure/core$print_map__5473.class +0 -0
  612. data/lib/clojure/core$print_meta__5370.class +0 -0
  613. data/lib/clojure/core$print_namespace_doc__4587.class +0 -0
  614. data/lib/clojure/core$print_sequential__5354.class +0 -0
  615. data/lib/clojure/core$print_simple__5424.class +0 -0
  616. data/lib/clojure/core$print_special_doc__4584.class +0 -0
  617. data/lib/clojure/core$print_str__4520.class +0 -0
  618. data/lib/clojure/core$printf__4941.class +0 -0
  619. data/lib/clojure/core$println__4165.class +0 -0
  620. data/lib/clojure/core$println_str__4524.class +0 -0
  621. data/lib/clojure/core$prn__4159.class +0 -0
  622. data/lib/clojure/core$prn_str__4516.class +0 -0
  623. data/lib/clojure/core$proxy__5279$fn__5282.class +0 -0
  624. data/lib/clojure/core$proxy__5279$fn__5287$fn__5291.class +0 -0
  625. data/lib/clojure/core$proxy__5279$fn__5287.class +0 -0
  626. data/lib/clojure/core$proxy__5279.class +0 -0
  627. data/lib/clojure/core$proxy_call_with_super__5297.class +0 -0
  628. data/lib/clojure/core$proxy_mappings__5274.class +0 -0
  629. data/lib/clojure/core$proxy_name__5179$fn__5181.class +0 -0
  630. data/lib/clojure/core$proxy_name__5179.class +0 -0
  631. data/lib/clojure/core$proxy_super__5300.class +0 -0
  632. data/lib/clojure/core$pvalues__5761$fn__5763.class +0 -0
  633. data/lib/clojure/core$pvalues__5761.class +0 -0
  634. data/lib/clojure/core$quot__3491.class +0 -0
  635. data/lib/clojure/core$rand__4558.class +0 -0
  636. data/lib/clojure/core$rand_int__4562.class +0 -0
  637. data/lib/clojure/core$range__3928.class +0 -0
  638. data/lib/clojure/core$ratio_QMARK___4118.class +0 -0
  639. data/lib/clojure/core$rational_QMARK___4128.class +0 -0
  640. data/lib/clojure/core$rationalize__3497.class +0 -0
  641. data/lib/clojure/core$re_find__4554.class +0 -0
  642. data/lib/clojure/core$re_groups__4540.class +0 -0
  643. data/lib/clojure/core$re_matcher__4537.class +0 -0
  644. data/lib/clojure/core$re_matches__4551.class +0 -0
  645. data/lib/clojure/core$re_pattern__4534.class +0 -0
  646. data/lib/clojure/core$re_seq__4543$step__4545$fn__4546.class +0 -0
  647. data/lib/clojure/core$re_seq__4543$step__4545.class +0 -0
  648. data/lib/clojure/core$re_seq__4543.class +0 -0
  649. data/lib/clojure/core$read__4168.class +0 -0
  650. data/lib/clojure/core$read_line__4174.class +0 -0
  651. data/lib/clojure/core$read_string__4177.class +0 -0
  652. data/lib/clojure/core$reduce__3319$fn__3322.class +0 -0
  653. data/lib/clojure/core$reduce__3319.class +0 -0
  654. data/lib/clojure/core$ref__3721.class +0 -0
  655. data/lib/clojure/core$ref_set__3762.class +0 -0
  656. data/lib/clojure/core$refer__4345.class +0 -0
  657. data/lib/clojure/core$refer_clojure__4969.class +0 -0
  658. data/lib/clojure/core$release_pending_sends__3694.class +0 -0
  659. data/lib/clojure/core$rem__3494.class +0 -0
  660. data/lib/clojure/core$remove__3855.class +0 -0
  661. data/lib/clojure/core$remove_method__3644.class +0 -0
  662. data/lib/clojure/core$remove_ns__4315.class +0 -0
  663. data/lib/clojure/core$remove_watch__3700.class +0 -0
  664. data/lib/clojure/core$remove_watcher__3709.class +0 -0
  665. data/lib/clojure/core$repeat__3912$fn__3914.class +0 -0
  666. data/lib/clojure/core$repeat__3912.class +0 -0
  667. data/lib/clojure/core$repeatedly__4701$fn__4703.class +0 -0
  668. data/lib/clojure/core$repeatedly__4701.class +0 -0
  669. data/lib/clojure/core$replace__4661$fn__4663.class +0 -0
  670. data/lib/clojure/core$replace__4661$fn__4667.class +0 -0
  671. data/lib/clojure/core$replace__4661.class +0 -0
  672. data/lib/clojure/core$replicate__3919.class +0 -0
  673. data/lib/clojure/core$require__5049.class +0 -0
  674. data/lib/clojure/core$reset_BANG___3741.class +0 -0
  675. data/lib/clojure/core$reset_meta_BANG___3753.class +0 -0
  676. data/lib/clojure/core$resolve__4398.class +0 -0
  677. data/lib/clojure/core$rest__3119.class +0 -0
  678. data/lib/clojure/core$resultset_seq__4911$fn__4913.class +0 -0
  679. data/lib/clojure/core$resultset_seq__4911$fn__4916.class +0 -0
  680. data/lib/clojure/core$resultset_seq__4911$row_values__4919$fn__4921.class +0 -0
  681. data/lib/clojure/core$resultset_seq__4911$row_values__4919.class +0 -0
  682. data/lib/clojure/core$resultset_seq__4911$thisfn__4925$fn__4926.class +0 -0
  683. data/lib/clojure/core$resultset_seq__4911$thisfn__4925.class +0 -0
  684. data/lib/clojure/core$resultset_seq__4911.class +0 -0
  685. data/lib/clojure/core$reverse__3326.class +0 -0
  686. data/lib/clojure/core$reversible_QMARK___5114.class +0 -0
  687. data/lib/clojure/core$root_directory__5007.class +0 -0
  688. data/lib/clojure/core$root_resource__5004.class +0 -0
  689. data/lib/clojure/core$rseq__3617.class +0 -0
  690. data/lib/clojure/core$rsubseq__4693.class +0 -0
  691. data/lib/clojure/core$second__3123.class +0 -0
  692. data/lib/clojure/core$select_keys__3602.class +0 -0
  693. data/lib/clojure/core$send__3688.class +0 -0
  694. data/lib/clojure/core$send_off__3691.class +0 -0
  695. data/lib/clojure/core$seq_QMARK___3137.class +0 -0
  696. data/lib/clojure/core$seq__3133.class +0 -0
  697. data/lib/clojure/core$seque__4808$drain__4818$fn__4819.class +0 -0
  698. data/lib/clojure/core$seque__4808$drain__4818.class +0 -0
  699. data/lib/clojure/core$seque__4808$fill__4811.class +0 -0
  700. data/lib/clojure/core$seque__4808.class +0 -0
  701. data/lib/clojure/core$sequence__3802.class +0 -0
  702. data/lib/clojure/core$sequential_QMARK___5105.class +0 -0
  703. data/lib/clojure/core$set_QMARK___5093.class +0 -0
  704. data/lib/clojure/core$set__4303.class +0 -0
  705. data/lib/clojure/core$set_validator_BANG___3744.class +0 -0
  706. data/lib/clojure/core$setup_reference__3681.class +0 -0
  707. data/lib/clojure/core$short__4083.class +0 -0
  708. data/lib/clojure/core$shutdown_agents__3718.class +0 -0
  709. data/lib/clojure/core$sigs__3145.class +0 -0
  710. data/lib/clojure/core$slurp__4619.class +0 -0
  711. data/lib/clojure/core$some__3810.class +0 -0
  712. data/lib/clojure/core$sort__3971.class +0 -0
  713. data/lib/clojure/core$sort_by__3975$fn__3978.class +0 -0
  714. data/lib/clojure/core$sort_by__3975.class +0 -0
  715. data/lib/clojure/core$sorted_QMARK___5108.class +0 -0
  716. data/lib/clojure/core$sorted_map__3181.class +0 -0
  717. data/lib/clojure/core$sorted_map_by__3187.class +0 -0
  718. data/lib/clojure/core$sorted_set__3184.class +0 -0
  719. data/lib/clojure/core$special_form_anchor__4578.class +0 -0
  720. data/lib/clojure/core$special_symbol_QMARK___4613.class +0 -0
  721. data/lib/clojure/core$split_at__3906.class +0 -0
  722. data/lib/clojure/core$split_with__3909.class +0 -0
  723. data/lib/clojure/core$spread__3240.class +0 -0
  724. data/lib/clojure/core$str__3211$fn__3215.class +0 -0
  725. data/lib/clojure/core$str__3211.class +0 -0
  726. data/lib/clojure/core$stream_QMARK___3799.class +0 -0
  727. data/lib/clojure/core$string_QMARK___3139.class +0 -0
  728. data/lib/clojure/core$struct__4291.class +0 -0
  729. data/lib/clojure/core$struct_map__4288.class +0 -0
  730. data/lib/clojure/core$subs__4622.class +0 -0
  731. data/lib/clojure/core$subseq__4685.class +0 -0
  732. data/lib/clojure/core$subvec__4180.class +0 -0
  733. data/lib/clojure/core$supers__4839.class +0 -0
  734. data/lib/clojure/core$swap_BANG___3732.class +0 -0
  735. data/lib/clojure/core$symbol_QMARK___3219.class +0 -0
  736. data/lib/clojure/core$symbol__3225.class +0 -0
  737. data/lib/clojure/core$sync__3768.class +0 -0
  738. data/lib/clojure/core$syntax_symbol_anchor__4581.class +0 -0
  739. data/lib/clojure/core$take__3858$fn__3860.class +0 -0
  740. data/lib/clojure/core$take__3858.class +0 -0
  741. data/lib/clojure/core$take_nth__4376$fn__4378.class +0 -0
  742. data/lib/clojure/core$take_nth__4376.class +0 -0
  743. data/lib/clojure/core$take_while__3865$fn__3867.class +0 -0
  744. data/lib/clojure/core$take_while__3865.class +0 -0
  745. data/lib/clojure/core$test__4531.class +0 -0
  746. data/lib/clojure/core$the_class__5590.class +0 -0
  747. data/lib/clojure/core$the_ns__4321.class +0 -0
  748. data/lib/clojure/core$throw_if__4989$boring_QMARK___4991.class +0 -0
  749. data/lib/clojure/core$throw_if__4989.class +0 -0
  750. data/lib/clojure/core$time__4199.class +0 -0
  751. data/lib/clojure/core$to_array_2d__4273.class +0 -0
  752. data/lib/clojure/core$to_array__3163.class +0 -0
  753. data/lib/clojure/core$trampoline__5124$fn__5127.class +0 -0
  754. data/lib/clojure/core$trampoline__5124.class +0 -0
  755. data/lib/clojure/core$tree_seq__4593$walk__4595$fn__4596.class +0 -0
  756. data/lib/clojure/core$tree_seq__4593$walk__4595.class +0 -0
  757. data/lib/clojure/core$tree_seq__4593.class +0 -0
  758. data/lib/clojure/core$true_QMARK___3205.class +0 -0
  759. data/lib/clojure/core$type__4046.class +0 -0
  760. data/lib/clojure/core$unchecked_add__3446.class +0 -0
  761. data/lib/clojure/core$unchecked_dec__3434.class +0 -0
  762. data/lib/clojure/core$unchecked_divide__3464.class +0 -0
  763. data/lib/clojure/core$unchecked_inc__3428.class +0 -0
  764. data/lib/clojure/core$unchecked_multiply__3458.class +0 -0
  765. data/lib/clojure/core$unchecked_negate__3440.class +0 -0
  766. data/lib/clojure/core$unchecked_remainder__3470.class +0 -0
  767. data/lib/clojure/core$unchecked_subtract__3452.class +0 -0
  768. data/lib/clojure/core$underive__4891$tf__4894$fn__4896.class +0 -0
  769. data/lib/clojure/core$underive__4891$tf__4894.class +0 -0
  770. data/lib/clojure/core$underive__4891.class +0 -0
  771. data/lib/clojure/core$update_in__5080.class +0 -0
  772. data/lib/clojure/core$update_proxy__5271.class +0 -0
  773. data/lib/clojure/core$use__5052.class +0 -0
  774. data/lib/clojure/core$val__3614.class +0 -0
  775. data/lib/clojure/core$vals__3608.class +0 -0
  776. data/lib/clojure/core$var_QMARK___4616.class +0 -0
  777. data/lib/clojure/core$var_get__4386.class +0 -0
  778. data/lib/clojure/core$var_set__4389.class +0 -0
  779. data/lib/clojure/core$vary_meta__3246.class +0 -0
  780. data/lib/clojure/core$vec__3170.class +0 -0
  781. data/lib/clojure/core$vector_QMARK___3143.class +0 -0
  782. data/lib/clojure/core$vector__3166.class +0 -0
  783. data/lib/clojure/core$when__3193.class +0 -0
  784. data/lib/clojure/core$when_first__4461.class +0 -0
  785. data/lib/clojure/core$when_let__3669.class +0 -0
  786. data/lib/clojure/core$when_not__3196.class +0 -0
  787. data/lib/clojure/core$while__5135.class +0 -0
  788. data/lib/clojure/core$with_in_str__4509.class +0 -0
  789. data/lib/clojure/core$with_local_vars__4392.class +0 -0
  790. data/lib/clojure/core$with_meta__3152.class +0 -0
  791. data/lib/clojure/core$with_open__4184.class +0 -0
  792. data/lib/clojure/core$with_out_str__4505.class +0 -0
  793. data/lib/clojure/core$with_precision__4675.class +0 -0
  794. data/lib/clojure/core$xml_seq__4610.class +0 -0
  795. data/lib/clojure/core$zero_QMARK___3488.class +0 -0
  796. data/lib/clojure/core$zipmap__3955.class +0 -0
  797. data/lib/clojure/core.clj +4121 -0
  798. data/lib/clojure/core__init.class +0 -0
  799. data/lib/clojure/core_print.clj +317 -0
  800. data/lib/clojure/core_print__init.class +0 -0
  801. data/lib/clojure/core_proxy.clj +394 -0
  802. data/lib/clojure/core_proxy__init.class +0 -0
  803. data/lib/clojure/genclass.clj +683 -0
  804. data/lib/clojure/genclass__init.class +0 -0
  805. data/lib/clojure/inspector$atom_QMARK___6181.class +0 -0
  806. data/lib/clojure/inspector$collection_tag__6184.class +0 -0
  807. data/lib/clojure/inspector$fn__6187.class +0 -0
  808. data/lib/clojure/inspector$fn__6190.class +0 -0
  809. data/lib/clojure/inspector$fn__6193.class +0 -0
  810. data/lib/clojure/inspector$fn__6196.class +0 -0
  811. data/lib/clojure/inspector$fn__6199.class +0 -0
  812. data/lib/clojure/inspector$fn__6202.class +0 -0
  813. data/lib/clojure/inspector$fn__6205.class +0 -0
  814. data/lib/clojure/inspector$fn__6208.class +0 -0
  815. data/lib/clojure/inspector$fn__6211.class +0 -0
  816. data/lib/clojure/inspector$fn__6278$fn__6280.class +0 -0
  817. data/lib/clojure/inspector$fn__6278$fn__6283.class +0 -0
  818. data/lib/clojure/inspector$fn__6278.class +0 -0
  819. data/lib/clojure/inspector$fn__6287$fn__6289.class +0 -0
  820. data/lib/clojure/inspector$fn__6287$fn__6292.class +0 -0
  821. data/lib/clojure/inspector$fn__6287.class +0 -0
  822. data/lib/clojure/inspector$fn__6296$fn__6299.class +0 -0
  823. data/lib/clojure/inspector$fn__6296$fn__6303.class +0 -0
  824. data/lib/clojure/inspector$fn__6296$fn__6306.class +0 -0
  825. data/lib/clojure/inspector$fn__6296.class +0 -0
  826. data/lib/clojure/inspector$fn__6324$fn__6326.class +0 -0
  827. data/lib/clojure/inspector$fn__6324$fn__6329.class +0 -0
  828. data/lib/clojure/inspector$fn__6324$fn__6332.class +0 -0
  829. data/lib/clojure/inspector$fn__6324.class +0 -0
  830. data/lib/clojure/inspector$inspect__6337.class +0 -0
  831. data/lib/clojure/inspector$inspect_table__6274.class +0 -0
  832. data/lib/clojure/inspector$inspect_tree__6270.class +0 -0
  833. data/lib/clojure/inspector$list_model__6310$fn__6313.class +0 -0
  834. data/lib/clojure/inspector$list_model__6310$fn__6316.class +0 -0
  835. data/lib/clojure/inspector$list_model__6310$fn__6319.class +0 -0
  836. data/lib/clojure/inspector$list_model__6310.class +0 -0
  837. data/lib/clojure/inspector$old_table_model__6242$fn__6244.class +0 -0
  838. data/lib/clojure/inspector$old_table_model__6242$fn__6247.class +0 -0
  839. data/lib/clojure/inspector$old_table_model__6242$fn__6250.class +0 -0
  840. data/lib/clojure/inspector$old_table_model__6242$fn__6253.class +0 -0
  841. data/lib/clojure/inspector$old_table_model__6242$fn__6256.class +0 -0
  842. data/lib/clojure/inspector$old_table_model__6242$fn__6259.class +0 -0
  843. data/lib/clojure/inspector$old_table_model__6242$fn__6262.class +0 -0
  844. data/lib/clojure/inspector$old_table_model__6242$fn__6265.class +0 -0
  845. data/lib/clojure/inspector$old_table_model__6242.class +0 -0
  846. data/lib/clojure/inspector$tree_model__6214$fn__6216.class +0 -0
  847. data/lib/clojure/inspector$tree_model__6214$fn__6219.class +0 -0
  848. data/lib/clojure/inspector$tree_model__6214$fn__6222.class +0 -0
  849. data/lib/clojure/inspector$tree_model__6214$fn__6225.class +0 -0
  850. data/lib/clojure/inspector$tree_model__6214$fn__6228.class +0 -0
  851. data/lib/clojure/inspector$tree_model__6214$fn__6231.class +0 -0
  852. data/lib/clojure/inspector$tree_model__6214$fn__6234.class +0 -0
  853. data/lib/clojure/inspector$tree_model__6214$fn__6237.class +0 -0
  854. data/lib/clojure/inspector$tree_model__6214.class +0 -0
  855. data/lib/clojure/inspector.clj +180 -0
  856. data/lib/clojure/inspector__init.class +0 -0
  857. data/lib/clojure/lang/AFn.class +0 -0
  858. data/lib/clojure/lang/AFunction.class +0 -0
  859. data/lib/clojure/lang/AMapEntry.class +0 -0
  860. data/lib/clojure/lang/APersistentMap$1.class +0 -0
  861. data/lib/clojure/lang/APersistentMap$2$1.class +0 -0
  862. data/lib/clojure/lang/APersistentMap$2.class +0 -0
  863. data/lib/clojure/lang/APersistentMap$3$1.class +0 -0
  864. data/lib/clojure/lang/APersistentMap$3.class +0 -0
  865. data/lib/clojure/lang/APersistentMap$KeySeq.class +0 -0
  866. data/lib/clojure/lang/APersistentMap$ValSeq.class +0 -0
  867. data/lib/clojure/lang/APersistentMap.class +0 -0
  868. data/lib/clojure/lang/APersistentSet.class +0 -0
  869. data/lib/clojure/lang/APersistentVector$1.class +0 -0
  870. data/lib/clojure/lang/APersistentVector$2.class +0 -0
  871. data/lib/clojure/lang/APersistentVector$RSeq.class +0 -0
  872. data/lib/clojure/lang/APersistentVector$Seq.class +0 -0
  873. data/lib/clojure/lang/APersistentVector$Src.class +0 -0
  874. data/lib/clojure/lang/APersistentVector$SubVector.class +0 -0
  875. data/lib/clojure/lang/APersistentVector.class +0 -0
  876. data/lib/clojure/lang/ARef.class +0 -0
  877. data/lib/clojure/lang/AReference.class +0 -0
  878. data/lib/clojure/lang/ASeq$Src.class +0 -0
  879. data/lib/clojure/lang/ASeq.class +0 -0
  880. data/lib/clojure/lang/Agent$Action.class +0 -0
  881. data/lib/clojure/lang/Agent.class +0 -0
  882. data/lib/clojure/lang/ArraySeq$ArraySeq_double.class +0 -0
  883. data/lib/clojure/lang/ArraySeq$ArraySeq_float.class +0 -0
  884. data/lib/clojure/lang/ArraySeq$ArraySeq_int.class +0 -0
  885. data/lib/clojure/lang/ArraySeq$ArraySeq_long.class +0 -0
  886. data/lib/clojure/lang/ArraySeq.class +0 -0
  887. data/lib/clojure/lang/ArrayStream$ArrayStream_boolean.class +0 -0
  888. data/lib/clojure/lang/ArrayStream$ArrayStream_byte.class +0 -0
  889. data/lib/clojure/lang/ArrayStream$ArrayStream_char.class +0 -0
  890. data/lib/clojure/lang/ArrayStream$ArrayStream_double.class +0 -0
  891. data/lib/clojure/lang/ArrayStream$ArrayStream_float.class +0 -0
  892. data/lib/clojure/lang/ArrayStream$ArrayStream_int.class +0 -0
  893. data/lib/clojure/lang/ArrayStream$ArrayStream_long.class +0 -0
  894. data/lib/clojure/lang/ArrayStream$ArrayStream_short.class +0 -0
  895. data/lib/clojure/lang/ArrayStream.class +0 -0
  896. data/lib/clojure/lang/Associative.class +0 -0
  897. data/lib/clojure/lang/Atom.class +0 -0
  898. data/lib/clojure/lang/Binding.class +0 -0
  899. data/lib/clojure/lang/Box.class +0 -0
  900. data/lib/clojure/lang/Compile.class +0 -0
  901. data/lib/clojure/lang/Compiler$1.class +0 -0
  902. data/lib/clojure/lang/Compiler$AssignExpr$Parser.class +0 -0
  903. data/lib/clojure/lang/Compiler$AssignExpr.class +0 -0
  904. data/lib/clojure/lang/Compiler$AssignableExpr.class +0 -0
  905. data/lib/clojure/lang/Compiler$BindingInit.class +0 -0
  906. data/lib/clojure/lang/Compiler$BodyExpr$Parser.class +0 -0
  907. data/lib/clojure/lang/Compiler$BodyExpr.class +0 -0
  908. data/lib/clojure/lang/Compiler$BooleanExpr.class +0 -0
  909. data/lib/clojure/lang/Compiler$C.class +0 -0
  910. data/lib/clojure/lang/Compiler$CompilerException.class +0 -0
  911. data/lib/clojure/lang/Compiler$ConstantExpr$Parser.class +0 -0
  912. data/lib/clojure/lang/Compiler$ConstantExpr.class +0 -0
  913. data/lib/clojure/lang/Compiler$DefExpr$Parser.class +0 -0
  914. data/lib/clojure/lang/Compiler$DefExpr.class +0 -0
  915. data/lib/clojure/lang/Compiler$EmptyExpr.class +0 -0
  916. data/lib/clojure/lang/Compiler$Expr.class +0 -0
  917. data/lib/clojure/lang/Compiler$FieldExpr.class +0 -0
  918. data/lib/clojure/lang/Compiler$FnExpr.class +0 -0
  919. data/lib/clojure/lang/Compiler$FnLoaderThunk.class +0 -0
  920. data/lib/clojure/lang/Compiler$FnMethod.class +0 -0
  921. data/lib/clojure/lang/Compiler$HostExpr$Parser.class +0 -0
  922. data/lib/clojure/lang/Compiler$HostExpr.class +0 -0
  923. data/lib/clojure/lang/Compiler$IParser.class +0 -0
  924. data/lib/clojure/lang/Compiler$IfExpr$Parser.class +0 -0
  925. data/lib/clojure/lang/Compiler$IfExpr.class +0 -0
  926. data/lib/clojure/lang/Compiler$InstanceFieldExpr.class +0 -0
  927. data/lib/clojure/lang/Compiler$InstanceMethodExpr.class +0 -0
  928. data/lib/clojure/lang/Compiler$InvokeExpr.class +0 -0
  929. data/lib/clojure/lang/Compiler$KeywordExpr.class +0 -0
  930. data/lib/clojure/lang/Compiler$LetExpr$Parser.class +0 -0
  931. data/lib/clojure/lang/Compiler$LetExpr.class +0 -0
  932. data/lib/clojure/lang/Compiler$LetFnExpr$Parser.class +0 -0
  933. data/lib/clojure/lang/Compiler$LetFnExpr.class +0 -0
  934. data/lib/clojure/lang/Compiler$ListExpr.class +0 -0
  935. data/lib/clojure/lang/Compiler$LiteralExpr.class +0 -0
  936. data/lib/clojure/lang/Compiler$LocalBinding.class +0 -0
  937. data/lib/clojure/lang/Compiler$LocalBindingExpr.class +0 -0
  938. data/lib/clojure/lang/Compiler$MapExpr.class +0 -0
  939. data/lib/clojure/lang/Compiler$MaybePrimitiveExpr.class +0 -0
  940. data/lib/clojure/lang/Compiler$MetaExpr.class +0 -0
  941. data/lib/clojure/lang/Compiler$MethodExpr.class +0 -0
  942. data/lib/clojure/lang/Compiler$MonitorEnterExpr$Parser.class +0 -0
  943. data/lib/clojure/lang/Compiler$MonitorEnterExpr.class +0 -0
  944. data/lib/clojure/lang/Compiler$MonitorExitExpr$Parser.class +0 -0
  945. data/lib/clojure/lang/Compiler$MonitorExitExpr.class +0 -0
  946. data/lib/clojure/lang/Compiler$NewExpr$Parser.class +0 -0
  947. data/lib/clojure/lang/Compiler$NewExpr.class +0 -0
  948. data/lib/clojure/lang/Compiler$NilExpr.class +0 -0
  949. data/lib/clojure/lang/Compiler$PSTATE.class +0 -0
  950. data/lib/clojure/lang/Compiler$RecurExpr$Parser.class +0 -0
  951. data/lib/clojure/lang/Compiler$RecurExpr.class +0 -0
  952. data/lib/clojure/lang/Compiler$SetExpr.class +0 -0
  953. data/lib/clojure/lang/Compiler$SourceDebugExtensionAttribute.class +0 -0
  954. data/lib/clojure/lang/Compiler$StaticFieldExpr.class +0 -0
  955. data/lib/clojure/lang/Compiler$StaticMethodExpr.class +0 -0
  956. data/lib/clojure/lang/Compiler$StringExpr.class +0 -0
  957. data/lib/clojure/lang/Compiler$TheVarExpr$Parser.class +0 -0
  958. data/lib/clojure/lang/Compiler$TheVarExpr.class +0 -0
  959. data/lib/clojure/lang/Compiler$ThrowExpr$Parser.class +0 -0
  960. data/lib/clojure/lang/Compiler$ThrowExpr.class +0 -0
  961. data/lib/clojure/lang/Compiler$TryExpr$CatchClause.class +0 -0
  962. data/lib/clojure/lang/Compiler$TryExpr$Parser.class +0 -0
  963. data/lib/clojure/lang/Compiler$TryExpr.class +0 -0
  964. data/lib/clojure/lang/Compiler$UnresolvedVarExpr.class +0 -0
  965. data/lib/clojure/lang/Compiler$UntypedExpr.class +0 -0
  966. data/lib/clojure/lang/Compiler$VarExpr.class +0 -0
  967. data/lib/clojure/lang/Compiler$VectorExpr.class +0 -0
  968. data/lib/clojure/lang/Compiler.class +0 -0
  969. data/lib/clojure/lang/Cons.class +0 -0
  970. data/lib/clojure/lang/Counted.class +0 -0
  971. data/lib/clojure/lang/Delay.class +0 -0
  972. data/lib/clojure/lang/DynamicClassLoader.class +0 -0
  973. data/lib/clojure/lang/EnumerationSeq$State.class +0 -0
  974. data/lib/clojure/lang/EnumerationSeq.class +0 -0
  975. data/lib/clojure/lang/Fn.class +0 -0
  976. data/lib/clojure/lang/IDeref.class +0 -0
  977. data/lib/clojure/lang/IFn.class +0 -0
  978. data/lib/clojure/lang/IMapEntry.class +0 -0
  979. data/lib/clojure/lang/IMeta.class +0 -0
  980. data/lib/clojure/lang/IObj.class +0 -0
  981. data/lib/clojure/lang/IPersistentCollection.class +0 -0
  982. data/lib/clojure/lang/IPersistentList.class +0 -0
  983. data/lib/clojure/lang/IPersistentMap.class +0 -0
  984. data/lib/clojure/lang/IPersistentSet.class +0 -0
  985. data/lib/clojure/lang/IPersistentStack.class +0 -0
  986. data/lib/clojure/lang/IPersistentVector.class +0 -0
  987. data/lib/clojure/lang/IProxy.class +0 -0
  988. data/lib/clojure/lang/IReduce.class +0 -0
  989. data/lib/clojure/lang/IRef.class +0 -0
  990. data/lib/clojure/lang/IReference.class +0 -0
  991. data/lib/clojure/lang/ISeq.class +0 -0
  992. data/lib/clojure/lang/IndexedSeq.class +0 -0
  993. data/lib/clojure/lang/IteratorSeq$State.class +0 -0
  994. data/lib/clojure/lang/IteratorSeq.class +0 -0
  995. data/lib/clojure/lang/IteratorStream.class +0 -0
  996. data/lib/clojure/lang/Keyword.class +0 -0
  997. data/lib/clojure/lang/LazilyPersistentVector.class +0 -0
  998. data/lib/clojure/lang/LazySeq.class +0 -0
  999. data/lib/clojure/lang/LineNumberingPushbackReader.class +0 -0
  1000. data/lib/clojure/lang/LispReader$ArgReader.class +0 -0
  1001. data/lib/clojure/lang/LispReader$CharacterReader.class +0 -0
  1002. data/lib/clojure/lang/LispReader$CommentReader.class +0 -0
  1003. data/lib/clojure/lang/LispReader$CtorReader.class +0 -0
  1004. data/lib/clojure/lang/LispReader$DiscardReader.class +0 -0
  1005. data/lib/clojure/lang/LispReader$DispatchReader.class +0 -0
  1006. data/lib/clojure/lang/LispReader$EvalReader.class +0 -0
  1007. data/lib/clojure/lang/LispReader$FnReader.class +0 -0
  1008. data/lib/clojure/lang/LispReader$ListReader.class +0 -0
  1009. data/lib/clojure/lang/LispReader$MapReader.class +0 -0
  1010. data/lib/clojure/lang/LispReader$MetaReader.class +0 -0
  1011. data/lib/clojure/lang/LispReader$ReaderException.class +0 -0
  1012. data/lib/clojure/lang/LispReader$RegexReader.class +0 -0
  1013. data/lib/clojure/lang/LispReader$SetReader.class +0 -0
  1014. data/lib/clojure/lang/LispReader$StringReader.class +0 -0
  1015. data/lib/clojure/lang/LispReader$SyntaxQuoteReader.class +0 -0
  1016. data/lib/clojure/lang/LispReader$UnmatchedDelimiterReader.class +0 -0
  1017. data/lib/clojure/lang/LispReader$UnquoteReader.class +0 -0
  1018. data/lib/clojure/lang/LispReader$UnreadableReader.class +0 -0
  1019. data/lib/clojure/lang/LispReader$VarReader.class +0 -0
  1020. data/lib/clojure/lang/LispReader$VectorReader.class +0 -0
  1021. data/lib/clojure/lang/LispReader$WrappingReader.class +0 -0
  1022. data/lib/clojure/lang/LispReader.class +0 -0
  1023. data/lib/clojure/lang/LockingTransaction$AbortException.class +0 -0
  1024. data/lib/clojure/lang/LockingTransaction$CFn.class +0 -0
  1025. data/lib/clojure/lang/LockingTransaction$Info.class +0 -0
  1026. data/lib/clojure/lang/LockingTransaction$Notify.class +0 -0
  1027. data/lib/clojure/lang/LockingTransaction$RetryEx.class +0 -0
  1028. data/lib/clojure/lang/LockingTransaction.class +0 -0
  1029. data/lib/clojure/lang/MapEntry.class +0 -0
  1030. data/lib/clojure/lang/MultiFn.class +0 -0
  1031. data/lib/clojure/lang/Named.class +0 -0
  1032. data/lib/clojure/lang/Namespace.class +0 -0
  1033. data/lib/clojure/lang/Numbers$BigDecimalOps.class +0 -0
  1034. data/lib/clojure/lang/Numbers$BigIntegerBitOps.class +0 -0
  1035. data/lib/clojure/lang/Numbers$BigIntegerOps.class +0 -0
  1036. data/lib/clojure/lang/Numbers$BitOps.class +0 -0
  1037. data/lib/clojure/lang/Numbers$DoubleOps.class +0 -0
  1038. data/lib/clojure/lang/Numbers$FloatOps.class +0 -0
  1039. data/lib/clojure/lang/Numbers$IntegerBitOps.class +0 -0
  1040. data/lib/clojure/lang/Numbers$IntegerOps.class +0 -0
  1041. data/lib/clojure/lang/Numbers$LongBitOps.class +0 -0
  1042. data/lib/clojure/lang/Numbers$LongOps.class +0 -0
  1043. data/lib/clojure/lang/Numbers$Ops.class +0 -0
  1044. data/lib/clojure/lang/Numbers$RatioOps.class +0 -0
  1045. data/lib/clojure/lang/Numbers.class +0 -0
  1046. data/lib/clojure/lang/Obj.class +0 -0
  1047. data/lib/clojure/lang/PersistentArrayMap$Iter.class +0 -0
  1048. data/lib/clojure/lang/PersistentArrayMap$Seq.class +0 -0
  1049. data/lib/clojure/lang/PersistentArrayMap.class +0 -0
  1050. data/lib/clojure/lang/PersistentHashMap$BitmapIndexedNode$Seq.class +0 -0
  1051. data/lib/clojure/lang/PersistentHashMap$BitmapIndexedNode.class +0 -0
  1052. data/lib/clojure/lang/PersistentHashMap$EmptyNode.class +0 -0
  1053. data/lib/clojure/lang/PersistentHashMap$FullNode$Seq.class +0 -0
  1054. data/lib/clojure/lang/PersistentHashMap$FullNode.class +0 -0
  1055. data/lib/clojure/lang/PersistentHashMap$HashCollisionNode.class +0 -0
  1056. data/lib/clojure/lang/PersistentHashMap$INode.class +0 -0
  1057. data/lib/clojure/lang/PersistentHashMap$LeafNode.class +0 -0
  1058. data/lib/clojure/lang/PersistentHashMap.class +0 -0
  1059. data/lib/clojure/lang/PersistentHashSet.class +0 -0
  1060. data/lib/clojure/lang/PersistentList$1.class +0 -0
  1061. data/lib/clojure/lang/PersistentList$EmptyList$1.class +0 -0
  1062. data/lib/clojure/lang/PersistentList$EmptyList.class +0 -0
  1063. data/lib/clojure/lang/PersistentList.class +0 -0
  1064. data/lib/clojure/lang/PersistentQueue$Seq.class +0 -0
  1065. data/lib/clojure/lang/PersistentQueue.class +0 -0
  1066. data/lib/clojure/lang/PersistentStructMap$1.class +0 -0
  1067. data/lib/clojure/lang/PersistentStructMap$Def.class +0 -0
  1068. data/lib/clojure/lang/PersistentStructMap$Seq.class +0 -0
  1069. data/lib/clojure/lang/PersistentStructMap.class +0 -0
  1070. data/lib/clojure/lang/PersistentTreeMap$Black.class +0 -0
  1071. data/lib/clojure/lang/PersistentTreeMap$BlackBranch.class +0 -0
  1072. data/lib/clojure/lang/PersistentTreeMap$BlackBranchVal.class +0 -0
  1073. data/lib/clojure/lang/PersistentTreeMap$BlackVal.class +0 -0
  1074. data/lib/clojure/lang/PersistentTreeMap$KeyIterator.class +0 -0
  1075. data/lib/clojure/lang/PersistentTreeMap$Node.class +0 -0
  1076. data/lib/clojure/lang/PersistentTreeMap$NodeIterator.class +0 -0
  1077. data/lib/clojure/lang/PersistentTreeMap$Red.class +0 -0
  1078. data/lib/clojure/lang/PersistentTreeMap$RedBranch.class +0 -0
  1079. data/lib/clojure/lang/PersistentTreeMap$RedBranchVal.class +0 -0
  1080. data/lib/clojure/lang/PersistentTreeMap$RedVal.class +0 -0
  1081. data/lib/clojure/lang/PersistentTreeMap$Seq.class +0 -0
  1082. data/lib/clojure/lang/PersistentTreeMap$ValIterator.class +0 -0
  1083. data/lib/clojure/lang/PersistentTreeMap.class +0 -0
  1084. data/lib/clojure/lang/PersistentTreeSet.class +0 -0
  1085. data/lib/clojure/lang/PersistentVector.class +0 -0
  1086. data/lib/clojure/lang/ProxyHandler.class +0 -0
  1087. data/lib/clojure/lang/RT$1.class +0 -0
  1088. data/lib/clojure/lang/RT$2.class +0 -0
  1089. data/lib/clojure/lang/RT$3.class +0 -0
  1090. data/lib/clojure/lang/RT$4.class +0 -0
  1091. data/lib/clojure/lang/RT$5.class +0 -0
  1092. data/lib/clojure/lang/RT$6.class +0 -0
  1093. data/lib/clojure/lang/RT.class +0 -0
  1094. data/lib/clojure/lang/Range$Src.class +0 -0
  1095. data/lib/clojure/lang/Range.class +0 -0
  1096. data/lib/clojure/lang/Ratio.class +0 -0
  1097. data/lib/clojure/lang/Ref$TVal.class +0 -0
  1098. data/lib/clojure/lang/Ref.class +0 -0
  1099. data/lib/clojure/lang/Reflector.class +0 -0
  1100. data/lib/clojure/lang/Repl.class +0 -0
  1101. data/lib/clojure/lang/RestFn.class +0 -0
  1102. data/lib/clojure/lang/Reversible.class +0 -0
  1103. data/lib/clojure/lang/Script.class +0 -0
  1104. data/lib/clojure/lang/SeqEnumeration.class +0 -0
  1105. data/lib/clojure/lang/SeqIterator.class +0 -0
  1106. data/lib/clojure/lang/Seqable.class +0 -0
  1107. data/lib/clojure/lang/Sequential.class +0 -0
  1108. data/lib/clojure/lang/Settable.class +0 -0
  1109. data/lib/clojure/lang/Sorted.class +0 -0
  1110. data/lib/clojure/lang/Stream$1.class +0 -0
  1111. data/lib/clojure/lang/Stream$2.class +0 -0
  1112. data/lib/clojure/lang/Stream.class +0 -0
  1113. data/lib/clojure/lang/Streamable.class +0 -0
  1114. data/lib/clojure/lang/StringSeq.class +0 -0
  1115. data/lib/clojure/lang/Symbol.class +0 -0
  1116. data/lib/clojure/lang/TransactionalHashMap$1.class +0 -0
  1117. data/lib/clojure/lang/TransactionalHashMap.class +0 -0
  1118. data/lib/clojure/lang/Util.class +0 -0
  1119. data/lib/clojure/lang/Var$1.class +0 -0
  1120. data/lib/clojure/lang/Var$2.class +0 -0
  1121. data/lib/clojure/lang/Var$Frame.class +0 -0
  1122. data/lib/clojure/lang/Var.class +0 -0
  1123. data/lib/clojure/lang/XMLHandler.class +0 -0
  1124. data/lib/clojure/main$eval_opt__5839.class +0 -0
  1125. data/lib/clojure/main$help_opt__5871.class +0 -0
  1126. data/lib/clojure/main$init_dispatch__5843.class +0 -0
  1127. data/lib/clojure/main$init_opt__5836.class +0 -0
  1128. data/lib/clojure/main$initialize__5846.class +0 -0
  1129. data/lib/clojure/main$legacy_repl__5878.class +0 -0
  1130. data/lib/clojure/main$legacy_script__5883.class +0 -0
  1131. data/lib/clojure/main$load_script__5833.class +0 -0
  1132. data/lib/clojure/main$main__5888.class +0 -0
  1133. data/lib/clojure/main$main_dispatch__5874.class +0 -0
  1134. data/lib/clojure/main$null_opt__5868.class +0 -0
  1135. data/lib/clojure/main$repl__5813$fn__5816.class +0 -0
  1136. data/lib/clojure/main$repl__5813$fn__5819.class +0 -0
  1137. data/lib/clojure/main$repl__5813$fn__5822.class +0 -0
  1138. data/lib/clojure/main$repl__5813$fn__5829.class +0 -0
  1139. data/lib/clojure/main$repl__5813$read_eval_print__5825.class +0 -0
  1140. data/lib/clojure/main$repl__5813.class +0 -0
  1141. data/lib/clojure/main$repl_caught__5810.class +0 -0
  1142. data/lib/clojure/main$repl_exception__5807.class +0 -0
  1143. data/lib/clojure/main$repl_opt__5853$fn__5856.class +0 -0
  1144. data/lib/clojure/main$repl_opt__5853$fn__5859.class +0 -0
  1145. data/lib/clojure/main$repl_opt__5853.class +0 -0
  1146. data/lib/clojure/main$repl_prompt__5789.class +0 -0
  1147. data/lib/clojure/main$repl_read__5799.class +0 -0
  1148. data/lib/clojure/main$root_cause__5803.class +0 -0
  1149. data/lib/clojure/main$script_opt__5864.class +0 -0
  1150. data/lib/clojure/main$skip_if_eol__5792.class +0 -0
  1151. data/lib/clojure/main$skip_whitespace__5795.class +0 -0
  1152. data/lib/clojure/main$with_bindings__5786.class +0 -0
  1153. data/lib/clojure/main.class +0 -0
  1154. data/lib/clojure/main.clj +337 -0
  1155. data/lib/clojure/main__init.class +0 -0
  1156. data/lib/clojure/parallel.clj +248 -0
  1157. data/lib/clojure/proxy/clojure/lang/APersistentMap.class +0 -0
  1158. data/lib/clojure/proxy/java/lang/Object$ContentHandler.class +0 -0
  1159. data/lib/clojure/proxy/java/lang/Object$Future$IDeref.class +0 -0
  1160. data/lib/clojure/proxy/java/lang/Object$TableModel.class +0 -0
  1161. data/lib/clojure/proxy/java/lang/Object$TreeModel.class +0 -0
  1162. data/lib/clojure/proxy/javax/swing/table/AbstractTableModel.class +0 -0
  1163. data/lib/clojure/set$bubble_max_key__5896$fn__5898.class +0 -0
  1164. data/lib/clojure/set$bubble_max_key__5896.class +0 -0
  1165. data/lib/clojure/set$difference__5920$fn__5923.class +0 -0
  1166. data/lib/clojure/set$difference__5920.class +0 -0
  1167. data/lib/clojure/set$index__5956$fn__5958.class +0 -0
  1168. data/lib/clojure/set$index__5956.class +0 -0
  1169. data/lib/clojure/set$intersection__5909$fn__5912.class +0 -0
  1170. data/lib/clojure/set$intersection__5909$fn__5916.class +0 -0
  1171. data/lib/clojure/set$intersection__5909.class +0 -0
  1172. data/lib/clojure/set$join__5974$fn__5977$fn__5979.class +0 -0
  1173. data/lib/clojure/set$join__5974$fn__5977.class +0 -0
  1174. data/lib/clojure/set$join__5974$fn__5985$fn__5987.class +0 -0
  1175. data/lib/clojure/set$join__5974$fn__5985.class +0 -0
  1176. data/lib/clojure/set$join__5974.class +0 -0
  1177. data/lib/clojure/set$map_invert__5962$fn__5965.class +0 -0
  1178. data/lib/clojure/set$map_invert__5962.class +0 -0
  1179. data/lib/clojure/set$project__5935$fn__5937.class +0 -0
  1180. data/lib/clojure/set$project__5935.class +0 -0
  1181. data/lib/clojure/set$rename__5950$fn__5952.class +0 -0
  1182. data/lib/clojure/set$rename__5950.class +0 -0
  1183. data/lib/clojure/set$rename_keys__5941$fn__5944.class +0 -0
  1184. data/lib/clojure/set$rename_keys__5941.class +0 -0
  1185. data/lib/clojure/set$select__5928$fn__5930.class +0 -0
  1186. data/lib/clojure/set$select__5928.class +0 -0
  1187. data/lib/clojure/set$union__5902.class +0 -0
  1188. data/lib/clojure/set.clj +148 -0
  1189. data/lib/clojure/set__init.class +0 -0
  1190. data/lib/clojure/version.properties +5 -0
  1191. data/lib/clojure/xml$emit__6057.class +0 -0
  1192. data/lib/clojure/xml$emit_element__6052.class +0 -0
  1193. data/lib/clojure/xml$fn__5994$fn__6007.class +0 -0
  1194. data/lib/clojure/xml$fn__5994$fn__6010.class +0 -0
  1195. data/lib/clojure/xml$fn__5994$fn__6013.class +0 -0
  1196. data/lib/clojure/xml$fn__5994$fn__6016.class +0 -0
  1197. data/lib/clojure/xml$fn__5994$fn__6019.class +0 -0
  1198. data/lib/clojure/xml$fn__5994$fn__6022.class +0 -0
  1199. data/lib/clojure/xml$fn__5994$fn__6025.class +0 -0
  1200. data/lib/clojure/xml$fn__5994$fn__6028$attrs__6030.class +0 -0
  1201. data/lib/clojure/xml$fn__5994$fn__6028.class +0 -0
  1202. data/lib/clojure/xml$fn__5994$fn__6034.class +0 -0
  1203. data/lib/clojure/xml$fn__5994$fn__6037.class +0 -0
  1204. data/lib/clojure/xml$fn__5994$fn__6040.class +0 -0
  1205. data/lib/clojure/xml$fn__5994$push_chars__6000$fn__6002.class +0 -0
  1206. data/lib/clojure/xml$fn__5994$push_chars__6000.class +0 -0
  1207. data/lib/clojure/xml$fn__5994$push_content__5996.class +0 -0
  1208. data/lib/clojure/xml$fn__5994.class +0 -0
  1209. data/lib/clojure/xml$parse__6048.class +0 -0
  1210. data/lib/clojure/xml$startparse_sax__6045.class +0 -0
  1211. data/lib/clojure/xml.clj +115 -0
  1212. data/lib/clojure/xml__init.class +0 -0
  1213. data/lib/clojure/zip$append_child__6155.class +0 -0
  1214. data/lib/clojure/zip$branch_QMARK___6085.class +0 -0
  1215. data/lib/clojure/zip$children__6088.class +0 -0
  1216. data/lib/clojure/zip$down__6103.class +0 -0
  1217. data/lib/clojure/zip$edit__6149.class +0 -0
  1218. data/lib/clojure/zip$end_QMARK___6171.class +0 -0
  1219. data/lib/clojure/zip$insert_child__6152.class +0 -0
  1220. data/lib/clojure/zip$insert_left__6137.class +0 -0
  1221. data/lib/clojure/zip$insert_right__6141.class +0 -0
  1222. data/lib/clojure/zip$left__6127.class +0 -0
  1223. data/lib/clojure/zip$leftmost__6132.class +0 -0
  1224. data/lib/clojure/zip$lefts__6097.class +0 -0
  1225. data/lib/clojure/zip$make_node__6091.class +0 -0
  1226. data/lib/clojure/zip$next__6158.class +0 -0
  1227. data/lib/clojure/zip$node__6082.class +0 -0
  1228. data/lib/clojure/zip$path__6094.class +0 -0
  1229. data/lib/clojure/zip$prev__6165.class +0 -0
  1230. data/lib/clojure/zip$remove__6174.class +0 -0
  1231. data/lib/clojure/zip$replace__6145.class +0 -0
  1232. data/lib/clojure/zip$right__6116.class +0 -0
  1233. data/lib/clojure/zip$rightmost__6122.class +0 -0
  1234. data/lib/clojure/zip$rights__6100.class +0 -0
  1235. data/lib/clojure/zip$root__6113.class +0 -0
  1236. data/lib/clojure/zip$seq_zip__6063$fn__6065.class +0 -0
  1237. data/lib/clojure/zip$seq_zip__6063.class +0 -0
  1238. data/lib/clojure/zip$up__6108.class +0 -0
  1239. data/lib/clojure/zip$vector_zip__6069$fn__6071.class +0 -0
  1240. data/lib/clojure/zip$vector_zip__6069.class +0 -0
  1241. data/lib/clojure/zip$xml_zip__6075$fn__6077.class +0 -0
  1242. data/lib/clojure/zip$xml_zip__6075.class +0 -0
  1243. data/lib/clojure/zip$zipper__6060.class +0 -0
  1244. data/lib/clojure/zip.clj +278 -0
  1245. data/lib/clojure/zip__init.class +0 -0
  1246. data/src/clj/clojure/core.clj +4121 -0
  1247. data/src/clj/clojure/core_print.clj +317 -0
  1248. data/src/clj/clojure/core_proxy.clj +394 -0
  1249. data/src/clj/clojure/genclass.clj +683 -0
  1250. data/src/clj/clojure/inspector.clj +180 -0
  1251. data/src/clj/clojure/main.clj +337 -0
  1252. data/src/clj/clojure/parallel.clj +248 -0
  1253. data/src/clj/clojure/set.clj +148 -0
  1254. data/src/clj/clojure/version.properties +5 -0
  1255. data/src/clj/clojure/xml.clj +115 -0
  1256. data/src/clj/clojure/zip.clj +278 -0
  1257. data/src/jvm/clojure/asm/AnnotationVisitor.java +97 -0
  1258. data/src/jvm/clojure/asm/AnnotationWriter.java +357 -0
  1259. data/src/jvm/clojure/asm/Attribute.java +253 -0
  1260. data/src/jvm/clojure/asm/ByteVector.java +318 -0
  1261. data/src/jvm/clojure/asm/ClassAdapter.java +115 -0
  1262. data/src/jvm/clojure/asm/ClassReader.java +2224 -0
  1263. data/src/jvm/clojure/asm/ClassVisitor.java +196 -0
  1264. data/src/jvm/clojure/asm/ClassWriter.java +1415 -0
  1265. data/src/jvm/clojure/asm/Edge.java +75 -0
  1266. data/src/jvm/clojure/asm/FieldVisitor.java +64 -0
  1267. data/src/jvm/clojure/asm/FieldWriter.java +290 -0
  1268. data/src/jvm/clojure/asm/Frame.java +1506 -0
  1269. data/src/jvm/clojure/asm/Handler.java +70 -0
  1270. data/src/jvm/clojure/asm/Item.java +258 -0
  1271. data/src/jvm/clojure/asm/Label.java +437 -0
  1272. data/src/jvm/clojure/asm/MethodAdapter.java +186 -0
  1273. data/src/jvm/clojure/asm/MethodVisitor.java +396 -0
  1274. data/src/jvm/clojure/asm/MethodWriter.java +3029 -0
  1275. data/src/jvm/clojure/asm/Opcodes.java +341 -0
  1276. data/src/jvm/clojure/asm/Type.java +872 -0
  1277. data/src/jvm/clojure/asm/commons/AdviceAdapter.java +681 -0
  1278. data/src/jvm/clojure/asm/commons/AnalyzerAdapter.java +938 -0
  1279. data/src/jvm/clojure/asm/commons/CodeSizeEvaluator.java +234 -0
  1280. data/src/jvm/clojure/asm/commons/EmptyVisitor.java +221 -0
  1281. data/src/jvm/clojure/asm/commons/GeneratorAdapter.java +1533 -0
  1282. data/src/jvm/clojure/asm/commons/LocalVariablesSorter.java +330 -0
  1283. data/src/jvm/clojure/asm/commons/Method.java +267 -0
  1284. data/src/jvm/clojure/asm/commons/SerialVersionUIDAdder.java +508 -0
  1285. data/src/jvm/clojure/asm/commons/StaticInitMerger.java +102 -0
  1286. data/src/jvm/clojure/asm/commons/TableSwitchGenerator.java +55 -0
  1287. data/src/jvm/clojure/asm/commons/package.html +48 -0
  1288. data/src/jvm/clojure/asm/package.html +87 -0
  1289. data/src/jvm/clojure/lang/AFn.java +452 -0
  1290. data/src/jvm/clojure/lang/AFunction.java +47 -0
  1291. data/src/jvm/clojure/lang/AMapEntry.java +149 -0
  1292. data/src/jvm/clojure/lang/APersistentMap.java +382 -0
  1293. data/src/jvm/clojure/lang/APersistentSet.java +159 -0
  1294. data/src/jvm/clojure/lang/APersistentVector.java +579 -0
  1295. data/src/jvm/clojure/lang/ARef.java +107 -0
  1296. data/src/jvm/clojure/lang/AReference.java +40 -0
  1297. data/src/jvm/clojure/lang/ASeq.java +282 -0
  1298. data/src/jvm/clojure/lang/Agent.java +194 -0
  1299. data/src/jvm/clojure/lang/ArraySeq.java +316 -0
  1300. data/src/jvm/clojure/lang/ArrayStream.java +184 -0
  1301. data/src/jvm/clojure/lang/Associative.java +22 -0
  1302. data/src/jvm/clojure/lang/Atom.java +104 -0
  1303. data/src/jvm/clojure/lang/Binding.java +26 -0
  1304. data/src/jvm/clojure/lang/Box.java +22 -0
  1305. data/src/jvm/clojure/lang/Compile.java +73 -0
  1306. data/src/jvm/clojure/lang/Compiler.java +5017 -0
  1307. data/src/jvm/clojure/lang/Cons.java +53 -0
  1308. data/src/jvm/clojure/lang/Counted.java +18 -0
  1309. data/src/jvm/clojure/lang/Delay.java +38 -0
  1310. data/src/jvm/clojure/lang/DynamicClassLoader.java +71 -0
  1311. data/src/jvm/clojure/lang/EnumerationSeq.java +71 -0
  1312. data/src/jvm/clojure/lang/Fn.java +16 -0
  1313. data/src/jvm/clojure/lang/IDeref.java +17 -0
  1314. data/src/jvm/clojure/lang/IFn.java +90 -0
  1315. data/src/jvm/clojure/lang/IMapEntry.java +19 -0
  1316. data/src/jvm/clojure/lang/IMeta.java +17 -0
  1317. data/src/jvm/clojure/lang/IObj.java +18 -0
  1318. data/src/jvm/clojure/lang/IPersistentCollection.java +23 -0
  1319. data/src/jvm/clojure/lang/IPersistentList.java +16 -0
  1320. data/src/jvm/clojure/lang/IPersistentMap.java +23 -0
  1321. data/src/jvm/clojure/lang/IPersistentSet.java +19 -0
  1322. data/src/jvm/clojure/lang/IPersistentStack.java +19 -0
  1323. data/src/jvm/clojure/lang/IPersistentVector.java +22 -0
  1324. data/src/jvm/clojure/lang/IProxy.java +21 -0
  1325. data/src/jvm/clojure/lang/IReduce.java +19 -0
  1326. data/src/jvm/clojure/lang/IRef.java +27 -0
  1327. data/src/jvm/clojure/lang/IReference.java +18 -0
  1328. data/src/jvm/clojure/lang/ISeq.java +29 -0
  1329. data/src/jvm/clojure/lang/IndexedSeq.java +16 -0
  1330. data/src/jvm/clojure/lang/IteratorSeq.java +69 -0
  1331. data/src/jvm/clojure/lang/IteratorStream.java +29 -0
  1332. data/src/jvm/clojure/lang/Keyword.java +199 -0
  1333. data/src/jvm/clojure/lang/LazilyPersistentVector.java +79 -0
  1334. data/src/jvm/clojure/lang/LazySeq.java +233 -0
  1335. data/src/jvm/clojure/lang/LineNumberingPushbackReader.java +75 -0
  1336. data/src/jvm/clojure/lang/LispReader.java +1063 -0
  1337. data/src/jvm/clojure/lang/LockingTransaction.java +583 -0
  1338. data/src/jvm/clojure/lang/MapEntry.java +40 -0
  1339. data/src/jvm/clojure/lang/MultiFn.java +308 -0
  1340. data/src/jvm/clojure/lang/Named.java +19 -0
  1341. data/src/jvm/clojure/lang/Namespace.java +178 -0
  1342. data/src/jvm/clojure/lang/Numbers.java +4371 -0
  1343. data/src/jvm/clojure/lang/Obj.java +33 -0
  1344. data/src/jvm/clojure/lang/PersistentArrayMap.java +263 -0
  1345. data/src/jvm/clojure/lang/PersistentHashMap.java +746 -0
  1346. data/src/jvm/clojure/lang/PersistentHashSet.java +72 -0
  1347. data/src/jvm/clojure/lang/PersistentList.java +298 -0
  1348. data/src/jvm/clojure/lang/PersistentQueue.java +304 -0
  1349. data/src/jvm/clojure/lang/PersistentStructMap.java +225 -0
  1350. data/src/jvm/clojure/lang/PersistentTreeMap.java +998 -0
  1351. data/src/jvm/clojure/lang/PersistentTreeSet.java +94 -0
  1352. data/src/jvm/clojure/lang/PersistentVector.java +320 -0
  1353. data/src/jvm/clojure/lang/ProxyHandler.java +72 -0
  1354. data/src/jvm/clojure/lang/RT.java +1676 -0
  1355. data/src/jvm/clojure/lang/Range.java +85 -0
  1356. data/src/jvm/clojure/lang/Ratio.java +74 -0
  1357. data/src/jvm/clojure/lang/Ref.java +335 -0
  1358. data/src/jvm/clojure/lang/Reflector.java +448 -0
  1359. data/src/jvm/clojure/lang/Repl.java +22 -0
  1360. data/src/jvm/clojure/lang/RestFn.java +1335 -0
  1361. data/src/jvm/clojure/lang/Reversible.java +17 -0
  1362. data/src/jvm/clojure/lang/Script.java +22 -0
  1363. data/src/jvm/clojure/lang/SeqEnumeration.java +33 -0
  1364. data/src/jvm/clojure/lang/SeqIterator.java +41 -0
  1365. data/src/jvm/clojure/lang/Seqable.java +17 -0
  1366. data/src/jvm/clojure/lang/Sequential.java +13 -0
  1367. data/src/jvm/clojure/lang/Settable.java +18 -0
  1368. data/src/jvm/clojure/lang/Sorted.java +25 -0
  1369. data/src/jvm/clojure/lang/Stream.java +88 -0
  1370. data/src/jvm/clojure/lang/Streamable.java +17 -0
  1371. data/src/jvm/clojure/lang/StringSeq.java +50 -0
  1372. data/src/jvm/clojure/lang/Symbol.java +121 -0
  1373. data/src/jvm/clojure/lang/TransactionalHashMap.java +197 -0
  1374. data/src/jvm/clojure/lang/Util.java +74 -0
  1375. data/src/jvm/clojure/lang/Var.java +472 -0
  1376. data/src/jvm/clojure/lang/XMLHandler.java +89 -0
  1377. data/src/jvm/clojure/main.java +41 -0
  1378. metadata +1433 -0
@@ -0,0 +1,196 @@
1
+ /***
2
+ * ASM: a very small and fast Java bytecode manipulation framework
3
+ * Copyright (c) 2000-2005 INRIA, France Telecom
4
+ * All rights reserved.
5
+ *
6
+ * Redistribution and use in source and binary forms, with or without
7
+ * modification, are permitted provided that the following conditions
8
+ * are met:
9
+ * 1. Redistributions of source code must retain the above copyright
10
+ * notice, this list of conditions and the following disclaimer.
11
+ * 2. Redistributions in binary form must reproduce the above copyright
12
+ * notice, this list of conditions and the following disclaimer in the
13
+ * documentation and/or other materials provided with the distribution.
14
+ * 3. Neither the name of the copyright holders nor the names of its
15
+ * contributors may be used to endorse or promote products derived from
16
+ * this software without specific prior written permission.
17
+ *
18
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
22
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
28
+ * THE POSSIBILITY OF SUCH DAMAGE.
29
+ */
30
+ package clojure.asm;
31
+
32
+ /**
33
+ * A visitor to visit a Java class. The methods of this interface must be called
34
+ * in the following order: <tt>visit</tt> [ <tt>visitSource</tt> ] [
35
+ * <tt>visitOuterClass</tt> ] ( <tt>visitAnnotation</tt> |
36
+ * <tt>visitAttribute</tt> )* (<tt>visitInnerClass</tt> |
37
+ * <tt>visitField</tt> | <tt>visitMethod</tt> )* <tt>visitEnd</tt>.
38
+ *
39
+ * @author Eric Bruneton
40
+ */
41
+ public interface ClassVisitor{
42
+
43
+ /**
44
+ * Visits the header of the class.
45
+ *
46
+ * @param version the class version.
47
+ * @param access the class's access flags (see {@link Opcodes}). This
48
+ * parameter also indicates if the class is deprecated.
49
+ * @param name the internal name of the class (see
50
+ * {@link Type#getInternalName() getInternalName}).
51
+ * @param signature the signature of this class. May be <tt>null</tt> if
52
+ * the class is not a generic one, and does not extend or implement
53
+ * generic classes or interfaces.
54
+ * @param superName the internal of name of the super class (see
55
+ * {@link Type#getInternalName() getInternalName}). For interfaces,
56
+ * the super class is {@link Object}. May be <tt>null</tt>, but
57
+ * only for the {@link Object} class.
58
+ * @param interfaces the internal names of the class's interfaces (see
59
+ * {@link Type#getInternalName() getInternalName}). May be
60
+ * <tt>null</tt>.
61
+ */
62
+ void visit(
63
+ int version,
64
+ int access,
65
+ String name,
66
+ String signature,
67
+ String superName,
68
+ String[] interfaces);
69
+
70
+ /**
71
+ * Visits the source of the class.
72
+ *
73
+ * @param source the name of the source file from which the class was
74
+ * compiled. May be <tt>null</tt>.
75
+ * @param debug additional debug information to compute the correspondance
76
+ * between source and compiled elements of the class. May be
77
+ * <tt>null</tt>.
78
+ */
79
+ void visitSource(String source, String debug);
80
+
81
+ /**
82
+ * Visits the enclosing class of the class. This method must be called only
83
+ * if the class has an enclosing class.
84
+ *
85
+ * @param owner internal name of the enclosing class of the class.
86
+ * @param name the name of the method that contains the class, or
87
+ * <tt>null</tt> if the class is not enclosed in a method of its
88
+ * enclosing class.
89
+ * @param desc the descriptor of the method that contains the class, or
90
+ * <tt>null</tt> if the class is not enclosed in a method of its
91
+ * enclosing class.
92
+ */
93
+ void visitOuterClass(String owner, String name, String desc);
94
+
95
+ /**
96
+ * Visits an annotation of the class.
97
+ *
98
+ * @param desc the class descriptor of the annotation class.
99
+ * @param visible <tt>true</tt> if the annotation is visible at runtime.
100
+ * @return a visitor to visit the annotation values, or <tt>null</tt> if
101
+ * this visitor is not interested in visiting this annotation.
102
+ */
103
+ AnnotationVisitor visitAnnotation(String desc, boolean visible);
104
+
105
+ /**
106
+ * Visits a non standard attribute of the class.
107
+ *
108
+ * @param attr an attribute.
109
+ */
110
+ void visitAttribute(Attribute attr);
111
+
112
+ /**
113
+ * Visits information about an inner class. This inner class is not
114
+ * necessarily a member of the class being visited.
115
+ *
116
+ * @param name the internal name of an inner class (see
117
+ * {@link Type#getInternalName() getInternalName}).
118
+ * @param outerName the internal name of the class to which the inner class
119
+ * belongs (see {@link Type#getInternalName() getInternalName}). May
120
+ * be <tt>null</tt> for not member classes.
121
+ * @param innerName the (simple) name of the inner class inside its
122
+ * enclosing class. May be <tt>null</tt> for anonymous inner
123
+ * classes.
124
+ * @param access the access flags of the inner class as originally declared
125
+ * in the enclosing class.
126
+ */
127
+ void visitInnerClass(
128
+ String name,
129
+ String outerName,
130
+ String innerName,
131
+ int access);
132
+
133
+ /**
134
+ * Visits a field of the class.
135
+ *
136
+ * @param access the field's access flags (see {@link Opcodes}). This
137
+ * parameter also indicates if the field is synthetic and/or
138
+ * deprecated.
139
+ * @param name the field's name.
140
+ * @param desc the field's descriptor (see {@link Type Type}).
141
+ * @param signature the field's signature. May be <tt>null</tt> if the
142
+ * field's type does not use generic types.
143
+ * @param value the field's initial value. This parameter, which may be
144
+ * <tt>null</tt> if the field does not have an initial value, must
145
+ * be an {@link Integer}, a {@link Float}, a {@link Long}, a
146
+ * {@link Double} or a {@link String} (for <tt>int</tt>,
147
+ * <tt>float</tt>, <tt>long</tt> or <tt>String</tt> fields
148
+ * respectively). <i>This parameter is only used for static fields</i>.
149
+ * Its value is ignored for non static fields, which must be
150
+ * initialized through bytecode instructions in constructors or
151
+ * methods.
152
+ * @return a visitor to visit field annotations and attributes, or
153
+ * <tt>null</tt> if this class visitor is not interested in
154
+ * visiting these annotations and attributes.
155
+ */
156
+ FieldVisitor visitField(
157
+ int access,
158
+ String name,
159
+ String desc,
160
+ String signature,
161
+ Object value);
162
+
163
+ /**
164
+ * Visits a method of the class. This method <i>must</i> return a new
165
+ * {@link MethodVisitor} instance (or <tt>null</tt>) each time it is
166
+ * called, i.e., it should not return a previously returned visitor.
167
+ *
168
+ * @param access the method's access flags (see {@link Opcodes}). This
169
+ * parameter also indicates if the method is synthetic and/or
170
+ * deprecated.
171
+ * @param name the method's name.
172
+ * @param desc the method's descriptor (see {@link Type Type}).
173
+ * @param signature the method's signature. May be <tt>null</tt> if the
174
+ * method parameters, return type and exceptions do not use generic
175
+ * types.
176
+ * @param exceptions the internal names of the method's exception classes
177
+ * (see {@link Type#getInternalName() getInternalName}). May be
178
+ * <tt>null</tt>.
179
+ * @return an object to visit the byte code of the method, or <tt>null</tt>
180
+ * if this class visitor is not interested in visiting the code of
181
+ * this method.
182
+ */
183
+ MethodVisitor visitMethod(
184
+ int access,
185
+ String name,
186
+ String desc,
187
+ String signature,
188
+ String[] exceptions);
189
+
190
+ /**
191
+ * Visits the end of the class. This method, which is the last one to be
192
+ * called, is used to inform the visitor that all the fields and methods of
193
+ * the class have been visited.
194
+ */
195
+ void visitEnd();
196
+ }
@@ -0,0 +1,1415 @@
1
+ /***
2
+ * ASM: a very small and fast Java bytecode manipulation framework
3
+ * Copyright (c) 2000-2005 INRIA, France Telecom
4
+ * All rights reserved.
5
+ *
6
+ * Redistribution and use in source and binary forms, with or without
7
+ * modification, are permitted provided that the following conditions
8
+ * are met:
9
+ * 1. Redistributions of source code must retain the above copyright
10
+ * notice, this list of conditions and the following disclaimer.
11
+ * 2. Redistributions in binary form must reproduce the above copyright
12
+ * notice, this list of conditions and the following disclaimer in the
13
+ * documentation and/or other materials provided with the distribution.
14
+ * 3. Neither the name of the copyright holders nor the names of its
15
+ * contributors may be used to endorse or promote products derived from
16
+ * this software without specific prior written permission.
17
+ *
18
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
22
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
28
+ * THE POSSIBILITY OF SUCH DAMAGE.
29
+ */
30
+ package clojure.asm;
31
+
32
+ /**
33
+ * A {@link ClassVisitor} that generates classes in bytecode form. More
34
+ * precisely this visitor generates a byte array conforming to the Java class
35
+ * file format. It can be used alone, to generate a Java class "from scratch",
36
+ * or with one or more {@link ClassReader ClassReader} and adapter class visitor
37
+ * to generate a modified class from one or more existing Java classes.
38
+ *
39
+ * @author Eric Bruneton
40
+ */
41
+ public class ClassWriter implements ClassVisitor{
42
+
43
+ /**
44
+ * Flag to automatically compute the maximum stack size and the maximum
45
+ * number of local variables of methods. If this flag is set, then the
46
+ * arguments of the {@link MethodVisitor#visitMaxs visitMaxs} method of the
47
+ * {@link MethodVisitor} returned by the {@link #visitMethod visitMethod}
48
+ * method will be ignored, and computed automatically from the signature and
49
+ * the bytecode of each method.
50
+ *
51
+ * @see #ClassWriter(int)
52
+ */
53
+ public final static int COMPUTE_MAXS = 1;
54
+
55
+ /**
56
+ * Flag to automatically compute the stack map frames of methods from
57
+ * scratch. If this flag is set, then the calls to the
58
+ * {@link MethodVisitor#visitFrame} method are ignored, and the stack map
59
+ * frames are recomputed from the methods bytecode. The arguments of the
60
+ * {@link MethodVisitor#visitMaxs visitMaxs} method are also ignored and
61
+ * recomputed from the bytecode. In other words, computeFrames implies
62
+ * computeMaxs.
63
+ *
64
+ * @see #ClassWriter(int)
65
+ */
66
+ public final static int COMPUTE_FRAMES = 2;
67
+
68
+ /**
69
+ * The type of instructions without any argument.
70
+ */
71
+ final static int NOARG_INSN = 0;
72
+
73
+ /**
74
+ * The type of instructions with an signed byte argument.
75
+ */
76
+ final static int SBYTE_INSN = 1;
77
+
78
+ /**
79
+ * The type of instructions with an signed short argument.
80
+ */
81
+ final static int SHORT_INSN = 2;
82
+
83
+ /**
84
+ * The type of instructions with a local variable index argument.
85
+ */
86
+ final static int VAR_INSN = 3;
87
+
88
+ /**
89
+ * The type of instructions with an implicit local variable index argument.
90
+ */
91
+ final static int IMPLVAR_INSN = 4;
92
+
93
+ /**
94
+ * The type of instructions with a type descriptor argument.
95
+ */
96
+ final static int TYPE_INSN = 5;
97
+
98
+ /**
99
+ * The type of field and method invocations instructions.
100
+ */
101
+ final static int FIELDORMETH_INSN = 6;
102
+
103
+ /**
104
+ * The type of the INVOKEINTERFACE instruction.
105
+ */
106
+ final static int ITFMETH_INSN = 7;
107
+
108
+ /**
109
+ * The type of instructions with a 2 bytes bytecode offset label.
110
+ */
111
+ final static int LABEL_INSN = 8;
112
+
113
+ /**
114
+ * The type of instructions with a 4 bytes bytecode offset label.
115
+ */
116
+ final static int LABELW_INSN = 9;
117
+
118
+ /**
119
+ * The type of the LDC instruction.
120
+ */
121
+ final static int LDC_INSN = 10;
122
+
123
+ /**
124
+ * The type of the LDC_W and LDC2_W instructions.
125
+ */
126
+ final static int LDCW_INSN = 11;
127
+
128
+ /**
129
+ * The type of the IINC instruction.
130
+ */
131
+ final static int IINC_INSN = 12;
132
+
133
+ /**
134
+ * The type of the TABLESWITCH instruction.
135
+ */
136
+ final static int TABL_INSN = 13;
137
+
138
+ /**
139
+ * The type of the LOOKUPSWITCH instruction.
140
+ */
141
+ final static int LOOK_INSN = 14;
142
+
143
+ /**
144
+ * The type of the MULTIANEWARRAY instruction.
145
+ */
146
+ final static int MANA_INSN = 15;
147
+
148
+ /**
149
+ * The type of the WIDE instruction.
150
+ */
151
+ final static int WIDE_INSN = 16;
152
+
153
+ /**
154
+ * The instruction types of all JVM opcodes.
155
+ */
156
+ static byte[] TYPE;
157
+
158
+ /**
159
+ * The type of CONSTANT_Class constant pool items.
160
+ */
161
+ final static int CLASS = 7;
162
+
163
+ /**
164
+ * The type of CONSTANT_Fieldref constant pool items.
165
+ */
166
+ final static int FIELD = 9;
167
+
168
+ /**
169
+ * The type of CONSTANT_Methodref constant pool items.
170
+ */
171
+ final static int METH = 10;
172
+
173
+ /**
174
+ * The type of CONSTANT_InterfaceMethodref constant pool items.
175
+ */
176
+ final static int IMETH = 11;
177
+
178
+ /**
179
+ * The type of CONSTANT_String constant pool items.
180
+ */
181
+ final static int STR = 8;
182
+
183
+ /**
184
+ * The type of CONSTANT_Integer constant pool items.
185
+ */
186
+ final static int INT = 3;
187
+
188
+ /**
189
+ * The type of CONSTANT_Float constant pool items.
190
+ */
191
+ final static int FLOAT = 4;
192
+
193
+ /**
194
+ * The type of CONSTANT_Long constant pool items.
195
+ */
196
+ final static int LONG = 5;
197
+
198
+ /**
199
+ * The type of CONSTANT_Double constant pool items.
200
+ */
201
+ final static int DOUBLE = 6;
202
+
203
+ /**
204
+ * The type of CONSTANT_NameAndType constant pool items.
205
+ */
206
+ final static int NAME_TYPE = 12;
207
+
208
+ /**
209
+ * The type of CONSTANT_Utf8 constant pool items.
210
+ */
211
+ final static int UTF8 = 1;
212
+
213
+ /**
214
+ * Normal type Item stored in the ClassWriter {@link ClassWriter#typeTable},
215
+ * instead of the constant pool, in order to avoid clashes with normal
216
+ * constant pool items in the ClassWriter constant pool's hash table.
217
+ */
218
+ final static int TYPE_NORMAL = 13;
219
+
220
+ /**
221
+ * Uninitialized type Item stored in the ClassWriter
222
+ * {@link ClassWriter#typeTable}, instead of the constant pool, in order to
223
+ * avoid clashes with normal constant pool items in the ClassWriter constant
224
+ * pool's hash table.
225
+ */
226
+ final static int TYPE_UNINIT = 14;
227
+
228
+ /**
229
+ * Merged type Item stored in the ClassWriter {@link ClassWriter#typeTable},
230
+ * instead of the constant pool, in order to avoid clashes with normal
231
+ * constant pool items in the ClassWriter constant pool's hash table.
232
+ */
233
+ final static int TYPE_MERGED = 15;
234
+
235
+ /**
236
+ * The class reader from which this class writer was constructed, if any.
237
+ */
238
+ ClassReader cr;
239
+
240
+ /**
241
+ * Minor and major version numbers of the class to be generated.
242
+ */
243
+ int version;
244
+
245
+ /**
246
+ * Index of the next item to be added in the constant pool.
247
+ */
248
+ int index;
249
+
250
+ /**
251
+ * The constant pool of this class.
252
+ */
253
+ ByteVector pool;
254
+
255
+ /**
256
+ * The constant pool's hash table data.
257
+ */
258
+ Item[] items;
259
+
260
+ /**
261
+ * The threshold of the constant pool's hash table.
262
+ */
263
+ int threshold;
264
+
265
+ /**
266
+ * A reusable key used to look for items in the {@link #items} hash table.
267
+ */
268
+ Item key;
269
+
270
+ /**
271
+ * A reusable key used to look for items in the {@link #items} hash table.
272
+ */
273
+ Item key2;
274
+
275
+ /**
276
+ * A reusable key used to look for items in the {@link #items} hash table.
277
+ */
278
+ Item key3;
279
+
280
+ /**
281
+ * A type table used to temporarily store internal names that will not
282
+ * necessarily be stored in the constant pool. This type table is used by
283
+ * the control flow and data flow analysis algorithm used to compute stack
284
+ * map frames from scratch. This array associates to each index <tt>i</tt>
285
+ * the Item whose index is <tt>i</tt>. All Item objects stored in this
286
+ * array are also stored in the {@link #items} hash table. These two arrays
287
+ * allow to retrieve an Item from its index or, conversly, to get the index
288
+ * of an Item from its value. Each Item stores an internal name in its
289
+ * {@link Item#strVal1} field.
290
+ */
291
+ Item[] typeTable;
292
+
293
+ /**
294
+ * Number of elements in the {@link #typeTable} array.
295
+ */
296
+ private short typeCount; // TODO int?
297
+
298
+ /**
299
+ * The access flags of this class.
300
+ */
301
+ private int access;
302
+
303
+ /**
304
+ * The constant pool item that contains the internal name of this class.
305
+ */
306
+ private int name;
307
+
308
+ /**
309
+ * The internal name of this class.
310
+ */
311
+ String thisName;
312
+
313
+ /**
314
+ * The constant pool item that contains the signature of this class.
315
+ */
316
+ private int signature;
317
+
318
+ /**
319
+ * The constant pool item that contains the internal name of the super class
320
+ * of this class.
321
+ */
322
+ private int superName;
323
+
324
+ /**
325
+ * Number of interfaces implemented or extended by this class or interface.
326
+ */
327
+ private int interfaceCount;
328
+
329
+ /**
330
+ * The interfaces implemented or extended by this class or interface. More
331
+ * precisely, this array contains the indexes of the constant pool items
332
+ * that contain the internal names of these interfaces.
333
+ */
334
+ private int[] interfaces;
335
+
336
+ /**
337
+ * The index of the constant pool item that contains the name of the source
338
+ * file from which this class was compiled.
339
+ */
340
+ private int sourceFile;
341
+
342
+ /**
343
+ * The SourceDebug attribute of this class.
344
+ */
345
+ private ByteVector sourceDebug;
346
+
347
+ /**
348
+ * The constant pool item that contains the name of the enclosing class of
349
+ * this class.
350
+ */
351
+ private int enclosingMethodOwner;
352
+
353
+ /**
354
+ * The constant pool item that contains the name and descriptor of the
355
+ * enclosing method of this class.
356
+ */
357
+ private int enclosingMethod;
358
+
359
+ /**
360
+ * The runtime visible annotations of this class.
361
+ */
362
+ private AnnotationWriter anns;
363
+
364
+ /**
365
+ * The runtime invisible annotations of this class.
366
+ */
367
+ private AnnotationWriter ianns;
368
+
369
+ /**
370
+ * The non standard attributes of this class.
371
+ */
372
+ private Attribute attrs;
373
+
374
+ /**
375
+ * The number of entries in the InnerClasses attribute.
376
+ */
377
+ private int innerClassesCount;
378
+
379
+ /**
380
+ * The InnerClasses attribute.
381
+ */
382
+ private ByteVector innerClasses;
383
+
384
+ /**
385
+ * The fields of this class. These fields are stored in a linked list of
386
+ * {@link FieldWriter} objects, linked to each other by their
387
+ * {@link FieldWriter#next} field. This field stores the first element of
388
+ * this list.
389
+ */
390
+ FieldWriter firstField;
391
+
392
+ /**
393
+ * The fields of this class. These fields are stored in a linked list of
394
+ * {@link FieldWriter} objects, linked to each other by their
395
+ * {@link FieldWriter#next} field. This field stores the last element of
396
+ * this list.
397
+ */
398
+ FieldWriter lastField;
399
+
400
+ /**
401
+ * The methods of this class. These methods are stored in a linked list of
402
+ * {@link MethodWriter} objects, linked to each other by their
403
+ * {@link MethodWriter#next} field. This field stores the first element of
404
+ * this list.
405
+ */
406
+ MethodWriter firstMethod;
407
+
408
+ /**
409
+ * The methods of this class. These methods are stored in a linked list of
410
+ * {@link MethodWriter} objects, linked to each other by their
411
+ * {@link MethodWriter#next} field. This field stores the last element of
412
+ * this list.
413
+ */
414
+ MethodWriter lastMethod;
415
+
416
+ /**
417
+ * <tt>true</tt> if the maximum stack size and number of local variables
418
+ * must be automatically computed.
419
+ */
420
+ private boolean computeMaxs;
421
+
422
+ /**
423
+ * <tt>true</tt> if the stack map frames must be recomputed from scratch.
424
+ */
425
+ private boolean computeFrames;
426
+
427
+ /**
428
+ * <tt>true</tt> if the stack map tables of this class are invalid. The
429
+ * {@link MethodWriter#resizeInstructions} method cannot transform existing
430
+ * stack map tables, and so produces potentially invalid classes when it is
431
+ * executed. In this case the class is reread and rewritten with the
432
+ * {@link #COMPUTE_FRAMES} option (the resizeInstructions method can resize
433
+ * stack map tables when this option is used).
434
+ */
435
+ boolean invalidFrames;
436
+
437
+ // ------------------------------------------------------------------------
438
+ // Static initializer
439
+ // ------------------------------------------------------------------------
440
+
441
+ /**
442
+ * Computes the instruction types of JVM opcodes.
443
+ */
444
+ static
445
+ {
446
+ int i;
447
+ byte[] b = new byte[220];
448
+ String s = "AAAAAAAAAAAAAAAABCKLLDDDDDEEEEEEEEEEEEEEEEEEEEAAAAAAAADD"
449
+ + "DDDEEEEEEEEEEEEEEEEEEEEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
450
+ + "AAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAIIIIIIIIIIIIIIIIDNOAA"
451
+ + "AAAAGGGGGGGHAFBFAAFFAAQPIIJJIIIIIIIIIIIIIIIIII";
452
+ for(i = 0; i < b.length; ++i)
453
+ {
454
+ b[i] = (byte) (s.charAt(i) - 'A');
455
+ }
456
+ TYPE = b;
457
+
458
+ // code to generate the above string
459
+ //
460
+ // // SBYTE_INSN instructions
461
+ // b[Constants.NEWARRAY] = SBYTE_INSN;
462
+ // b[Constants.BIPUSH] = SBYTE_INSN;
463
+ //
464
+ // // SHORT_INSN instructions
465
+ // b[Constants.SIPUSH] = SHORT_INSN;
466
+ //
467
+ // // (IMPL)VAR_INSN instructions
468
+ // b[Constants.RET] = VAR_INSN;
469
+ // for (i = Constants.ILOAD; i <= Constants.ALOAD; ++i) {
470
+ // b[i] = VAR_INSN;
471
+ // }
472
+ // for (i = Constants.ISTORE; i <= Constants.ASTORE; ++i) {
473
+ // b[i] = VAR_INSN;
474
+ // }
475
+ // for (i = 26; i <= 45; ++i) { // ILOAD_0 to ALOAD_3
476
+ // b[i] = IMPLVAR_INSN;
477
+ // }
478
+ // for (i = 59; i <= 78; ++i) { // ISTORE_0 to ASTORE_3
479
+ // b[i] = IMPLVAR_INSN;
480
+ // }
481
+ //
482
+ // // TYPE_INSN instructions
483
+ // b[Constants.NEW] = TYPE_INSN;
484
+ // b[Constants.ANEWARRAY] = TYPE_INSN;
485
+ // b[Constants.CHECKCAST] = TYPE_INSN;
486
+ // b[Constants.INSTANCEOF] = TYPE_INSN;
487
+ //
488
+ // // (Set)FIELDORMETH_INSN instructions
489
+ // for (i = Constants.GETSTATIC; i <= Constants.INVOKESTATIC; ++i) {
490
+ // b[i] = FIELDORMETH_INSN;
491
+ // }
492
+ // b[Constants.INVOKEINTERFACE] = ITFMETH_INSN;
493
+ //
494
+ // // LABEL(W)_INSN instructions
495
+ // for (i = Constants.IFEQ; i <= Constants.JSR; ++i) {
496
+ // b[i] = LABEL_INSN;
497
+ // }
498
+ // b[Constants.IFNULL] = LABEL_INSN;
499
+ // b[Constants.IFNONNULL] = LABEL_INSN;
500
+ // b[200] = LABELW_INSN; // GOTO_W
501
+ // b[201] = LABELW_INSN; // JSR_W
502
+ // // temporary opcodes used internally by ASM - see Label and
503
+ // MethodWriter
504
+ // for (i = 202; i < 220; ++i) {
505
+ // b[i] = LABEL_INSN;
506
+ // }
507
+ //
508
+ // // LDC(_W) instructions
509
+ // b[Constants.LDC] = LDC_INSN;
510
+ // b[19] = LDCW_INSN; // LDC_W
511
+ // b[20] = LDCW_INSN; // LDC2_W
512
+ //
513
+ // // special instructions
514
+ // b[Constants.IINC] = IINC_INSN;
515
+ // b[Constants.TABLESWITCH] = TABL_INSN;
516
+ // b[Constants.LOOKUPSWITCH] = LOOK_INSN;
517
+ // b[Constants.MULTIANEWARRAY] = MANA_INSN;
518
+ // b[196] = WIDE_INSN; // WIDE
519
+ //
520
+ // for (i = 0; i < b.length; ++i) {
521
+ // System.err.print((char)('A' + b[i]));
522
+ // }
523
+ // System.err.println();
524
+ }
525
+
526
+ // ------------------------------------------------------------------------
527
+ // Constructor
528
+ // ------------------------------------------------------------------------
529
+
530
+ /**
531
+ * Constructs a new {@link ClassWriter} object.
532
+ *
533
+ * @param flags option flags that can be used to modify the default behavior
534
+ * of this class. See {@link #COMPUTE_MAXS}, {@link #COMPUTE_FRAMES}.
535
+ */
536
+ public ClassWriter(final int flags){
537
+ index = 1;
538
+ pool = new ByteVector();
539
+ items = new Item[256];
540
+ threshold = (int) (0.75d * items.length);
541
+ key = new Item();
542
+ key2 = new Item();
543
+ key3 = new Item();
544
+ this.computeMaxs = (flags & COMPUTE_MAXS) != 0;
545
+ this.computeFrames = (flags & COMPUTE_FRAMES) != 0;
546
+ }
547
+
548
+ /**
549
+ * Constructs a new {@link ClassWriter} object and enables optimizations for
550
+ * "mostly add" bytecode transformations. These optimizations are the
551
+ * following:
552
+ * <p/>
553
+ * <ul> <li>The constant pool from the original class is copied as is in
554
+ * the new class, which saves time. New constant pool entries will be added
555
+ * at the end if necessary, but unused constant pool entries <i>won't be
556
+ * removed</i>.</li> <li>Methods that are not transformed are copied as
557
+ * is in the new class, directly from the original class bytecode (i.e.
558
+ * without emitting visit events for all the method instructions), which
559
+ * saves a <i>lot</i> of time. Untransformed methods are detected by the
560
+ * fact that the {@link ClassReader} receives {@link MethodVisitor} objects
561
+ * that come from a {@link ClassWriter} (and not from a custom
562
+ * {@link ClassAdapter} or any other {@link ClassVisitor} instance).</li>
563
+ * </ul>
564
+ *
565
+ * @param classReader the {@link ClassReader} used to read the original
566
+ * class. It will be used to copy the entire constant pool from the
567
+ * original class and also to copy other fragments of original
568
+ * bytecode where applicable.
569
+ * @param flags option flags that can be used to modify the default behavior
570
+ * of this class. See {@link #COMPUTE_MAXS}, {@link #COMPUTE_FRAMES}.
571
+ */
572
+ public ClassWriter(final ClassReader classReader, final int flags){
573
+ this(flags);
574
+ classReader.copyPool(this);
575
+ this.cr = classReader;
576
+ }
577
+
578
+ // ------------------------------------------------------------------------
579
+ // Implementation of the ClassVisitor interface
580
+ // ------------------------------------------------------------------------
581
+
582
+ public void visit(
583
+ final int version,
584
+ final int access,
585
+ final String name,
586
+ final String signature,
587
+ final String superName,
588
+ final String[] interfaces){
589
+ this.version = version;
590
+ this.access = access;
591
+ this.name = newClass(name);
592
+ thisName = name;
593
+ if(signature != null)
594
+ {
595
+ this.signature = newUTF8(signature);
596
+ }
597
+ this.superName = superName == null ? 0 : newClass(superName);
598
+ if(interfaces != null && interfaces.length > 0)
599
+ {
600
+ interfaceCount = interfaces.length;
601
+ this.interfaces = new int[interfaceCount];
602
+ for(int i = 0; i < interfaceCount; ++i)
603
+ {
604
+ this.interfaces[i] = newClass(interfaces[i]);
605
+ }
606
+ }
607
+ }
608
+
609
+ public void visitSource(final String file, final String debug){
610
+ if(file != null)
611
+ {
612
+ sourceFile = newUTF8(file);
613
+ }
614
+ if(debug != null)
615
+ {
616
+ sourceDebug = new ByteVector().putUTF8(debug);
617
+ }
618
+ }
619
+
620
+ public void visitOuterClass(
621
+ final String owner,
622
+ final String name,
623
+ final String desc){
624
+ enclosingMethodOwner = newClass(owner);
625
+ if(name != null && desc != null)
626
+ {
627
+ enclosingMethod = newNameType(name, desc);
628
+ }
629
+ }
630
+
631
+ public AnnotationVisitor visitAnnotation(
632
+ final String desc,
633
+ final boolean visible){
634
+ ByteVector bv = new ByteVector();
635
+ // write type, and reserve space for values count
636
+ bv.putShort(newUTF8(desc)).putShort(0);
637
+ AnnotationWriter aw = new AnnotationWriter(this, true, bv, bv, 2);
638
+ if(visible)
639
+ {
640
+ aw.next = anns;
641
+ anns = aw;
642
+ }
643
+ else
644
+ {
645
+ aw.next = ianns;
646
+ ianns = aw;
647
+ }
648
+ return aw;
649
+ }
650
+
651
+ public void visitAttribute(final Attribute attr){
652
+ attr.next = attrs;
653
+ attrs = attr;
654
+ }
655
+
656
+ public void visitInnerClass(
657
+ final String name,
658
+ final String outerName,
659
+ final String innerName,
660
+ final int access){
661
+ if(innerClasses == null)
662
+ {
663
+ innerClasses = new ByteVector();
664
+ }
665
+ ++innerClassesCount;
666
+ innerClasses.putShort(name == null ? 0 : newClass(name));
667
+ innerClasses.putShort(outerName == null ? 0 : newClass(outerName));
668
+ innerClasses.putShort(innerName == null ? 0 : newUTF8(innerName));
669
+ innerClasses.putShort(access);
670
+ }
671
+
672
+ public FieldVisitor visitField(
673
+ final int access,
674
+ final String name,
675
+ final String desc,
676
+ final String signature,
677
+ final Object value){
678
+ return new FieldWriter(this, access, name, desc, signature, value);
679
+ }
680
+
681
+ public MethodVisitor visitMethod(
682
+ final int access,
683
+ final String name,
684
+ final String desc,
685
+ final String signature,
686
+ final String[] exceptions){
687
+ return new MethodWriter(this,
688
+ access,
689
+ name,
690
+ desc,
691
+ signature,
692
+ exceptions,
693
+ computeMaxs,
694
+ computeFrames);
695
+ }
696
+
697
+ public void visitEnd(){
698
+ }
699
+
700
+ // ------------------------------------------------------------------------
701
+ // Other public methods
702
+ // ------------------------------------------------------------------------
703
+
704
+ /**
705
+ * Returns the bytecode of the class that was build with this class writer.
706
+ *
707
+ * @return the bytecode of the class that was build with this class writer.
708
+ */
709
+ public byte[] toByteArray(){
710
+ // computes the real size of the bytecode of this class
711
+ int size = 24 + 2 * interfaceCount;
712
+ int nbFields = 0;
713
+ FieldWriter fb = firstField;
714
+ while(fb != null)
715
+ {
716
+ ++nbFields;
717
+ size += fb.getSize();
718
+ fb = fb.next;
719
+ }
720
+ int nbMethods = 0;
721
+ MethodWriter mb = firstMethod;
722
+ while(mb != null)
723
+ {
724
+ ++nbMethods;
725
+ size += mb.getSize();
726
+ mb = mb.next;
727
+ }
728
+ int attributeCount = 0;
729
+ if(signature != 0)
730
+ {
731
+ ++attributeCount;
732
+ size += 8;
733
+ newUTF8("Signature");
734
+ }
735
+ if(sourceFile != 0)
736
+ {
737
+ ++attributeCount;
738
+ size += 8;
739
+ newUTF8("SourceFile");
740
+ }
741
+ if(sourceDebug != null)
742
+ {
743
+ ++attributeCount;
744
+ size += sourceDebug.length + 4;
745
+ newUTF8("SourceDebugExtension");
746
+ }
747
+ if(enclosingMethodOwner != 0)
748
+ {
749
+ ++attributeCount;
750
+ size += 10;
751
+ newUTF8("EnclosingMethod");
752
+ }
753
+ if((access & Opcodes.ACC_DEPRECATED) != 0)
754
+ {
755
+ ++attributeCount;
756
+ size += 6;
757
+ newUTF8("Deprecated");
758
+ }
759
+ if((access & Opcodes.ACC_SYNTHETIC) != 0
760
+ && (version & 0xffff) < Opcodes.V1_5)
761
+ {
762
+ ++attributeCount;
763
+ size += 6;
764
+ newUTF8("Synthetic");
765
+ }
766
+ if(innerClasses != null)
767
+ {
768
+ ++attributeCount;
769
+ size += 8 + innerClasses.length;
770
+ newUTF8("InnerClasses");
771
+ }
772
+ if(anns != null)
773
+ {
774
+ ++attributeCount;
775
+ size += 8 + anns.getSize();
776
+ newUTF8("RuntimeVisibleAnnotations");
777
+ }
778
+ if(ianns != null)
779
+ {
780
+ ++attributeCount;
781
+ size += 8 + ianns.getSize();
782
+ newUTF8("RuntimeInvisibleAnnotations");
783
+ }
784
+ if(attrs != null)
785
+ {
786
+ attributeCount += attrs.getCount();
787
+ size += attrs.getSize(this, null, 0, -1, -1);
788
+ }
789
+ size += pool.length;
790
+ // allocates a byte vector of this size, in order to avoid unnecessary
791
+ // arraycopy operations in the ByteVector.enlarge() method
792
+ ByteVector out = new ByteVector(size);
793
+ out.putInt(0xCAFEBABE).putInt(version);
794
+ out.putShort(index).putByteArray(pool.data, 0, pool.length);
795
+ out.putShort(access).putShort(name).putShort(superName);
796
+ out.putShort(interfaceCount);
797
+ for(int i = 0; i < interfaceCount; ++i)
798
+ {
799
+ out.putShort(interfaces[i]);
800
+ }
801
+ out.putShort(nbFields);
802
+ fb = firstField;
803
+ while(fb != null)
804
+ {
805
+ fb.put(out);
806
+ fb = fb.next;
807
+ }
808
+ out.putShort(nbMethods);
809
+ mb = firstMethod;
810
+ while(mb != null)
811
+ {
812
+ mb.put(out);
813
+ mb = mb.next;
814
+ }
815
+ out.putShort(attributeCount);
816
+ if(signature != 0)
817
+ {
818
+ out.putShort(newUTF8("Signature")).putInt(2).putShort(signature);
819
+ }
820
+ if(sourceFile != 0)
821
+ {
822
+ out.putShort(newUTF8("SourceFile")).putInt(2).putShort(sourceFile);
823
+ }
824
+ if(sourceDebug != null)
825
+ {
826
+ int len = sourceDebug.length - 2;
827
+ out.putShort(newUTF8("SourceDebugExtension")).putInt(len);
828
+ out.putByteArray(sourceDebug.data, 2, len);
829
+ }
830
+ if(enclosingMethodOwner != 0)
831
+ {
832
+ out.putShort(newUTF8("EnclosingMethod")).putInt(4);
833
+ out.putShort(enclosingMethodOwner).putShort(enclosingMethod);
834
+ }
835
+ if((access & Opcodes.ACC_DEPRECATED) != 0)
836
+ {
837
+ out.putShort(newUTF8("Deprecated")).putInt(0);
838
+ }
839
+ if((access & Opcodes.ACC_SYNTHETIC) != 0
840
+ && (version & 0xffff) < Opcodes.V1_5)
841
+ {
842
+ out.putShort(newUTF8("Synthetic")).putInt(0);
843
+ }
844
+ if(innerClasses != null)
845
+ {
846
+ out.putShort(newUTF8("InnerClasses"));
847
+ out.putInt(innerClasses.length + 2).putShort(innerClassesCount);
848
+ out.putByteArray(innerClasses.data, 0, innerClasses.length);
849
+ }
850
+ if(anns != null)
851
+ {
852
+ out.putShort(newUTF8("RuntimeVisibleAnnotations"));
853
+ anns.put(out);
854
+ }
855
+ if(ianns != null)
856
+ {
857
+ out.putShort(newUTF8("RuntimeInvisibleAnnotations"));
858
+ ianns.put(out);
859
+ }
860
+ if(attrs != null)
861
+ {
862
+ attrs.put(this, null, 0, -1, -1, out);
863
+ }
864
+ if(invalidFrames)
865
+ {
866
+ ClassWriter cw = new ClassWriter(COMPUTE_FRAMES);
867
+ new ClassReader(out.data).accept(cw, ClassReader.SKIP_FRAMES);
868
+ return cw.toByteArray();
869
+ }
870
+ return out.data;
871
+ }
872
+
873
+ // ------------------------------------------------------------------------
874
+ // Utility methods: constant pool management
875
+ // ------------------------------------------------------------------------
876
+
877
+ /**
878
+ * Adds a number or string constant to the constant pool of the class being
879
+ * build. Does nothing if the constant pool already contains a similar item.
880
+ *
881
+ * @param cst the value of the constant to be added to the constant pool.
882
+ * This parameter must be an {@link Integer}, a {@link Float}, a
883
+ * {@link Long}, a {@link Double}, a {@link String} or a
884
+ * {@link Type}.
885
+ * @return a new or already existing constant item with the given value.
886
+ */
887
+ Item newConstItem(final Object cst){
888
+ if(cst instanceof Integer)
889
+ {
890
+ int val = ((Integer) cst).intValue();
891
+ return newInteger(val);
892
+ }
893
+ else if(cst instanceof Byte)
894
+ {
895
+ int val = ((Byte) cst).intValue();
896
+ return newInteger(val);
897
+ }
898
+ else if(cst instanceof Character)
899
+ {
900
+ int val = ((Character) cst).charValue();
901
+ return newInteger(val);
902
+ }
903
+ else if(cst instanceof Short)
904
+ {
905
+ int val = ((Short) cst).intValue();
906
+ return newInteger(val);
907
+ }
908
+ else if(cst instanceof Boolean)
909
+ {
910
+ int val = ((Boolean) cst).booleanValue() ? 1 : 0;
911
+ return newInteger(val);
912
+ }
913
+ else if(cst instanceof Float)
914
+ {
915
+ float val = ((Float) cst).floatValue();
916
+ return newFloat(val);
917
+ }
918
+ else if(cst instanceof Long)
919
+ {
920
+ long val = ((Long) cst).longValue();
921
+ return newLong(val);
922
+ }
923
+ else if(cst instanceof Double)
924
+ {
925
+ double val = ((Double) cst).doubleValue();
926
+ return newDouble(val);
927
+ }
928
+ else if(cst instanceof String)
929
+ {
930
+ return newString((String) cst);
931
+ }
932
+ else if(cst instanceof Type)
933
+ {
934
+ Type t = (Type) cst;
935
+ return newClassItem(t.getSort() == Type.OBJECT
936
+ ? t.getInternalName()
937
+ : t.getDescriptor());
938
+ }
939
+ else
940
+ {
941
+ throw new IllegalArgumentException("value " + cst);
942
+ }
943
+ }
944
+
945
+ /**
946
+ * Adds a number or string constant to the constant pool of the class being
947
+ * build. Does nothing if the constant pool already contains a similar item.
948
+ * <i>This method is intended for {@link Attribute} sub classes, and is
949
+ * normally not needed by class generators or adapters.</i>
950
+ *
951
+ * @param cst the value of the constant to be added to the constant pool.
952
+ * This parameter must be an {@link Integer}, a {@link Float}, a
953
+ * {@link Long}, a {@link Double} or a {@link String}.
954
+ * @return the index of a new or already existing constant item with the
955
+ * given value.
956
+ */
957
+ public int newConst(final Object cst){
958
+ return newConstItem(cst).index;
959
+ }
960
+
961
+ /**
962
+ * Adds an UTF8 string to the constant pool of the class being build. Does
963
+ * nothing if the constant pool already contains a similar item. <i>This
964
+ * method is intended for {@link Attribute} sub classes, and is normally not
965
+ * needed by class generators or adapters.</i>
966
+ *
967
+ * @param value the String value.
968
+ * @return the index of a new or already existing UTF8 item.
969
+ */
970
+ public int newUTF8(final String value){
971
+ key.set(UTF8, value, null, null);
972
+ Item result = get(key);
973
+ if(result == null)
974
+ {
975
+ pool.putByte(UTF8).putUTF8(value);
976
+ result = new Item(index++, key);
977
+ put(result);
978
+ }
979
+ return result.index;
980
+ }
981
+
982
+ /**
983
+ * Adds a class reference to the constant pool of the class being build.
984
+ * Does nothing if the constant pool already contains a similar item.
985
+ * <i>This method is intended for {@link Attribute} sub classes, and is
986
+ * normally not needed by class generators or adapters.</i>
987
+ *
988
+ * @param value the internal name of the class.
989
+ * @return a new or already existing class reference item.
990
+ */
991
+ Item newClassItem(final String value){
992
+ key2.set(CLASS, value, null, null);
993
+ Item result = get(key2);
994
+ if(result == null)
995
+ {
996
+ pool.put12(CLASS, newUTF8(value));
997
+ result = new Item(index++, key2);
998
+ put(result);
999
+ }
1000
+ return result;
1001
+ }
1002
+
1003
+ /**
1004
+ * Adds a class reference to the constant pool of the class being build.
1005
+ * Does nothing if the constant pool already contains a similar item.
1006
+ * <i>This method is intended for {@link Attribute} sub classes, and is
1007
+ * normally not needed by class generators or adapters.</i>
1008
+ *
1009
+ * @param value the internal name of the class.
1010
+ * @return the index of a new or already existing class reference item.
1011
+ */
1012
+ public int newClass(final String value){
1013
+ return newClassItem(value).index;
1014
+ }
1015
+
1016
+ /**
1017
+ * Adds a field reference to the constant pool of the class being build.
1018
+ * Does nothing if the constant pool already contains a similar item.
1019
+ *
1020
+ * @param owner the internal name of the field's owner class.
1021
+ * @param name the field's name.
1022
+ * @param desc the field's descriptor.
1023
+ * @return a new or already existing field reference item.
1024
+ */
1025
+ Item newFieldItem(final String owner, final String name, final String desc){
1026
+ key3.set(FIELD, owner, name, desc);
1027
+ Item result = get(key3);
1028
+ if(result == null)
1029
+ {
1030
+ put122(FIELD, newClass(owner), newNameType(name, desc));
1031
+ result = new Item(index++, key3);
1032
+ put(result);
1033
+ }
1034
+ return result;
1035
+ }
1036
+
1037
+ /**
1038
+ * Adds a field reference to the constant pool of the class being build.
1039
+ * Does nothing if the constant pool already contains a similar item.
1040
+ * <i>This method is intended for {@link Attribute} sub classes, and is
1041
+ * normally not needed by class generators or adapters.</i>
1042
+ *
1043
+ * @param owner the internal name of the field's owner class.
1044
+ * @param name the field's name.
1045
+ * @param desc the field's descriptor.
1046
+ * @return the index of a new or already existing field reference item.
1047
+ */
1048
+ public int newField(final String owner, final String name, final String desc){
1049
+ return newFieldItem(owner, name, desc).index;
1050
+ }
1051
+
1052
+ /**
1053
+ * Adds a method reference to the constant pool of the class being build.
1054
+ * Does nothing if the constant pool already contains a similar item.
1055
+ *
1056
+ * @param owner the internal name of the method's owner class.
1057
+ * @param name the method's name.
1058
+ * @param desc the method's descriptor.
1059
+ * @param itf <tt>true</tt> if <tt>owner</tt> is an interface.
1060
+ * @return a new or already existing method reference item.
1061
+ */
1062
+ Item newMethodItem(
1063
+ final String owner,
1064
+ final String name,
1065
+ final String desc,
1066
+ final boolean itf){
1067
+ int type = itf ? IMETH : METH;
1068
+ key3.set(type, owner, name, desc);
1069
+ Item result = get(key3);
1070
+ if(result == null)
1071
+ {
1072
+ put122(type, newClass(owner), newNameType(name, desc));
1073
+ result = new Item(index++, key3);
1074
+ put(result);
1075
+ }
1076
+ return result;
1077
+ }
1078
+
1079
+ /**
1080
+ * Adds a method reference to the constant pool of the class being build.
1081
+ * Does nothing if the constant pool already contains a similar item.
1082
+ * <i>This method is intended for {@link Attribute} sub classes, and is
1083
+ * normally not needed by class generators or adapters.</i>
1084
+ *
1085
+ * @param owner the internal name of the method's owner class.
1086
+ * @param name the method's name.
1087
+ * @param desc the method's descriptor.
1088
+ * @param itf <tt>true</tt> if <tt>owner</tt> is an interface.
1089
+ * @return the index of a new or already existing method reference item.
1090
+ */
1091
+ public int newMethod(
1092
+ final String owner,
1093
+ final String name,
1094
+ final String desc,
1095
+ final boolean itf){
1096
+ return newMethodItem(owner, name, desc, itf).index;
1097
+ }
1098
+
1099
+ /**
1100
+ * Adds an integer to the constant pool of the class being build. Does
1101
+ * nothing if the constant pool already contains a similar item.
1102
+ *
1103
+ * @param value the int value.
1104
+ * @return a new or already existing int item.
1105
+ */
1106
+ Item newInteger(final int value){
1107
+ key.set(value);
1108
+ Item result = get(key);
1109
+ if(result == null)
1110
+ {
1111
+ pool.putByte(INT).putInt(value);
1112
+ result = new Item(index++, key);
1113
+ put(result);
1114
+ }
1115
+ return result;
1116
+ }
1117
+
1118
+ /**
1119
+ * Adds a float to the constant pool of the class being build. Does nothing
1120
+ * if the constant pool already contains a similar item.
1121
+ *
1122
+ * @param value the float value.
1123
+ * @return a new or already existing float item.
1124
+ */
1125
+ Item newFloat(final float value){
1126
+ key.set(value);
1127
+ Item result = get(key);
1128
+ if(result == null)
1129
+ {
1130
+ pool.putByte(FLOAT).putInt(key.intVal);
1131
+ result = new Item(index++, key);
1132
+ put(result);
1133
+ }
1134
+ return result;
1135
+ }
1136
+
1137
+ /**
1138
+ * Adds a long to the constant pool of the class being build. Does nothing
1139
+ * if the constant pool already contains a similar item.
1140
+ *
1141
+ * @param value the long value.
1142
+ * @return a new or already existing long item.
1143
+ */
1144
+ Item newLong(final long value){
1145
+ key.set(value);
1146
+ Item result = get(key);
1147
+ if(result == null)
1148
+ {
1149
+ pool.putByte(LONG).putLong(value);
1150
+ result = new Item(index, key);
1151
+ put(result);
1152
+ index += 2;
1153
+ }
1154
+ return result;
1155
+ }
1156
+
1157
+ /**
1158
+ * Adds a double to the constant pool of the class being build. Does nothing
1159
+ * if the constant pool already contains a similar item.
1160
+ *
1161
+ * @param value the double value.
1162
+ * @return a new or already existing double item.
1163
+ */
1164
+ Item newDouble(final double value){
1165
+ key.set(value);
1166
+ Item result = get(key);
1167
+ if(result == null)
1168
+ {
1169
+ pool.putByte(DOUBLE).putLong(key.longVal);
1170
+ result = new Item(index, key);
1171
+ put(result);
1172
+ index += 2;
1173
+ }
1174
+ return result;
1175
+ }
1176
+
1177
+ /**
1178
+ * Adds a string to the constant pool of the class being build. Does nothing
1179
+ * if the constant pool already contains a similar item.
1180
+ *
1181
+ * @param value the String value.
1182
+ * @return a new or already existing string item.
1183
+ */
1184
+ private Item newString(final String value){
1185
+ key2.set(STR, value, null, null);
1186
+ Item result = get(key2);
1187
+ if(result == null)
1188
+ {
1189
+ pool.put12(STR, newUTF8(value));
1190
+ result = new Item(index++, key2);
1191
+ put(result);
1192
+ }
1193
+ return result;
1194
+ }
1195
+
1196
+ /**
1197
+ * Adds a name and type to the constant pool of the class being build. Does
1198
+ * nothing if the constant pool already contains a similar item. <i>This
1199
+ * method is intended for {@link Attribute} sub classes, and is normally not
1200
+ * needed by class generators or adapters.</i>
1201
+ *
1202
+ * @param name a name.
1203
+ * @param desc a type descriptor.
1204
+ * @return the index of a new or already existing name and type item.
1205
+ */
1206
+ public int newNameType(final String name, final String desc){
1207
+ key2.set(NAME_TYPE, name, desc, null);
1208
+ Item result = get(key2);
1209
+ if(result == null)
1210
+ {
1211
+ put122(NAME_TYPE, newUTF8(name), newUTF8(desc));
1212
+ result = new Item(index++, key2);
1213
+ put(result);
1214
+ }
1215
+ return result.index;
1216
+ }
1217
+
1218
+ /**
1219
+ * Adds the given internal name to {@link #typeTable} and returns its index.
1220
+ * Does nothing if the type table already contains this internal name.
1221
+ *
1222
+ * @param type the internal name to be added to the type table.
1223
+ * @return the index of this internal name in the type table.
1224
+ */
1225
+ int addType(final String type){
1226
+ key.set(TYPE_NORMAL, type, null, null);
1227
+ Item result = get(key);
1228
+ if(result == null)
1229
+ {
1230
+ result = addType(key);
1231
+ }
1232
+ return result.index;
1233
+ }
1234
+
1235
+ /**
1236
+ * Adds the given "uninitialized" type to {@link #typeTable} and returns its
1237
+ * index. This method is used for UNINITIALIZED types, made of an internal
1238
+ * name and a bytecode offset.
1239
+ *
1240
+ * @param type the internal name to be added to the type table.
1241
+ * @param offset the bytecode offset of the NEW instruction that created
1242
+ * this UNINITIALIZED type value.
1243
+ * @return the index of this internal name in the type table.
1244
+ */
1245
+ int addUninitializedType(final String type, final int offset){
1246
+ key.type = TYPE_UNINIT;
1247
+ key.intVal = offset;
1248
+ key.strVal1 = type;
1249
+ key.hashCode = 0x7FFFFFFF & (TYPE_UNINIT + type.hashCode() + offset);
1250
+ Item result = get(key);
1251
+ if(result == null)
1252
+ {
1253
+ result = addType(key);
1254
+ }
1255
+ return result.index;
1256
+ }
1257
+
1258
+ /**
1259
+ * Adds the given Item to {@link #typeTable}.
1260
+ *
1261
+ * @param item the value to be added to the type table.
1262
+ * @return the added Item, which a new Item instance with the same value as
1263
+ * the given Item.
1264
+ */
1265
+ private Item addType(final Item item){
1266
+ ++typeCount;
1267
+ Item result = new Item(typeCount, key);
1268
+ put(result);
1269
+ if(typeTable == null)
1270
+ {
1271
+ typeTable = new Item[16];
1272
+ }
1273
+ if(typeCount == typeTable.length)
1274
+ {
1275
+ Item[] newTable = new Item[2 * typeTable.length];
1276
+ System.arraycopy(typeTable, 0, newTable, 0, typeTable.length);
1277
+ typeTable = newTable;
1278
+ }
1279
+ typeTable[typeCount] = result;
1280
+ return result;
1281
+ }
1282
+
1283
+ /**
1284
+ * Returns the index of the common super type of the two given types. This
1285
+ * method calls {@link #getCommonSuperClass} and caches the result in the
1286
+ * {@link #items} hash table to speedup future calls with the same
1287
+ * parameters.
1288
+ *
1289
+ * @param type1 index of an internal name in {@link #typeTable}.
1290
+ * @param type2 index of an internal name in {@link #typeTable}.
1291
+ * @return the index of the common super type of the two given types.
1292
+ */
1293
+ int getMergedType(final int type1, final int type2){
1294
+ key2.type = TYPE_MERGED;
1295
+ key2.longVal = type1 | (((long) type2) << 32);
1296
+ key2.hashCode = 0x7FFFFFFF & (TYPE_MERGED + type1 + type2);
1297
+ Item result = get(key2);
1298
+ if(result == null)
1299
+ {
1300
+ String t = typeTable[type1].strVal1;
1301
+ String u = typeTable[type2].strVal1;
1302
+ key2.intVal = addType(getCommonSuperClass(t, u));
1303
+ result = new Item((short) 0, key2);
1304
+ put(result);
1305
+ }
1306
+ return result.intVal;
1307
+ }
1308
+
1309
+ /**
1310
+ * Returns the common super type of the two given types. The default
1311
+ * implementation of this method <i>loads<i> the two given classes and uses
1312
+ * the java.lang.Class methods to find the common super class. It can be
1313
+ * overriden to compute this common super type in other ways, in particular
1314
+ * without actually loading any class, or to take into account the class
1315
+ * that is currently being generated by this ClassWriter, which can of
1316
+ * course not be loaded since it is under construction.
1317
+ *
1318
+ * @param type1 the internal name of a class.
1319
+ * @param type2 the internal name of another class.
1320
+ * @return the internal name of the common super class of the two given
1321
+ * classes.
1322
+ */
1323
+ protected String getCommonSuperClass(final String type1, final String type2){
1324
+ Class c, d;
1325
+ try
1326
+ {
1327
+ c = Class.forName(type1.replace('/', '.'));
1328
+ d = Class.forName(type2.replace('/', '.'));
1329
+ }
1330
+ catch(ClassNotFoundException e)
1331
+ {
1332
+ throw new RuntimeException(e);
1333
+ }
1334
+ if(c.isAssignableFrom(d))
1335
+ {
1336
+ return type1;
1337
+ }
1338
+ if(d.isAssignableFrom(c))
1339
+ {
1340
+ return type2;
1341
+ }
1342
+ if(c.isInterface() || d.isInterface())
1343
+ {
1344
+ return "java/lang/Object";
1345
+ }
1346
+ else
1347
+ {
1348
+ do
1349
+ {
1350
+ c = c.getSuperclass();
1351
+ } while(!c.isAssignableFrom(d));
1352
+ return c.getName().replace('.', '/');
1353
+ }
1354
+ }
1355
+
1356
+ /**
1357
+ * Returns the constant pool's hash table item which is equal to the given
1358
+ * item.
1359
+ *
1360
+ * @param key a constant pool item.
1361
+ * @return the constant pool's hash table item which is equal to the given
1362
+ * item, or <tt>null</tt> if there is no such item.
1363
+ */
1364
+ private Item get(final Item key){
1365
+ Item i = items[key.hashCode % items.length];
1366
+ while(i != null && !key.isEqualTo(i))
1367
+ {
1368
+ i = i.next;
1369
+ }
1370
+ return i;
1371
+ }
1372
+
1373
+ /**
1374
+ * Puts the given item in the constant pool's hash table. The hash table
1375
+ * <i>must</i> not already contains this item.
1376
+ *
1377
+ * @param i the item to be added to the constant pool's hash table.
1378
+ */
1379
+ private void put(final Item i){
1380
+ if(index > threshold)
1381
+ {
1382
+ int ll = items.length;
1383
+ int nl = ll * 2 + 1;
1384
+ Item[] newItems = new Item[nl];
1385
+ for(int l = ll - 1; l >= 0; --l)
1386
+ {
1387
+ Item j = items[l];
1388
+ while(j != null)
1389
+ {
1390
+ int index = j.hashCode % newItems.length;
1391
+ Item k = j.next;
1392
+ j.next = newItems[index];
1393
+ newItems[index] = j;
1394
+ j = k;
1395
+ }
1396
+ }
1397
+ items = newItems;
1398
+ threshold = (int) (nl * 0.75);
1399
+ }
1400
+ int index = i.hashCode % items.length;
1401
+ i.next = items[index];
1402
+ items[index] = i;
1403
+ }
1404
+
1405
+ /**
1406
+ * Puts one byte and two shorts into the constant pool.
1407
+ *
1408
+ * @param b a byte.
1409
+ * @param s1 a short.
1410
+ * @param s2 another short.
1411
+ */
1412
+ private void put122(final int b, final int s1, final int s2){
1413
+ pool.put12(b, s1).putShort(s2);
1414
+ }
1415
+ }