test_class.file: feya/libraries/archive_diff/diff.shared/src/test/java/com/google/archivepatcher/shared/TypedRangeTest.java
test_class.identifier: TypedRangeTest
test_case.body: @Test
    public void testEquals() {
      TypedRange<String> range1a = new TypedRange<String>(123, 456, "hi mom");
      Assert.assertEquals(range1a, range1a); // identity case
      TypedRange<String> range1b = new TypedRange<String>(123, 456, "hi mom");
      Assert.assertEquals(range1a, range1b); // equality case
      Assert.assertNotEquals(range1a, new TypedRange<String>(123 + 1, 456, "hi mom")); // offset
      Assert.assertNotEquals(range1a, new TypedRange<String>(123, 456 + 1, "hi mom")); // length
      Assert.assertNotEquals(range1a, new TypedRange<String>(123, 456, "foo")); // metadata
      Assert.assertNotEquals(range1a, new TypedRange<String>(123, 456, null)); // no metadata
      Assert.assertNotEquals(new TypedRange<String>(123, 456, null), range1a); // other code branch
      Assert.assertEquals(
          new TypedRange<String>(123, 456, null),
          new TypedRange<String>(123, 456, null)); // both with null metadata
      Assert.assertNotEquals(range1a, null); // versus null
      Assert.assertNotEquals(range1a, "space channel 5"); // versus object of different class
    }
test_case.class_method_signature: TypedRangeTest.testEquals()
test_case.full_signature: @Test public void testEquals()
test_case.identifier: testEquals
test_case.invocations: assertEquals assertEquals assertNotEquals assertNotEquals assertNotEquals assertNotEquals assertNotEquals assertEquals assertNotEquals assertNotEquals
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testEquals()
focal_class.declarator: offset
focal_class.modifier: private final
focal_class.original_string: private final long offset;
focal_class.type: long
focal_class.var_name: offset
focal_class.declarator: length
focal_class.modifier: private final
focal_class.original_string: private final long length;
focal_class.type: long
focal_class.var_name: length
focal_class.declarator: metadata
focal_class.modifier: private final
focal_class.original_string: private final T metadata;
focal_class.type: T
focal_class.var_name: metadata
focal_class.file: feya/libraries/archive_diff/diff.shared/src/main/java/com/google/archivepatcher/shared/TypedRange.java
focal_class.identifier: TypedRange
focal_class.interfaces: implements Comparable<TypedRange<T>>
focal_class.class_method_signature: TypedRange.TypedRange(long offset, long length, T metadata)
focal_class.full_signature: public  TypedRange(long offset, long length, T metadata)
focal_class.identifier: TypedRange
focal_class.modifiers: public
focal_class.parameters: (long offset, long length, T metadata)
focal_class.signature:  TypedRange(long offset, long length, T metadata)
focal_class.class_method_signature: TypedRange.toString()
focal_class.full_signature: @Override public String toString()
focal_class.identifier: toString
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String toString()
focal_class.class_method_signature: TypedRange.getOffset()
focal_class.full_signature: public long getOffset()
focal_class.identifier: getOffset
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: long
focal_class.signature: long getOffset()
focal_class.class_method_signature: TypedRange.getLength()
focal_class.full_signature: public long getLength()
focal_class.identifier: getLength
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: long
focal_class.signature: long getLength()
focal_class.class_method_signature: TypedRange.getMetadata()
focal_class.full_signature: public T getMetadata()
focal_class.identifier: getMetadata
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: T
focal_class.signature: T getMetadata()
focal_class.class_method_signature: TypedRange.hashCode()
focal_class.full_signature: @Override public int hashCode()
focal_class.identifier: hashCode
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: int
focal_class.signature: int hashCode()
focal_class.class_method_signature: TypedRange.equals(Object obj)
focal_class.full_signature: @Override public boolean equals(Object obj)
focal_class.identifier: equals
focal_class.modifiers: @Override public
focal_class.parameters: (Object obj)
focal_class.return: boolean
focal_class.signature: boolean equals(Object obj)
focal_class.class_method_signature: TypedRange.compareTo(TypedRange<T> other)
focal_class.full_signature: @Override public int compareTo(TypedRange<T> other)
focal_class.identifier: compareTo
focal_class.modifiers: @Override public
focal_class.parameters: (TypedRange<T> other)
focal_class.return: int
focal_class.signature: int compareTo(TypedRange<T> other)
focal_method.body: @Override
    public boolean equals(Object obj) {
      if (this == obj) return true;
      if (obj == null) return false;
      if (getClass() != obj.getClass()) return false;
      TypedRange<?> other = (TypedRange<?>) obj;
      if (length != other.length) return false;
      if (metadata == null) {
        if (other.metadata != null) return false;
      } else if (!metadata.equals(other.metadata)) return false;
      if (offset != other.offset) return false;
      return true;
    }
focal_method.class_method_signature: TypedRange.equals(Object obj)
focal_method.full_signature: @Override public boolean equals(Object obj)
focal_method.identifier: equals
focal_method.invocations: getClass getClass equals
focal_method.modifiers: @Override public
focal_method.parameters: (Object obj)
focal_method.return: boolean
focal_method.signature: boolean equals(Object obj)