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;
  }