test_class.declarator: data = "Ha! Ha! Ha!"
test_class.original_string: String data = "Ha! Ha! Ha!";
test_class.type: String
test_class.var_name: data
test_class.file: dddlib-domain/src/test/java/org/dayatang/domain/specification/AbstractSpecificationTest.java
test_class.identifier: AbstractSpecificationTest
test_case.body: @Test
      public void testAnd() {
          assertTrue(new StartsSpecification("Ha! ")
                  .and(new LengthSpecification(2, 20))
                  .isSatisfiedBy(data));
         assertFalse(new StartsSpecification("Ha! ")
                  .and(new LengthSpecification(5))
                  .isSatisfiedBy(data));
         assertFalse(new StartsSpecification("Ha ")
                  .and(new LengthSpecification(2, 20))
                  .isSatisfiedBy(data));     
      }
test_case.class_method_signature: AbstractSpecificationTest.testAnd()
test_case.full_signature: @Test public void testAnd()
test_case.identifier: testAnd
test_case.invocations: assertTrue isSatisfiedBy and assertFalse isSatisfiedBy and assertFalse isSatisfiedBy and
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testAnd()
focal_class.file: dddlib-domain/src/main/java/org/dayatang/domain/specification/AbstractSpecification.java
focal_class.identifier: AbstractSpecification
focal_class.interfaces: implements Specification<T>
focal_class.class_method_signature: AbstractSpecification.and(final Specification<T> specification)
focal_class.full_signature: @Override public Specification<T> and(final Specification<T> specification)
focal_class.identifier: and
focal_class.modifiers: @Override public
focal_class.parameters: (final Specification<T> specification)
focal_class.return: Specification<T>
focal_class.signature: Specification<T> and(final Specification<T> specification)
focal_class.class_method_signature: AbstractSpecification.or(final Specification<T> specification)
focal_class.full_signature: @Override public Specification<T> or(final Specification<T> specification)
focal_class.identifier: or
focal_class.modifiers: @Override public
focal_class.parameters: (final Specification<T> specification)
focal_class.return: Specification<T>
focal_class.signature: Specification<T> or(final Specification<T> specification)
focal_class.class_method_signature: AbstractSpecification.not()
focal_class.full_signature: @Override public Specification<T> not()
focal_class.identifier: not
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Specification<T>
focal_class.signature: Specification<T> not()
focal_method.body: @Override
      public Specification<T> and(final Specification<T> specification) {
          return new AndSpecification<T>(this, specification);
      }
focal_method.class_method_signature: AbstractSpecification.and(final Specification<T> specification)
focal_method.full_signature: @Override public Specification<T> and(final Specification<T> specification)
focal_method.identifier: and
focal_method.modifiers: @Override public
focal_method.parameters: (final Specification<T> specification)
focal_method.return: Specification<T>
focal_method.signature: Specification<T> and(final Specification<T> specification)