To make this code portable, we need to create some methods in the **MetacelloPlatform** class to perform these operations against FileDirectory and then overridden in MetacelloPharo20Platform to use FileSystem. Presumably this code would be written something like:

```Smalltalk 
defaultDirectory := MetacelloPlatform current default.
cacheDirectory := MetacelloPlatform current  directoryFromPath: 'github-cache' relativeTo: defaultDirectory.
MetacelloPlatform current ensureDirectoryExists: cacheDirectory.
^cacheDirectory
```

I've written a similar set of methods for FileDirectory/FileSystem compatibility for Filetree with the [FileSystem code here](https://github.com/dalehenrich/filetree/tree/pharo2.0/repository/MonticelloFileTree-FileSystem-Utilities.package/MCFileTreeFileSystemUtils.class/class) and the [FileDirectory code here](https://github.com/dalehenrich/filetree/tree/pharo1.4/repository/MonticelloFileTree-FileDirectory-Utilities.package/MCFileTreeFileDirectoryUtils.class/class).

If you are inspired to take a slightly different approach or implementation I'm interested in hearing your ideas...