test_class.declarator: a = new Field("a", StandardSpecificFieldType.DATETIME.toSpecificFieldType(), false, "", false, false, null)
test_class.modifier: private final
test_class.original_string: private final Field a = new Field("a", StandardSpecificFieldType.DATETIME.toSpecificFieldType(), false, "", false, false, null);
test_class.type: Field
test_class.var_name: a
test_class.declarator: b = new Field("b", StandardSpecificFieldType.DATETIME.toSpecificFieldType(), false, "", false, false, null)
test_class.modifier: private final
test_class.original_string: private final Field b = new Field("b", StandardSpecificFieldType.DATETIME.toSpecificFieldType(), false, "", false, false, null);
test_class.type: Field
test_class.var_name: b
test_class.file: core/src/test/java/com/scottlogic/datahelix/generator/core/fieldspecs/relations/AfterRelationTest.java
test_class.identifier: AfterRelationTest
test_case.body: @Test
      public void testReduceToFieldSpec_withNotNull_reducesToSpec() {
          DateTimeGranularity offsetGranularity = DateTimeGranularity.create("MILLIS");
          FieldSpecRelation afterDateRelations = new AfterRelation(a, b, true, DateTimeDefaults.get(), offsetGranularity, 0);
          OffsetDateTime value = OffsetDateTime.of(2000,
              1,
              1,
              0,
              0,
              0,
              0,
              ZoneOffset.UTC);
          DataBagValue generatedValue = new DataBagValue(value);
  
          FieldSpec result = afterDateRelations.createModifierFromOtherValue(generatedValue);
  
          FieldSpec expected = FieldSpecFactory.fromRestriction(new LinearRestrictions<>(value, ISO_MAX_DATE, new DateTimeGranularity(ChronoUnit.MILLIS)));
          assertEquals(expected, result);
      }
