private static int[] getPathPos(PathNameCS pathNameCS) { EList<SimpleNameCS> sequenceOfNames = pathNameCS.getSimpleNames(); if (sequenceOfNames.size() == 1) { return null; } int size = sequenceOfNames.size() - 1; int[] positions = new int[size]; Arrays.fill(positions, -1); IToken startToken = pathNameCS.getStartToken(); IToken endToken = pathNameCS.getEndToken(); IPrsStream prsStream = startToken.getIPrsStream(); IToken nextToken = startToken; int tokenIndex = 1; int i = 0; while (nextToken != endToken) { nextToken = prsStream.getIToken(startToken.getTokenIndex() + tokenIndex++); if (nextToken.getKind() == QVTOParsersym.TK_IDENTIFIER) { positions[i++] = nextToken.getStartOffset(); if (i == positions.length) { // safety exit in case we have inconsistent start end token break; } } } return positions; }