public RefModule parseRefModule() {
ArrayList<IToken> packages = new ArrayList<IToken>(2);
ParseHelper parse = new ParseHelper(-1);
while(true) {
BaseLexElement id = parse.consumeExpectedIdentifier();
if(!id.isMissingElement() && tryConsume(DeeTokens.DOT)) {
packages.add(id);
} else {
int idStartPos = id.getEffectiveStartPos();
parse.setStartPosition(packages.size() > 0 ? packages.get(0).getStartPos() : idStartPos);
return parse.conclude(new RefModule(arrayViewG(packages), id));
}
}
}