test_class.declarator: A = createField("A")
test_class.modifier: private static final
test_class.original_string: private static final Field A = createField("A");
test_class.type: Field
test_class.var_name: A
test_class.declarator: B = createField("B")
test_class.modifier: private static final
test_class.original_string: private static final Field B = createField("B");
test_class.type: Field
test_class.var_name: B
test_class.file: core/src/test/java/com/scottlogic/datahelix/generator/core/decisiontree/ConstraintNodeTest.java
test_class.identifier: ConstraintNodeTest
test_case.body: @Test
      public void equals_identicalConstraintNodesDifferentReferences_isTrue() {
          ConstraintNode constraintNode1 = constraintNode()
              .where(A).isInSet("a1", "a2")
              .where(B).isInSet("b1", "b2")
              .withDecision(
                  constraintNode()
                      .where(A).isInSet("a1")
                      .withDecision(
                          constraintNode()
                              .where(B).isInSet("b1"),
                          constraintNode()
                              .where(B).isNotInSet("b1")),
                  constraintNode()
                      .where(A).isNotInSet("a1"))
              .build();
  
          ConstraintNode constraintNode2 = constraintNode()
              .where(A).isInSet("a1", "a2")
              .where(B).isInSet("b1", "b2")
              .withDecision(
                  constraintNode()
                      .where(A).isInSet("a1")
                      .withDecision(
                          constraintNode()
                              .where(B).isInSet("b1"),
                          constraintNode()
                              .where(B).isNotInSet("b1")),
                  constraintNode()
                      .where(A).isNotInSet("a1"))
              .build();
  
          assertEquals(constraintNode1, constraintNode2);
      }
test_case.class_method_signature: ConstraintNodeTest.equals_identicalConstraintNodesDifferentReferences_isTrue()
test_case.full_signature: @Test public void equals_identicalConstraintNodesDifferentReferences_isTrue()
test_case.identifier: equals_identicalConstraintNodesDifferentReferences_isTrue
test_case.invocations: build withDecision isInSet where isInSet where constraintNode withDecision isInSet where constraintNode isInSet where constraintNode isNotInSet where constraintNode isNotInSet where constraintNode build withDecision isInSet where isInSet where constraintNode withDecision isInSet where constraintNode isInSet where constraintNode isNotInSet where constraintNode isNotInSet where constraintNode assertEquals
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void equals_identicalConstraintNodesDifferentReferences_isTrue()
focal_class.declarator: atomicConstraints
focal_class.modifier: private final
focal_class.original_string: private final Set<AtomicConstraint> atomicConstraints;
focal_class.type: Set<AtomicConstraint>
focal_class.var_name: atomicConstraints
focal_class.declarator: relations
focal_class.modifier: private final
focal_class.original_string: private final Set<FieldSpecRelation> relations;
focal_class.type: Set<FieldSpecRelation>
focal_class.var_name: relations
focal_class.declarator: decisions
focal_class.modifier: private final
focal_class.original_string: private final Set<DecisionNode> decisions;
focal_class.type: Set<DecisionNode>
focal_class.var_name: decisions
focal_class.declarator: nodeMarkings
focal_class.modifier: private final
focal_class.original_string: private final Set<NodeMarking> nodeMarkings;
focal_class.type: Set<NodeMarking>
focal_class.var_name: nodeMarkings
focal_class.file: core/src/main/java/com/scottlogic/datahelix/generator/core/decisiontree/ConstraintNode.java
focal_class.identifier: ConstraintNode
focal_class.interfaces: implements Node
focal_class.class_method_signature: ConstraintNode.ConstraintNode(Set<AtomicConstraint> atomicConstraints,
                            Set<FieldSpecRelation> relations,
                            Set<DecisionNode> decisions,
                            Set<NodeMarking> nodeMarkings)
focal_class.full_signature: public  ConstraintNode(Set<AtomicConstraint> atomicConstraints,
                            Set<FieldSpecRelation> relations,
                            Set<DecisionNode> decisions,
                            Set<NodeMarking> nodeMarkings)
focal_class.identifier: ConstraintNode
focal_class.modifiers: public
focal_class.parameters: (Set<AtomicConstraint> atomicConstraints,
                            Set<FieldSpecRelation> relations,
                            Set<DecisionNode> decisions,
                            Set<NodeMarking> nodeMarkings)
