test_class.declarator: expectedException = ExpectedException.none()
test_class.modifier: @Rule
      public
test_class.original_string: @Rule
      public ExpectedException expectedException = ExpectedException.none();
test_class.type: ExpectedException
test_class.var_name: expectedException
test_class.file: spark-job/src/test/java/org/apache/cassandra/diff/ClusterSourcedExceptionTest.java
test_class.identifier: ClusterSourcedExceptionTest
test_case.body: @Test
      public void testCatchesExceptionHasExceptionSourceInfo() {
          expectedException.expect(ClusterSourcedException.class);
          expectedException.expectCause(CoreMatchers.isA(RuntimeException.class));
          expectedException.expectMessage("from SOURCE");
          expectedException.expect(new CustomMatcher<ClusterSourcedException>("matches the expected exceptionSource: SOURCE") {
              @Override
              public boolean matches(Object item) {
                  if (item instanceof ClusterSourcedException) {
                      ClusterSourcedException ex = (ClusterSourcedException) item;
                      return ex.exceptionSource == DiffCluster.Type.SOURCE;
                  }
                  return false;
              }
          });
          ClusterSourcedException.catches(DiffCluster.Type.SOURCE, () -> {
              throw new RuntimeException();
          });
      }
test_case.class_method_signature: ClusterSourcedExceptionTest.testCatchesExceptionHasExceptionSourceInfo()
test_case.full_signature: @Test public void testCatchesExceptionHasExceptionSourceInfo()
test_case.identifier: testCatchesExceptionHasExceptionSourceInfo
test_case.invocations: expect expectCause isA expectMessage expect catches
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testCatchesExceptionHasExceptionSourceInfo()
focal_class.declarator: exceptionSource
focal_class.modifier: public final
focal_class.original_string: public final Type exceptionSource;
focal_class.type: Type
focal_class.var_name: exceptionSource
focal_class.file: spark-job/src/main/java/org/apache/cassandra/diff/ClusterSourcedException.java
focal_class.identifier: ClusterSourcedException
focal_class.class_method_signature: ClusterSourcedException.ClusterSourcedException(Type exceptionSource, Throwable cause)
focal_class.full_signature:   ClusterSourcedException(Type exceptionSource, Throwable cause)
focal_class.identifier: ClusterSourcedException
focal_class.parameters: (Type exceptionSource, Throwable cause)
focal_class.signature:  ClusterSourcedException(Type exceptionSource, Throwable cause)
focal_class.class_method_signature: ClusterSourcedException.catches(Type exceptionSource, Callable<T> callable)
focal_class.full_signature: public static T catches(Type exceptionSource, Callable<T> callable)
focal_class.identifier: catches
focal_class.modifiers: public static
focal_class.parameters: (Type exceptionSource, Callable<T> callable)
focal_class.return: T
focal_class.signature: T catches(Type exceptionSource, Callable<T> callable)
focal_class.class_method_signature: ClusterSourcedException.getMessage()
focal_class.full_signature: @Override public String getMessage()
focal_class.identifier: getMessage
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String getMessage()
focal_class.superclass: extends RuntimeException
focal_method.body: public static <T> T catches(Type exceptionSource, Callable<T> callable) {
          try {
              return callable.call();
          } catch (Exception ex) {
              throw new ClusterSourcedException(exceptionSource, ex);
          }
      }
focal_method.class_method_signature: ClusterSourcedException.catches(Type exceptionSource, Callable<T> callable)
focal_method.full_signature: public static T catches(Type exceptionSource, Callable<T> callable)
focal_method.identifier: catches
focal_method.invocations: call
focal_method.modifiers: public static
focal_method.parameters: (Type exceptionSource, Callable<T> callable)
focal_method.return: T
focal_method.signature: T catches(Type exceptionSource, Callable<T> callable)