private String nextLiteral(boolean assignOffsetsOnly) throws IOException {
  StringBuilder builder=null;
  valuePos=-1;
  valueLength=0;
  int i=0;
  findNonLiteralCharacter:   while (true) {
    for (; pos + i < limit; i++) {
switch (buffer[pos + i]) {
case '/':
case '\\':
case ';':
case '#':
case '=':
        checkLenient();
case '{':
case '}':
case '[':
case ']':
case ':':
case ',':
case ' ':
case '\t':
case '\f':
case '\r':
case '\n':
      break findNonLiteralCharacter;
  }
}
if (i < buffer.length) {
  if (fillBuffer(i + 1)) {
    continue;
  }
 else {
    buffer[limit]='\0';
    break;
  }
}
if (builder == null) {
  builder=new StringBuilder();
}
builder.append(buffer,pos,i);
valueLength+=i;
pos+=i;
i=0;
if (!fillBuffer(1)) {
  break;
}
}
String result;
if (assignOffsetsOnly && builder == null) {
valuePos=pos;
result=null;
}
 else if (skipping) {
result="skipped!";
}
 else if (builder == null) {
result=stringPool.get(buffer,pos,i);
}
 else {
builder.append(buffer,pos,i);
result=builder.toString();
}
valueLength+=i;
pos+=i;
return result;
}

private String nextLiteral ( boolean assignOffsetsOnly ) throws IOException { StringBuilder builder = null ; valuePos = - 1 ; valueLength = 0 ; int i = 0 ; findNonLiteralCharacter : while ( true ) { for ( ; pos + i < limit ; i ++ ) { switch ( buffer [ pos + i ] ) { case '/' : case '\\' : case ';' : case '#' : case '=' : checkLenient ( ) ; case '{' : case '}' : case '[' : case ']' : case ':' : case ',' : case ' ' : case '\t' : case '\f' : case '\r' : case '\n' : break findNonLiteralCharacter ; } } if ( i < buffer . length ) { if ( fillBuffer ( i + 1 ) ) { continue ; } else { buffer [ limit ] = '\0' ; break ; } } if ( builder == null ) { builder = new StringBuilder ( ) ; } builder . append ( buffer , pos , i ) ; valueLength += i ; pos += i ; i = 0 ; if ( ! fillBuffer ( 1 ) ) { break ; } } String result ; if ( assignOffsetsOnly && builder == null ) { valuePos = pos ; result = null ; } else if ( skipping ) { result = "skipped!" ; } else if ( builder == null ) { result = stringPool . get ( buffer , pos , i ) ; } else { builder . append ( buffer , pos , i ) ; result = builder . toString ( ) ; } valueLength += i ; pos += i ; return result ; }
reads the value up to but not including any delimiter characters . this does not consume the delimiter character .
