Trapped-Backend.deploy.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675
  1. smalltalk.addPackage('Trapped-Backend', {});
  2. smalltalk.addClass('EavModel', smalltalk.Object, ['getBlock', 'putBlock'], 'Trapped-Backend');
  3. smalltalk.addMethod(
  4. "_getBlock_",
  5. smalltalk.method({
  6. selector: "getBlock:",
  7. fn: function (aBlock){
  8. var self=this;
  9. self["@getBlock"]=aBlock;
  10. return self}
  11. }),
  12. smalltalk.EavModel);
  13. smalltalk.addMethod(
  14. "_initialize",
  15. smalltalk.method({
  16. selector: "initialize",
  17. fn: function (){
  18. var self=this;
  19. smalltalk.send(self,"_initialize",[],smalltalk.Object);
  20. self["@getBlock"]=(function(){
  21. return smalltalk.send(self,"_error_",["No getter block."]);
  22. });
  23. self["@putBlock"]=(function(){
  24. return smalltalk.send(self,"_error_",["No putter block."]);
  25. });
  26. return self}
  27. }),
  28. smalltalk.EavModel);
  29. smalltalk.addMethod(
  30. "_on_",
  31. smalltalk.method({
  32. selector: "on:",
  33. fn: function (anObject){
  34. var self=this;
  35. var $1;
  36. $1=smalltalk.send(self["@getBlock"],"_value_",[anObject]);
  37. return $1;
  38. }
  39. }),
  40. smalltalk.EavModel);
  41. smalltalk.addMethod(
  42. "_on_put_",
  43. smalltalk.method({
  44. selector: "on:put:",
  45. fn: function (anObject,anObject2){
  46. var self=this;
  47. var $1;
  48. $1=smalltalk.send(self["@putBlock"],"_value_value_",[anObject,anObject2]);
  49. return $1;
  50. }
  51. }),
  52. smalltalk.EavModel);
  53. smalltalk.addMethod(
  54. "_putBlock_",
  55. smalltalk.method({
  56. selector: "putBlock:",
  57. fn: function (aBlock){
  58. var self=this;
  59. self["@putBlock"]=aBlock;
  60. return self}
  61. }),
  62. smalltalk.EavModel);
  63. smalltalk.addClass('Isolator', smalltalk.Object, ['root'], 'Trapped-Backend');
  64. smalltalk.addMethod(
  65. "_model_modify_",
  66. smalltalk.method({
  67. selector: "model:modify:",
  68. fn: function (anEavModel,aBlock){
  69. var self=this;
  70. var newValue;
  71. newValue=smalltalk.send(aBlock,"_value_",[smalltalk.send(anEavModel,"_on_",[self])]);
  72. smalltalk.send(anEavModel,"_on_put_",[self,smalltalk.send(newValue,"_deepCopy",[])]);
  73. return self}
  74. }),
  75. smalltalk.Isolator);
  76. smalltalk.addMethod(
  77. "_model_read_",
  78. smalltalk.method({
  79. selector: "model:read:",
  80. fn: function (anEavModel,aBlock){
  81. var self=this;
  82. smalltalk.send(aBlock,"_value_",[smalltalk.send(smalltalk.send(anEavModel,"_on_",[self]),"_deepCopy",[])]);
  83. return self}
  84. }),
  85. smalltalk.Isolator);
  86. smalltalk.addMethod(
  87. "_root",
  88. smalltalk.method({
  89. selector: "root",
  90. fn: function (){
  91. var self=this;
  92. return self["@root"];
  93. }
  94. }),
  95. smalltalk.Isolator);
  96. smalltalk.addMethod(
  97. "_root_",
  98. smalltalk.method({
  99. selector: "root:",
  100. fn: function (anObject){
  101. var self=this;
  102. self["@root"]=anObject;
  103. return self}
  104. }),
  105. smalltalk.Isolator);
  106. smalltalk.addMethod(
  107. "_on_",
  108. smalltalk.method({
  109. selector: "on:",
  110. fn: function (anObject){
  111. var self=this;
  112. var $1;
  113. $1=smalltalk.send(smalltalk.send(self,"_new",[]),"_root_",[anObject]);
  114. return $1;
  115. }
  116. }),
  117. smalltalk.Isolator.klass);
  118. smalltalk.addClass('KeyedPubSubBase', smalltalk.Object, ['factory'], 'Trapped-Backend');
  119. smalltalk.addMethod(
  120. "_changed_",
  121. smalltalk.method({
  122. selector: "changed:",
  123. fn: function (key){
  124. var self=this;
  125. var $1;
  126. var needsToRun;
  127. needsToRun=false;
  128. smalltalk.send(self,"_do_",[(function(each){
  129. $1=smalltalk.send(each,"_accepts_",[key]);
  130. if(smalltalk.assert($1)){
  131. smalltalk.send(each,"_flag",[]);
  132. needsToRun=true;
  133. return needsToRun;
  134. };
  135. })]);
  136. smalltalk.send(self,"_dirty_",[needsToRun]);
  137. return self}
  138. }),
  139. smalltalk.KeyedPubSubBase);
  140. smalltalk.addMethod(
  141. "_dirty_",
  142. smalltalk.method({
  143. selector: "dirty:",
  144. fn: function (aBoolean){
  145. var self=this;
  146. if(smalltalk.assert(aBoolean)){
  147. smalltalk.send((function(){
  148. return smalltalk.send(self,"_run",[]);
  149. }),"_fork",[]);
  150. };
  151. return self}
  152. }),
  153. smalltalk.KeyedPubSubBase);
  154. smalltalk.addMethod(
  155. "_on_hook_",
  156. smalltalk.method({
  157. selector: "on:hook:",
  158. fn: function (key,aBlock){
  159. var self=this;
  160. smalltalk.send(self,"_add_",[smalltalk.send(smalltalk.send(self["@factory"],"_value_value_",[key,aBlock]),"_flag",[])]);
  161. smalltalk.send(self,"_dirty_",[true]);
  162. return self}
  163. }),
  164. smalltalk.KeyedPubSubBase);
  165. smalltalk.addMethod(
  166. "_run",
  167. smalltalk.method({
  168. selector: "run",
  169. fn: function (){
  170. var self=this;
  171. var $1,$2;
  172. var needsClean;
  173. needsClean=false;
  174. smalltalk.send(self,"_do_",[(function(each){
  175. $1=smalltalk.send(each,"_isFlagged",[]);
  176. if(smalltalk.assert($1)){
  177. smalltalk.send(each,"_run",[]);
  178. $2=smalltalk.send(each,"_isEnabled",[]);
  179. if(! smalltalk.assert($2)){
  180. needsClean=true;
  181. return needsClean;
  182. };
  183. };
  184. })]);
  185. if(smalltalk.assert(needsClean)){
  186. smalltalk.send(self,"_clean",[]);
  187. };
  188. return self}
  189. }),
  190. smalltalk.KeyedPubSubBase);
  191. smalltalk.addMethod(
  192. "_subscriptionFactory_",
  193. smalltalk.method({
  194. selector: "subscriptionFactory:",
  195. fn: function (aBlock){
  196. var self=this;
  197. self["@factory"]=aBlock;
  198. return self}
  199. }),
  200. smalltalk.KeyedPubSubBase);
  201. smalltalk.addClass('SimpleKeyedPubSub', smalltalk.KeyedPubSubBase, ['queue'], 'Trapped-Backend');
  202. smalltalk.addMethod(
  203. "_add_",
  204. smalltalk.method({
  205. selector: "add:",
  206. fn: function (aSubscription){
  207. var self=this;
  208. smalltalk.send(self["@queue"],"_add_",[aSubscription]);
  209. return self}
  210. }),
  211. smalltalk.SimpleKeyedPubSub);
  212. smalltalk.addMethod(
  213. "_clean",
  214. smalltalk.method({
  215. selector: "clean",
  216. fn: function (){
  217. var self=this;
  218. self["@queue"]=smalltalk.send(self["@queue"],"_select_",[(function(each){
  219. return smalltalk.send(each,"_isEnabled",[]);
  220. })]);
  221. return self}
  222. }),
  223. smalltalk.SimpleKeyedPubSub);
  224. smalltalk.addMethod(
  225. "_do_",
  226. smalltalk.method({
  227. selector: "do:",
  228. fn: function (aBlock){
  229. var self=this;
  230. smalltalk.send(self["@queue"],"_do_",[aBlock]);
  231. return self}
  232. }),
  233. smalltalk.SimpleKeyedPubSub);
  234. smalltalk.addMethod(
  235. "_initialize",
  236. smalltalk.method({
  237. selector: "initialize",
  238. fn: function (){
  239. var self=this;
  240. smalltalk.send(self,"_initialize",[],smalltalk.KeyedPubSubBase);
  241. self["@queue"]=smalltalk.send((smalltalk.OrderedCollection || OrderedCollection),"_new",[]);
  242. return self}
  243. }),
  244. smalltalk.SimpleKeyedPubSub);
  245. smalltalk.addClass('KeyedPubSubUnsubscribe', smalltalk.Error, [], 'Trapped-Backend');
  246. smalltalk.addClass('KeyedSubscriptionBase', smalltalk.Object, ['key', 'actionBlock', 'flagged'], 'Trapped-Backend');
  247. smalltalk.addMethod(
  248. "_accepts_",
  249. smalltalk.method({
  250. selector: "accepts:",
  251. fn: function (aKey){
  252. var self=this;
  253. smalltalk.send(self,"_subclassResponsibility",[]);
  254. return self}
  255. }),
  256. smalltalk.KeyedSubscriptionBase);
  257. smalltalk.addMethod(
  258. "_flag",
  259. smalltalk.method({
  260. selector: "flag",
  261. fn: function (){
  262. var self=this;
  263. self["@flagged"]=true;
  264. return self}
  265. }),
  266. smalltalk.KeyedSubscriptionBase);
  267. smalltalk.addMethod(
  268. "_initialize",
  269. smalltalk.method({
  270. selector: "initialize",
  271. fn: function (){
  272. var self=this;
  273. smalltalk.send(self,"_initialize",[],smalltalk.Object);
  274. self["@key"]=nil;
  275. self["@actionBlock"]=nil;
  276. self["@flagged"]=false;
  277. return self}
  278. }),
  279. smalltalk.KeyedSubscriptionBase);
  280. smalltalk.addMethod(
  281. "_isEnabled",
  282. smalltalk.method({
  283. selector: "isEnabled",
  284. fn: function (){
  285. var self=this;
  286. var $1;
  287. $1=smalltalk.send(self["@actionBlock"],"_notNil",[]);
  288. return $1;
  289. }
  290. }),
  291. smalltalk.KeyedSubscriptionBase);
  292. smalltalk.addMethod(
  293. "_isFlagged",
  294. smalltalk.method({
  295. selector: "isFlagged",
  296. fn: function (){
  297. var self=this;
  298. return self["@flagged"];
  299. }
  300. }),
  301. smalltalk.KeyedSubscriptionBase);
  302. smalltalk.addMethod(
  303. "_key_block_",
  304. smalltalk.method({
  305. selector: "key:block:",
  306. fn: function (anObject,aBlock){
  307. var self=this;
  308. self["@key"]=anObject;
  309. self["@actionBlock"]=aBlock;
  310. return self}
  311. }),
  312. smalltalk.KeyedSubscriptionBase);
  313. smalltalk.addMethod(
  314. "_run",
  315. smalltalk.method({
  316. selector: "run",
  317. fn: function (){
  318. var self=this;
  319. smalltalk.send((function(){
  320. return smalltalk.send((function(){
  321. return smalltalk.send(self["@actionBlock"],"_value",[]);
  322. }),"_ensure_",[(function(){
  323. self["@flagged"]=false;
  324. return self["@flagged"];
  325. })]);
  326. }),"_on_do_",[(smalltalk.KeyedPubSubUnsubscribe || KeyedPubSubUnsubscribe),(function(){
  327. self["@actionBlock"]=nil;
  328. return self["@actionBlock"];
  329. })]);
  330. return self}
  331. }),
  332. smalltalk.KeyedSubscriptionBase);
  333. smalltalk.addClass('ListKeyedSubscription', smalltalk.KeyedSubscriptionBase, [], 'Trapped-Backend');
  334. smalltalk.addMethod(
  335. "_accepts_",
  336. smalltalk.method({
  337. selector: "accepts:",
  338. fn: function (aKey){
  339. var self=this;
  340. var $1;
  341. $1=smalltalk.send(smalltalk.send(smalltalk.send(aKey,"_size",[]),"__lt_eq",[smalltalk.send(self["@key"],"_size",[])]),"_and_",[(function(){
  342. return smalltalk.send(aKey,"__eq",[smalltalk.send(self["@key"],"_copyFrom_to_",[(1),smalltalk.send(aKey,"_size",[])])]);
  343. })]);
  344. return $1;
  345. }
  346. }),
  347. smalltalk.ListKeyedSubscription);
  348. smalltalk.addClass('ListKeyedEntity', smalltalk.Object, ['dispatcher', 'payload'], 'Trapped-Backend');
  349. smalltalk.addMethod(
  350. "_dispatcher",
  351. smalltalk.method({
  352. selector: "dispatcher",
  353. fn: function (){
  354. var self=this;
  355. return self["@dispatcher"];
  356. }
  357. }),
  358. smalltalk.ListKeyedEntity);
  359. smalltalk.addMethod(
  360. "_dispatcher_",
  361. smalltalk.method({
  362. selector: "dispatcher:",
  363. fn: function (aDispatcher){
  364. var self=this;
  365. var $1,$2,$3;
  366. smalltalk.send(aDispatcher,"_subscriptionFactory_",[(function(key,block){
  367. $1=smalltalk.send((smalltalk.ListKeyedSubscription || ListKeyedSubscription),"_new",[]);
  368. smalltalk.send($1,"_key_block_",[key,block]);
  369. $2=smalltalk.send($1,"_yourself",[]);
  370. return $2;
  371. })]);
  372. $3=smalltalk.send(aDispatcher,"_yourself",[]);
  373. self["@dispatcher"]=$3;
  374. return self}
  375. }),
  376. smalltalk.ListKeyedEntity);
  377. smalltalk.addMethod(
  378. "_model_",
  379. smalltalk.method({
  380. selector: "model:",
  381. fn: function (anObject){
  382. var self=this;
  383. self["@payload"]=anObject;
  384. smalltalk.send(smalltalk.send(self,"_dispatcher",[]),"_changed_",[[]]);
  385. return self}
  386. }),
  387. smalltalk.ListKeyedEntity);
  388. smalltalk.addMethod(
  389. "_watch_do_",
  390. smalltalk.method({
  391. selector: "watch:do:",
  392. fn: function (path,aBlock){
  393. var self=this;
  394. smalltalk.send(smalltalk.send(self,"_dispatcher",[]),"_on_hook_",[path,(function(){
  395. return smalltalk.send(self,"_read_do_",[path,aBlock]);
  396. })]);
  397. return self}
  398. }),
  399. smalltalk.ListKeyedEntity);
  400. smalltalk.addClass('ListKeyedDirectEntity', smalltalk.ListKeyedEntity, [], 'Trapped-Backend');
  401. smalltalk.addMethod(
  402. "_modify_do_",
  403. smalltalk.method({
  404. selector: "modify:do:",
  405. fn: function (path,aBlock){
  406. var self=this;
  407. var newValue;
  408. var eavModel;
  409. eavModel=smalltalk.send(path,"_asEavModel",[]);
  410. newValue=smalltalk.send(aBlock,"_value_",[smalltalk.send(eavModel,"_on_",[self["@payload"]])]);
  411. smalltalk.send((function(){
  412. return smalltalk.send(eavModel,"_on_put_",[self["@payload"],newValue]);
  413. }),"_ensure_",[(function(){
  414. return smalltalk.send(smalltalk.send(self,"_dispatcher",[]),"_changed_",[path]);
  415. })]);
  416. return self}
  417. }),
  418. smalltalk.ListKeyedDirectEntity);
  419. smalltalk.addMethod(
  420. "_read_do_",
  421. smalltalk.method({
  422. selector: "read:do:",
  423. fn: function (path,aBlock){
  424. var self=this;
  425. var eavModel;
  426. eavModel=smalltalk.send(path,"_asEavModel",[]);
  427. smalltalk.send(aBlock,"_value_",[smalltalk.send(eavModel,"_on_",[self["@payload"]])]);
  428. return self}
  429. }),
  430. smalltalk.ListKeyedDirectEntity);
  431. smalltalk.addClass('ListKeyedIsolatedEntity', smalltalk.ListKeyedEntity, [], 'Trapped-Backend');
  432. smalltalk.addMethod(
  433. "_model_",
  434. smalltalk.method({
  435. selector: "model:",
  436. fn: function (anObject){
  437. var self=this;
  438. smalltalk.send(self,"_model_",[smalltalk.send((smalltalk.Isolator || Isolator),"_on_",[anObject])],smalltalk.ListKeyedEntity);
  439. return self}
  440. }),
  441. smalltalk.ListKeyedIsolatedEntity);
  442. smalltalk.addMethod(
  443. "_modify_do_",
  444. smalltalk.method({
  445. selector: "modify:do:",
  446. fn: function (path,aBlock){
  447. var self=this;
  448. var eavModel;
  449. eavModel=smalltalk.send(smalltalk.send([smalltalk.symbolFor("root")],"__comma",[path]),"_asEavModel",[]);
  450. smalltalk.send((function(){
  451. return smalltalk.send(self["@payload"],"_model_modify_",[eavModel,aBlock]);
  452. }),"_ensure_",[(function(){
  453. return smalltalk.send(smalltalk.send(self,"_dispatcher",[]),"_changed_",[path]);
  454. })]);
  455. return self}
  456. }),
  457. smalltalk.ListKeyedIsolatedEntity);
  458. smalltalk.addMethod(
  459. "_read_do_",
  460. smalltalk.method({
  461. selector: "read:do:",
  462. fn: function (path,aBlock){
  463. var self=this;
  464. var eavModel;
  465. eavModel=smalltalk.send(smalltalk.send([smalltalk.symbolFor("root")],"__comma",[path]),"_asEavModel",[]);
  466. smalltalk.send(self["@payload"],"_model_read_",[eavModel,aBlock]);
  467. return self}
  468. }),
  469. smalltalk.ListKeyedIsolatedEntity);
  470. smalltalk.addMethod(
  471. "_reverseTrapAt_",
  472. smalltalk.method({
  473. selector: "reverseTrapAt:",
  474. fn: function (anObject){
  475. var self=this;
  476. return nil;
  477. }
  478. }),
  479. smalltalk.Object);
  480. smalltalk.addMethod(
  481. "_reverseTrapAt_put_",
  482. smalltalk.method({
  483. selector: "reverseTrapAt:put:",
  484. fn: function (anObject,value){
  485. var self=this;
  486. smalltalk.send(self,"_error_",[smalltalk.send(smalltalk.send("Trapped cannot put at ","__comma",[smalltalk.send(smalltalk.send(self,"_class",[]),"_name",[])]),"__comma",[" type key."])]);
  487. return self}
  488. }),
  489. smalltalk.Object);
  490. smalltalk.addMethod(
  491. "_asEavModel",
  492. smalltalk.method({
  493. selector: "asEavModel",
  494. fn: function (){
  495. var self=this;
  496. var $1;
  497. var model;
  498. model=smalltalk.send((smalltalk.EavModel || EavModel),"_new",[]);
  499. smalltalk.send(model,"_getBlock_",[(function(anObject){
  500. return smalltalk.send(self,"_inject_into_",[anObject,(function(soFar,segment){
  501. if(($receiver = soFar) == nil || $receiver == undefined){
  502. return soFar;
  503. } else {
  504. return smalltalk.send(segment,"_reverseTrapAt_",[soFar]);
  505. };
  506. })]);
  507. })]);
  508. $1=smalltalk.send(self,"_isEmpty",[]);
  509. if(! smalltalk.assert($1)){
  510. smalltalk.send(model,"_putBlock_",[(function(anObject,value){
  511. var penultimate;
  512. penultimate=smalltalk.send(smalltalk.send(self,"_allButLast",[]),"_inject_into_",[anObject,(function(soFar,segment){
  513. if(($receiver = soFar) == nil || $receiver == undefined){
  514. return soFar;
  515. } else {
  516. return smalltalk.send(segment,"_reverseTrapAt_",[soFar]);
  517. };
  518. })]);
  519. penultimate;
  520. return smalltalk.send(smalltalk.send(self,"_last",[]),"_reverseTrapAt_put_",[penultimate,value]);
  521. })]);
  522. };
  523. return model;
  524. }
  525. }),
  526. smalltalk.SequenceableCollection);
  527. smalltalk.addMethod(
  528. "_reverseTrapAt_",
  529. smalltalk.method({
  530. selector: "reverseTrapAt:",
  531. fn: function (anObject){
  532. var self=this;
  533. var $1;
  534. $1=smalltalk.send(anObject,"_at_ifAbsent_",[self,(function(){
  535. return nil;
  536. })]);
  537. return $1;
  538. }
  539. }),
  540. smalltalk.String);
  541. smalltalk.addMethod(
  542. "_reverseTrapAt_put_",
  543. smalltalk.method({
  544. selector: "reverseTrapAt:put:",
  545. fn: function (anObject,value){
  546. var self=this;
  547. var $1;
  548. $1=smalltalk.send(anObject,"_at_put_",[self,value]);
  549. return $1;
  550. }
  551. }),
  552. smalltalk.String);
  553. smalltalk.addMethod(
  554. "_reverseTrapAt_",
  555. smalltalk.method({
  556. selector: "reverseTrapAt:",
  557. fn: function (anObject){
  558. var self=this;
  559. var $1;
  560. var $early={};
  561. try {
  562. $1=smalltalk.send((function(){
  563. return smalltalk.send(anObject,"_perform_",[self]);
  564. }),"_on_do_",[(smalltalk.MessageNotUnderstood || MessageNotUnderstood),(function(){
  565. throw $early=[nil];
  566. })]);
  567. return $1;
  568. }
  569. catch(e) {if(e===$early)return e[0]; throw e}
  570. }
  571. }),
  572. smalltalk.Symbol);
  573. smalltalk.addMethod(
  574. "_reverseTrapAt_put_",
  575. smalltalk.method({
  576. selector: "reverseTrapAt:put:",
  577. fn: function (anObject,value){
  578. var self=this;
  579. var $1;
  580. $1=smalltalk.send(anObject,"_perform_withArguments_",[smalltalk.send(smalltalk.send(self,"__comma",[":"]),"_asSymbol",[]),[value]]);
  581. return $1;
  582. }
  583. }),
  584. smalltalk.Symbol);
  585. smalltalk.addMethod(
  586. "_reverseTrapAt_",
  587. smalltalk.method({
  588. selector: "reverseTrapAt:",
  589. fn: function (anObject){
  590. var self=this;
  591. var $1;
  592. $1=smalltalk.send(anObject,"_at_ifAbsent_",[self,(function(){
  593. return nil;
  594. })]);
  595. return $1;
  596. }
  597. }),
  598. smalltalk.Number);
  599. smalltalk.addMethod(
  600. "_reverseTrapAt_put_",
  601. smalltalk.method({
  602. selector: "reverseTrapAt:put:",
  603. fn: function (anObject,value){
  604. var self=this;
  605. var $1;
  606. $1=smalltalk.send(anObject,"_at_put_",[self,value]);
  607. return $1;
  608. }
  609. }),
  610. smalltalk.Number);