| Index: third_party/protobuf/java/core/src/main/java/com/google/protobuf/LongArrayList.java
 | 
| diff --git a/third_party/protobuf/java/core/src/main/java/com/google/protobuf/LongArrayList.java b/third_party/protobuf/java/core/src/main/java/com/google/protobuf/LongArrayList.java
 | 
| index bc4475d11aa916cf79529e18fa636f28eb7bf3e6..5a772e3aa8407ccf9ec14a9c7ea4d96cb7bc3caa 100644
 | 
| --- a/third_party/protobuf/java/core/src/main/java/com/google/protobuf/LongArrayList.java
 | 
| +++ b/third_party/protobuf/java/core/src/main/java/com/google/protobuf/LongArrayList.java
 | 
| @@ -38,25 +38,27 @@ import java.util.RandomAccess;
 | 
|  
 | 
|  /**
 | 
|   * An implementation of {@link LongList} on top of a primitive array.
 | 
| - * 
 | 
| + *
 | 
|   * @author dweis@google.com (Daniel Weis)
 | 
|   */
 | 
| -final class LongArrayList extends AbstractProtobufList<Long> implements LongList, RandomAccess {
 | 
| -  
 | 
| +final class LongArrayList
 | 
| +    extends AbstractProtobufList<Long>
 | 
| +    implements LongList, RandomAccess {
 | 
| +
 | 
|    private static final LongArrayList EMPTY_LIST = new LongArrayList();
 | 
|    static {
 | 
|      EMPTY_LIST.makeImmutable();
 | 
|    }
 | 
| -  
 | 
| +
 | 
|    public static LongArrayList emptyList() {
 | 
|      return EMPTY_LIST;
 | 
|    }
 | 
| -  
 | 
| +
 | 
|    /**
 | 
|     * The backing store for the list.
 | 
|     */
 | 
|    private long[] array;
 | 
| -  
 | 
| +
 | 
|    /**
 | 
|     * The size of the list distinct from the length of the array. That is, it is the number of
 | 
|     * elements set in the list.
 | 
| @@ -71,33 +73,34 @@ final class LongArrayList extends AbstractProtobufList<Long> implements LongList
 | 
|    }
 | 
|  
 | 
|    /**
 | 
| -   * Constructs a new mutable {@code LongArrayList} containing the same elements as {@code other}.
 | 
| +   * Constructs a new mutable {@code LongArrayList}
 | 
| +   * containing the same elements as {@code other}.
 | 
|     */
 | 
| -  private LongArrayList(long[] array, int size) {
 | 
| -    this.array = array;
 | 
| +  private LongArrayList(long[] other, int size) {
 | 
| +    array = other;
 | 
|      this.size = size;
 | 
|    }
 | 
| -  
 | 
| +
 | 
|    @Override
 | 
|    public boolean equals(Object o) {
 | 
|      if (this == o) {
 | 
|        return true;
 | 
|      }
 | 
| -    if (!(o instanceof IntArrayList)) {
 | 
| +    if (!(o instanceof LongArrayList)) {
 | 
|        return super.equals(o);
 | 
|      }
 | 
|      LongArrayList other = (LongArrayList) o;
 | 
|      if (size != other.size) {
 | 
|        return false;
 | 
|      }
 | 
| -    
 | 
| +
 | 
|      final long[] arr = other.array;
 | 
|      for (int i = 0; i < size; i++) {
 | 
|        if (array[i] != arr[i]) {
 | 
|          return false;
 | 
|        }
 | 
|      }
 | 
| -    
 | 
| +
 | 
|      return true;
 | 
|    }
 | 
|  
 | 
| @@ -117,7 +120,7 @@ final class LongArrayList extends AbstractProtobufList<Long> implements LongList
 | 
|      }
 | 
|      return new LongArrayList(Arrays.copyOf(array, capacity), size);
 | 
|    }
 | 
| -  
 | 
| +
 | 
|    @Override
 | 
|    public Long get(int index) {
 | 
|      return getLong(index);
 | 
| @@ -169,7 +172,7 @@ final class LongArrayList extends AbstractProtobufList<Long> implements LongList
 | 
|      if (index < 0 || index > size) {
 | 
|        throw new IndexOutOfBoundsException(makeOutOfBoundsExceptionMessage(index));
 | 
|      }
 | 
| -    
 | 
| +
 | 
|      if (size < array.length) {
 | 
|        // Shift everything over to make room
 | 
|        System.arraycopy(array, index, array, index + 1, size - index);
 | 
| @@ -177,10 +180,10 @@ final class LongArrayList extends AbstractProtobufList<Long> implements LongList
 | 
|        // Resize to 1.5x the size
 | 
|        int length = ((size * 3) / 2) + 1;
 | 
|        long[] newArray = new long[length];
 | 
| -      
 | 
| +
 | 
|        // Copy the first part directly
 | 
|        System.arraycopy(array, 0, newArray, 0, index);
 | 
| -      
 | 
| +
 | 
|        // Copy the rest shifted over by one to make room
 | 
|        System.arraycopy(array, index, newArray, index + 1, size - index);
 | 
|        array = newArray;
 | 
| @@ -194,38 +197,38 @@ final class LongArrayList extends AbstractProtobufList<Long> implements LongList
 | 
|    @Override
 | 
|    public boolean addAll(Collection<? extends Long> collection) {
 | 
|      ensureIsMutable();
 | 
| -    
 | 
| +
 | 
|      if (collection == null) {
 | 
|        throw new NullPointerException();
 | 
|      }
 | 
| -    
 | 
| +
 | 
|      // We specialize when adding another LongArrayList to avoid boxing elements.
 | 
|      if (!(collection instanceof LongArrayList)) {
 | 
|        return super.addAll(collection);
 | 
|      }
 | 
| -    
 | 
| +
 | 
|      LongArrayList list = (LongArrayList) collection;
 | 
|      if (list.size == 0) {
 | 
|        return false;
 | 
|      }
 | 
| -    
 | 
| +
 | 
|      int overflow = Integer.MAX_VALUE - size;
 | 
|      if (overflow < list.size) {
 | 
|        // We can't actually represent a list this large.
 | 
|        throw new OutOfMemoryError();
 | 
|      }
 | 
| -    
 | 
| +
 | 
|      int newSize = size + list.size;
 | 
|      if (newSize > array.length) {
 | 
|        array = Arrays.copyOf(array, newSize);
 | 
|      }
 | 
| -    
 | 
| +
 | 
|      System.arraycopy(list.array, 0, array, size, list.size);
 | 
|      size = newSize;
 | 
|      modCount++;
 | 
|      return true;
 | 
|    }
 | 
| -  
 | 
| +
 | 
|    @Override
 | 
|    public boolean remove(Object o) {
 | 
|      ensureIsMutable();
 | 
| @@ -254,7 +257,7 @@ final class LongArrayList extends AbstractProtobufList<Long> implements LongList
 | 
|    /**
 | 
|     * Ensures that the provided {@code index} is within the range of {@code [0, size]}. Throws an
 | 
|     * {@link IndexOutOfBoundsException} if it is not.
 | 
| -   * 
 | 
| +   *
 | 
|     * @param index the index to verify is in range
 | 
|     */
 | 
|    private void ensureIndexInRange(int index) {
 | 
| 
 |