class ByteSourceAssert extends AbstractAssert<ByteSourceAssert, ByteSource> {

  protected ByteSourceAssert(ByteSource actual) {
    super(actual, ByteSourceAssert.class);
  }

  /**
   * Verifies that the actual {@link ByteSource} has the same content as the provided one.<br>
   * <p>
   * Example :
   * <pre><code class='java'> ByteSource actual = ByteSource.wrap(new byte[1]);
   * ByteSource other = ByteSource.wrap(new byte[1]);
   *
   * assertThat(actual).hasSameContentAs(other);</code></pre>
   *
   * @param other ByteSource to compare against.
   * @return this {@link ByteSourceAssert} for assertions chaining.
   * @throws IOException    if {@link ByteSource#contentEquals} throws one.
   * @throws AssertionError if the actual {@link ByteSource} is {@code null}.
   * @throws AssertionError if the actual {@link ByteSource} does not contain the same content.
   */
  public ByteSourceAssert hasSameContentAs(ByteSource other) throws IOException {
    isNotNull();
    if (!actual.contentEquals(other)) throw assertionError(shouldHaveSameContent(actual, other));
    return this;
  }

  /**
   * Verifies that the actual {@link ByteSource} is empty.
   * <p>
   * Example :
   * <pre><code class='java'> ByteSource actual = ByteSource.wrap(new byte[0]);
   *
   * assertThat(actual).isEmpty();</code></pre>
   *
   * @throws IOException    if {@link ByteSource#isEmpty} throws one.
   * @throws AssertionError if the actual {@link ByteSource} is {@code null}.
   * @throws AssertionError if the actual {@link ByteSource} is not empty.
   */
  public void isEmpty() throws IOException {
    isNotNull();
    if (!actual.isEmpty()) throw assertionError(shouldBeEmpty(actual));
  }

  /**
   * Verifies that the size of the actual {@link ByteSource} is equal to the given one.
   * <p>
   * Example :
   *
   * <pre><code class='java'> ByteSource actual = ByteSource.wrap(new byte[9]);
   *
   * assertThat(actual).hasSize(9);</code></pre>
   *
   * @param expectedSize the expected size of actual {@link ByteSource}.
   * @return this {@link ByteSourceAssert} for assertions chaining.
   * @throws IOException    if {@link com.google.common.io.ByteSource#size()} throws one.
   * @throws AssertionError if the actual {@link ByteSource} is {@code null}.
   * @throws AssertionError if the number of values of the actual {@link ByteSource} is not equal to the given one.
   */
  public ByteSourceAssert hasSize(long expectedSize) throws IOException {<FILL_FUNCTION_BODY>}

}

    isNotNull();
    long sizeOfActual = actual.size();
    if (sizeOfActual != expectedSize) throw assertionError(shouldHaveSize(actual, sizeOfActual, expectedSize));
    return this;
  
