// 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;
          "  private static final int CONSTANT_TIMES_4 = CONSTANT * 4;",
          "",
          "  @Nullable private MaybeNull field;",
          "",
          "  @Inject SomeFile() {",
          "    this.field = MaybeNull.constructorBody();",
          "  }",
          "",
          "  protected int method(Parameter p, OtherParam o) {",
          "    return CONSTANT_TIMES_4 / p.hashCode() + o.hashCode();",
          "  }",
          "",
          "  public static class InnerClass {",
          "    private static final int CONSTANT_TIMES_8 = CONSTANT_TIMES_4 * 2;",
          "",
          "    @Nullable private MaybeNull innerClassField;",
          "",
          "    @Inject",
          "    InnerClass() {",
          "      this.innerClassField = MaybeNull.constructorBody();",
          "    }",
          "",
          "    protected int innerClassMethod(Parameter p, OtherParam o) {",
          "      return CONSTANT_TIMES_8 / p.hashCode() + o.hashCode();",
          "    }",
          "  }",
          "}");

  @Test
  public void containsElementsIn_completeMatch() {
// 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;

          "  private static final int CONSTANT_TIMES_4 = CONSTANT * 4;",
          "",
          "  @Nullable private MaybeNull field;",
          "",
          "  @Inject SomeFile() {",
          "    this.field = MaybeNull.constructorBody();",
          "  }",
          "",
          "  protected int method(Parameter p, OtherParam o) {",
          "    return CONSTANT_TIMES_4 / p.hashCode() + o.hashCode();",
          "  }",
          "",
          "  public static class InnerClass {",
          "    private static final int CONSTANT_TIMES_8 = CONSTANT_TIMES_4 * 2;",
          "",
          "    @Nullable private MaybeNull innerClassField;",
          "",
          "    @Inject",
          "    InnerClass() {",
          "      this.innerClassField = MaybeNull.constructorBody();",
          "    }",
          "",
          "    protected int innerClassMethod(Parameter p, OtherParam o) {",
          "      return CONSTANT_TIMES_8 / p.hashCode() + o.hashCode();",
          "    }",
          "  }",
          "}");

  @Test
  public void containsElementsIn_completeMatch() {
    assertThat(SAMPLE_ACTUAL_FILE_FOR_MATCHING).containsElementsIn(SAMPLE_ACTUAL_FILE_FOR_MATCHING);