Painfully gaining ground - fighting lack of documentation on FSharp parser's range support  - am now isolating the header for a module (turns out the headers are mandatory).
Tidy up messy treatment of ranges by using positions directly.