docs: private RootPathToken readContextToken() {
  
          readWhitespace();
  
          if (!isPathContext(path.currentChar())) {
              throw new InvalidPathException("Path must start with '$' or '@'");
          }
  
          RootPathToken pathToken = PathTokenFactory.createRootPathToken(path.currentChar());
  
          if (path.currentIsTail()) {
              return pathToken;
          }
  
          path.incrementPosition(1);
  
          if(path.currentChar() != PERIOD && path.currentChar() != OPEN_SQUARE_BRACKET){
              fail("Illegal character at position " + path.position() + " expected '.' or '['");
          }
  
          PathTokenAppender appender = pathToken.getPathTokenAppender();
          readNextToken(appender);
  
          return pathToken;
      }