protected virtual void VisitConstraint(JsonSchemaConstraint constraint)
 {
     // no-op
 }
 protected override void VisitConditionalIfClause(JsonSchemaConstraint condition)
 {
     writer.WriteStartObject(Keys.If);
     base.VisitConditionalIfClause(condition);
     writer.WriteEndObject();
 }
 protected virtual void Visit(JsonSchemaConstraint constraint)
 => constraint.Accept(this);
 protected virtual void VisitConditionalElseClause(JsonSchemaConstraint condition)
 => Visit(condition);