focal_class.signature:  ConstraintNode(Set<AtomicConstraint> atomicConstraints,
                            Set<FieldSpecRelation> relations,
                            Set<DecisionNode> decisions,
                            Set<NodeMarking> nodeMarkings)
focal_class.class_method_signature: ConstraintNode.getAtomicConstraints()
focal_class.full_signature: public Set<AtomicConstraint> getAtomicConstraints()
focal_class.identifier: getAtomicConstraints
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: Set<AtomicConstraint>
focal_class.signature: Set<AtomicConstraint> getAtomicConstraints()
focal_class.class_method_signature: ConstraintNode.getRelations()
focal_class.full_signature: public Set<FieldSpecRelation> getRelations()
focal_class.identifier: getRelations
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: Set<FieldSpecRelation>
focal_class.signature: Set<FieldSpecRelation> getRelations()
focal_class.class_method_signature: ConstraintNode.getDecisions()
focal_class.full_signature: public Set<DecisionNode> getDecisions()
focal_class.identifier: getDecisions
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: Set<DecisionNode>
focal_class.signature: Set<DecisionNode> getDecisions()
focal_class.class_method_signature: ConstraintNode.toString()
focal_class.full_signature: public String toString()
focal_class.identifier: toString
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String toString()
focal_class.class_method_signature: ConstraintNode.builder()
focal_class.full_signature: public ConstraintNodeBuilder builder()
focal_class.identifier: builder
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: ConstraintNodeBuilder
focal_class.signature: ConstraintNodeBuilder builder()
focal_class.class_method_signature: ConstraintNode.hasMarking(NodeMarking detail)
focal_class.full_signature: @Override public boolean hasMarking(NodeMarking detail)
focal_class.identifier: hasMarking
focal_class.modifiers: @Override public
focal_class.parameters: (NodeMarking detail)
focal_class.return: boolean
focal_class.signature: boolean hasMarking(NodeMarking detail)
focal_class.class_method_signature: ConstraintNode.equals(Object o)
focal_class.full_signature: @Override public boolean equals(Object o)
focal_class.identifier: equals
focal_class.modifiers: @Override public
focal_class.parameters: (Object o)
focal_class.return: boolean
focal_class.signature: boolean equals(Object o)
focal_class.class_method_signature: ConstraintNode.hashCode()
focal_class.full_signature: @Override public int hashCode()
focal_class.identifier: hashCode
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: int
focal_class.signature: int hashCode()
focal_class.class_method_signature: ConstraintNode.merge(Iterator<ConstraintNode> constraintNodeIterator)
focal_class.full_signature: static ConstraintNode merge(Iterator<ConstraintNode> constraintNodeIterator)
focal_class.identifier: merge
focal_class.modifiers: static
focal_class.parameters: (Iterator<ConstraintNode> constraintNodeIterator)
focal_class.return: ConstraintNode
focal_class.signature: ConstraintNode merge(Iterator<ConstraintNode> constraintNodeIterator)
focal_method.body: public ConstraintNode(Set<AtomicConstraint> atomicConstraints,
                            Set<FieldSpecRelation> relations,
                            Set<DecisionNode> decisions,
                            Set<NodeMarking> nodeMarkings) {
          this.atomicConstraints = Collections.unmodifiableSet(atomicConstraints);
          this.relations = Collections.unmodifiableSet(relations);
          this.decisions = Collections.unmodifiableSet(decisions);
          this.nodeMarkings = Collections.unmodifiableSet(nodeMarkings);
      }
focal_method.class_method_signature: ConstraintNode.ConstraintNode(Set<AtomicConstraint> atomicConstraints,
                            Set<FieldSpecRelation> relations,
                            Set<DecisionNode> decisions,
                            Set<NodeMarking> nodeMarkings)
focal_method.full_signature: public  ConstraintNode(Set<AtomicConstraint> atomicConstraints,
                            Set<FieldSpecRelation> relations,
                            Set<DecisionNode> decisions,
                            Set<NodeMarking> nodeMarkings)
focal_method.identifier: ConstraintNode
focal_method.modifiers: public
focal_method.parameters: (Set<AtomicConstraint> atomicConstraints,
                            Set<FieldSpecRelation> relations,
                            Set<DecisionNode> decisions,
                            Set<NodeMarking> nodeMarkings)
focal_method.signature:  ConstraintNode(Set<AtomicConstraint> atomicConstraints,
                            Set<FieldSpecRelation> relations,
                            Set<DecisionNode> decisions,
                            Set<NodeMarking> nodeMarkings)