module test-tree {
    yang-version 1.1;

    namespace "org:onap:cps:test:test-tree";
    prefix tree;
    revision "2020-02-02";

    container test-tree {
        list branch {
            key "name";
            leaf name {
                type string;
            }
            container nest {
                leaf name {
                    type string;
                }
                leaf-list birds {
                    type string;
                }
            }
        }
        list fruit {
            key "name color";

            leaf name {
                type string;
            }

            leaf color {
                type string;
            }

        }
    }
    leaf topLevelLeafAddedForBranchCoverageInPrefixResolverSpec {
        type string;
    }
}
