diff --git a/extras/src/main/java/com/google/gson/typeadapters/RuntimeTypeAdapterFactory.java b/extras/src/main/java/com/google/gson/typeadapters/RuntimeTypeAdapterFactory.java index 87b522f0..29fbc692 100644 --- a/extras/src/main/java/com/google/gson/typeadapters/RuntimeTypeAdapterFactory.java +++ b/extras/src/main/java/com/google/gson/typeadapters/RuntimeTypeAdapterFactory.java @@ -16,6 +16,7 @@ package com.google.gson.typeadapters; +import com.google.errorprone.annotations.CanIgnoreReturnValue; import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.JsonObject; @@ -179,6 +180,7 @@ public final class RuntimeTypeAdapterFactory implements TypeAdapterFactory { * Ensures that this factory will handle not just the given {@code baseType}, but any subtype * of that type. */ + @CanIgnoreReturnValue public RuntimeTypeAdapterFactory recognizeSubtypes() { this.recognizeSubtypes = true; return this; @@ -191,6 +193,7 @@ public final class RuntimeTypeAdapterFactory implements TypeAdapterFactory { * @throws IllegalArgumentException if either {@code type} or {@code label} * have already been registered on this type adapter. */ + @CanIgnoreReturnValue public RuntimeTypeAdapterFactory registerSubtype(Class type, String label) { if (type == null || label == null) { throw new NullPointerException(); @@ -210,6 +213,7 @@ public final class RuntimeTypeAdapterFactory implements TypeAdapterFactory { * @throws IllegalArgumentException if either {@code type} or its simple name * have already been registered on this type adapter. */ + @CanIgnoreReturnValue public RuntimeTypeAdapterFactory registerSubtype(Class type) { return registerSubtype(type, type.getSimpleName()); } diff --git a/extras/src/test/java/com/google/gson/graph/GraphAdapterBuilderTest.java b/extras/src/test/java/com/google/gson/graph/GraphAdapterBuilderTest.java index 3b2425ec..fa2f9771 100644 --- a/extras/src/test/java/com/google/gson/graph/GraphAdapterBuilderTest.java +++ b/extras/src/test/java/com/google/gson/graph/GraphAdapterBuilderTest.java @@ -129,8 +129,8 @@ public final class GraphAdapterBuilderTest { @Test public void testSerializationWithMultipleTypes() { Company google = new Company("Google"); - new Employee("Jesse", google); - new Employee("Joel", google); + Employee unused1 = new Employee("Jesse", google); + Employee unused2 = new Employee("Joel", google); GsonBuilder gsonBuilder = new GsonBuilder(); new GraphAdapterBuilder() diff --git a/extras/src/test/java/com/google/gson/interceptors/InterceptorTest.java b/extras/src/test/java/com/google/gson/interceptors/InterceptorTest.java index ee475c8e..83fa8615 100644 --- a/extras/src/test/java/com/google/gson/interceptors/InterceptorTest.java +++ b/extras/src/test/java/com/google/gson/interceptors/InterceptorTest.java @@ -110,9 +110,9 @@ public final class InterceptorTest { @Override public User read(JsonReader in) throws IOException { in.beginObject(); - in.nextName(); + String unused1 = in.nextName(); String name = in.nextString(); - in.nextName(); + String unused2 = in.nextName(); String password = in.nextString(); in.endObject(); return new User(name, password); diff --git a/extras/src/test/java/com/google/gson/typeadapters/UtcDateTypeAdapterTest.java b/extras/src/test/java/com/google/gson/typeadapters/UtcDateTypeAdapterTest.java index 3d3262a3..23d5aeba 100644 --- a/extras/src/test/java/com/google/gson/typeadapters/UtcDateTypeAdapterTest.java +++ b/extras/src/test/java/com/google/gson/typeadapters/UtcDateTypeAdapterTest.java @@ -64,7 +64,7 @@ public final class UtcDateTypeAdapterTest { Gson gson = new GsonBuilder() .registerTypeAdapter(Date.class, new UtcDateTypeAdapter()) .create(); - gson.fromJson("'2014-12-05T04:00:00.000Z'", Date.class); + Date unused = gson.fromJson("'2014-12-05T04:00:00.000Z'", Date.class); } @Test diff --git a/gson/src/main/java/com/google/gson/Gson.java b/gson/src/main/java/com/google/gson/Gson.java index 45336a87..e9083104 100644 --- a/gson/src/main/java/com/google/gson/Gson.java +++ b/gson/src/main/java/com/google/gson/Gson.java @@ -1223,7 +1223,7 @@ public final class Gson { boolean oldLenient = reader.isLenient(); reader.setLenient(true); try { - reader.peek(); + JsonToken unused = reader.peek(); isEmpty = false; TypeAdapter typeAdapter = getAdapter(typeOfT); return typeAdapter.read(reader); diff --git a/gson/src/main/java/com/google/gson/GsonBuilder.java b/gson/src/main/java/com/google/gson/GsonBuilder.java index f8f1b27f..d1508cfa 100644 --- a/gson/src/main/java/com/google/gson/GsonBuilder.java +++ b/gson/src/main/java/com/google/gson/GsonBuilder.java @@ -28,6 +28,7 @@ import static com.google.gson.Gson.DEFAULT_SERIALIZE_NULLS; import static com.google.gson.Gson.DEFAULT_SPECIALIZE_FLOAT_VALUES; import static com.google.gson.Gson.DEFAULT_USE_JDK_UNSAFE; +import com.google.errorprone.annotations.CanIgnoreReturnValue; import com.google.gson.annotations.Since; import com.google.gson.annotations.Until; import com.google.gson.internal.$Gson$Preconditions; @@ -159,6 +160,7 @@ public final class GsonBuilder { * @see Since * @see Until */ + @CanIgnoreReturnValue public GsonBuilder setVersion(double version) { if (Double.isNaN(version) || version < 0.0) { throw new IllegalArgumentException("Invalid version: " + version); @@ -181,6 +183,7 @@ public final class GsonBuilder { * {@link java.lang.reflect.Modifier#STATIC}. * @return a reference to this {@code GsonBuilder} object to fulfill the "Builder" pattern */ + @CanIgnoreReturnValue public GsonBuilder excludeFieldsWithModifiers(int... modifiers) { Objects.requireNonNull(modifiers); excluder = excluder.withModifiers(modifiers); @@ -196,6 +199,7 @@ public final class GsonBuilder { * @return a reference to this {@code GsonBuilder} object to fulfill the "Builder" pattern * @since 1.3 */ + @CanIgnoreReturnValue public GsonBuilder generateNonExecutableJson() { this.generateNonExecutableJson = true; return this; @@ -210,6 +214,7 @@ public final class GsonBuilder { * * @return a reference to this {@code GsonBuilder} object to fulfill the "Builder" pattern */ + @CanIgnoreReturnValue public GsonBuilder excludeFieldsWithoutExposeAnnotation() { excluder = excluder.excludeFieldsWithoutExposeAnnotation(); return this; @@ -222,6 +227,7 @@ public final class GsonBuilder { * @return a reference to this {@code GsonBuilder} object to fulfill the "Builder" pattern * @since 1.2 */ + @CanIgnoreReturnValue public GsonBuilder serializeNulls() { this.serializeNulls = true; return this; @@ -306,6 +312,7 @@ public final class GsonBuilder { * @return a reference to this {@code GsonBuilder} object to fulfill the "Builder" pattern * @since 1.7 */ + @CanIgnoreReturnValue public GsonBuilder enableComplexMapKeySerialization() { complexMapKeySerialization = true; return this; @@ -330,6 +337,7 @@ public final class GsonBuilder { * @return a reference to this {@code GsonBuilder} object to fulfill the "Builder" pattern * @since 1.3 */ + @CanIgnoreReturnValue public GsonBuilder disableInnerClassSerialization() { excluder = excluder.disableInnerClassSerialization(); return this; @@ -343,6 +351,7 @@ public final class GsonBuilder { * @return a reference to this {@code GsonBuilder} object to fulfill the "Builder" pattern * @since 1.3 */ + @CanIgnoreReturnValue public GsonBuilder setLongSerializationPolicy(LongSerializationPolicy serializationPolicy) { this.longSerializationPolicy = Objects.requireNonNull(serializationPolicy); return this; @@ -354,6 +363,7 @@ public final class GsonBuilder { * *

This method just delegates to {@link #setFieldNamingStrategy(FieldNamingStrategy)}. */ + @CanIgnoreReturnValue public GsonBuilder setFieldNamingPolicy(FieldNamingPolicy namingConvention) { return setFieldNamingStrategy(namingConvention); } @@ -370,6 +380,7 @@ public final class GsonBuilder { * @return a reference to this {@code GsonBuilder} object to fulfill the "Builder" pattern * @since 1.3 */ + @CanIgnoreReturnValue public GsonBuilder setFieldNamingStrategy(FieldNamingStrategy fieldNamingStrategy) { this.fieldNamingPolicy = Objects.requireNonNull(fieldNamingStrategy); return this; @@ -383,6 +394,7 @@ public final class GsonBuilder { * @see ToNumberPolicy#DOUBLE The default object-to-number strategy * @since 2.8.9 */ + @CanIgnoreReturnValue public GsonBuilder setObjectToNumberStrategy(ToNumberStrategy objectToNumberStrategy) { this.objectToNumberStrategy = Objects.requireNonNull(objectToNumberStrategy); return this; @@ -396,6 +408,7 @@ public final class GsonBuilder { * @see ToNumberPolicy#LAZILY_PARSED_NUMBER The default number-to-number strategy * @since 2.8.9 */ + @CanIgnoreReturnValue public GsonBuilder setNumberToNumberStrategy(ToNumberStrategy numberToNumberStrategy) { this.numberToNumberStrategy = Objects.requireNonNull(numberToNumberStrategy); return this; @@ -427,6 +440,7 @@ public final class GsonBuilder { * @return a reference to this {@code GsonBuilder} object to fulfill the "Builder" pattern * @since 1.4 */ + @CanIgnoreReturnValue public GsonBuilder setExclusionStrategies(ExclusionStrategy... strategies) { Objects.requireNonNull(strategies); for (ExclusionStrategy strategy : strategies) { @@ -450,6 +464,7 @@ public final class GsonBuilder { * @return a reference to this {@code GsonBuilder} object to fulfill the "Builder" pattern * @since 1.7 */ + @CanIgnoreReturnValue public GsonBuilder addSerializationExclusionStrategy(ExclusionStrategy strategy) { Objects.requireNonNull(strategy); excluder = excluder.withExclusionStrategy(strategy, true, false); @@ -471,6 +486,7 @@ public final class GsonBuilder { * @return a reference to this {@code GsonBuilder} object to fulfill the "Builder" pattern * @since 1.7 */ + @CanIgnoreReturnValue public GsonBuilder addDeserializationExclusionStrategy(ExclusionStrategy strategy) { Objects.requireNonNull(strategy); excluder = excluder.withExclusionStrategy(strategy, false, true); @@ -486,6 +502,7 @@ public final class GsonBuilder { * * @return a reference to this {@code GsonBuilder} object to fulfill the "Builder" pattern */ + @CanIgnoreReturnValue public GsonBuilder setPrettyPrinting() { return setPrettyPrinting(FormattingStyle.DEFAULT); } @@ -500,6 +517,7 @@ public final class GsonBuilder { * @return a reference to this {@code GsonBuilder} object to fulfill the "Builder" pattern * @since $next-version$ */ + @CanIgnoreReturnValue public GsonBuilder setPrettyPrinting(FormattingStyle formattingStyle) { this.formattingStyle = formattingStyle; return this; @@ -515,6 +533,7 @@ public final class GsonBuilder { * @see JsonReader#setLenient(boolean) * @see JsonWriter#setLenient(boolean) */ + @CanIgnoreReturnValue public GsonBuilder setLenient() { lenient = true; return this; @@ -527,6 +546,7 @@ public final class GsonBuilder { * @return a reference to this {@code GsonBuilder} object to fulfill the "Builder" pattern * @since 1.3 */ + @CanIgnoreReturnValue public GsonBuilder disableHtmlEscaping() { this.escapeHtmlChars = false; return this; @@ -548,6 +568,7 @@ public final class GsonBuilder { * @return a reference to this {@code GsonBuilder} object to fulfill the "Builder" pattern * @since 1.2 */ + @CanIgnoreReturnValue public GsonBuilder setDateFormat(String pattern) { // TODO(Joel): Make this fail fast if it is an invalid date format this.datePattern = pattern; @@ -568,6 +589,7 @@ public final class GsonBuilder { * @return a reference to this {@code GsonBuilder} object to fulfill the "Builder" pattern * @since 1.2 */ + @CanIgnoreReturnValue public GsonBuilder setDateFormat(int style) { this.dateStyle = style; this.datePattern = null; @@ -589,6 +611,7 @@ public final class GsonBuilder { * @return a reference to this {@code GsonBuilder} object to fulfill the "Builder" pattern * @since 1.2 */ + @CanIgnoreReturnValue public GsonBuilder setDateFormat(int dateStyle, int timeStyle) { this.dateStyle = dateStyle; this.timeStyle = timeStyle; @@ -618,6 +641,7 @@ public final class GsonBuilder { * {@link InstanceCreator}, {@link JsonSerializer}, and a {@link JsonDeserializer} interfaces. * @return a reference to this {@code GsonBuilder} object to fulfill the "Builder" pattern */ + @CanIgnoreReturnValue public GsonBuilder registerTypeAdapter(Type type, Object typeAdapter) { Objects.requireNonNull(type); $Gson$Preconditions.checkArgument(typeAdapter instanceof JsonSerializer @@ -651,6 +675,7 @@ public final class GsonBuilder { * * @since 2.1 */ + @CanIgnoreReturnValue public GsonBuilder registerTypeAdapterFactory(TypeAdapterFactory factory) { Objects.requireNonNull(factory); factories.add(factory); @@ -671,6 +696,7 @@ public final class GsonBuilder { * @return a reference to this {@code GsonBuilder} object to fulfill the "Builder" pattern * @since 1.7 */ + @CanIgnoreReturnValue public GsonBuilder registerTypeHierarchyAdapter(Class baseType, Object typeAdapter) { Objects.requireNonNull(baseType); $Gson$Preconditions.checkArgument(typeAdapter instanceof JsonSerializer @@ -707,6 +733,7 @@ public final class GsonBuilder { * @return a reference to this {@code GsonBuilder} object to fulfill the "Builder" pattern * @since 1.3 */ + @CanIgnoreReturnValue public GsonBuilder serializeSpecialFloatingPointValues() { this.serializeSpecialFloatingPointValues = true; return this; @@ -728,6 +755,7 @@ public final class GsonBuilder { * @return a reference to this {@code GsonBuilder} object to fulfill the "Builder" pattern * @since 2.9.0 */ + @CanIgnoreReturnValue public GsonBuilder disableJdkUnsafe() { this.useJdkUnsafe = false; return this; @@ -753,6 +781,7 @@ public final class GsonBuilder { * @return a reference to this {@code GsonBuilder} object to fulfill the "Builder" pattern * @since 2.9.1 */ + @CanIgnoreReturnValue public GsonBuilder addReflectionAccessFilter(ReflectionAccessFilter filter) { Objects.requireNonNull(filter); reflectionFilters.addFirst(filter); diff --git a/gson/src/main/java/com/google/gson/JsonArray.java b/gson/src/main/java/com/google/gson/JsonArray.java index 370b323f..fbdf80ed 100644 --- a/gson/src/main/java/com/google/gson/JsonArray.java +++ b/gson/src/main/java/com/google/gson/JsonArray.java @@ -16,6 +16,7 @@ package com.google.gson; +import com.google.errorprone.annotations.CanIgnoreReturnValue; import com.google.gson.internal.NonNullElementWrapperList; import java.math.BigDecimal; import java.math.BigInteger; @@ -145,6 +146,7 @@ public final class JsonArray extends JsonElement implements IterableThis class is conditionally thread-safe (see Item 70, Effective Java second edition). To * properly use this class across multiple threads, you will need to add some external * synchronization. For example: - * + * *

  * JsonStreamParser parser = new JsonStreamParser("['first'] {'second':10} 'third'");
  * JsonElement element;
diff --git a/gson/src/main/java/com/google/gson/internal/LinkedTreeMap.java b/gson/src/main/java/com/google/gson/internal/LinkedTreeMap.java
index a78191a4..6e004d77 100644
--- a/gson/src/main/java/com/google/gson/internal/LinkedTreeMap.java
+++ b/gson/src/main/java/com/google/gson/internal/LinkedTreeMap.java
@@ -17,6 +17,7 @@
 
 package com.google.gson.internal;
 
+import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.IOException;
 import java.io.InvalidObjectException;
 import java.io.ObjectInputStream;
@@ -107,6 +108,7 @@ public final class LinkedTreeMap extends AbstractMap implements Seri
     return findByObject(key) != null;
   }
 
+  @CanIgnoreReturnValue
   @Override public V put(K key, V value) {
     if (key == null) {
       throw new NullPointerException("key == null");
diff --git a/gson/src/main/java/com/google/gson/internal/Streams.java b/gson/src/main/java/com/google/gson/internal/Streams.java
index eafbbbec..e08bbea3 100644
--- a/gson/src/main/java/com/google/gson/internal/Streams.java
+++ b/gson/src/main/java/com/google/gson/internal/Streams.java
@@ -23,6 +23,7 @@ import com.google.gson.JsonParseException;
 import com.google.gson.JsonSyntaxException;
 import com.google.gson.internal.bind.TypeAdapters;
 import com.google.gson.stream.JsonReader;
+import com.google.gson.stream.JsonToken;
 import com.google.gson.stream.JsonWriter;
 import com.google.gson.stream.MalformedJsonException;
 import java.io.EOFException;
@@ -44,7 +45,7 @@ public final class Streams {
   public static JsonElement parse(JsonReader reader) throws JsonParseException {
     boolean isEmpty = true;
     try {
-      reader.peek();
+      JsonToken unused = reader.peek();
       isEmpty = false;
       return TypeAdapters.JSON_ELEMENT.read(reader);
     } catch (EOFException e) {
diff --git a/gson/src/main/java/com/google/gson/internal/bind/JsonTreeReader.java b/gson/src/main/java/com/google/gson/internal/bind/JsonTreeReader.java
index 085090f2..ec8dcea3 100644
--- a/gson/src/main/java/com/google/gson/internal/bind/JsonTreeReader.java
+++ b/gson/src/main/java/com/google/gson/internal/bind/JsonTreeReader.java
@@ -16,6 +16,7 @@
 
 package com.google.gson.internal.bind;
 
+import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import com.google.gson.JsonArray;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonNull;
@@ -153,6 +154,7 @@ public final class JsonTreeReader extends JsonReader {
     return stack[stackSize - 1];
   }
 
+  @CanIgnoreReturnValue
   private Object popStack() {
     Object result = stack[--stackSize];
     stack[stackSize] = null;
diff --git a/gson/src/main/java/com/google/gson/internal/bind/JsonTreeWriter.java b/gson/src/main/java/com/google/gson/internal/bind/JsonTreeWriter.java
index a87896da..b1110f18 100644
--- a/gson/src/main/java/com/google/gson/internal/bind/JsonTreeWriter.java
+++ b/gson/src/main/java/com/google/gson/internal/bind/JsonTreeWriter.java
@@ -16,6 +16,7 @@
 
 package com.google.gson.internal.bind;
 
+import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import com.google.gson.JsonArray;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonNull;
@@ -92,6 +93,7 @@ public final class JsonTreeWriter extends JsonWriter {
     }
   }
 
+  @CanIgnoreReturnValue
   @Override public JsonWriter beginArray() throws IOException {
     JsonArray array = new JsonArray();
     put(array);
@@ -99,6 +101,7 @@ public final class JsonTreeWriter extends JsonWriter {
     return this;
   }
 
+  @CanIgnoreReturnValue
   @Override public JsonWriter endArray() throws IOException {
     if (stack.isEmpty() || pendingName != null) {
       throw new IllegalStateException();
@@ -111,6 +114,7 @@ public final class JsonTreeWriter extends JsonWriter {
     throw new IllegalStateException();
   }
 
+  @CanIgnoreReturnValue
   @Override public JsonWriter beginObject() throws IOException {
     JsonObject object = new JsonObject();
     put(object);
@@ -118,6 +122,7 @@ public final class JsonTreeWriter extends JsonWriter {
     return this;
   }
 
+  @CanIgnoreReturnValue
   @Override public JsonWriter endObject() throws IOException {
     if (stack.isEmpty() || pendingName != null) {
       throw new IllegalStateException();
@@ -130,6 +135,7 @@ public final class JsonTreeWriter extends JsonWriter {
     throw new IllegalStateException();
   }
 
+  @CanIgnoreReturnValue
   @Override public JsonWriter name(String name) throws IOException {
     Objects.requireNonNull(name, "name == null");
     if (stack.isEmpty() || pendingName != null) {
@@ -143,6 +149,7 @@ public final class JsonTreeWriter extends JsonWriter {
     throw new IllegalStateException();
   }
 
+  @CanIgnoreReturnValue
   @Override public JsonWriter value(String value) throws IOException {
     if (value == null) {
       return nullValue();
@@ -155,16 +162,19 @@ public final class JsonTreeWriter extends JsonWriter {
     throw new UnsupportedOperationException();
   }
 
+  @CanIgnoreReturnValue
   @Override public JsonWriter nullValue() throws IOException {
     put(JsonNull.INSTANCE);
     return this;
   }
 
+  @CanIgnoreReturnValue
   @Override public JsonWriter value(boolean value) throws IOException {
     put(new JsonPrimitive(value));
     return this;
   }
 
+  @CanIgnoreReturnValue
   @Override public JsonWriter value(Boolean value) throws IOException {
     if (value == null) {
       return nullValue();
@@ -173,6 +183,7 @@ public final class JsonTreeWriter extends JsonWriter {
     return this;
   }
 
+  @CanIgnoreReturnValue
   @Override public JsonWriter value(float value) throws IOException {
     if (!isLenient() && (Float.isNaN(value) || Float.isInfinite(value))) {
       throw new IllegalArgumentException("JSON forbids NaN and infinities: " + value);
@@ -181,6 +192,7 @@ public final class JsonTreeWriter extends JsonWriter {
     return this;
   }
 
+  @CanIgnoreReturnValue
   @Override public JsonWriter value(double value) throws IOException {
     if (!isLenient() && (Double.isNaN(value) || Double.isInfinite(value))) {
       throw new IllegalArgumentException("JSON forbids NaN and infinities: " + value);
@@ -189,11 +201,13 @@ public final class JsonTreeWriter extends JsonWriter {
     return this;
   }
 
+  @CanIgnoreReturnValue
   @Override public JsonWriter value(long value) throws IOException {
     put(new JsonPrimitive(value));
     return this;
   }
 
+  @CanIgnoreReturnValue
   @Override public JsonWriter value(Number value) throws IOException {
     if (value == null) {
       return nullValue();
diff --git a/gson/src/main/java/com/google/gson/stream/JsonReader.java b/gson/src/main/java/com/google/gson/stream/JsonReader.java
index 99535379..e0931320 100644
--- a/gson/src/main/java/com/google/gson/stream/JsonReader.java
+++ b/gson/src/main/java/com/google/gson/stream/JsonReader.java
@@ -1119,7 +1119,7 @@ public class JsonReader implements Closeable {
           return;
         } else if (c == '\\') {
           pos = p;
-          readEscapeCharacter();
+          char unused = readEscapeCharacter();
           p = pos;
           l = limit;
         } else if (c == '\n') {
@@ -1664,7 +1664,7 @@ public class JsonReader implements Closeable {
    */
   private void consumeNonExecutePrefix() throws IOException {
     // fast forward through the leading whitespace
-    nextNonWhitespace(true);
+    int unused = nextNonWhitespace(true);
     pos--;
 
     if (pos + 5 > limit && !fillBuffer(5)) {
diff --git a/gson/src/main/java/com/google/gson/stream/JsonWriter.java b/gson/src/main/java/com/google/gson/stream/JsonWriter.java
index 2244fc85..4a2424e6 100644
--- a/gson/src/main/java/com/google/gson/stream/JsonWriter.java
+++ b/gson/src/main/java/com/google/gson/stream/JsonWriter.java
@@ -24,6 +24,7 @@ import static com.google.gson.stream.JsonScope.NONEMPTY_ARRAY;
 import static com.google.gson.stream.JsonScope.NONEMPTY_DOCUMENT;
 import static com.google.gson.stream.JsonScope.NONEMPTY_OBJECT;
 
+import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.io.Closeable;
 import java.io.Flushable;
 import java.io.IOException;
@@ -318,6 +319,7 @@ public class JsonWriter implements Closeable, Flushable {
    *
    * @return this writer.
    */
+  @CanIgnoreReturnValue
   public JsonWriter beginArray() throws IOException {
     writeDeferredName();
     return open(EMPTY_ARRAY, '[');
@@ -328,6 +330,7 @@ public class JsonWriter implements Closeable, Flushable {
    *
    * @return this writer.
    */
+  @CanIgnoreReturnValue
   public JsonWriter endArray() throws IOException {
     return close(EMPTY_ARRAY, NONEMPTY_ARRAY, ']');
   }
@@ -338,6 +341,7 @@ public class JsonWriter implements Closeable, Flushable {
    *
    * @return this writer.
    */
+  @CanIgnoreReturnValue
   public JsonWriter beginObject() throws IOException {
     writeDeferredName();
     return open(EMPTY_OBJECT, '{');
@@ -348,6 +352,7 @@ public class JsonWriter implements Closeable, Flushable {
    *
    * @return this writer.
    */
+  @CanIgnoreReturnValue
   public JsonWriter endObject() throws IOException {
     return close(EMPTY_OBJECT, NONEMPTY_OBJECT, '}');
   }
@@ -356,6 +361,7 @@ public class JsonWriter implements Closeable, Flushable {
    * Enters a new scope by appending any necessary whitespace and the given
    * bracket.
    */
+  @CanIgnoreReturnValue
   private JsonWriter open(int empty, char openBracket) throws IOException {
     beforeValue();
     push(empty);
@@ -367,6 +373,7 @@ public class JsonWriter implements Closeable, Flushable {
    * Closes the current scope by appending any necessary whitespace and the
    * given bracket.
    */
+  @CanIgnoreReturnValue
   private JsonWriter close(int empty, int nonempty, char closeBracket)
       throws IOException {
     int context = peek();
@@ -415,6 +422,7 @@ public class JsonWriter implements Closeable, Flushable {
    * @param name the name of the forthcoming value. May not be null.
    * @return this writer.
    */
+  @CanIgnoreReturnValue
   public JsonWriter name(String name) throws IOException {
     Objects.requireNonNull(name, "name == null");
     if (deferredName != null) {
@@ -441,6 +449,7 @@ public class JsonWriter implements Closeable, Flushable {
    * @param value the literal string value, or null to encode a null literal.
    * @return this writer.
    */
+  @CanIgnoreReturnValue
   public JsonWriter value(String value) throws IOException {
     if (value == null) {
       return nullValue();
@@ -462,6 +471,7 @@ public class JsonWriter implements Closeable, Flushable {
    *    writing raw JSON values.
    * @since 2.4
    */
+  @CanIgnoreReturnValue
   public JsonWriter jsonValue(String value) throws IOException {
     if (value == null) {
       return nullValue();
@@ -477,6 +487,7 @@ public class JsonWriter implements Closeable, Flushable {
    *
    * @return this writer.
    */
+  @CanIgnoreReturnValue
   public JsonWriter nullValue() throws IOException {
     if (deferredName != null) {
       if (serializeNulls) {
@@ -496,6 +507,7 @@ public class JsonWriter implements Closeable, Flushable {
    *
    * @return this writer.
    */
+  @CanIgnoreReturnValue
   public JsonWriter value(boolean value) throws IOException {
     writeDeferredName();
     beforeValue();
@@ -509,6 +521,7 @@ public class JsonWriter implements Closeable, Flushable {
    * @return this writer.
    * @since 2.7
    */
+  @CanIgnoreReturnValue
   public JsonWriter value(Boolean value) throws IOException {
     if (value == null) {
       return nullValue();
@@ -530,6 +543,7 @@ public class JsonWriter implements Closeable, Flushable {
    *     #setLenient(boolean) lenient}.
    * @since 2.9.1
    */
+  @CanIgnoreReturnValue
   public JsonWriter value(float value) throws IOException {
     writeDeferredName();
     if (!lenient && (Float.isNaN(value) || Float.isInfinite(value))) {
@@ -549,6 +563,7 @@ public class JsonWriter implements Closeable, Flushable {
    * @throws IllegalArgumentException if the value is NaN or Infinity and this writer is
    *     not {@link #setLenient(boolean) lenient}.
    */
+  @CanIgnoreReturnValue
   public JsonWriter value(double value) throws IOException {
     writeDeferredName();
     if (!lenient && (Double.isNaN(value) || Double.isInfinite(value))) {
@@ -564,6 +579,7 @@ public class JsonWriter implements Closeable, Flushable {
    *
    * @return this writer.
    */
+  @CanIgnoreReturnValue
   public JsonWriter value(long value) throws IOException {
     writeDeferredName();
     beforeValue();
@@ -593,6 +609,7 @@ public class JsonWriter implements Closeable, Flushable {
    *     not {@link #setLenient(boolean) lenient}; or if the {@code toString()} result is not a
    *     valid JSON number.
    */
+  @CanIgnoreReturnValue
   public JsonWriter value(Number value) throws IOException {
     if (value == null) {
       return nullValue();
diff --git a/gson/src/test/java/com/google/gson/JsonStreamParserTest.java b/gson/src/test/java/com/google/gson/JsonStreamParserTest.java
index 7d577787..2fec1f17 100644
--- a/gson/src/test/java/com/google/gson/JsonStreamParserTest.java
+++ b/gson/src/test/java/com/google/gson/JsonStreamParserTest.java
@@ -70,8 +70,8 @@ public class JsonStreamParserTest {
 
   @Test
   public void testCallingNextBeyondAvailableInput() {
-    parser.next();
-    parser.next();
+    JsonElement unused1 = parser.next();
+    JsonElement unused2 = parser.next();
     try {
       parser.next();
       fail("Parser should not go beyond available input");
diff --git a/gson/src/test/java/com/google/gson/MixedStreamTest.java b/gson/src/test/java/com/google/gson/MixedStreamTest.java
index f6c38c47..2bd17e08 100644
--- a/gson/src/test/java/com/google/gson/MixedStreamTest.java
+++ b/gson/src/test/java/com/google/gson/MixedStreamTest.java
@@ -88,11 +88,11 @@ public final class MixedStreamTest {
     jsonReader.beginArray();
 
     jsonReader.setLenient(false);
-    gson.fromJson(jsonReader, Car.class);
+    Car unused1 = gson.fromJson(jsonReader, Car.class);
     assertThat(jsonReader.isLenient()).isFalse();
 
     jsonReader.setLenient(true);
-    gson.fromJson(jsonReader, Car.class);
+    Car unused2 = gson.fromJson(jsonReader, Car.class);
     assertThat(jsonReader.isLenient()).isTrue();
   }
 
diff --git a/gson/src/test/java/com/google/gson/functional/ConcurrencyTest.java b/gson/src/test/java/com/google/gson/functional/ConcurrencyTest.java
index 151961d0..63007d9d 100644
--- a/gson/src/test/java/com/google/gson/functional/ConcurrencyTest.java
+++ b/gson/src/test/java/com/google/gson/functional/ConcurrencyTest.java
@@ -27,7 +27,7 @@ import org.junit.Test;
 
 /**
  * Tests for ensuring Gson thread-safety.
- * 
+ *
  * @author Inderjeet Singh
  * @author Joel Leitch
  */
@@ -44,23 +44,23 @@ public class ConcurrencyTest {
    * http://groups.google.com/group/google-gson/browse_thread/thread/563bb51ee2495081
    */
   @Test
-  public void testSingleThreadSerialization() { 
-    MyObject myObj = new MyObject(); 
-    for (int i = 0; i < 10; i++) { 
-      gson.toJson(myObj); 
-    } 
-  } 
+  public void testSingleThreadSerialization() {
+    MyObject myObj = new MyObject();
+    for (int i = 0; i < 10; i++) {
+      String unused = gson.toJson(myObj);
+    }
+  }
 
   /**
    * Source-code based on
    * http://groups.google.com/group/google-gson/browse_thread/thread/563bb51ee2495081
    */
   @Test
-  public void testSingleThreadDeserialization() { 
-    for (int i = 0; i < 10; i++) { 
-      gson.fromJson("{'a':'hello','b':'world','i':1}", MyObject.class); 
-    } 
-  } 
+  public void testSingleThreadDeserialization() {
+    for (int i = 0; i < 10; i++) {
+      MyObject unused = gson.fromJson("{'a':'hello','b':'world','i':1}", MyObject.class);
+    }
+  }
 
   /**
    * Source-code based on
@@ -79,7 +79,7 @@ public class ConcurrencyTest {
           try {
             startLatch.await();
             for (int i = 0; i < 10; i++) {
-              gson.toJson(myObj);
+              String unused = gson.toJson(myObj);
             }
           } catch (Throwable t) {
             failed.set(true);
@@ -110,7 +110,7 @@ public class ConcurrencyTest {
           try {
             startLatch.await();
             for (int i = 0; i < 10; i++) {
-              gson.fromJson("{'a':'hello','b':'world','i':1}", MyObject.class); 
+              MyObject unused = gson.fromJson("{'a':'hello','b':'world','i':1}", MyObject.class);
             }
           } catch (Throwable t) {
             failed.set(true);
@@ -124,7 +124,7 @@ public class ConcurrencyTest {
     finishedLatch.await();
     assertThat(failed.get()).isFalse();
   }
-  
+
   @SuppressWarnings("unused")
   private static class MyObject {
     String a;
diff --git a/gson/src/test/java/com/google/gson/functional/DefaultTypeAdaptersTest.java b/gson/src/test/java/com/google/gson/functional/DefaultTypeAdaptersTest.java
index 978b0eb8..ca827555 100644
--- a/gson/src/test/java/com/google/gson/functional/DefaultTypeAdaptersTest.java
+++ b/gson/src/test/java/com/google/gson/functional/DefaultTypeAdaptersTest.java
@@ -127,7 +127,7 @@ public class DefaultTypeAdaptersTest {
     URL target = gson.fromJson(json, URL.class);
     assertThat(target.toExternalForm()).isEqualTo(urlValue);
 
-    gson.fromJson('"' + urlValue + '"', URL.class);
+    URL unused = gson.fromJson('"' + urlValue + '"', URL.class);
     assertThat(target.toExternalForm()).isEqualTo(urlValue);
   }
 
diff --git a/gson/src/test/java/com/google/gson/functional/InheritanceTest.java b/gson/src/test/java/com/google/gson/functional/InheritanceTest.java
index ec7cdde8..cb5cf0f2 100644
--- a/gson/src/test/java/com/google/gson/functional/InheritanceTest.java
+++ b/gson/src/test/java/com/google/gson/functional/InheritanceTest.java
@@ -17,6 +17,7 @@ package com.google.gson.functional;
 
 import static com.google.common.truth.Truth.assertThat;
 
+import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import com.google.gson.Gson;
 import com.google.gson.JsonArray;
 import com.google.gson.JsonElement;
@@ -40,7 +41,7 @@ import org.junit.Before;
 import org.junit.Test;
 
 /**
- * Functional tests for Json serialization and deserialization of classes with 
+ * Functional tests for Json serialization and deserialization of classes with
  * inheritance hierarchies.
  *
  * @author Inderjeet Singh
@@ -85,7 +86,7 @@ public class InheritanceTest {
     ClassWithBaseArrayField sub = new ClassWithBaseArrayField(baseClasses);
     JsonObject json = gson.toJsonTree(sub).getAsJsonObject();
     JsonArray bases = json.get(ClassWithBaseArrayField.FIELD_KEY).getAsJsonArray();
-    for (JsonElement element : bases) { 
+    for (JsonElement element : bases) {
       assertThat(element.getAsJsonObject().get(Sub.SUB_FIELD_KEY).getAsString()).isEqualTo(Sub.SUB_NAME);
     }
   }
@@ -98,7 +99,7 @@ public class InheritanceTest {
     ClassWithBaseCollectionField sub = new ClassWithBaseCollectionField(baseClasses);
     JsonObject json = gson.toJsonTree(sub).getAsJsonObject();
     JsonArray bases = json.get(ClassWithBaseArrayField.FIELD_KEY).getAsJsonArray();
-    for (JsonElement element : bases) { 
+    for (JsonElement element : bases) {
       assertThat(element.getAsJsonObject().get(Sub.SUB_FIELD_KEY).getAsString()).isEqualTo(Sub.SUB_NAME);
     }
   }
@@ -194,14 +195,14 @@ public class InheritanceTest {
     String json = "{\"list\":[0,1,2,3],\"queue\":[0,1,2,3],\"set\":[0.1,0.2,0.3,0.4],"
         + "\"sortedSet\":[\"a\",\"b\",\"c\",\"d\"]"
         + "}";
-    ClassWithSubInterfacesOfCollection target = 
+    ClassWithSubInterfacesOfCollection target =
       gson.fromJson(json, ClassWithSubInterfacesOfCollection.class);
     assertThat(target.listContains(0, 1, 2, 3)).isTrue();
     assertThat(target.queueContains(0, 1, 2, 3)).isTrue();
     assertThat(target.setContains(0.1F, 0.2F, 0.3F, 0.4F)).isTrue();
     assertThat(target.sortedSetContains('a', 'b', 'c', 'd')).isTrue();
   }
-  
+
   private static class ClassWithSubInterfacesOfCollection {
     private List list;
     private Queue queue;
@@ -224,7 +225,7 @@ public class InheritanceTest {
       }
       return true;
     }
-    
+
     boolean queueContains(long... values) {
       for (long value : values) {
         if (!queue.contains(value)) {
@@ -233,7 +234,7 @@ public class InheritanceTest {
       }
       return true;
     }
-    
+
     boolean setContains(float... values) {
       for (float value : values) {
         if (!set.contains(value)) {
@@ -251,7 +252,7 @@ public class InheritanceTest {
       }
       return true;
     }
-    
+
     public String getExpectedJson() {
       StringBuilder sb = new StringBuilder();
       sb.append("{");
@@ -267,6 +268,7 @@ public class InheritanceTest {
       return sb.toString();
     }
 
+    @CanIgnoreReturnValue
     private StringBuilder append(StringBuilder sb, Collection c) {
       sb.append("[");
       boolean first = true;
diff --git a/gson/src/test/java/com/google/gson/functional/JsonAdapterAnnotationOnFieldsTest.java b/gson/src/test/java/com/google/gson/functional/JsonAdapterAnnotationOnFieldsTest.java
index b42352ea..b322ad8b 100644
--- a/gson/src/test/java/com/google/gson/functional/JsonAdapterAnnotationOnFieldsTest.java
+++ b/gson/src/test/java/com/google/gson/functional/JsonAdapterAnnotationOnFieldsTest.java
@@ -118,7 +118,7 @@ public final class JsonAdapterAnnotationOnFieldsTest {
       out.value("PartJsonFieldAnnotationAdapter");
     }
     @Override public Part read(JsonReader in) throws IOException {
-      in.nextString();
+      String unused = in.nextString();
       return new Part("PartJsonFieldAnnotationAdapter");
     }
   }
@@ -131,7 +131,7 @@ public final class JsonAdapterAnnotationOnFieldsTest {
         }
         @SuppressWarnings("unchecked")
         @Override public T read(JsonReader in) throws IOException {
-          in.nextString();
+          String unused = in.nextString();
           return (T) new Part("GizmoPartTypeAdapterFactory");
         }
       };
@@ -158,7 +158,7 @@ public final class JsonAdapterAnnotationOnFieldsTest {
       out.value("UserClassAnnotationAdapter");
     }
     @Override public User read(JsonReader in) throws IOException {
-      in.nextString();
+      String unused = in.nextString();
       return new User("UserClassAnnotationAdapter");
     }
   }
@@ -177,7 +177,7 @@ public final class JsonAdapterAnnotationOnFieldsTest {
       out.value("UserFieldAnnotationAdapter");
     }
     @Override public User read(JsonReader in) throws IOException {
-      in.nextString();
+      String unused = in.nextString();
       return new User("UserFieldAnnotationAdapter");
     }
   }
@@ -187,7 +187,7 @@ public final class JsonAdapterAnnotationOnFieldsTest {
       out.value("RegisteredUserAdapter");
     }
     @Override public User read(JsonReader in) throws IOException {
-      in.nextString();
+      String unused = in.nextString();
       return new User("RegisteredUserAdapter");
     }
   }
@@ -307,7 +307,7 @@ public final class JsonAdapterAnnotationOnFieldsTest {
         }
         @SuppressWarnings("unchecked")
         @Override public T read(JsonReader in) throws IOException {
-          in.nextString();
+          String unused = in.nextString();
           return (T) Arrays.asList(new Part("GizmoPartTypeAdapterFactory"));
         }
       };
diff --git a/gson/src/test/java/com/google/gson/functional/ObjectTest.java b/gson/src/test/java/com/google/gson/functional/ObjectTest.java
index 47eaf9df..208db3a0 100644
--- a/gson/src/test/java/com/google/gson/functional/ObjectTest.java
+++ b/gson/src/test/java/com/google/gson/functional/ObjectTest.java
@@ -539,17 +539,17 @@ public class ObjectTest {
     Gson gson = new Gson();
     Product product = new Product();
     assertThat(gson.toJson(product)).isEqualTo("{\"attributes\":[],\"departments\":[]}");
-    gson.fromJson(gson.toJson(product), Product.class);
+    Product unused1 = gson.fromJson(gson.toJson(product), Product.class);
 
     product.departments.add(new Department());
     assertThat(gson.toJson(product))
         .isEqualTo("{\"attributes\":[],\"departments\":[{\"name\":\"abc\",\"code\":\"123\"}]}");
-    gson.fromJson(gson.toJson(product), Product.class);
+    Product unused2 = gson.fromJson(gson.toJson(product), Product.class);
 
     product.attributes.add("456");
     assertThat(gson.toJson(product))
         .isEqualTo("{\"attributes\":[\"456\"],\"departments\":[{\"name\":\"abc\",\"code\":\"123\"}]}");
-    gson.fromJson(gson.toJson(product), Product.class);
+    Product unused3 = gson.fromJson(gson.toJson(product), Product.class);
   }
 
   static final class Department {
@@ -611,7 +611,7 @@ public class ObjectTest {
   @Test
   public void testStaticFieldDeserialization() {
     // By default Gson should ignore static fields
-    gson.fromJson("{\"s\":\"custom\"}", ClassWithStaticField.class);
+    ClassWithStaticField unused = gson.fromJson("{\"s\":\"custom\"}", ClassWithStaticField.class);
     assertThat(ClassWithStaticField.s).isEqualTo("initial");
 
     Gson gson = new GsonBuilder()
diff --git a/gson/src/test/java/com/google/gson/functional/ReadersWritersTest.java b/gson/src/test/java/com/google/gson/functional/ReadersWritersTest.java
index 26c6541b..bbbbc472 100644
--- a/gson/src/test/java/com/google/gson/functional/ReadersWritersTest.java
+++ b/gson/src/test/java/com/google/gson/functional/ReadersWritersTest.java
@@ -18,6 +18,7 @@ package com.google.gson.functional;
 import static com.google.common.truth.Truth.assertThat;
 import static org.junit.Assert.fail;
 
+import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 import com.google.gson.JsonStreamParser;
@@ -155,12 +156,14 @@ public class ReadersWritersTest {
       final StringBuilder stringBuilder = new StringBuilder();
       int toStringCallCount = 0;
 
+      @CanIgnoreReturnValue
       @Override
       public Appendable append(char c) throws IOException {
         stringBuilder.append(c);
         return this;
       }
 
+      @CanIgnoreReturnValue
       @Override
       public Appendable append(CharSequence csq) throws IOException {
         if (csq == null) {
@@ -170,6 +173,7 @@ public class ReadersWritersTest {
         return this;
       }
 
+      @CanIgnoreReturnValue
       @Override
       public Appendable append(CharSequence csq, int start, int end) throws IOException {
         if (csq == null) {
diff --git a/gson/src/test/java/com/google/gson/functional/RuntimeTypeAdapterFactoryFunctionalTest.java b/gson/src/test/java/com/google/gson/functional/RuntimeTypeAdapterFactoryFunctionalTest.java
index 24f20449..61cb9502 100644
--- a/gson/src/test/java/com/google/gson/functional/RuntimeTypeAdapterFactoryFunctionalTest.java
+++ b/gson/src/test/java/com/google/gson/functional/RuntimeTypeAdapterFactoryFunctionalTest.java
@@ -17,6 +17,7 @@ package com.google.gson.functional;
 
 import static com.google.common.truth.Truth.assertThat;
 
+import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import com.google.gson.Gson;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
@@ -124,6 +125,7 @@ public final class RuntimeTypeAdapterFactoryFunctionalTest {
      * @throws IllegalArgumentException if either {@code type} or {@code label}
      *     have already been registered on this type adapter.
      */
+    @CanIgnoreReturnValue
     public RuntimeTypeAdapterFactory registerSubtype(Class type, String label) {
       if (type == null || label == null) {
         throw new NullPointerException();
@@ -143,6 +145,7 @@ public final class RuntimeTypeAdapterFactoryFunctionalTest {
      * @throws IllegalArgumentException if either {@code type} or its simple name
      *     have already been registered on this type adapter.
      */
+    @CanIgnoreReturnValue
     public RuntimeTypeAdapterFactory registerSubtype(Class type) {
       return registerSubtype(type, type.getSimpleName());
     }
diff --git a/gson/src/test/java/com/google/gson/functional/TypeHierarchyAdapterTest.java b/gson/src/test/java/com/google/gson/functional/TypeHierarchyAdapterTest.java
index 0804bcfd..9a4c26de 100644
--- a/gson/src/test/java/com/google/gson/functional/TypeHierarchyAdapterTest.java
+++ b/gson/src/test/java/com/google/gson/functional/TypeHierarchyAdapterTest.java
@@ -136,7 +136,7 @@ public final class TypeHierarchyAdapterTest {
   /** This behaviour changed in Gson 2.1; it used to throw. */
   @Test
   public void testRegisterSubTypeFirstAllowed() {
-    new GsonBuilder()
+    Gson unused = new GsonBuilder()
         .registerTypeHierarchyAdapter(Manager.class, new ManagerAdapter())
         .registerTypeHierarchyAdapter(Employee.class, new EmployeeAdapter())
         .create();
diff --git a/gson/src/test/java/com/google/gson/internal/bind/JsonElementReaderTest.java b/gson/src/test/java/com/google/gson/internal/bind/JsonElementReaderTest.java
index b344e6f9..9974da13 100644
--- a/gson/src/test/java/com/google/gson/internal/bind/JsonElementReaderTest.java
+++ b/gson/src/test/java/com/google/gson/internal/bind/JsonElementReaderTest.java
@@ -332,9 +332,9 @@ public final class JsonElementReaderTest {
       fail();
     } catch (IllegalStateException expected) {
     }
-    reader.nextName();
+    String unused1 = reader.nextName();
     assertThat(new JsonPrimitive(1)).isEqualTo(reader.nextJsonElement());
-    reader.nextName();
+    String unused2 = reader.nextName();
     reader.beginObject();
     try {
       reader.nextJsonElement();
@@ -342,7 +342,7 @@ public final class JsonElementReaderTest {
     } catch (IllegalStateException expected) {
     }
     reader.endObject();
-    reader.nextName();
+    String unused3 = reader.nextName();
     reader.beginArray();
     try {
       reader.nextJsonElement();
diff --git a/gson/src/test/java/com/google/gson/metrics/PerformanceTest.java b/gson/src/test/java/com/google/gson/metrics/PerformanceTest.java
index 13f7b7f6..a9b5ca10 100644
--- a/gson/src/test/java/com/google/gson/metrics/PerformanceTest.java
+++ b/gson/src/test/java/com/google/gson/metrics/PerformanceTest.java
@@ -35,7 +35,7 @@ import org.junit.Test;
 /**
  * Tests to measure performance for Gson. All tests in this file will be disabled in code. To run
  * them remove disabled_ prefix from the tests and run them.
- * 
+ *
  * @author Inderjeet Singh
  * @author Joel Leitch
  */
@@ -50,7 +50,7 @@ public class PerformanceTest {
   public void setUp() throws Exception {
     gson = new Gson();
   }
-  
+
   @Test
   public void testDummy() {
     // This is here to prevent Junit for complaining when we disable all tests.
@@ -74,7 +74,7 @@ public class PerformanceTest {
       }
     }
   }
-  
+
   private void parseLongJson(String json) throws JsonParseException {
     ExceptionHolder target = gson.fromJson(json, ExceptionHolder.class);
     assertThat(target.message).contains("Error");
@@ -84,7 +84,7 @@ public class PerformanceTest {
   private static class ExceptionHolder {
     public final String message;
     public final String stackTrace;
-    
+
     // For use by Gson
     @SuppressWarnings("unused")
     private ExceptionHolder() {
@@ -111,7 +111,7 @@ public class PerformanceTest {
       this.value = value;
     }
   }
-  
+
   /**
    * Created in response to http://code.google.com/p/google-gson/issues/detail?id=96
    */
@@ -122,10 +122,10 @@ public class PerformanceTest {
     List list = new ArrayList<>(count);
     for (int i = 0; i < count; ++i) {
       list.add(new CollectionEntry("name"+i,"value"+i));
-    }    
-    gson.toJson(list);
+    }
+    String unused = gson.toJson(list);
   }
-  
+
   /**
    * Created in response to http://code.google.com/p/google-gson/issues/detail?id=96
    */
@@ -143,7 +143,7 @@ public class PerformanceTest {
         sb.append(',');
       }
       sb.append("{name:'name").append(i).append("',value:'value").append(i).append("'}");
-    }    
+    }
     sb.append(']');
     String json = sb.toString();
     Type collectionType = new TypeToken>(){}.getType();
@@ -163,11 +163,11 @@ public class PerformanceTest {
       for (int i = 0; i < size; ++i) {
         ba[i] = 0x05;
       }
-      gson.toJson(ba);
+      String unused = gson.toJson(ba);
       System.out.printf("Gson could serialize a byte array of size: %d\n", size);
     }
   }
-  
+
   /**
    * Created in response to http://code.google.com/p/google-gson/issues/detail?id=96
    */
@@ -197,7 +197,7 @@ public class PerformanceTest {
 // The tests to measure serialization and deserialization performance of Gson
 // Based on the discussion at
 // http://groups.google.com/group/google-gson/browse_thread/thread/7a50b17a390dfaeb
-// Test results: 10/19/2009 
+// Test results: 10/19/2009
 // Serialize classes avg time: 60 ms
 // Deserialized classes avg time: 70 ms
 // Serialize exposed classes avg time: 159 ms
@@ -206,16 +206,16 @@ public class PerformanceTest {
   @Test
   @Ignore
   public void disabled_testSerializeClasses() {
-    ClassWithList c = new ClassWithList("str"); 
-    for (int i = 0; i < COLLECTION_SIZE; ++i) { 
-      c.list.add(new ClassWithField("element-" + i)); 
+    ClassWithList c = new ClassWithList("str");
+    for (int i = 0; i < COLLECTION_SIZE; ++i) {
+      c.list.add(new ClassWithField("element-" + i));
     }
-    StringWriter w = new StringWriter(); 
-    long t1 = System.currentTimeMillis(); 
-    for (int i = 0; i < NUM_ITERATIONS; ++i) { 
-      gson.toJson(c, w); 
-    } 
-    long t2 = System.currentTimeMillis(); 
+    StringWriter w = new StringWriter();
+    long t1 = System.currentTimeMillis();
+    for (int i = 0; i < NUM_ITERATIONS; ++i) {
+      gson.toJson(c, w);
+    }
+    long t2 = System.currentTimeMillis();
     long avg = (t2 - t1) / NUM_ITERATIONS;
     System.out.printf("Serialize classes avg time: %d ms\n", avg);
   }
@@ -225,11 +225,11 @@ public class PerformanceTest {
   public void disabled_testDeserializeClasses() {
     String json = buildJsonForClassWithList();
     ClassWithList[] target = new ClassWithList[NUM_ITERATIONS];
-    long t1 = System.currentTimeMillis(); 
+    long t1 = System.currentTimeMillis();
     for (int i = 0; i < NUM_ITERATIONS; ++i) {
       target[i] = gson.fromJson(json, ClassWithList.class);
     }
-    long t2 = System.currentTimeMillis(); 
+    long t2 = System.currentTimeMillis();
     long avg = (t2 - t1) / NUM_ITERATIONS;
     System.out.printf("Deserialize classes avg time: %d ms\n", avg);
   }
@@ -241,33 +241,33 @@ public class PerformanceTest {
     for (long l = 0; l < 100000; l++) {
       largeObject.put("field" + l, l);
     }
-    
-    long t1 = System.currentTimeMillis(); 
+
+    long t1 = System.currentTimeMillis();
     String json = gson.toJson(largeObject);
     long t2 = System.currentTimeMillis();
     System.out.printf("Large object serialized in: %d ms\n", (t2 - t1));
 
-    t1 = System.currentTimeMillis(); 
-    gson.fromJson(json, new TypeToken>() {}.getType());
+    t1 = System.currentTimeMillis();
+    Map unused = gson.fromJson(json, new TypeToken>() {}.getType());
     t2 = System.currentTimeMillis();
     System.out.printf("Large object deserialized in: %d ms\n", (t2 - t1));
-    
+
   }
 
   @Test
   @Ignore
   public void disabled_testSerializeExposedClasses() {
-    ClassWithListOfObjects c1 = new ClassWithListOfObjects("str"); 
-    for (int i1 = 0; i1 < COLLECTION_SIZE; ++i1) { 
-      c1.list.add(new ClassWithExposedField("element-" + i1)); 
+    ClassWithListOfObjects c1 = new ClassWithListOfObjects("str");
+    for (int i1 = 0; i1 < COLLECTION_SIZE; ++i1) {
+      c1.list.add(new ClassWithExposedField("element-" + i1));
     }
-    ClassWithListOfObjects c = c1; 
-    StringWriter w = new StringWriter(); 
-    long t1 = System.currentTimeMillis(); 
-    for (int i = 0; i < NUM_ITERATIONS; ++i) { 
-      gson.toJson(c, w); 
-    } 
-    long t2 = System.currentTimeMillis(); 
+    ClassWithListOfObjects c = c1;
+    StringWriter w = new StringWriter();
+    long t1 = System.currentTimeMillis();
+    for (int i = 0; i < NUM_ITERATIONS; ++i) {
+      gson.toJson(c, w);
+    }
+    long t2 = System.currentTimeMillis();
     long avg = (t2 - t1) / NUM_ITERATIONS;
     System.out.printf("Serialize exposed classes avg time: %d ms\n", avg);
   }
@@ -277,11 +277,11 @@ public class PerformanceTest {
   public void disabled_testDeserializeExposedClasses() {
     String json = buildJsonForClassWithList();
     ClassWithListOfObjects[] target = new ClassWithListOfObjects[NUM_ITERATIONS];
-    long t1 = System.currentTimeMillis(); 
+    long t1 = System.currentTimeMillis();
     for (int i = 0; i < NUM_ITERATIONS; ++i) {
       target[i] = gson.fromJson(json, ClassWithListOfObjects.class);
     }
-    long t2 = System.currentTimeMillis(); 
+    long t2 = System.currentTimeMillis();
     long avg = (t2 - t1) / NUM_ITERATIONS;
     System.out.printf("Deserialize exposed classes avg time: %d ms\n", avg);
   }
@@ -297,7 +297,7 @@ public class PerformanceTest {
     Gson gson = new Gson();
     String json = gson.toJson(original);
     Type longToLong = new TypeToken>(){}.getType();
-    gson.fromJson(json, longToLong);
+    Map unused = gson.fromJson(json, longToLong);
   }
 
   private String buildJsonForClassWithList() {
@@ -320,8 +320,8 @@ public class PerformanceTest {
   }
 
   @SuppressWarnings("unused")
-  private static final class ClassWithList { 
-    final String field; 
+  private static final class ClassWithList {
+    final String field;
     final List list = new ArrayList<>(COLLECTION_SIZE);
     ClassWithList() {
       this(null);
@@ -329,24 +329,24 @@ public class PerformanceTest {
     ClassWithList(String field) {
       this.field = field;
     }
-  } 
+  }
 
   @SuppressWarnings("unused")
-  private static final class ClassWithField { 
+  private static final class ClassWithField {
     final String field;
     ClassWithField() {
       this("");
     }
-    public ClassWithField(String field) { 
-      this.field = field; 
-    } 
+    public ClassWithField(String field) {
+      this.field = field;
+    }
   }
 
   @SuppressWarnings("unused")
-  private static final class ClassWithListOfObjects { 
-    @Expose 
-    final String field; 
-    @Expose 
+  private static final class ClassWithListOfObjects {
+    @Expose
+    final String field;
+    @Expose
     final List list = new ArrayList<>(COLLECTION_SIZE);
     ClassWithListOfObjects() {
       this(null);
@@ -354,17 +354,17 @@ public class PerformanceTest {
     ClassWithListOfObjects(String field) {
       this.field = field;
     }
-  } 
+  }
 
   @SuppressWarnings("unused")
-  private static final class ClassWithExposedField { 
-    @Expose 
+  private static final class ClassWithExposedField {
+    @Expose
     final String field;
     ClassWithExposedField() {
       this("");
     }
-    ClassWithExposedField(String field) { 
-      this.field = field; 
-    } 
+    ClassWithExposedField(String field) {
+      this.field = field;
+    }
   }
 }
diff --git a/gson/src/test/java/com/google/gson/regression/JsonAdapterNullSafeTest.java b/gson/src/test/java/com/google/gson/regression/JsonAdapterNullSafeTest.java
index 354f2fd3..10c9a9a5 100644
--- a/gson/src/test/java/com/google/gson/regression/JsonAdapterNullSafeTest.java
+++ b/gson/src/test/java/com/google/gson/regression/JsonAdapterNullSafeTest.java
@@ -30,7 +30,7 @@ public class JsonAdapterNullSafeTest {
   @Test
   public void testNullSafeBugSerialize() {
     Device device = new Device("ec57803e");
-    gson.toJson(device);
+    String unused = gson.toJson(device);
   }
 
   @Test
diff --git a/gson/src/test/java/com/google/gson/stream/JsonReaderPathTest.java b/gson/src/test/java/com/google/gson/stream/JsonReaderPathTest.java
index ae6c3f43..d32a9666 100644
--- a/gson/src/test/java/com/google/gson/stream/JsonReaderPathTest.java
+++ b/gson/src/test/java/com/google/gson/stream/JsonReaderPathTest.java
@@ -51,34 +51,34 @@ public class JsonReaderPathTest {
     reader.beginObject();
     assertThat(reader.getPreviousPath()).isEqualTo("$.");
     assertThat(reader.getPath()).isEqualTo("$.");
-    reader.nextName();
+    String unused1 = reader.nextName();
     assertThat(reader.getPreviousPath()).isEqualTo("$.a");
     assertThat(reader.getPath()).isEqualTo("$.a");
     reader.beginArray();
     assertThat(reader.getPreviousPath()).isEqualTo("$.a[0]");
     assertThat(reader.getPath()).isEqualTo("$.a[0]");
-    reader.nextInt();
+    int unused2 = reader.nextInt();
     assertThat(reader.getPreviousPath()).isEqualTo("$.a[0]");
     assertThat(reader.getPath()).isEqualTo("$.a[1]");
-    reader.nextBoolean();
+    boolean unused3 = reader.nextBoolean();
     assertThat(reader.getPreviousPath()).isEqualTo("$.a[1]");
     assertThat(reader.getPath()).isEqualTo("$.a[2]");
-    reader.nextBoolean();
+    boolean unused4 = reader.nextBoolean();
     assertThat(reader.getPreviousPath()).isEqualTo("$.a[2]");
     assertThat(reader.getPath()).isEqualTo("$.a[3]");
     reader.nextNull();
     assertThat(reader.getPreviousPath()).isEqualTo("$.a[3]");
     assertThat(reader.getPath()).isEqualTo("$.a[4]");
-    reader.nextString();
+    String unused5 = reader.nextString();
     assertThat(reader.getPreviousPath()).isEqualTo("$.a[4]");
     assertThat(reader.getPath()).isEqualTo("$.a[5]");
     reader.beginObject();
     assertThat(reader.getPreviousPath()).isEqualTo("$.a[5].");
     assertThat(reader.getPath()).isEqualTo("$.a[5].");
-    reader.nextName();
+    String unused6 = reader.nextName();
     assertThat(reader.getPreviousPath()).isEqualTo("$.a[5].c");
     assertThat(reader.getPath()).isEqualTo("$.a[5].c");
-    reader.nextString();
+    String unused7 = reader.nextString();
     assertThat(reader.getPreviousPath()).isEqualTo("$.a[5].c");
     assertThat(reader.getPath()).isEqualTo("$.a[5].c");
     reader.endObject();
@@ -87,7 +87,7 @@ public class JsonReaderPathTest {
     reader.beginArray();
     assertThat(reader.getPreviousPath()).isEqualTo("$.a[6][0]");
     assertThat(reader.getPath()).isEqualTo("$.a[6][0]");
-    reader.nextInt();
+    int unused8 = reader.nextInt();
     assertThat(reader.getPreviousPath()).isEqualTo("$.a[6][0]");
     assertThat(reader.getPath()).isEqualTo("$.a[6][1]");
     reader.endArray();
@@ -106,49 +106,49 @@ public class JsonReaderPathTest {
     assertThat(reader.getPreviousPath()).isEqualTo("$");
     assertThat(reader.getPath()).isEqualTo("$");
 
-    reader.peek();
+    JsonToken unused1 = reader.peek();
     assertThat(reader.getPreviousPath()).isEqualTo("$");
     assertThat(reader.getPath()).isEqualTo("$");
     reader.beginObject();
     assertThat(reader.getPreviousPath()).isEqualTo("$.");
     assertThat(reader.getPath()).isEqualTo("$.");
 
-    reader.peek();
+    JsonToken unused2 = reader.peek();
     assertThat(reader.getPreviousPath()).isEqualTo("$.");
     assertThat(reader.getPath()).isEqualTo("$.");
-    reader.nextName();
+    String unused3 = reader.nextName();
     assertThat(reader.getPreviousPath()).isEqualTo("$.a");
     assertThat(reader.getPath()).isEqualTo("$.a");
 
-    reader.peek();
+    JsonToken unused4 = reader.peek();
     assertThat(reader.getPreviousPath()).isEqualTo("$.a");
     assertThat(reader.getPath()).isEqualTo("$.a");
-    reader.nextInt();
+    int unused5 = reader.nextInt();
     assertThat(reader.getPreviousPath()).isEqualTo("$.a");
     assertThat(reader.getPath()).isEqualTo("$.a");
 
-    reader.peek();
+    JsonToken unused6 = reader.peek();
     assertThat(reader.getPreviousPath()).isEqualTo("$.a");
     assertThat(reader.getPath()).isEqualTo("$.a");
-    reader.nextName();
+    String unused7 = reader.nextName();
     assertThat(reader.getPreviousPath()).isEqualTo("$.b");
     assertThat(reader.getPath()).isEqualTo("$.b");
 
-    reader.peek();
+    JsonToken unused8 = reader.peek();
     assertThat(reader.getPreviousPath()).isEqualTo("$.b");
     assertThat(reader.getPath()).isEqualTo("$.b");
-    reader.nextInt();
+    int unused9 = reader.nextInt();
     assertThat(reader.getPreviousPath()).isEqualTo("$.b");
     assertThat(reader.getPath()).isEqualTo("$.b");
 
-    reader.peek();
+    JsonToken unused10 = reader.peek();
     assertThat(reader.getPreviousPath()).isEqualTo("$.b");
     assertThat(reader.getPath()).isEqualTo("$.b");
     reader.endObject();
     assertThat(reader.getPreviousPath()).isEqualTo("$");
     assertThat(reader.getPath()).isEqualTo("$");
 
-    reader.peek();
+    JsonToken unused11 = reader.peek();
     assertThat(reader.getPreviousPath()).isEqualTo("$");
     assertThat(reader.getPath()).isEqualTo("$");
     reader.close();
@@ -161,35 +161,35 @@ public class JsonReaderPathTest {
     assertThat(reader.getPreviousPath()).isEqualTo("$");
     assertThat(reader.getPath()).isEqualTo("$");
 
-    reader.peek();
+    JsonToken unused1 = reader.peek();
     assertThat(reader.getPreviousPath()).isEqualTo("$");
     assertThat(reader.getPath()).isEqualTo("$");
     reader.beginArray();
     assertThat(reader.getPreviousPath()).isEqualTo("$[0]");
     assertThat(reader.getPath()).isEqualTo("$[0]");
 
-    reader.peek();
+    JsonToken unused2 = reader.peek();
     assertThat(reader.getPreviousPath()).isEqualTo("$[0]");
     assertThat(reader.getPath()).isEqualTo("$[0]");
-    reader.nextInt();
+    int unused3 = reader.nextInt();
     assertThat(reader.getPreviousPath()).isEqualTo("$[0]");
     assertThat(reader.getPath()).isEqualTo("$[1]");
 
-    reader.peek();
+    JsonToken unused4 = reader.peek();
     assertThat(reader.getPreviousPath()).isEqualTo("$[0]");
     assertThat(reader.getPath()).isEqualTo("$[1]");
-    reader.nextInt();
+    int unused5 = reader.nextInt();
     assertThat(reader.getPreviousPath()).isEqualTo("$[1]");
     assertThat(reader.getPath()).isEqualTo("$[2]");
 
-    reader.peek();
+    JsonToken unused6 = reader.peek();
     assertThat(reader.getPreviousPath()).isEqualTo("$[1]");
     assertThat(reader.getPath()).isEqualTo("$[2]");
     reader.endArray();
     assertThat(reader.getPreviousPath()).isEqualTo("$");
     assertThat(reader.getPath()).isEqualTo("$");
 
-    reader.peek();
+    JsonToken unused7 = reader.peek();
     assertThat(reader.getPreviousPath()).isEqualTo("$");
     assertThat(reader.getPath()).isEqualTo("$");
     reader.close();
@@ -249,11 +249,11 @@ public class JsonReaderPathTest {
     reader.beginObject();
     assertThat(reader.getPreviousPath()).isEqualTo("$.");
     assertThat(reader.getPath()).isEqualTo("$.");
-    reader.nextName();
+    String unused1 = reader.nextName();
     reader.skipValue();
     assertThat(reader.getPreviousPath()).isEqualTo("$.a");
     assertThat(reader.getPath()).isEqualTo("$.a");
-    reader.nextName();
+    String unused2 = reader.nextName();
     assertThat(reader.getPreviousPath()).isEqualTo("$.b");
     assertThat(reader.getPath()).isEqualTo("$.b");
   }
@@ -261,7 +261,7 @@ public class JsonReaderPathTest {
   @Test public void skipObjectEnd() throws IOException {
     JsonReader reader = factory.create("{\"a\":{},\"b\":2}");
     reader.beginObject();
-    reader.nextName();
+    String unused = reader.nextName();
     reader.beginObject();
     assertThat(reader.getPreviousPath()).isEqualTo("$.a.");
     assertThat(reader.getPath()).isEqualTo("$.a.");
@@ -353,37 +353,37 @@ public class JsonReaderPathTest {
     reader.beginObject();
     assertThat(reader.getPreviousPath()).isEqualTo("$.");
     assertThat(reader.getPath()).isEqualTo("$.");
-    reader.nextName();
+    String unused1 = reader.nextName();
     assertThat(reader.getPreviousPath()).isEqualTo("$.a");
     assertThat(reader.getPath()).isEqualTo("$.a");
     reader.beginObject();
     assertThat(reader.getPreviousPath()).isEqualTo("$.a.");
     assertThat(reader.getPath()).isEqualTo("$.a.");
-    reader.nextName();
+    String unused2 = reader.nextName();
     assertThat(reader.getPreviousPath()).isEqualTo("$.a.a1");
     assertThat(reader.getPath()).isEqualTo("$.a.a1");
-    reader.nextInt();
+    int unused3 = reader.nextInt();
     assertThat(reader.getPreviousPath()).isEqualTo("$.a.a1");
     assertThat(reader.getPath()).isEqualTo("$.a.a1");
-    reader.nextName();
+    String unused4 = reader.nextName();
     assertThat(reader.getPreviousPath()).isEqualTo("$.a.a2");
     assertThat(reader.getPath()).isEqualTo("$.a.a2");
-    reader.nextInt();
+    int unused5 = reader.nextInt();
     assertThat(reader.getPreviousPath()).isEqualTo("$.a.a2");
     assertThat(reader.getPath()).isEqualTo("$.a.a2");
     reader.endObject();
     assertThat(reader.getPreviousPath()).isEqualTo("$.a");
     assertThat(reader.getPath()).isEqualTo("$.a");
-    reader.nextName();
+    String unused6 = reader.nextName();
     assertThat(reader.getPreviousPath()).isEqualTo("$.b");
     assertThat(reader.getPath()).isEqualTo("$.b");
     reader.beginObject();
     assertThat(reader.getPreviousPath()).isEqualTo("$.b.");
     assertThat(reader.getPath()).isEqualTo("$.b.");
-    reader.nextName();
+    String unused7 = reader.nextName();
     assertThat(reader.getPreviousPath()).isEqualTo("$.b.b1");
     assertThat(reader.getPath()).isEqualTo("$.b.b1");
-    reader.nextInt();
+    int unused8 = reader.nextInt();
     assertThat(reader.getPreviousPath()).isEqualTo("$.b.b1");
     assertThat(reader.getPath()).isEqualTo("$.b.b1");
     reader.endObject();
diff --git a/gson/src/test/java/com/google/gson/stream/JsonReaderTest.java b/gson/src/test/java/com/google/gson/stream/JsonReaderTest.java
index c3940eff..2009f16b 100644
--- a/gson/src/test/java/com/google/gson/stream/JsonReaderTest.java
+++ b/gson/src/test/java/com/google/gson/stream/JsonReaderTest.java
@@ -33,6 +33,7 @@ import java.io.IOException;
 import java.io.Reader;
 import java.io.StringReader;
 import java.util.Arrays;
+import com.google.gson.stream.JsonToken;
 import org.junit.Ignore;
 import org.junit.Test;
 
@@ -855,8 +856,8 @@ public final class JsonReaderTest {
     try {
       JsonReader reader = new JsonReader(reader("{\"a\":true}"));
       reader.beginObject();
-      reader.nextName();
-      reader.peek();
+      String unused1 = reader.nextName();
+      JsonToken unused2 = reader.peek();
       reader.close();
       reader.nextBoolean();
       fail();
@@ -869,13 +870,13 @@ public final class JsonReaderTest {
     JsonReader reader = new JsonReader(reader("{\"a\":true}"));
     reader.beginObject();
     try {
-      reader.nextString();
+      String unused = reader.nextString();
       fail();
     } catch (IllegalStateException expected) {
     }
     assertThat(reader.nextName()).isEqualTo("a");
     try {
-      reader.nextName();
+      String unused = reader.nextName();
       fail();
     } catch (IllegalStateException expected) {
     }
@@ -1234,8 +1235,8 @@ public final class JsonReaderTest {
     JsonReader reader = new JsonReader(reader("[true;true]"));
     reader.beginArray();
     try {
-      reader.nextBoolean();
-      reader.nextBoolean();
+      boolean unused1 = reader.nextBoolean();
+      boolean unused2 = reader.nextBoolean();
       fail();
     } catch (IOException expected) {
     }
@@ -1268,8 +1269,8 @@ public final class JsonReaderTest {
     reader.beginObject();
     assertThat(reader.nextName()).isEqualTo("a");
     try {
-      reader.nextBoolean();
-      reader.nextName();
+      boolean unused1 = reader.nextBoolean();
+      String unused2 = reader.nextName();
       fail();
     } catch (IOException expected) {
     }
@@ -1601,9 +1602,9 @@ public final class JsonReaderTest {
     JsonReader reader1 = new JsonReader(reader(json));
     reader1.setLenient(true);
     reader1.beginArray();
-    reader1.nextString();
+    String unused1 = reader1.nextString();
     try {
-      reader1.peek();
+      JsonToken unused2 = reader1.peek();
       fail();
     } catch (IOException expected) {
       assertThat(expected.getMessage()).isEqualTo(message);
@@ -1615,7 +1616,7 @@ public final class JsonReaderTest {
     reader2.beginArray();
     reader2.skipValue();
     try {
-      reader2.peek();
+      JsonToken unused3 = reader2.peek();
       fail();
     } catch (IOException expected) {
       assertThat(expected.getMessage()).isEqualTo(message);
@@ -1626,14 +1627,14 @@ public final class JsonReaderTest {
   public void testFailWithPositionDeepPath() throws IOException {
     JsonReader reader = new JsonReader(reader("[1,{\"a\":[2,3,}"));
     reader.beginArray();
-    reader.nextInt();
+    int unused1 = reader.nextInt();
     reader.beginObject();
-    reader.nextName();
+    String unused2 = reader.nextName();
     reader.beginArray();
-    reader.nextInt();
-    reader.nextInt();
+    int unused3 = reader.nextInt();
+    int unused4 = reader.nextInt();
     try {
-      reader.peek();
+      JsonToken unused5 = reader.peek();
       fail();
     } catch (IOException expected) {
       assertThat(expected.getMessage()).isEqualTo("Expected value at line 1 column 14 path $[1].a[2]");
diff --git a/proto/src/main/java/com/google/gson/protobuf/ProtoTypeAdapter.java b/proto/src/main/java/com/google/gson/protobuf/ProtoTypeAdapter.java
index 9aa166fc..6b4003f0 100644
--- a/proto/src/main/java/com/google/gson/protobuf/ProtoTypeAdapter.java
+++ b/proto/src/main/java/com/google/gson/protobuf/ProtoTypeAdapter.java
@@ -20,6 +20,7 @@ import static java.util.Objects.requireNonNull;
 
 import com.google.common.base.CaseFormat;
 import com.google.common.collect.MapMaker;
+import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import com.google.gson.JsonArray;
 import com.google.gson.JsonDeserializationContext;
 import com.google.gson.JsonDeserializer;
@@ -102,6 +103,7 @@ public class ProtoTypeAdapter
       setFieldNameSerializationFormat(fromFieldNameFormat, toFieldNameFormat);
     }
 
+    @CanIgnoreReturnValue
     public Builder setEnumSerialization(EnumSerialization enumSerialization) {
       this.enumSerialization = requireNonNull(enumSerialization);
       return this;
@@ -122,6 +124,7 @@ public class ProtoTypeAdapter
      * n__id_ct       nIdCt
      * }
*/ + @CanIgnoreReturnValue public Builder setFieldNameSerializationFormat(CaseFormat fromFieldNameFormat, CaseFormat toFieldNameFormat) { this.protoFormat = fromFieldNameFormat; @@ -141,6 +144,7 @@ public class ProtoTypeAdapter * ...the adapter will serialize the field using '{@code appId}' instead of the default ' * {@code clientAppId}'. This lets you customize the name serialization of any proto field. */ + @CanIgnoreReturnValue public Builder addSerializedNameExtension( Extension serializedNameExtension) { serializedNameExtensions.add(requireNonNull(serializedNameExtension)); @@ -166,6 +170,7 @@ public class ProtoTypeAdapter * Note that you need to set the enum serialization of this adapter to * {@link EnumSerialization#NAME}, otherwise these annotations will be ignored. */ + @CanIgnoreReturnValue public Builder addSerializedEnumValueExtension( Extension serializedEnumValueExtension) { serializedEnumValueExtensions.add(requireNonNull(serializedEnumValueExtension));