/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
{
  "type" : "record",
  "name" : "Parent",
  "namespace" : "test",
  "fields" : [ {
    "name" : "child",
    "type" : [ "null", {
      "type" : "record",
      "name" : "Child",
      "namespace" : "test.child",
      "fields" : [ {
        "name" : "basic_field",
        "type" : "int",
        "default" : 0
      }, {
        "name" : "recurse_field",
        "type" : [ "null", {
          "type" : "record",
          "name" : "Child",
          "namespace" : "test.child.recurse_field",
          "fields" : [ {
            "name" : "basic_field",
            "type" : "int",
            "default" : 0
          }, {
            "name" : "recurse_field",
            "type" : [ "null", {
              "type" : "record",
              "name" : "Child",
              "namespace" : "test.child.recurse_field.recurse_field",
              "fields" : [ {
                "name" : "basic_field",
                "type" : "int",
                "default" : 0
              }, {
                "name" : "recurse_field",
                "type" : [ "null", {
                  "type" : "record",
                  "name" : "Child",
                  "namespace" : "test.child.recurse_field.recurse_field.recurse_field",
                  "fields" : [ {
                    "name" : "basic_field",
                    "type" : "int",
                    "default" : 0
                  }, {
                    "name" : "recurse_field",
                    "type" : [ "null", {
                      "type" : "record",
                      "name" : "Child",
                      "namespace" : "test.child.recurse_field.recurse_field.recurse_field.recurse_field",
                      "fields" : [ {
                        "name" : "basic_field",
                        "type" : "int",
                        "default" : 0
                      }, {
                        "name" : "recurse_field",
                        "type" : [ "null", {
                          "type" : "record",
                          "name" : "recursion_overflow",
                          "namespace" : "org.apache.hudi.proto",
                          "fields" : [ {
                            "name" : "descriptor_full_name",
                            "type" : "string",
                            "default" : ""
                          }, {
                            "name" : "proto_bytes",
                            "type" : "bytes",
                            "default" : ""
                          } ]
                        } ],
                        "default" : null
                      } ]
                    } ],
                    "default" : null
                  } ]
                } ],
                "default" : null
              } ]
            } ],
            "default" : null
          } ]
        } ],
        "default" : null
      } ]
    } ],
    "default" : null
  }, {
    "name" : "children",
    "type" : {
      "type" : "array",
      "items" : {
        "type" : "record",
        "name" : "Child",
        "namespace" : "test.children",
        "fields" : [ {
          "name" : "basic_field",
          "type" : "int",
          "default" : 0
        }, {
          "name" : "recurse_field",
          "type" : [ "null", {
            "type" : "record",
            "name" : "Child",
            "namespace" : "test.children.recurse_field",
            "fields" : [ {
              "name" : "basic_field",
              "type" : "int",
              "default" : 0
            }, {
              "name" : "recurse_field",
              "type" : [ "null", {
                "type" : "record",
                "name" : "Child",
                "namespace" : "test.children.recurse_field.recurse_field",
                "fields" : [ {
                  "name" : "basic_field",
                  "type" : "int",
                  "default" : 0
                }, {
                  "name" : "recurse_field",
                  "type" : [ "null", {
                    "type" : "record",
                    "name" : "Child",
                    "namespace" : "test.children.recurse_field.recurse_field.recurse_field",
                    "fields" : [ {
                      "name" : "basic_field",
                      "type" : "int",
                      "default" : 0
                    }, {
                      "name" : "recurse_field",
                      "type" : [ "null", {
                        "type" : "record",
                        "name" : "Child",
                        "namespace" : "test.children.recurse_field.recurse_field.recurse_field.recurse_field",
                        "fields" : [ {
                          "name" : "basic_field",
                          "type" : "int",
                          "default" : 0
                        }, {
                          "name" : "recurse_field",
                          "type" : [ "null", "org.apache.hudi.proto.recursion_overflow" ],
                          "default" : null
                        } ]
                      } ],
                      "default" : null
                    } ]
                  } ],
                  "default" : null
                } ]
              } ],
              "default" : null
            } ]
          } ],
          "default" : null
        } ]
      }
    },
    "default" : [ ]
  } ]
}