// Test structures with cyclic references.
// These can only be handled in pointer/callback mode,
// see associated .options files.

syntax = "proto2";

message TreeNode
{
    optional int32 leaf = 1;
    optional TreeNode left = 2;
    optional TreeNode right = 3;
}

message Dictionary
{
    repeated KeyValuePair dictItem = 1;
}

message KeyValuePair
{
    required string key = 1;
    optional string stringValue = 2;
    optional int32 intValue = 3;
    optional Dictionary dictValue = 4;
    optional TreeNode treeValue = 5;
}