The file to generate given testlib.nim would be `Testlib.st`. This is the class old "chunk format" in which the content is separated by `!` marks, in a rather oddish way, but anyway. Let's go through it: ``` 'From Nim on 18 February 2015 at 11:15:50 pm'! ``` Above first chunk is just a String literal with a timestamp, that chunk can be omitted. ``` ExternalLibrary subclass: #Testlib instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'Nim'! ``` Then follows the class declaration. Obviously we need to make sure it says `Testlib` and the category will equal the package in Squeak that this class will end up in. For now, let's hard code it to `Nim`. Then we can see that there is a "whitespace only" chunk, since the next part starts with `!`. ``` !Testlib class methodsFor: 'primitives' stamp: 'gk 11/2/2014 13:05'! ``` This chunk says here follows methods for "Testlib class" (=class side) in method category "primitives" (we can hardcode it to that). ``` ffiAdd: a with: b "self ffiAdd: 13 with: 29" ^self externalCallFailed! ffiConcat: a with: b "self ffiConcat: 'a' with: 'b' " ^self externalCallFailed! ffiFoo "self ffiFoo" ^self externalCallFailed! ffiHello "self ffiHello" "long is int in Nim" ^self externalCallFailed! ffiLength: x "self ffiLen: 'hey' " ^self externalCallFailed! ! ``` The above is one chunk per method, then an extra empty chunk on the last line to finish the method category "primitives". ``` !Testlib class methodsFor: 'accessing' stamp: 'gk 2/18/2015 23:13'! moduleName ^'testlib'! ! ``` Finally a chunk declaring another method category, and then a single method with the name of the shared library to load.