|  | @@ -38,6 +38,7 @@ import com.google.protobuf.Descriptors.EnumValueDescriptor;
 | 
	
		
			
				|  |  |  import java.io.IOException;
 | 
	
		
			
				|  |  |  import java.nio.CharBuffer;
 | 
	
		
			
				|  |  |  import java.math.BigInteger;
 | 
	
		
			
				|  |  | +import java.util.ArrayList;
 | 
	
		
			
				|  |  |  import java.util.List;
 | 
	
		
			
				|  |  |  import java.util.Locale;
 | 
	
		
			
				|  |  |  import java.util.Map;
 | 
	
	
		
			
				|  | @@ -115,7 +116,7 @@ public final class TextFormat {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      printUnknownFields(message.getUnknownFields(), generator);
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    public static void printField(final FieldDescriptor field,
 | 
	
		
			
				|  |  |                                  final Object value,
 | 
	
		
			
				|  |  |                                  final Appendable output)
 | 
	
	
		
			
				|  | @@ -133,10 +134,10 @@ public final class TextFormat {
 | 
	
		
			
				|  |  |      } catch (IOException e) {
 | 
	
		
			
				|  |  |        throw new RuntimeException(
 | 
	
		
			
				|  |  |          "Writing to a StringBuilder threw an IOException (should never " +
 | 
	
		
			
				|  |  | -        "happen).", e);  
 | 
	
		
			
				|  |  | +        "happen).", e);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    private static void printField(final FieldDescriptor field,
 | 
	
		
			
				|  |  |                                  final Object value,
 | 
	
		
			
				|  |  |                                  final TextGenerator generator)
 | 
	
	
		
			
				|  | @@ -428,7 +429,7 @@ public final class TextFormat {
 | 
	
		
			
				|  |  |        "[a-zA-Z_][0-9a-zA-Z_+-]*+|" +                // an identifier
 | 
	
		
			
				|  |  |        "[.]?[0-9+-][0-9a-zA-Z_.+-]*+|" +             // a number
 | 
	
		
			
				|  |  |        "\"([^\"\n\\\\]|\\\\.)*+(\"|\\\\?$)|" +       // a double-quoted string
 | 
	
		
			
				|  |  | -      "\'([^\"\n\\\\]|\\\\.)*+(\'|\\\\?$)",         // a single-quoted string
 | 
	
		
			
				|  |  | +      "\'([^\'\n\\\\]|\\\\.)*+(\'|\\\\?$)",         // a single-quoted string
 | 
	
		
			
				|  |  |        Pattern.MULTILINE);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      private static final Pattern DOUBLE_INFINITY = Pattern.compile(
 | 
	
	
		
			
				|  | @@ -695,6 +696,15 @@ public final class TextFormat {
 | 
	
		
			
				|  |  |       * {@link ParseException}.
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  |      public ByteString consumeByteString() throws ParseException {
 | 
	
		
			
				|  |  | +      List<ByteString> list = new ArrayList<ByteString>();
 | 
	
		
			
				|  |  | +      consumeByteString(list);
 | 
	
		
			
				|  |  | +      while (currentToken.startsWith("'") || currentToken.startsWith("\"")) {
 | 
	
		
			
				|  |  | +        consumeByteString(list);
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      return ByteString.copyFrom(list);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public void consumeByteString(List<ByteString> list) throws ParseException {
 | 
	
		
			
				|  |  |        final char quote = currentToken.length() > 0 ? currentToken.charAt(0)
 | 
	
		
			
				|  |  |                                                     : '\0';
 | 
	
		
			
				|  |  |        if (quote != '\"' && quote != '\'') {
 | 
	
	
		
			
				|  | @@ -711,7 +721,7 @@ public final class TextFormat {
 | 
	
		
			
				|  |  |              currentToken.substring(1, currentToken.length() - 1);
 | 
	
		
			
				|  |  |          final ByteString result = unescapeBytes(escaped);
 | 
	
		
			
				|  |  |          nextToken();
 | 
	
		
			
				|  |  | -        return result;
 | 
	
		
			
				|  |  | +        list.add(result);
 | 
	
		
			
				|  |  |        } catch (InvalidEscapeSequenceException e) {
 | 
	
		
			
				|  |  |          throw parseException(e.getMessage());
 | 
	
		
			
				|  |  |        }
 |