// Path: src/main/java/com/google/testing/compile/JavaFileObjectSubject.java
// public static JavaFileObjectSubject assertThat(JavaFileObject actual) {
//   return assertAbout(FACTORY).that(actual);
// }
// 
// Path: src/main/java/com/google/testing/compile/JavaFileObjectSubject.java
// public static Subject.Factory<JavaFileObjectSubject, JavaFileObject> javaFileObjects() {
//   return FACTORY;
// }


import static com.google.common.truth.ExpectFailure.assertThat;
import static com.google.common.truth.Truth.assertThat;
import static com.google.testing.compile.JavaFileObjectSubject.assertThat;
import static com.google.testing.compile.JavaFileObjectSubject.javaFileObjects;
import static java.nio.charset.StandardCharsets.UTF_8;
import com.google.common.truth.ExpectFailure;
import java.io.IOException;
import javax.tools.JavaFileObject;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
          "",
          "public class TestClass2 {}");

  private static final JavaFileObject CLASS_WITH_FIELD =
      JavaFileObjects.forSourceLines(
          "test.TestClass", //
          "package test;",
          "",
          "public class TestClass {",
          "  Object field;",
          "}");

  private static final JavaFileObject UNKNOWN_TYPES =
      JavaFileObjects.forSourceLines(
          "test.TestClass",
          "package test;",
          "",
          "public class TestClass {",
          "  Bar badMethod(Baz baz) { return baz.what(); }",
          "}");

  @Test
  public void hasContents() {
    assertThat(CLASS_WITH_FIELD).hasContents(JavaFileObjects.asByteSource(CLASS_WITH_FIELD));
  }

  @Test
  public void hasContents_failure() {
    expectFailure
        .whenTesting()
// Path: src/main/java/com/google/testing/compile/JavaFileObjectSubject.java
// public static JavaFileObjectSubject assertThat(JavaFileObject actual) {
//   return assertAbout(FACTORY).that(actual);
// }
// 
// Path: src/main/java/com/google/testing/compile/JavaFileObjectSubject.java
// public static Subject.Factory<JavaFileObjectSubject, JavaFileObject> javaFileObjects() {
//   return FACTORY;
// }


// Path: src/test/java/com/google/testing/compile/JavaFileObjectSubjectTest.java
import static com.google.common.truth.ExpectFailure.assertThat;
import static com.google.common.truth.Truth.assertThat;
import static com.google.testing.compile.JavaFileObjectSubject.assertThat;
import static com.google.testing.compile.JavaFileObjectSubject.javaFileObjects;
import static java.nio.charset.StandardCharsets.UTF_8;
import com.google.common.truth.ExpectFailure;
import java.io.IOException;
import javax.tools.JavaFileObject;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;

          "",
          "public class TestClass2 {}");

  private static final JavaFileObject CLASS_WITH_FIELD =
      JavaFileObjects.forSourceLines(
          "test.TestClass", //
          "package test;",
          "",
          "public class TestClass {",
          "  Object field;",
          "}");

  private static final JavaFileObject UNKNOWN_TYPES =
      JavaFileObjects.forSourceLines(
          "test.TestClass",
          "package test;",
          "",
          "public class TestClass {",
          "  Bar badMethod(Baz baz) { return baz.what(); }",
          "}");

  @Test
  public void hasContents() {
    assertThat(CLASS_WITH_FIELD).hasContents(JavaFileObjects.asByteSource(CLASS_WITH_FIELD));
  }

  @Test
  public void hasContents_failure() {
    expectFailure
        .whenTesting()
        .about(javaFileObjects())