docs: public static List<String> parseDotNotation( List<String> pathStrings, Iterator<Character> iter,
                                                   String dotNotationRef ) {
  
          if ( ! iter.hasNext() ) {
              return pathStrings;
          }
  
          // Leave the forward slashes, unless it precedes a "."
          // The way this works is always suppress the forward slashes, but add them back in if the next char is not a "."
  
          boolean prevIsEscape = false;
          boolean currIsEscape = false;
          StringBuilder sb = new StringBuilder();
  
          char c;
          while( iter.hasNext() ) {
  
              c = iter.next();
  
              currIsEscape = false;
              if ( c == '\\' && ! prevIsEscape ) {
                  // current is Escape only if the char is escape, or
                  //  it is an Escape and the prior char was, then don't consider this one an escape
                  currIsEscape = true;
              }
  
              if ( prevIsEscape && c != '.' && c != '\\') {
                  sb.append( '\\' );
                  sb.append( c );
              }
              else if( c == '@' ) {
                  sb.append( '@' );
                  sb.append( parseAtPathElement( iter, dotNotationRef ) );
  
                  //                      there was a "[" seen       but no "]"
                  boolean isPartOfArray = sb.indexOf( "[" ) != -1 && sb.indexOf( "]" ) == -1;
                  if ( ! isPartOfArray ) {
                      pathStrings.add( sb.toString() );
                      sb = new StringBuilder();
                  }
              }
              else if ( c == '.' ) {
  
                  if ( prevIsEscape ) {
                      sb.append( '.' );
                  }
                  else {
                      if ( sb.length() != 0 ) {
                          pathStrings.add( sb.toString() );
                      }
                      return parseDotNotation( pathStrings, iter, dotNotationRef );
                  }
              }
              else if ( ! currIsEscape ) {
                  sb.append( c );
              }
  
              prevIsEscape = currIsEscape;
          }
  
          if ( sb.length() != 0 ) {
              pathStrings.add( sb.toString() );
          }
          return pathStrings;
      }