Looks good, however in most instances where we use spintax an entire list of all possible spins in not always required, normally an action is performed in a loop which pulls a new version (spintax) of the text in each pass.
Another method which can be implemented is a regular simple sentence or paragraph is input.
sentence = "John walks his dog"
This simple sentence is processed through a 'synonyms' DB or similar and 'spits out' processed spintax.
result = "{John|Jon|Johnathan} {walks|runs|skips|jogs} his {dog|k9|mutt|puppy}"
The 'synonyms' can be filtered on a scale from 'accurate', 'average' or 'slightly inaccurate' to get more/less total spintax.
Great stuff anyways, having a 'spintax' command for strings or blocks would be top notch if possible for b4a.