<methods>public ASSERT asInstanceOf(InstanceOfAssertFactory<?,ASSERT>) ,public AbstractListAssert<?,List<?>,java.lang.Object,ObjectAssert<java.lang.Object>> asList() ,public AbstractStringAssert<?> asString() ,public org.assertj.guava.api.ByteSourceAssert describedAs(org.assertj.core.description.Description) ,public java.lang.String descriptionText() ,public org.assertj.guava.api.ByteSourceAssert doesNotHave(Condition<? super ByteSource>) ,public org.assertj.guava.api.ByteSourceAssert doesNotHaveSameClassAs(java.lang.Object) ,public org.assertj.guava.api.ByteSourceAssert doesNotHaveSameHashCodeAs(java.lang.Object) ,public org.assertj.guava.api.ByteSourceAssert doesNotHaveToString(java.lang.String) ,public transient org.assertj.guava.api.ByteSourceAssert doesNotHaveToString(java.lang.String, java.lang.Object[]) ,public boolean equals(java.lang.Object) ,public org.assertj.core.api.WritableAssertionInfo getWritableAssertionInfo() ,public org.assertj.guava.api.ByteSourceAssert has(Condition<? super ByteSource>) ,public org.assertj.guava.api.ByteSourceAssert hasSameClassAs(java.lang.Object) ,public org.assertj.guava.api.ByteSourceAssert hasSameHashCodeAs(java.lang.Object) ,public org.assertj.guava.api.ByteSourceAssert hasToString(java.lang.String) ,public transient org.assertj.guava.api.ByteSourceAssert hasToString(java.lang.String, java.lang.Object[]) ,public int hashCode() ,public org.assertj.guava.api.ByteSourceAssert is(Condition<? super ByteSource>) ,public org.assertj.guava.api.ByteSourceAssert isEqualTo(java.lang.Object) ,public org.assertj.guava.api.ByteSourceAssert isExactlyInstanceOf(Class<?>) ,public transient org.assertj.guava.api.ByteSourceAssert isIn(java.lang.Object[]) ,public org.assertj.guava.api.ByteSourceAssert isIn(Iterable<?>) ,public org.assertj.guava.api.ByteSourceAssert isInstanceOf(Class<?>) ,public transient org.assertj.guava.api.ByteSourceAssert isInstanceOfAny(Class<?>[]) ,public org.assertj.guava.api.ByteSourceAssert isInstanceOfSatisfying(Class<T>, Consumer<T>) ,public org.assertj.guava.api.ByteSourceAssert isNot(Condition<? super ByteSource>) ,public org.assertj.guava.api.ByteSourceAssert isNotEqualTo(java.lang.Object) ,public org.assertj.guava.api.ByteSourceAssert isNotExactlyInstanceOf(Class<?>) ,public transient org.assertj.guava.api.ByteSourceAssert isNotIn(java.lang.Object[]) ,public org.assertj.guava.api.ByteSourceAssert isNotIn(Iterable<?>) ,public org.assertj.guava.api.ByteSourceAssert isNotInstanceOf(Class<?>) ,public transient org.assertj.guava.api.ByteSourceAssert isNotInstanceOfAny(Class<?>[]) ,public org.assertj.guava.api.ByteSourceAssert isNotNull() ,public transient org.assertj.guava.api.ByteSourceAssert isNotOfAnyClassIn(Class<?>[]) ,public org.assertj.guava.api.ByteSourceAssert isNotSameAs(java.lang.Object) ,public void isNull() ,public transient org.assertj.guava.api.ByteSourceAssert isOfAnyClassIn(Class<?>[]) ,public org.assertj.guava.api.ByteSourceAssert isSameAs(java.lang.Object) ,public org.assertj.guava.api.ByteSourceAssert matches(Predicate<? super ByteSource>) ,public org.assertj.guava.api.ByteSourceAssert matches(Predicate<? super ByteSource>, java.lang.String) ,public transient org.assertj.guava.api.ByteSourceAssert overridingErrorMessage(java.lang.String, java.lang.Object[]) ,public org.assertj.guava.api.ByteSourceAssert overridingErrorMessage(Supplier<java.lang.String>) ,public org.assertj.guava.api.ByteSourceAssert satisfies(Condition<? super ByteSource>) ,public final transient org.assertj.guava.api.ByteSourceAssert satisfies(Consumer<? super ByteSource>[]) ,public final transient org.assertj.guava.api.ByteSourceAssert satisfies(ThrowingConsumer<? super ByteSource>[]) ,public final transient org.assertj.guava.api.ByteSourceAssert satisfiesAnyOf(Consumer<? super ByteSource>[]) ,public final transient org.assertj.guava.api.ByteSourceAssert satisfiesAnyOf(ThrowingConsumer<? super ByteSource>[]) ,public static void setCustomRepresentation(org.assertj.core.presentation.Representation) ,public static void setDescriptionConsumer(Consumer<org.assertj.core.description.Description>) ,public static void setPrintAssertionsDescription(boolean) ,public org.assertj.guava.api.ByteSourceAssert usingComparator(Comparator<? super ByteSource>) ,public org.assertj.guava.api.ByteSourceAssert usingComparator(Comparator<? super ByteSource>, java.lang.String) ,public org.assertj.guava.api.ByteSourceAssert usingDefaultComparator() ,public transient org.assertj.guava.api.ByteSourceAssert withFailMessage(java.lang.String, java.lang.Object[]) ,public org.assertj.guava.api.ByteSourceAssert withFailMessage(Supplier<java.lang.String>) ,public org.assertj.guava.api.ByteSourceAssert withRepresentation(org.assertj.core.presentation.Representation) ,public org.assertj.guava.api.ByteSourceAssert withThreadDumpOnError() <variables>private static final java.lang.String ORG_ASSERTJ,protected final non-sealed ByteSource actual,org.assertj.core.error.AssertionErrorCreator assertionErrorCreator,org.assertj.core.internal.Conditions conditions,static org.assertj.core.presentation.Representation customRepresentation,private static Consumer<org.assertj.core.description.Description> descriptionConsumer,public org.assertj.core.api.WritableAssertionInfo info,protected final non-sealed org.assertj.guava.api.ByteSourceAssert myself,protected org.assertj.core.internal.Objects objects,static boolean printAssertionsDescription,public static boolean throwUnsupportedExceptionOnEquals