test_case.class_method_signature: AfterRelationTest.testReduceToFieldSpec_withNotNull_reducesToSpec()
test_case.full_signature: @Test public void testReduceToFieldSpec_withNotNull_reducesToSpec()
test_case.identifier: testReduceToFieldSpec_withNotNull_reducesToSpec
test_case.invocations: create get of createModifierFromOtherValue fromRestriction assertEquals
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testReduceToFieldSpec_withNotNull_reducesToSpec()
focal_class.declarator: main
focal_class.modifier: private final
focal_class.original_string: private final Field main;
focal_class.type: Field
focal_class.var_name: main
focal_class.declarator: other
focal_class.modifier: private final
focal_class.original_string: private final Field other;
focal_class.type: Field
focal_class.var_name: other
focal_class.declarator: inclusive
focal_class.modifier: private final
focal_class.original_string: private final boolean inclusive;
focal_class.type: boolean
focal_class.var_name: inclusive
focal_class.declarator: defaults
focal_class.modifier: private final
focal_class.original_string: private final LinearDefaults<T> defaults;
focal_class.type: LinearDefaults<T>
focal_class.var_name: defaults
focal_class.declarator: offsetGranularity
focal_class.modifier: private final
focal_class.original_string: private final Granularity<T> offsetGranularity;
focal_class.type: Granularity<T>
focal_class.var_name: offsetGranularity
focal_class.declarator: offset
focal_class.modifier: private final
focal_class.original_string: private final int offset;
focal_class.type: int
focal_class.var_name: offset
focal_class.file: core/src/main/java/com/scottlogic/datahelix/generator/core/fieldspecs/relations/AfterRelation.java
focal_class.identifier: AfterRelation
focal_class.interfaces: implements FieldSpecRelation
focal_class.class_method_signature: AfterRelation.AfterRelation(Field main, Field other, boolean inclusive, LinearDefaults<T> defaults, Granularity<T> offsetGranularity, int offset)
focal_class.full_signature: public  AfterRelation(Field main, Field other, boolean inclusive, LinearDefaults<T> defaults, Granularity<T> offsetGranularity, int offset)
focal_class.identifier: AfterRelation
focal_class.modifiers: public
focal_class.parameters: (Field main, Field other, boolean inclusive, LinearDefaults<T> defaults, Granularity<T> offsetGranularity, int offset)
focal_class.signature:  AfterRelation(Field main, Field other, boolean inclusive, LinearDefaults<T> defaults, Granularity<T> offsetGranularity, int offset)
focal_class.class_method_signature: AfterRelation.createModifierFromOtherFieldSpec(FieldSpec otherFieldSpec)
focal_class.full_signature: @Override public FieldSpec createModifierFromOtherFieldSpec(FieldSpec otherFieldSpec)
focal_class.identifier: createModifierFromOtherFieldSpec
focal_class.modifiers: @Override public
focal_class.parameters: (FieldSpec otherFieldSpec)
focal_class.return: FieldSpec
focal_class.signature: FieldSpec createModifierFromOtherFieldSpec(FieldSpec otherFieldSpec)
focal_class.class_method_signature: AfterRelation.createModifierFromOtherValue(DataBagValue otherFieldGeneratedValue)
focal_class.full_signature: @Override public FieldSpec createModifierFromOtherValue(DataBagValue otherFieldGeneratedValue)
focal_class.identifier: createModifierFromOtherValue
focal_class.modifiers: @Override public
focal_class.parameters: (DataBagValue otherFieldGeneratedValue)
focal_class.return: FieldSpec
focal_class.signature: FieldSpec createModifierFromOtherValue(DataBagValue otherFieldGeneratedValue)
focal_class.class_method_signature: AfterRelation.createFromMin(T min, Granularity<T> granularity)
focal_class.full_signature: private FieldSpec createFromMin(T min, Granularity<T> granularity)
focal_class.identifier: createFromMin
focal_class.modifiers: private
focal_class.parameters: (T min, Granularity<T> granularity)
focal_class.return: FieldSpec
focal_class.signature: FieldSpec createFromMin(T min, Granularity<T> granularity)
focal_class.class_method_signature: AfterRelation.main()
focal_class.full_signature: @Override public Field main()
focal_class.identifier: main
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Field
focal_class.signature: Field main()
focal_class.class_method_signature: AfterRelation.other()
focal_class.full_signature: @Override public Field other()
focal_class.identifier: other
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Field
focal_class.signature: Field other()
focal_class.class_method_signature: AfterRelation.inverse()
focal_class.full_signature: @Override public FieldSpecRelation inverse()
focal_class.identifier: inverse
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: FieldSpecRelation
focal_class.signature: FieldSpecRelation inverse()
focal_class.class_method_signature: AfterRelation.toString()
focal_class.full_signature: @Override public String toString()
focal_class.identifier: toString
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String toString()
focal_class.class_method_signature: AfterRelation.negate()
focal_class.full_signature: @Override public Constraint negate()
focal_class.identifier: negate
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Constraint
focal_class.signature: Constraint negate()
focal_method.body: @Override
      public FieldSpec createModifierFromOtherValue(DataBagValue otherFieldGeneratedValue) {
          if (otherFieldGeneratedValue.getValue() == null) return FieldSpecFactory.fromType(main.getType());
  
          T offsetValue = offset > 0
              ? offsetGranularity.getNext((T) otherFieldGeneratedValue.getValue(), offset)
              : (T) otherFieldGeneratedValue.getValue();
          return createFromMin(offsetValue, defaults.granularity());
      }
focal_method.class_method_signature: AfterRelation.createModifierFromOtherValue(DataBagValue otherFieldGeneratedValue)
focal_method.full_signature: @Override public FieldSpec createModifierFromOtherValue(DataBagValue otherFieldGeneratedValue)
focal_method.identifier: createModifierFromOtherValue
focal_method.invocations: getValue fromType getType getNext getValue getValue createFromMin granularity
focal_method.modifiers: @Override public
focal_method.parameters: (DataBagValue otherFieldGeneratedValue)
focal_method.return: FieldSpec
focal_method.signature: FieldSpec createModifierFromOtherValue(DataBagValue otherFieldGeneratedValue)