generators.ET0LTreeGrammar:
  (
    { S0, S },
    { 45-deg:9, full:8, shrink:1, part:0, empty:0,
      c:1, set:1,
      chooser:1, chooseg:1, chooseb:1, chooserg:1, chooserb:1, choosegb:1, choosergb:1 },
    {
      {
        S0  -> chooser[S0],
        S0  -> chooseg[S0],
        S0  -> chooseb[S0],
        S0  -> chooserg[S0],
        S0  -> chooserb[S0],
        S0  -> choosegb[S0],
        S0  -> choosergb[S0]
      },
      {
        S0 -> full[45-deg[S,S,S,S,S,S,S,S,S],
                   45-deg[S,S,S,S,S,S,S,S,S],
                   45-deg[S,S,S,S,S,S,S,S,S],
                   45-deg[S,S,S,S,S,S,S,S,S],
                   45-deg[S,S,S,S,S,S,S,S,S],
                   45-deg[S,S,S,S,S,S,S,S,S],
                   45-deg[S,S,S,S,S,S,S,S,S],
                   45-deg[S,S,S,S,S,S,S,S,S]
              ],
        S  -> shrink[c[S]] weight 2,
        S  -> shrink[S]
      },
      {
        S -> part
      }
    },
    set[S0],
    1 1 1 1 1 1 2+ 3
  )
