{
  "address": "Generics111111111111111111111111111111111111",
  "metadata": {
    "name": "generics",
    "version": "0.1.0",
    "spec": "0.1.0",
    "description": "Created with Anchor"
  },
  "instructions": [
    {
      "name": "generic",
      "discriminator": [
        63,
        235,
        150,
        148,
        7,
        255,
        185,
        159
      ],
      "accounts": [
        {
          "name": "generic_acc"
        },
        {
          "name": "payer",
          "writable": true,
          "signer": true
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "generic_field",
          "type": {
            "defined": {
              "name": "GenericType",
              "generics": [
                {
                  "kind": "type",
                  "type": "u32"
                },
                {
                  "kind": "type",
                  "type": "u64"
                },
                {
                  "kind": "const",
                  "value": "10"
                }
              ]
            }
          }
        }
      ]
    }
  ],
  "accounts": [
    {
      "name": "GenericAccount",
      "discriminator": [
        10,
        71,
        68,
        49,
        51,
        72,
        147,
        245
      ]
    }
  ],
  "types": [
    {
      "name": "GenericAccount",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "data",
            "type": {
              "defined": {
                "name": "GenericType",
                "generics": [
                  {
                    "kind": "type",
                    "type": "u32"
                  },
                  {
                    "kind": "type",
                    "type": "u64"
                  },
                  {
                    "kind": "const",
                    "value": "10"
                  }
                ]
              }
            }
          }
        ]
      }
    },
    {
      "name": "GenericEnum",
      "generics": [
        {
          "kind": "type",
          "name": "T"
        },
        {
          "kind": "type",
          "name": "U"
        },
        {
          "kind": "const",
          "name": "N",
          "type": "usize"
        }
      ],
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Unnamed",
            "fields": [
              {
                "generic": "T"
              },
              {
                "generic": "U"
              }
            ]
          },
          {
            "name": "Named",
            "fields": [
              {
                "name": "gen1",
                "type": {
                  "generic": "T"
                }
              },
              {
                "name": "gen2",
                "type": {
                  "generic": "U"
                }
              }
            ]
          },
          {
            "name": "Struct",
            "fields": [
              {
                "defined": {
                  "name": "GenericNested",
                  "generics": [
                    {
                      "kind": "type",
                      "type": {
                        "generic": "T"
                      }
                    },
                    {
                      "kind": "type",
                      "type": {
                        "generic": "U"
                      }
                    }
                  ]
                }
              }
            ]
          },
          {
            "name": "Arr",
            "fields": [
              {
                "array": [
                  {
                    "generic": "T"
                  },
                  {
                    "generic": "N"
                  }
                ]
              }
            ]
          }
        ]
      }
    },
    {
      "name": "GenericNested",
      "generics": [
        {
          "kind": "type",
          "name": "V"
        },
        {
          "kind": "type",
          "name": "Z"
        }
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "gen1",
            "type": {
              "generic": "V"
            }
          },
          {
            "name": "gen2",
            "type": {
              "generic": "Z"
            }
          }
        ]
      }
    },
    {
      "name": "GenericType",
      "generics": [
        {
          "kind": "type",
          "name": "T"
        },
        {
          "kind": "type",
          "name": "U"
        },
        {
          "kind": "const",
          "name": "N",
          "type": "usize"
        }
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "gen1",
            "type": {
              "generic": "T"
            }
          },
          {
            "name": "gen2",
            "type": {
              "generic": "U"
            }
          },
          {
            "name": "gen3",
            "type": {
              "defined": {
                "name": "GenericNested",
                "generics": [
                  {
                    "kind": "type",
                    "type": "u32"
                  },
                  {
                    "kind": "type",
                    "type": {
                      "generic": "U"
                    }
                  }
                ]
              }
            }
          },
          {
            "name": "gen4",
            "type": {
              "defined": {
                "name": "GenericNested",
                "generics": [
                  {
                    "kind": "type",
                    "type": {
                      "generic": "T"
                    }
                  },
                  {
                    "kind": "type",
                    "type": {
                      "defined": {
                        "name": "MyStruct"
                      }
                    }
                  }
                ]
              }
            }
          },
          {
            "name": "gen5",
            "type": {
              "defined": {
                "name": "GenericNested",
                "generics": [
                  {
                    "kind": "type",
                    "type": {
                      "generic": "T"
                    }
                  },
                  {
                    "kind": "type",
                    "type": {
                      "generic": "U"
                    }
                  }
                ]
              }
            }
          },
          {
            "name": "gen6",
            "type": {
              "defined": {
                "name": "GenericNested",
                "generics": [
                  {
                    "kind": "type",
                    "type": "u32"
                  },
                  {
                    "kind": "type",
                    "type": "u64"
                  }
                ]
              }
            }
          },
          {
            "name": "gen7",
            "type": {
              "defined": {
                "name": "GenericNested",
                "generics": [
                  {
                    "kind": "type",
                    "type": {
                      "generic": "T"
                    }
                  },
                  {
                    "kind": "type",
                    "type": {
                      "defined": {
                        "name": "GenericNested",
                        "generics": [
                          {
                            "kind": "type",
                            "type": {
                              "generic": "T"
                            }
                          },
                          {
                            "kind": "type",
                            "type": {
                              "generic": "U"
                            }
                          }
                        ]
                      }
                    }
                  }
                ]
              }
            }
          },
          {
            "name": "arr",
            "type": {
              "array": [
                "u8",
                {
                  "generic": "N"
                }
              ]
            }
          },
          {
            "name": "warr",
            "type": {
              "defined": {
                "name": "WrappedU8Array",
                "generics": [
                  {
                    "kind": "type",
                    "type": {
                      "generic": "N"
                    }
                  }
                ]
              }
            }
          },
          {
            "name": "warrval",
            "type": {
              "defined": {
                "name": "WrappedU8Array",
                "generics": [
                  {
                    "kind": "const",
                    "value": "10"
                  }
                ]
              }
            }
          },
          {
            "name": "enm1",
            "type": {
              "defined": {
                "name": "GenericEnum",
                "generics": [
                  {
                    "kind": "type",
                    "type": {
                      "generic": "T"
                    }
                  },
                  {
                    "kind": "type",
                    "type": {
                      "generic": "U"
                    }
                  },
                  {
                    "kind": "type",
                    "type": {
                      "generic": "N"
                    }
                  }
                ]
              }
            }
          },
          {
            "name": "enm2",
            "type": {
              "defined": {
                "name": "GenericEnum",
                "generics": [
                  {
                    "kind": "type",
                    "type": {
                      "defined": {
                        "name": "GenericNested",
                        "generics": [
                          {
                            "kind": "type",
                            "type": {
                              "generic": "T"
                            }
                          },
                          {
                            "kind": "type",
                            "type": "u64"
                          }
                        ]
                      }
                    }
                  },
                  {
                    "kind": "type",
                    "type": "u32"
                  },
                  {
                    "kind": "const",
                    "value": "30"
                  }
                ]
              }
            }
          }
        ]
      }
    },
    {
      "name": "MyStruct",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "some_field",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "WrappedU8Array",
      "generics": [
        {
          "kind": "const",
          "name": "N",
          "type": "usize"
        }
      ],
      "type": {
        "kind": "struct",
        "fields": [
          "u8"
        ]
      }
    }
  ]
}