Skip to content

Compiler crash when deriving typeclass for a sum type defined inside a def #12328

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
ghostdogpr opened this issue May 5, 2021 · 7 comments · Fixed by #15847
Closed

Compiler crash when deriving typeclass for a sum type defined inside a def #12328

ghostdogpr opened this issue May 5, 2021 · 7 comments · Fixed by #15847

Comments

@ghostdogpr
Copy link
Contributor

Compiler version

3.0.0-RC3

Minimized code

The problem disappears if I move the sealed trait definition outside of the def. It also disappears if I have a given for A and B in scope.

import scala.deriving.Mirror
import scala.compiletime._

trait Schema[T]

object Schema {
  inline def recurse[A <: Tuple]: List[Schema[Any]] =
    inline erasedValue[A] match {
      case _: (t *: ts) => summonInline[Schema[t]].asInstanceOf[Schema[Any]] :: recurse[ts]
      case EmptyTuple   => Nil
    }

  inline def derived[T]: Schema[T] =
    inline summonInline[Mirror.Of[T]] match {
      case m: Mirror.SumOf[T] =>
        val subTypes = recurse[m.MirroredElemTypes]
        new Schema[T] { }
      case m: Mirror.ProductOf[T] =>
        val fields = recurse[m.MirroredElemTypes]
        new Schema[T] { }
  }

  inline given gen[T]: Schema[T] = derived
}

@main def hello: Unit = {

  sealed trait Item
  object Item {
    case object A extends Item
    case object B extends Item
  }

  summon[Schema[Item]]
}

Output (click arrow to expand)

Test / clean / compile
exception while typing Item$.this of class class dotty.tools.dotc.ast.Trees$This # -1
exception while typing Item$.this.A of class class dotty.tools.dotc.ast.Trees$Select # -1
exception while typing Item$.this.A:
  
    scala.deriving.Mirror.Singleton{
      MirroredMonoType = Test$package.Item.A.type; 
        MirroredType = Test$package.Item.A.type
      ; MirroredLabel = ("A" : String)
    }
   of class class dotty.tools.dotc.ast.Trees$Typed # -1
exception while typing Item$.this.A.$asInstanceOf$[
  
    scala.deriving.Mirror.Singleton{
      MirroredMonoType = Test$package.Item.A.type; 
        MirroredType = Test$package.Item.A.type
      ; MirroredLabel = ("A" : String)
    }
  
] of class class dotty.tools.dotc.ast.Trees$TypeApply # -1
exception while typing given val t: 
  
    scala.deriving.Mirror.Singleton{
      MirroredMonoType = Test$package.Item.A.type; 
        MirroredType = Test$package.Item.A.type
      ; MirroredLabel = ("A" : String)
    }
  
 = 
  Item$.this.A.$asInstanceOf$[
    
      scala.deriving.Mirror.Singleton{
        MirroredMonoType = Test$package.Item.A.type; 
          MirroredType = Test$package.Item.A.type
        ; MirroredLabel = ("A" : String)
      }
    
  ] of class class dotty.tools.dotc.ast.Trees$ValDef # -1
exception while typing {
  given val t: 
    
      scala.deriving.Mirror.Singleton{
        MirroredMonoType = Test$package.Item.A.type; 
          MirroredType = Test$package.Item.A.type
        ; MirroredLabel = ("A" : String)
      }
    
   = 
    Item$.this.A.$asInstanceOf$[
      
        scala.deriving.Mirror.Singleton{
          MirroredMonoType = Test$package.Item.A.type; 
            MirroredType = Test$package.Item.A.type
          ; MirroredLabel = ("A" : String)
        }
      
    ]
  t:
    
      scala.deriving.Mirror.Singleton{
        MirroredMonoType = Test$package.Item.A.type; 
          MirroredType = Test$package.Item.A.type
        ; MirroredLabel = ("A" : String)
      }
    
} of class class dotty.tools.dotc.ast.Trees$Block # -1
exception while typing {
  given val t: 
    
      scala.deriving.Mirror.Singleton{
        MirroredMonoType = Test$package.Item.A.type; 
          MirroredType = Test$package.Item.A.type
        ; MirroredLabel = ("A" : String)
      }
    
   = 
    Item$.this.A.$asInstanceOf$[
      
        scala.deriving.Mirror.Singleton{
          MirroredMonoType = Test$package.Item.A.type; 
            MirroredType = Test$package.Item.A.type
          ; MirroredLabel = ("A" : String)
        }
      
    ]
  t:
    
      scala.deriving.Mirror.Singleton{
        MirroredMonoType = Test$package.Item.A.type; 
          MirroredType = Test$package.Item.A.type
        ; MirroredLabel = ("A" : String)
      }
    
} of class class dotty.tools.dotc.ast.Trees$Inlined # -1
exception while typing val $scrutinee6: 
  
    scala.deriving.Mirror.Singleton{
      MirroredMonoType = Test$package.Item.A.type; 
        MirroredType = Test$package.Item.A.type
      ; MirroredLabel = ("A" : String)
    }
  
 = 
  {
    given val t: 
      
        scala.deriving.Mirror.Singleton{
          MirroredMonoType = Test$package.Item.A.type; 
            MirroredType = Test$package.Item.A.type
          ; MirroredLabel = ("A" : String)
        }
      
     = 
      Item$.this.A.$asInstanceOf$[
        
          scala.deriving.Mirror.Singleton{
            MirroredMonoType = Test$package.Item.A.type; 
              MirroredType = Test$package.Item.A.type
            ; MirroredLabel = ("A" : String)
          }
        
      ]
    t:
      
        scala.deriving.Mirror.Singleton{
          MirroredMonoType = Test$package.Item.A.type; 
            MirroredType = Test$package.Item.A.type
          ; MirroredLabel = ("A" : String)
        }
      
  } of class class dotty.tools.dotc.ast.Trees$ValDef # -1
exception while typing {
  val $scrutinee6: 
    
      scala.deriving.Mirror.Singleton{
        MirroredMonoType = Test$package.Item.A.type; 
          MirroredType = Test$package.Item.A.type
        ; MirroredLabel = ("A" : String)
      }
    
   = 
    {
      given val t: 
        
          scala.deriving.Mirror.Singleton{
            MirroredMonoType = Test$package.Item.A.type; 
              MirroredType = Test$package.Item.A.type
            ; MirroredLabel = ("A" : String)
          }
        
       = 
        Item$.this.A.$asInstanceOf$[
          
            scala.deriving.Mirror.Singleton{
              MirroredMonoType = Test$package.Item.A.type; 
                MirroredType = Test$package.Item.A.type
              ; MirroredLabel = ("A" : String)
            }
          
        ]
      t:
        
          scala.deriving.Mirror.Singleton{
            MirroredMonoType = Test$package.Item.A.type; 
              MirroredType = Test$package.Item.A.type
            ; MirroredLabel = ("A" : String)
          }
        
    }
  val m: 
    
      scala.deriving.Mirror.Singleton{
        MirroredMonoType = Test$package.Item.A.type; 
          MirroredType = Test$package.Item.A.type
        ; MirroredLabel = ("A" : String)
      }
    
   = $scrutinee6
  val fields: scala.collection.immutable.List[Schema[Any]] = 
    Nil:scala.collection.immutable.List[Schema[Any]]
  {
    final class $anon() extends Object(), Schema[Test$package.Item.A.type] {}
    new Object with Schema {...}():Schema[Test$package.Item.A.type]
  }
} of class class dotty.tools.dotc.ast.Trees$Block # -1
exception while typing {
  val $scrutinee6: 
    
      scala.deriving.Mirror.Singleton{
        MirroredMonoType = Test$package.Item.A.type; 
          MirroredType = Test$package.Item.A.type
        ; MirroredLabel = ("A" : String)
      }
    
   = 
    {
      given val t: 
        
          scala.deriving.Mirror.Singleton{
            MirroredMonoType = Test$package.Item.A.type; 
              MirroredType = Test$package.Item.A.type
            ; MirroredLabel = ("A" : String)
          }
        
       = 
        Item$.this.A.$asInstanceOf$[
          
            scala.deriving.Mirror.Singleton{
              MirroredMonoType = Test$package.Item.A.type; 
                MirroredType = Test$package.Item.A.type
              ; MirroredLabel = ("A" : String)
            }
          
        ]
      t:
        
          scala.deriving.Mirror.Singleton{
            MirroredMonoType = Test$package.Item.A.type; 
              MirroredType = Test$package.Item.A.type
            ; MirroredLabel = ("A" : String)
          }
        
    }
  val m: 
    
      scala.deriving.Mirror.Singleton{
        MirroredMonoType = Test$package.Item.A.type; 
          MirroredType = Test$package.Item.A.type
        ; MirroredLabel = ("A" : String)
      }
    
   = $scrutinee6
  val fields: scala.collection.immutable.List[Schema[Any]] = 
    Nil:scala.collection.immutable.List[Schema[Any]]
  {
    final class $anon() extends Object(), Schema[Test$package.Item.A.type] {}
    new Object with Schema {...}():Schema[Test$package.Item.A.type]
  }
}:Schema[Test$package.Item.A.type] of class class dotty.tools.dotc.ast.Trees$Typed # -1
exception while typing {
  val $scrutinee6: 
    
      scala.deriving.Mirror.Singleton{
        MirroredMonoType = Test$package.Item.A.type; 
          MirroredType = Test$package.Item.A.type
        ; MirroredLabel = ("A" : String)
      }
    
   = 
    {
      given val t: 
        
          scala.deriving.Mirror.Singleton{
            MirroredMonoType = Test$package.Item.A.type; 
              MirroredType = Test$package.Item.A.type
            ; MirroredLabel = ("A" : String)
          }
        
       = 
        Item$.this.A.$asInstanceOf$[
          
            scala.deriving.Mirror.Singleton{
              MirroredMonoType = Test$package.Item.A.type; 
                MirroredType = Test$package.Item.A.type
              ; MirroredLabel = ("A" : String)
            }
          
        ]
      t:
        
          scala.deriving.Mirror.Singleton{
            MirroredMonoType = Test$package.Item.A.type; 
              MirroredType = Test$package.Item.A.type
            ; MirroredLabel = ("A" : String)
          }
        
    }
  val m: 
    
      scala.deriving.Mirror.Singleton{
        MirroredMonoType = Test$package.Item.A.type; 
          MirroredType = Test$package.Item.A.type
        ; MirroredLabel = ("A" : String)
      }
    
   = $scrutinee6
  val fields: scala.collection.immutable.List[Schema[Any]] = 
    Nil:scala.collection.immutable.List[Schema[Any]]
  {
    final class $anon() extends Object(), Schema[Test$package.Item.A.type] {}
    new Object with Schema {...}():Schema[Test$package.Item.A.type]
  }
}:Schema[Test$package.Item.A.type] of class class dotty.tools.dotc.ast.Trees$Inlined # -1
exception while typing {
  val $scrutinee6: 
    
      scala.deriving.Mirror.Singleton{
        MirroredMonoType = Test$package.Item.A.type; 
          MirroredType = Test$package.Item.A.type
        ; MirroredLabel = ("A" : String)
      }
    
   = 
    {
      given val t: 
        
          scala.deriving.Mirror.Singleton{
            MirroredMonoType = Test$package.Item.A.type; 
              MirroredType = Test$package.Item.A.type
            ; MirroredLabel = ("A" : String)
          }
        
       = 
        Item$.this.A.$asInstanceOf$[
          
            scala.deriving.Mirror.Singleton{
              MirroredMonoType = Test$package.Item.A.type; 
                MirroredType = Test$package.Item.A.type
              ; MirroredLabel = ("A" : String)
            }
          
        ]
      t:
        
          scala.deriving.Mirror.Singleton{
            MirroredMonoType = Test$package.Item.A.type; 
              MirroredType = Test$package.Item.A.type
            ; MirroredLabel = ("A" : String)
          }
        
    }
  val m: 
    
      scala.deriving.Mirror.Singleton{
        MirroredMonoType = Test$package.Item.A.type; 
          MirroredType = Test$package.Item.A.type
        ; MirroredLabel = ("A" : String)
      }
    
   = $scrutinee6
  val fields: scala.collection.immutable.List[Schema[Any]] = 
    Nil:scala.collection.immutable.List[Schema[Any]]
  {
    final class $anon() extends Object(), Schema[Test$package.Item.A.type] {}
    new Object with Schema {...}():Schema[Test$package.Item.A.type]
  }
}:Schema[Test$package.Item.A.type]:Schema[Test$package.Item.A.type] of class class dotty.tools.dotc.ast.Trees$Typed # -1
exception while typing {
  val $scrutinee6: 
    
      scala.deriving.Mirror.Singleton{
        MirroredMonoType = Test$package.Item.A.type; 
          MirroredType = Test$package.Item.A.type
        ; MirroredLabel = ("A" : String)
      }
    
   = 
    {
      given val t: 
        
          scala.deriving.Mirror.Singleton{
            MirroredMonoType = Test$package.Item.A.type; 
              MirroredType = Test$package.Item.A.type
            ; MirroredLabel = ("A" : String)
          }
        
       = 
        Item$.this.A.$asInstanceOf$[
          
            scala.deriving.Mirror.Singleton{
              MirroredMonoType = Test$package.Item.A.type; 
                MirroredType = Test$package.Item.A.type
              ; MirroredLabel = ("A" : String)
            }
          
        ]
      t:
        
          scala.deriving.Mirror.Singleton{
            MirroredMonoType = Test$package.Item.A.type; 
              MirroredType = Test$package.Item.A.type
            ; MirroredLabel = ("A" : String)
          }
        
    }
  val m: 
    
      scala.deriving.Mirror.Singleton{
        MirroredMonoType = Test$package.Item.A.type; 
          MirroredType = Test$package.Item.A.type
        ; MirroredLabel = ("A" : String)
      }
    
   = $scrutinee6
  val fields: scala.collection.immutable.List[Schema[Any]] = 
    Nil:scala.collection.immutable.List[Schema[Any]]
  {
    final class $anon() extends Object(), Schema[Test$package.Item.A.type] {}
    new Object with Schema {...}():Schema[Test$package.Item.A.type]
  }
}:Schema[Test$package.Item.A.type]:Schema[Test$package.Item.A.type] of class class dotty.tools.dotc.ast.Trees$Inlined # -1
exception while typing given val t: Schema[Test$package.Item.A.type] = 
  {
    val $scrutinee6: 
      
        scala.deriving.Mirror.Singleton{
          MirroredMonoType = Test$package.Item.A.type; 
            MirroredType = Test$package.Item.A.type
          ; MirroredLabel = ("A" : String)
        }
      
     = 
      {
        given val t: 
          
            scala.deriving.Mirror.Singleton{
              MirroredMonoType = Test$package.Item.A.type; 
                MirroredType = Test$package.Item.A.type
              ; MirroredLabel = ("A" : String)
            }
          
         = 
          Item$.this.A.$asInstanceOf$[
            
              scala.deriving.Mirror.Singleton{
                MirroredMonoType = Test$package.Item.A.type; 
                  MirroredType = Test$package.Item.A.type
                ; MirroredLabel = ("A" : String)
              }
            
          ]
        t:
          
            scala.deriving.Mirror.Singleton{
              MirroredMonoType = Test$package.Item.A.type; 
                MirroredType = Test$package.Item.A.type
              ; MirroredLabel = ("A" : String)
            }
          
      }
    val m: 
      
        scala.deriving.Mirror.Singleton{
          MirroredMonoType = Test$package.Item.A.type; 
            MirroredType = Test$package.Item.A.type
          ; MirroredLabel = ("A" : String)
        }
      
     = $scrutinee6
    val fields: scala.collection.immutable.List[Schema[Any]] = 
      Nil:scala.collection.immutable.List[Schema[Any]]
    {
      final class $anon() extends Object(), Schema[Test$package.Item.A.type] {}
      new Object with Schema {...}():Schema[Test$package.Item.A.type]
    }
  }:Schema[Test$package.Item.A.type]:Schema[Test$package.Item.A.type] of class class dotty.tools.dotc.ast.Trees$ValDef # -1
exception while typing {
  given val t: Schema[Test$package.Item.A.type] = 
    {
      val $scrutinee6: 
        
          scala.deriving.Mirror.Singleton{
            MirroredMonoType = Test$package.Item.A.type; 
              MirroredType = Test$package.Item.A.type
            ; MirroredLabel = ("A" : String)
          }
        
       = 
        {
          given val t: 
            
              scala.deriving.Mirror.Singleton{
                MirroredMonoType = Test$package.Item.A.type; 
                  MirroredType = Test$package.Item.A.type
                ; MirroredLabel = ("A" : String)
              }
            
           = 
            Item$.this.A.$asInstanceOf$[
              
                scala.deriving.Mirror.Singleton{
                  MirroredMonoType = Test$package.Item.A.type; 
                    MirroredType = Test$package.Item.A.type
                  ; MirroredLabel = ("A" : String)
                }
              
            ]
          t:
            
              scala.deriving.Mirror.Singleton{
                MirroredMonoType = Test$package.Item.A.type; 
                  MirroredType = Test$package.Item.A.type
                ; MirroredLabel = ("A" : String)
              }
            
        }
      val m: 
        
          scala.deriving.Mirror.Singleton{
            MirroredMonoType = Test$package.Item.A.type; 
              MirroredType = Test$package.Item.A.type
            ; MirroredLabel = ("A" : String)
          }
        
       = $scrutinee6
      val fields: scala.collection.immutable.List[Schema[Any]] = 
        Nil:scala.collection.immutable.List[Schema[Any]]
      {
        final class $anon() extends Object(), Schema[Test$package.Item.A.type] {
          }
        new Object with Schema {...}():Schema[Test$package.Item.A.type]
      }
    }:Schema[Test$package.Item.A.type]:Schema[Test$package.Item.A.type]
  t:Schema[Test$package.Item.A.type]
} of class class dotty.tools.dotc.ast.Trees$Block # -1
exception while typing {
  given val t: Schema[Test$package.Item.A.type] = 
    {
      val $scrutinee6: 
        
          scala.deriving.Mirror.Singleton{
            MirroredMonoType = Test$package.Item.A.type; 
              MirroredType = Test$package.Item.A.type
            ; MirroredLabel = ("A" : String)
          }
        
       = 
        {
          given val t: 
            
              scala.deriving.Mirror.Singleton{
                MirroredMonoType = Test$package.Item.A.type; 
                  MirroredType = Test$package.Item.A.type
                ; MirroredLabel = ("A" : String)
              }
            
           = 
            Item$.this.A.$asInstanceOf$[
              
                scala.deriving.Mirror.Singleton{
                  MirroredMonoType = Test$package.Item.A.type; 
                    MirroredType = Test$package.Item.A.type
                  ; MirroredLabel = ("A" : String)
                }
              
            ]
          t:
            
              scala.deriving.Mirror.Singleton{
                MirroredMonoType = Test$package.Item.A.type; 
                  MirroredType = Test$package.Item.A.type
                ; MirroredLabel = ("A" : String)
              }
            
        }
      val m: 
        
          scala.deriving.Mirror.Singleton{
            MirroredMonoType = Test$package.Item.A.type; 
              MirroredType = Test$package.Item.A.type
            ; MirroredLabel = ("A" : String)
          }
        
       = $scrutinee6
      val fields: scala.collection.immutable.List[Schema[Any]] = 
        Nil:scala.collection.immutable.List[Schema[Any]]
      {
        final class $anon() extends Object(), Schema[Test$package.Item.A.type] {
          }
        new Object with Schema {...}():Schema[Test$package.Item.A.type]
      }
    }:Schema[Test$package.Item.A.type]:Schema[Test$package.Item.A.type]
  t:Schema[Test$package.Item.A.type]
} of class class dotty.tools.dotc.ast.Trees$Inlined # -1
exception while typing {
  given val t: Schema[Test$package.Item.A.type] = 
    {
      val $scrutinee6: 
        
          scala.deriving.Mirror.Singleton{
            MirroredMonoType = Test$package.Item.A.type; 
              MirroredType = Test$package.Item.A.type
            ; MirroredLabel = ("A" : String)
          }
        
       = 
        {
          given val t: 
            
              scala.deriving.Mirror.Singleton{
                MirroredMonoType = Test$package.Item.A.type; 
                  MirroredType = Test$package.Item.A.type
                ; MirroredLabel = ("A" : String)
              }
            
           = 
            Item$.this.A.$asInstanceOf$[
              
                scala.deriving.Mirror.Singleton{
                  MirroredMonoType = Test$package.Item.A.type; 
                    MirroredType = Test$package.Item.A.type
                  ; MirroredLabel = ("A" : String)
                }
              
            ]
          t:
            
              scala.deriving.Mirror.Singleton{
                MirroredMonoType = Test$package.Item.A.type; 
                  MirroredType = Test$package.Item.A.type
                ; MirroredLabel = ("A" : String)
              }
            
        }
      val m: 
        
          scala.deriving.Mirror.Singleton{
            MirroredMonoType = Test$package.Item.A.type; 
              MirroredType = Test$package.Item.A.type
            ; MirroredLabel = ("A" : String)
          }
        
       = $scrutinee6
      val fields: scala.collection.immutable.List[Schema[Any]] = 
        Nil:scala.collection.immutable.List[Schema[Any]]
      {
        final class $anon() extends Object(), Schema[Test$package.Item.A.type] {
          }
        new Object with Schema {...}():Schema[Test$package.Item.A.type]
      }
    }:Schema[Test$package.Item.A.type]:Schema[Test$package.Item.A.type]
  t:Schema[Test$package.Item.A.type]
}:Schema[Any] of class class dotty.tools.dotc.ast.Trees$Typed # -1
exception while typing {
  given val t: Schema[Test$package.Item.A.type] = 
    (
      {
        val $scrutinee6: 
          
            scala.deriving.Mirror.Singleton{
              MirroredMonoType = Test$package.Item.A.type; 
                MirroredType = Test$package.Item.A.type
              ; MirroredLabel = ("A" : String)
            }
          
         = 
          {
            given val t: 
              
                scala.deriving.Mirror.Singleton{
                  MirroredMonoType = Test$package.Item.A.type; 
                    MirroredType = Test$package.Item.A.type
                  ; MirroredLabel = ("A" : String)
                }
              
             = 
              Item$.this.A.$asInstanceOf$[
                
                  scala.deriving.Mirror.Singleton{
                    MirroredMonoType = Test$package.Item.A.type; 
                      MirroredType = Test$package.Item.A.type
                    ; MirroredLabel = ("A" : String)
                  }
                
              ]
            t:
              
                scala.deriving.Mirror.Singleton{
                  MirroredMonoType = Test$package.Item.A.type; 
                    MirroredType = Test$package.Item.A.type
                  ; MirroredLabel = ("A" : String)
                }
              
          }
        val m: 
          
            scala.deriving.Mirror.Singleton{
              MirroredMonoType = Test$package.Item.A.type; 
                MirroredType = Test$package.Item.A.type
              ; MirroredLabel = ("A" : String)
            }
          
         = $scrutinee6
        val fields: scala.collection.immutable.List[Schema[Any]] = 
          Nil:scala.collection.immutable.List[Schema[Any]]
        {
          final class $anon() extends Object(), Schema[Test$package.Item.A.type]
             {
          }
          new Object with Schema {...}():Schema[Test$package.Item.A.type]
        }
      }:Schema[Test$package.Item.A.type]
    :Schema[Test$package.Item.A.type])
  (t:Schema[Test$package.Item.A.type])
}.asInstanceOf[Schema[Any]] of class class dotty.tools.dotc.ast.Trees$TypeApply # -1
exception while typing val elem$1: Schema[Any] = 
  {
    given val t: Schema[Test$package.Item.A.type] = 
      (
        {
          val $scrutinee6: 
            
              scala.deriving.Mirror.Singleton{
                MirroredMonoType = Test$package.Item.A.type; 
                  MirroredType = Test$package.Item.A.type
                ; MirroredLabel = ("A" : String)
              }
            
           = 
            {
              given val t: 
                
                  scala.deriving.Mirror.Singleton{
                    MirroredMonoType = Test$package.Item.A.type; 
                      MirroredType = Test$package.Item.A.type
                    ; MirroredLabel = ("A" : String)
                  }
                
               = 
                Item$.this.A.$asInstanceOf$[
                  
                    scala.deriving.Mirror.Singleton{
                      MirroredMonoType = Test$package.Item.A.type; 
                        MirroredType = Test$package.Item.A.type
                      ; MirroredLabel = ("A" : String)
                    }
                  
                ]
              t:
                
                  scala.deriving.Mirror.Singleton{
                    MirroredMonoType = Test$package.Item.A.type; 
                      MirroredType = Test$package.Item.A.type
                    ; MirroredLabel = ("A" : String)
                  }
                
            }
          val m: 
            
              scala.deriving.Mirror.Singleton{
                MirroredMonoType = Test$package.Item.A.type; 
                  MirroredType = Test$package.Item.A.type
                ; MirroredLabel = ("A" : String)
              }
            
           = $scrutinee6
          val fields: scala.collection.immutable.List[Schema[Any]] = 
            Nil:scala.collection.immutable.List[Schema[Any]]
          {
            final class $anon() extends Object(), 
              Schema[Test$package.Item.A.type]
             {}
            new Object with Schema {...}():Schema[Test$package.Item.A.type]
          }
        }:Schema[Test$package.Item.A.type]
      :Schema[Test$package.Item.A.type])
    (t:Schema[Test$package.Item.A.type])
  }.asInstanceOf[Schema[Any]] of class class dotty.tools.dotc.ast.Trees$ValDef # -1
exception while typing {
  val elem$1: Schema[Any] = 
    {
      given val t: Schema[Test$package.Item.A.type] = 
        (
          {
            val $scrutinee6: 
              
                scala.deriving.Mirror.Singleton{
                  MirroredMonoType = Test$package.Item.A.type; 
                    MirroredType = Test$package.Item.A.type
                  ; MirroredLabel = ("A" : String)
                }
              
             = 
              {
                given val t: 
                  
                    scala.deriving.Mirror.Singleton{
                      MirroredMonoType = Test$package.Item.A.type; 
                        MirroredType = Test$package.Item.A.type
                      ; MirroredLabel = ("A" : String)
                    }
                  
                 = 
                  Item$.this.A.$asInstanceOf$[
                    
                      scala.deriving.Mirror.Singleton{
                        MirroredMonoType = Test$package.Item.A.type; 
                          MirroredType = Test$package.Item.A.type
                        ; MirroredLabel = ("A" : String)
                      }
                    
                  ]
                t:
                  
                    scala.deriving.Mirror.Singleton{
                      MirroredMonoType = Test$package.Item.A.type; 
                        MirroredType = Test$package.Item.A.type
                      ; MirroredLabel = ("A" : String)
                    }
                  
              }
            val m: 
              
                scala.deriving.Mirror.Singleton{
                  MirroredMonoType = Test$package.Item.A.type; 
                    MirroredType = Test$package.Item.A.type
                  ; MirroredLabel = ("A" : String)
                }
              
             = $scrutinee6
            val fields: scala.collection.immutable.List[Schema[Any]] = 
              Nil:scala.collection.immutable.List[Schema[Any]]
            {
              final class $anon() extends Object(), 
                Schema[Test$package.Item.A.type]
               {}
              new Object with Schema {...}():Schema[Test$package.Item.A.type]
            }
          }:Schema[Test$package.Item.A.type]
        :Schema[Test$package.Item.A.type])
      (t:Schema[Test$package.Item.A.type])
    }.asInstanceOf[Schema[Any]]
  (
    {
      val elem$1: Schema[Any] = 
        {
          given val t: Schema[Test$package.Item.B.type] = 
            (
              {
                val $scrutinee11: 
                  
                    scala.deriving.Mirror.Singleton{
                      MirroredMonoType = Test$package.Item.B.type; 
                        MirroredType = Test$package.Item.B.type
                      ; MirroredLabel = ("B" : String)
                    }
                  
                 = 
                  {
                    given val t: 
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.B.type; 
                            MirroredType = Test$package.Item.B.type
                          ; MirroredLabel = ("B" : String)
                        }
                      
                     = 
                      Item$.this.B.$asInstanceOf$[
                        
                          scala.deriving.Mirror.Singleton{
                            MirroredMonoType = Test$package.Item.B.type; 
                              MirroredType = Test$package.Item.B.type
                            ; MirroredLabel = ("B" : String)
                          }
                        
                      ]
                    t:
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.B.type; 
                            MirroredType = Test$package.Item.B.type
                          ; MirroredLabel = ("B" : String)
                        }
                      
                  }
                val m: 
                  
                    scala.deriving.Mirror.Singleton{
                      MirroredMonoType = Test$package.Item.B.type; 
                        MirroredType = Test$package.Item.B.type
                      ; MirroredLabel = ("B" : String)
                    }
                  
                 = $scrutinee11
                val fields: scala.collection.immutable.List[Schema[Any]] = 
                  Nil:scala.collection.immutable.List[Schema[Any]]
                {
                  final class $anon() extends Object(), 
                    Schema[Test$package.Item.B.type]
                   {}
                  new Object with Schema {...}():
                    Schema[Test$package.Item.B.type]
                }
              }:Schema[Test$package.Item.B.type]
            :Schema[Test$package.Item.B.type])
          (t:Schema[Test$package.Item.B.type])
        }.asInstanceOf[Schema[Any]]
      (Nil:scala.collection.immutable.List[Schema[Any]]).::[Schema[Any]](elem$1)
    }
  :scala.collection.immutable.List[Schema[Any]]).::[Schema[Any]](elem$1)
} of class class dotty.tools.dotc.ast.Trees$Block # -1
exception while typing {
  val elem$1: Schema[Any] = 
    {
      given val t: Schema[Test$package.Item.A.type] = 
        (
          {
            val $scrutinee6: 
              
                scala.deriving.Mirror.Singleton{
                  MirroredMonoType = Test$package.Item.A.type; 
                    MirroredType = Test$package.Item.A.type
                  ; MirroredLabel = ("A" : String)
                }
              
             = 
              {
                given val t: 
                  
                    scala.deriving.Mirror.Singleton{
                      MirroredMonoType = Test$package.Item.A.type; 
                        MirroredType = Test$package.Item.A.type
                      ; MirroredLabel = ("A" : String)
                    }
                  
                 = 
                  Item$.this.A.$asInstanceOf$[
                    
                      scala.deriving.Mirror.Singleton{
                        MirroredMonoType = Test$package.Item.A.type; 
                          MirroredType = Test$package.Item.A.type
                        ; MirroredLabel = ("A" : String)
                      }
                    
                  ]
                t:
                  
                    scala.deriving.Mirror.Singleton{
                      MirroredMonoType = Test$package.Item.A.type; 
                        MirroredType = Test$package.Item.A.type
                      ; MirroredLabel = ("A" : String)
                    }
                  
              }
            val m: 
              
                scala.deriving.Mirror.Singleton{
                  MirroredMonoType = Test$package.Item.A.type; 
                    MirroredType = Test$package.Item.A.type
                  ; MirroredLabel = ("A" : String)
                }
              
             = $scrutinee6
            val fields: scala.collection.immutable.List[Schema[Any]] = 
              Nil:scala.collection.immutable.List[Schema[Any]]
            {
              final class $anon() extends Object(), 
                Schema[Test$package.Item.A.type]
               {}
              new Object with Schema {...}():Schema[Test$package.Item.A.type]
            }
          }:Schema[Test$package.Item.A.type]
        :Schema[Test$package.Item.A.type])
      (t:Schema[Test$package.Item.A.type])
    }.asInstanceOf[Schema[Any]]
  (
    {
      val elem$1: Schema[Any] = 
        {
          given val t: Schema[Test$package.Item.B.type] = 
            (
              {
                val $scrutinee11: 
                  
                    scala.deriving.Mirror.Singleton{
                      MirroredMonoType = Test$package.Item.B.type; 
                        MirroredType = Test$package.Item.B.type
                      ; MirroredLabel = ("B" : String)
                    }
                  
                 = 
                  {
                    given val t: 
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.B.type; 
                            MirroredType = Test$package.Item.B.type
                          ; MirroredLabel = ("B" : String)
                        }
                      
                     = 
                      Item$.this.B.$asInstanceOf$[
                        
                          scala.deriving.Mirror.Singleton{
                            MirroredMonoType = Test$package.Item.B.type; 
                              MirroredType = Test$package.Item.B.type
                            ; MirroredLabel = ("B" : String)
                          }
                        
                      ]
                    t:
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.B.type; 
                            MirroredType = Test$package.Item.B.type
                          ; MirroredLabel = ("B" : String)
                        }
                      
                  }
                val m: 
                  
                    scala.deriving.Mirror.Singleton{
                      MirroredMonoType = Test$package.Item.B.type; 
                        MirroredType = Test$package.Item.B.type
                      ; MirroredLabel = ("B" : String)
                    }
                  
                 = $scrutinee11
                val fields: scala.collection.immutable.List[Schema[Any]] = 
                  Nil:scala.collection.immutable.List[Schema[Any]]
                {
                  final class $anon() extends Object(), 
                    Schema[Test$package.Item.B.type]
                   {}
                  new Object with Schema {...}():
                    Schema[Test$package.Item.B.type]
                }
              }:Schema[Test$package.Item.B.type]
            :Schema[Test$package.Item.B.type])
          (t:Schema[Test$package.Item.B.type])
        }.asInstanceOf[Schema[Any]]
      (Nil:scala.collection.immutable.List[Schema[Any]]).::[Schema[Any]](elem$1)
    }
  :scala.collection.immutable.List[Schema[Any]]).::[Schema[Any]](elem$1)
}:scala.collection.immutable.List[Schema[Any]] of class class dotty.tools.dotc.ast.Trees$Typed # -1
exception while typing {
  val elem$1: Schema[Any] = 
    {
      given val t: Schema[Test$package.Item.A.type] = 
        (
          {
            val $scrutinee6: 
              
                scala.deriving.Mirror.Singleton{
                  MirroredMonoType = Test$package.Item.A.type; 
                    MirroredType = Test$package.Item.A.type
                  ; MirroredLabel = ("A" : String)
                }
              
             = 
              {
                given val t: 
                  
                    scala.deriving.Mirror.Singleton{
                      MirroredMonoType = Test$package.Item.A.type; 
                        MirroredType = Test$package.Item.A.type
                      ; MirroredLabel = ("A" : String)
                    }
                  
                 = 
                  Item$.this.A.$asInstanceOf$[
                    
                      scala.deriving.Mirror.Singleton{
                        MirroredMonoType = Test$package.Item.A.type; 
                          MirroredType = Test$package.Item.A.type
                        ; MirroredLabel = ("A" : String)
                      }
                    
                  ]
                t:
                  
                    scala.deriving.Mirror.Singleton{
                      MirroredMonoType = Test$package.Item.A.type; 
                        MirroredType = Test$package.Item.A.type
                      ; MirroredLabel = ("A" : String)
                    }
                  
              }
            val m: 
              
                scala.deriving.Mirror.Singleton{
                  MirroredMonoType = Test$package.Item.A.type; 
                    MirroredType = Test$package.Item.A.type
                  ; MirroredLabel = ("A" : String)
                }
              
             = $scrutinee6
            val fields: scala.collection.immutable.List[Schema[Any]] = 
              Nil:scala.collection.immutable.List[Schema[Any]]
            {
              final class $anon() extends Object(), 
                Schema[Test$package.Item.A.type]
               {}
              new Object with Schema {...}():Schema[Test$package.Item.A.type]
            }
          }:Schema[Test$package.Item.A.type]
        :Schema[Test$package.Item.A.type])
      (t:Schema[Test$package.Item.A.type])
    }.asInstanceOf[Schema[Any]]
  (
    {
      val elem$1: Schema[Any] = 
        {
          given val t: Schema[Test$package.Item.B.type] = 
            (
              {
                val $scrutinee11: 
                  
                    scala.deriving.Mirror.Singleton{
                      MirroredMonoType = Test$package.Item.B.type; 
                        MirroredType = Test$package.Item.B.type
                      ; MirroredLabel = ("B" : String)
                    }
                  
                 = 
                  {
                    given val t: 
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.B.type; 
                            MirroredType = Test$package.Item.B.type
                          ; MirroredLabel = ("B" : String)
                        }
                      
                     = 
                      Item$.this.B.$asInstanceOf$[
                        
                          scala.deriving.Mirror.Singleton{
                            MirroredMonoType = Test$package.Item.B.type; 
                              MirroredType = Test$package.Item.B.type
                            ; MirroredLabel = ("B" : String)
                          }
                        
                      ]
                    t:
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.B.type; 
                            MirroredType = Test$package.Item.B.type
                          ; MirroredLabel = ("B" : String)
                        }
                      
                  }
                val m: 
                  
                    scala.deriving.Mirror.Singleton{
                      MirroredMonoType = Test$package.Item.B.type; 
                        MirroredType = Test$package.Item.B.type
                      ; MirroredLabel = ("B" : String)
                    }
                  
                 = $scrutinee11
                val fields: scala.collection.immutable.List[Schema[Any]] = 
                  Nil:scala.collection.immutable.List[Schema[Any]]
                {
                  final class $anon() extends Object(), 
                    Schema[Test$package.Item.B.type]
                   {}
                  new Object with Schema {...}():
                    Schema[Test$package.Item.B.type]
                }
              }:Schema[Test$package.Item.B.type]
            :Schema[Test$package.Item.B.type])
          (t:Schema[Test$package.Item.B.type])
        }.asInstanceOf[Schema[Any]]
      (Nil:scala.collection.immutable.List[Schema[Any]]).::[Schema[Any]](elem$1)
    }
  :scala.collection.immutable.List[Schema[Any]]).::[Schema[Any]](elem$1)
}:scala.collection.immutable.List[Schema[Any]] of class class dotty.tools.dotc.ast.Trees$Inlined # -1
exception while typing val subTypes: scala.collection.immutable.List[Schema[Any]] = 
  {
    val elem$1: Schema[Any] = 
      {
        given val t: Schema[Test$package.Item.A.type] = 
          (
            {
              val $scrutinee6: 
                
                  scala.deriving.Mirror.Singleton{
                    MirroredMonoType = Test$package.Item.A.type; 
                      MirroredType = Test$package.Item.A.type
                    ; MirroredLabel = ("A" : String)
                  }
                
               = 
                {
                  given val t: 
                    
                      scala.deriving.Mirror.Singleton{
                        MirroredMonoType = Test$package.Item.A.type; 
                          MirroredType = Test$package.Item.A.type
                        ; MirroredLabel = ("A" : String)
                      }
                    
                   = 
                    Item$.this.A.$asInstanceOf$[
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.A.type; 
                            MirroredType = Test$package.Item.A.type
                          ; MirroredLabel = ("A" : String)
                        }
                      
                    ]
                  t:
                    
                      scala.deriving.Mirror.Singleton{
                        MirroredMonoType = Test$package.Item.A.type; 
                          MirroredType = Test$package.Item.A.type
                        ; MirroredLabel = ("A" : String)
                      }
                    
                }
              val m: 
                
                  scala.deriving.Mirror.Singleton{
                    MirroredMonoType = Test$package.Item.A.type; 
                      MirroredType = Test$package.Item.A.type
                    ; MirroredLabel = ("A" : String)
                  }
                
               = $scrutinee6
              val fields: scala.collection.immutable.List[Schema[Any]] = 
                Nil:scala.collection.immutable.List[Schema[Any]]
              {
                final class $anon() extends Object(), 
                  Schema[Test$package.Item.A.type]
                 {}
                new Object with Schema {...}():Schema[Test$package.Item.A.type]
              }
            }:Schema[Test$package.Item.A.type]
          :Schema[Test$package.Item.A.type])
        (t:Schema[Test$package.Item.A.type])
      }.asInstanceOf[Schema[Any]]
    (
      {
        val elem$1: Schema[Any] = 
          {
            given val t: Schema[Test$package.Item.B.type] = 
              (
                {
                  val $scrutinee11: 
                    
                      scala.deriving.Mirror.Singleton{
                        MirroredMonoType = Test$package.Item.B.type; 
                          MirroredType = Test$package.Item.B.type
                        ; MirroredLabel = ("B" : String)
                      }
                    
                   = 
                    {
                      given val t: 
                        
                          scala.deriving.Mirror.Singleton{
                            MirroredMonoType = Test$package.Item.B.type; 
                              MirroredType = Test$package.Item.B.type
                            ; MirroredLabel = ("B" : String)
                          }
                        
                       = 
                        Item$.this.B.$asInstanceOf$[
                          
                            scala.deriving.Mirror.Singleton{
                              MirroredMonoType = Test$package.Item.B.type; 
                                MirroredType = Test$package.Item.B.type
                              ; MirroredLabel = ("B" : String)
                            }
                          
                        ]
                      t:
                        
                          scala.deriving.Mirror.Singleton{
                            MirroredMonoType = Test$package.Item.B.type; 
                              MirroredType = Test$package.Item.B.type
                            ; MirroredLabel = ("B" : String)
                          }
                        
                    }
                  val m: 
                    
                      scala.deriving.Mirror.Singleton{
                        MirroredMonoType = Test$package.Item.B.type; 
                          MirroredType = Test$package.Item.B.type
                        ; MirroredLabel = ("B" : String)
                      }
                    
                   = $scrutinee11
                  val fields: scala.collection.immutable.List[Schema[Any]] = 
                    Nil:scala.collection.immutable.List[Schema[Any]]
                  {
                    final class $anon() extends Object(), 
                      Schema[Test$package.Item.B.type]
                     {}
                    new Object with Schema {...}():
                      Schema[Test$package.Item.B.type]
                  }
                }:Schema[Test$package.Item.B.type]
              :Schema[Test$package.Item.B.type])
            (t:Schema[Test$package.Item.B.type])
          }.asInstanceOf[Schema[Any]]
        (Nil:scala.collection.immutable.List[Schema[Any]]).::[Schema[Any]](
          elem$1
        )
      }
    :scala.collection.immutable.List[Schema[Any]]).::[Schema[Any]](elem$1)
  }:scala.collection.immutable.List[Schema[Any]] of class class dotty.tools.dotc.ast.Trees$ValDef # -1
exception while typing {
  val $scrutinee2: 
    
      (
        deriving.Mirror{
          MirroredType = Item; MirroredMonoType = Item; 
            MirroredElemTypes <: Tuple
        }
       & 
        scala.deriving.Mirror.Sum{
          MirroredMonoType = Item; MirroredType = Item; 
            MirroredLabel = ("Item" : String)
        }
      ){
        MirroredElemTypes = (Test$package.Item.A.type, Test$package.Item.B.type)
          ; 
        MirroredElemLabels = (("A" : String), ("B" : String))
      }
    
   = 
    {
      given val t: 
        
          (
            deriving.Mirror{
              MirroredType = Item; MirroredMonoType = Item; 
                MirroredElemTypes <: Tuple
            }
           & 
            scala.deriving.Mirror.Sum{
              MirroredMonoType = Item; MirroredType = Item; 
                MirroredLabel = ("Item" : String)
            }
          ){
            MirroredElemTypes = (Test$package.Item.A.type, 
              Test$package.Item.B.type
            ); MirroredElemLabels = (("A" : String), ("B" : String))
          }
        
       = 
        Item.$asInstanceOf$[
          
            (
              deriving.Mirror{
                MirroredType = Item; MirroredMonoType = Item; 
                  MirroredElemTypes <: Tuple
              }
             & 
              scala.deriving.Mirror.Sum{
                MirroredMonoType = Item; MirroredType = Item; 
                  MirroredLabel = ("Item" : String)
              }
            ){
              MirroredElemTypes = (Test$package.Item.A.type, 
                Test$package.Item.B.type
              ); MirroredElemLabels = (("A" : String), ("B" : String))
            }
          
        ]
      t:
        
          (
            deriving.Mirror{
              MirroredType = Item; MirroredMonoType = Item; 
                MirroredElemTypes <: Tuple
            }
           & 
            scala.deriving.Mirror.Sum{
              MirroredMonoType = Item; MirroredType = Item; 
                MirroredLabel = ("Item" : String)
            }
          ){
            MirroredElemTypes = (Test$package.Item.A.type, 
              Test$package.Item.B.type
            ); MirroredElemLabels = (("A" : String), ("B" : String))
          }
        
    }
  val m: 
    
      (
        deriving.Mirror{
          MirroredType = Item; MirroredMonoType = Item; 
            MirroredElemTypes <: Tuple
        }
       & 
        scala.deriving.Mirror.Sum{
          MirroredMonoType = Item; MirroredType = Item; 
            MirroredLabel = ("Item" : String)
        }
      ){
        MirroredElemTypes = (Test$package.Item.A.type, Test$package.Item.B.type)
          ; 
        MirroredElemLabels = (("A" : String), ("B" : String))
      }
    
   = $scrutinee2
  val subTypes: scala.collection.immutable.List[Schema[Any]] = 
    {
      val elem$1: Schema[Any] = 
        {
          given val t: Schema[Test$package.Item.A.type] = 
            (
              {
                val $scrutinee6: 
                  
                    scala.deriving.Mirror.Singleton{
                      MirroredMonoType = Test$package.Item.A.type; 
                        MirroredType = Test$package.Item.A.type
                      ; MirroredLabel = ("A" : String)
                    }
                  
                 = 
                  {
                    given val t: 
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.A.type; 
                            MirroredType = Test$package.Item.A.type
                          ; MirroredLabel = ("A" : String)
                        }
                      
                     = 
                      Item$.this.A.$asInstanceOf$[
                        
                          scala.deriving.Mirror.Singleton{
                            MirroredMonoType = Test$package.Item.A.type; 
                              MirroredType = Test$package.Item.A.type
                            ; MirroredLabel = ("A" : String)
                          }
                        
                      ]
                    t:
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.A.type; 
                            MirroredType = Test$package.Item.A.type
                          ; MirroredLabel = ("A" : String)
                        }
                      
                  }
                val m: 
                  
                    scala.deriving.Mirror.Singleton{
                      MirroredMonoType = Test$package.Item.A.type; 
                        MirroredType = Test$package.Item.A.type
                      ; MirroredLabel = ("A" : String)
                    }
                  
                 = $scrutinee6
                val fields: scala.collection.immutable.List[Schema[Any]] = 
                  Nil:scala.collection.immutable.List[Schema[Any]]
                {
                  final class $anon() extends Object(), 
                    Schema[Test$package.Item.A.type]
                   {}
                  new Object with Schema {...}():
                    Schema[Test$package.Item.A.type]
                }
              }:Schema[Test$package.Item.A.type]
            :Schema[Test$package.Item.A.type])
          (t:Schema[Test$package.Item.A.type])
        }.asInstanceOf[Schema[Any]]
      (
        {
          val elem$1: Schema[Any] = 
            {
              given val t: Schema[Test$package.Item.B.type] = 
                (
                  {
                    val $scrutinee11: 
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.B.type; 
                            MirroredType = Test$package.Item.B.type
                          ; MirroredLabel = ("B" : String)
                        }
                      
                     = 
                      {
                        given val t: 
                          
                            scala.deriving.Mirror.Singleton{
                              MirroredMonoType = Test$package.Item.B.type; 
                                MirroredType = Test$package.Item.B.type
                              ; MirroredLabel = ("B" : String)
                            }
                          
                         = 
                          Item$.this.B.$asInstanceOf$[
                            
                              scala.deriving.Mirror.Singleton{
                                MirroredMonoType = Test$package.Item.B.type; 
                                  MirroredType = Test$package.Item.B.type
                                ; MirroredLabel = ("B" : String)
                              }
                            
                          ]
                        t:
                          
                            scala.deriving.Mirror.Singleton{
                              MirroredMonoType = Test$package.Item.B.type; 
                                MirroredType = Test$package.Item.B.type
                              ; MirroredLabel = ("B" : String)
                            }
                          
                      }
                    val m: 
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.B.type; 
                            MirroredType = Test$package.Item.B.type
                          ; MirroredLabel = ("B" : String)
                        }
                      
                     = $scrutinee11
                    val fields: scala.collection.immutable.List[Schema[Any]] = 
                      Nil:scala.collection.immutable.List[Schema[Any]]
                    {
                      final class $anon() extends Object(), 
                        Schema[Test$package.Item.B.type]
                       {}
                      new Object with Schema {...}():
                        Schema[Test$package.Item.B.type]
                    }
                  }:Schema[Test$package.Item.B.type]
                :Schema[Test$package.Item.B.type])
              (t:Schema[Test$package.Item.B.type])
            }.asInstanceOf[Schema[Any]]
          (Nil:scala.collection.immutable.List[Schema[Any]]).::[Schema[Any]](
            elem$1
          )
        }
      :scala.collection.immutable.List[Schema[Any]]).::[Schema[Any]](elem$1)
    }:scala.collection.immutable.List[Schema[Any]]
  {
    final class $anon() extends Object(), Schema[Item] {}
    new Object with Schema {...}():Schema[Item]
  }
} of class class dotty.tools.dotc.ast.Trees$Block # -1
exception while typing {
  val $scrutinee2: 
    
      (
        deriving.Mirror{
          MirroredType = Item; MirroredMonoType = Item; 
            MirroredElemTypes <: Tuple
        }
       & 
        scala.deriving.Mirror.Sum{
          MirroredMonoType = Item; MirroredType = Item; 
            MirroredLabel = ("Item" : String)
        }
      ){
        MirroredElemTypes = (Test$package.Item.A.type, Test$package.Item.B.type)
          ; 
        MirroredElemLabels = (("A" : String), ("B" : String))
      }
    
   = 
    {
      given val t: 
        
          (
            deriving.Mirror{
              MirroredType = Item; MirroredMonoType = Item; 
                MirroredElemTypes <: Tuple
            }
           & 
            scala.deriving.Mirror.Sum{
              MirroredMonoType = Item; MirroredType = Item; 
                MirroredLabel = ("Item" : String)
            }
          ){
            MirroredElemTypes = (Test$package.Item.A.type, 
              Test$package.Item.B.type
            ); MirroredElemLabels = (("A" : String), ("B" : String))
          }
        
       = 
        Item.$asInstanceOf$[
          
            (
              deriving.Mirror{
                MirroredType = Item; MirroredMonoType = Item; 
                  MirroredElemTypes <: Tuple
              }
             & 
              scala.deriving.Mirror.Sum{
                MirroredMonoType = Item; MirroredType = Item; 
                  MirroredLabel = ("Item" : String)
              }
            ){
              MirroredElemTypes = (Test$package.Item.A.type, 
                Test$package.Item.B.type
              ); MirroredElemLabels = (("A" : String), ("B" : String))
            }
          
        ]
      t:
        
          (
            deriving.Mirror{
              MirroredType = Item; MirroredMonoType = Item; 
                MirroredElemTypes <: Tuple
            }
           & 
            scala.deriving.Mirror.Sum{
              MirroredMonoType = Item; MirroredType = Item; 
                MirroredLabel = ("Item" : String)
            }
          ){
            MirroredElemTypes = (Test$package.Item.A.type, 
              Test$package.Item.B.type
            ); MirroredElemLabels = (("A" : String), ("B" : String))
          }
        
    }
  val m: 
    
      (
        deriving.Mirror{
          MirroredType = Item; MirroredMonoType = Item; 
            MirroredElemTypes <: Tuple
        }
       & 
        scala.deriving.Mirror.Sum{
          MirroredMonoType = Item; MirroredType = Item; 
            MirroredLabel = ("Item" : String)
        }
      ){
        MirroredElemTypes = (Test$package.Item.A.type, Test$package.Item.B.type)
          ; 
        MirroredElemLabels = (("A" : String), ("B" : String))
      }
    
   = $scrutinee2
  val subTypes: scala.collection.immutable.List[Schema[Any]] = 
    {
      val elem$1: Schema[Any] = 
        {
          given val t: Schema[Test$package.Item.A.type] = 
            (
              {
                val $scrutinee6: 
                  
                    scala.deriving.Mirror.Singleton{
                      MirroredMonoType = Test$package.Item.A.type; 
                        MirroredType = Test$package.Item.A.type
                      ; MirroredLabel = ("A" : String)
                    }
                  
                 = 
                  {
                    given val t: 
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.A.type; 
                            MirroredType = Test$package.Item.A.type
                          ; MirroredLabel = ("A" : String)
                        }
                      
                     = 
                      Item$.this.A.$asInstanceOf$[
                        
                          scala.deriving.Mirror.Singleton{
                            MirroredMonoType = Test$package.Item.A.type; 
                              MirroredType = Test$package.Item.A.type
                            ; MirroredLabel = ("A" : String)
                          }
                        
                      ]
                    t:
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.A.type; 
                            MirroredType = Test$package.Item.A.type
                          ; MirroredLabel = ("A" : String)
                        }
                      
                  }
                val m: 
                  
                    scala.deriving.Mirror.Singleton{
                      MirroredMonoType = Test$package.Item.A.type; 
                        MirroredType = Test$package.Item.A.type
                      ; MirroredLabel = ("A" : String)
                    }
                  
                 = $scrutinee6
                val fields: scala.collection.immutable.List[Schema[Any]] = 
                  Nil:scala.collection.immutable.List[Schema[Any]]
                {
                  final class $anon() extends Object(), 
                    Schema[Test$package.Item.A.type]
                   {}
                  new Object with Schema {...}():
                    Schema[Test$package.Item.A.type]
                }
              }:Schema[Test$package.Item.A.type]
            :Schema[Test$package.Item.A.type])
          (t:Schema[Test$package.Item.A.type])
        }.asInstanceOf[Schema[Any]]
      (
        {
          val elem$1: Schema[Any] = 
            {
              given val t: Schema[Test$package.Item.B.type] = 
                (
                  {
                    val $scrutinee11: 
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.B.type; 
                            MirroredType = Test$package.Item.B.type
                          ; MirroredLabel = ("B" : String)
                        }
                      
                     = 
                      {
                        given val t: 
                          
                            scala.deriving.Mirror.Singleton{
                              MirroredMonoType = Test$package.Item.B.type; 
                                MirroredType = Test$package.Item.B.type
                              ; MirroredLabel = ("B" : String)
                            }
                          
                         = 
                          Item$.this.B.$asInstanceOf$[
                            
                              scala.deriving.Mirror.Singleton{
                                MirroredMonoType = Test$package.Item.B.type; 
                                  MirroredType = Test$package.Item.B.type
                                ; MirroredLabel = ("B" : String)
                              }
                            
                          ]
                        t:
                          
                            scala.deriving.Mirror.Singleton{
                              MirroredMonoType = Test$package.Item.B.type; 
                                MirroredType = Test$package.Item.B.type
                              ; MirroredLabel = ("B" : String)
                            }
                          
                      }
                    val m: 
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.B.type; 
                            MirroredType = Test$package.Item.B.type
                          ; MirroredLabel = ("B" : String)
                        }
                      
                     = $scrutinee11
                    val fields: scala.collection.immutable.List[Schema[Any]] = 
                      Nil:scala.collection.immutable.List[Schema[Any]]
                    {
                      final class $anon() extends Object(), 
                        Schema[Test$package.Item.B.type]
                       {}
                      new Object with Schema {...}():
                        Schema[Test$package.Item.B.type]
                    }
                  }:Schema[Test$package.Item.B.type]
                :Schema[Test$package.Item.B.type])
              (t:Schema[Test$package.Item.B.type])
            }.asInstanceOf[Schema[Any]]
          (Nil:scala.collection.immutable.List[Schema[Any]]).::[Schema[Any]](
            elem$1
          )
        }
      :scala.collection.immutable.List[Schema[Any]]).::[Schema[Any]](elem$1)
    }:scala.collection.immutable.List[Schema[Any]]
  {
    final class $anon() extends Object(), Schema[Item] {}
    new Object with Schema {...}():Schema[Item]
  }
}:Schema[Item] of class class dotty.tools.dotc.ast.Trees$Typed # -1
exception while typing {
  val $scrutinee2: 
    
      (
        deriving.Mirror{
          MirroredType = Item; MirroredMonoType = Item; 
            MirroredElemTypes <: Tuple
        }
       & 
        scala.deriving.Mirror.Sum{
          MirroredMonoType = Item; MirroredType = Item; 
            MirroredLabel = ("Item" : String)
        }
      ){
        MirroredElemTypes = (Test$package.Item.A.type, Test$package.Item.B.type)
          ; 
        MirroredElemLabels = (("A" : String), ("B" : String))
      }
    
   = 
    {
      given val t: 
        
          (
            deriving.Mirror{
              MirroredType = Item; MirroredMonoType = Item; 
                MirroredElemTypes <: Tuple
            }
           & 
            scala.deriving.Mirror.Sum{
              MirroredMonoType = Item; MirroredType = Item; 
                MirroredLabel = ("Item" : String)
            }
          ){
            MirroredElemTypes = (Test$package.Item.A.type, 
              Test$package.Item.B.type
            ); MirroredElemLabels = (("A" : String), ("B" : String))
          }
        
       = 
        Item.$asInstanceOf$[
          
            (
              deriving.Mirror{
                MirroredType = Item; MirroredMonoType = Item; 
                  MirroredElemTypes <: Tuple
              }
             & 
              scala.deriving.Mirror.Sum{
                MirroredMonoType = Item; MirroredType = Item; 
                  MirroredLabel = ("Item" : String)
              }
            ){
              MirroredElemTypes = (Test$package.Item.A.type, 
                Test$package.Item.B.type
              ); MirroredElemLabels = (("A" : String), ("B" : String))
            }
          
        ]
      t:
        
          (
            deriving.Mirror{
              MirroredType = Item; MirroredMonoType = Item; 
                MirroredElemTypes <: Tuple
            }
           & 
            scala.deriving.Mirror.Sum{
              MirroredMonoType = Item; MirroredType = Item; 
                MirroredLabel = ("Item" : String)
            }
          ){
            MirroredElemTypes = (Test$package.Item.A.type, 
              Test$package.Item.B.type
            ); MirroredElemLabels = (("A" : String), ("B" : String))
          }
        
    }
  val m: 
    
      (
        deriving.Mirror{
          MirroredType = Item; MirroredMonoType = Item; 
            MirroredElemTypes <: Tuple
        }
       & 
        scala.deriving.Mirror.Sum{
          MirroredMonoType = Item; MirroredType = Item; 
            MirroredLabel = ("Item" : String)
        }
      ){
        MirroredElemTypes = (Test$package.Item.A.type, Test$package.Item.B.type)
          ; 
        MirroredElemLabels = (("A" : String), ("B" : String))
      }
    
   = $scrutinee2
  val subTypes: scala.collection.immutable.List[Schema[Any]] = 
    {
      val elem$1: Schema[Any] = 
        {
          given val t: Schema[Test$package.Item.A.type] = 
            (
              {
                val $scrutinee6: 
                  
                    scala.deriving.Mirror.Singleton{
                      MirroredMonoType = Test$package.Item.A.type; 
                        MirroredType = Test$package.Item.A.type
                      ; MirroredLabel = ("A" : String)
                    }
                  
                 = 
                  {
                    given val t: 
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.A.type; 
                            MirroredType = Test$package.Item.A.type
                          ; MirroredLabel = ("A" : String)
                        }
                      
                     = 
                      Item$.this.A.$asInstanceOf$[
                        
                          scala.deriving.Mirror.Singleton{
                            MirroredMonoType = Test$package.Item.A.type; 
                              MirroredType = Test$package.Item.A.type
                            ; MirroredLabel = ("A" : String)
                          }
                        
                      ]
                    t:
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.A.type; 
                            MirroredType = Test$package.Item.A.type
                          ; MirroredLabel = ("A" : String)
                        }
                      
                  }
                val m: 
                  
                    scala.deriving.Mirror.Singleton{
                      MirroredMonoType = Test$package.Item.A.type; 
                        MirroredType = Test$package.Item.A.type
                      ; MirroredLabel = ("A" : String)
                    }
                  
                 = $scrutinee6
                val fields: scala.collection.immutable.List[Schema[Any]] = 
                  Nil:scala.collection.immutable.List[Schema[Any]]
                {
                  final class $anon() extends Object(), 
                    Schema[Test$package.Item.A.type]
                   {}
                  new Object with Schema {...}():
                    Schema[Test$package.Item.A.type]
                }
              }:Schema[Test$package.Item.A.type]
            :Schema[Test$package.Item.A.type])
          (t:Schema[Test$package.Item.A.type])
        }.asInstanceOf[Schema[Any]]
      (
        {
          val elem$1: Schema[Any] = 
            {
              given val t: Schema[Test$package.Item.B.type] = 
                (
                  {
                    val $scrutinee11: 
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.B.type; 
                            MirroredType = Test$package.Item.B.type
                          ; MirroredLabel = ("B" : String)
                        }
                      
                     = 
                      {
                        given val t: 
                          
                            scala.deriving.Mirror.Singleton{
                              MirroredMonoType = Test$package.Item.B.type; 
                                MirroredType = Test$package.Item.B.type
                              ; MirroredLabel = ("B" : String)
                            }
                          
                         = 
                          Item$.this.B.$asInstanceOf$[
                            
                              scala.deriving.Mirror.Singleton{
                                MirroredMonoType = Test$package.Item.B.type; 
                                  MirroredType = Test$package.Item.B.type
                                ; MirroredLabel = ("B" : String)
                              }
                            
                          ]
                        t:
                          
                            scala.deriving.Mirror.Singleton{
                              MirroredMonoType = Test$package.Item.B.type; 
                                MirroredType = Test$package.Item.B.type
                              ; MirroredLabel = ("B" : String)
                            }
                          
                      }
                    val m: 
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.B.type; 
                            MirroredType = Test$package.Item.B.type
                          ; MirroredLabel = ("B" : String)
                        }
                      
                     = $scrutinee11
                    val fields: scala.collection.immutable.List[Schema[Any]] = 
                      Nil:scala.collection.immutable.List[Schema[Any]]
                    {
                      final class $anon() extends Object(), 
                        Schema[Test$package.Item.B.type]
                       {}
                      new Object with Schema {...}():
                        Schema[Test$package.Item.B.type]
                    }
                  }:Schema[Test$package.Item.B.type]
                :Schema[Test$package.Item.B.type])
              (t:Schema[Test$package.Item.B.type])
            }.asInstanceOf[Schema[Any]]
          (Nil:scala.collection.immutable.List[Schema[Any]]).::[Schema[Any]](
            elem$1
          )
        }
      :scala.collection.immutable.List[Schema[Any]]).::[Schema[Any]](elem$1)
    }:scala.collection.immutable.List[Schema[Any]]
  {
    final class $anon() extends Object(), Schema[Item] {}
    new Object with Schema {...}():Schema[Item]
  }
}:Schema[Item] of class class dotty.tools.dotc.ast.Trees$Inlined # -1
exception while typing {
  val $scrutinee2: 
    
      (
        deriving.Mirror{
          MirroredType = Item; MirroredMonoType = Item; 
            MirroredElemTypes <: Tuple
        }
       & 
        scala.deriving.Mirror.Sum{
          MirroredMonoType = Item; MirroredType = Item; 
            MirroredLabel = ("Item" : String)
        }
      ){
        MirroredElemTypes = (Test$package.Item.A.type, Test$package.Item.B.type)
          ; 
        MirroredElemLabels = (("A" : String), ("B" : String))
      }
    
   = 
    {
      given val t: 
        
          (
            deriving.Mirror{
              MirroredType = Item; MirroredMonoType = Item; 
                MirroredElemTypes <: Tuple
            }
           & 
            scala.deriving.Mirror.Sum{
              MirroredMonoType = Item; MirroredType = Item; 
                MirroredLabel = ("Item" : String)
            }
          ){
            MirroredElemTypes = (Test$package.Item.A.type, 
              Test$package.Item.B.type
            ); MirroredElemLabels = (("A" : String), ("B" : String))
          }
        
       = 
        Item.$asInstanceOf$[
          
            (
              deriving.Mirror{
                MirroredType = Item; MirroredMonoType = Item; 
                  MirroredElemTypes <: Tuple
              }
             & 
              scala.deriving.Mirror.Sum{
                MirroredMonoType = Item; MirroredType = Item; 
                  MirroredLabel = ("Item" : String)
              }
            ){
              MirroredElemTypes = (Test$package.Item.A.type, 
                Test$package.Item.B.type
              ); MirroredElemLabels = (("A" : String), ("B" : String))
            }
          
        ]
      t:
        
          (
            deriving.Mirror{
              MirroredType = Item; MirroredMonoType = Item; 
                MirroredElemTypes <: Tuple
            }
           & 
            scala.deriving.Mirror.Sum{
              MirroredMonoType = Item; MirroredType = Item; 
                MirroredLabel = ("Item" : String)
            }
          ){
            MirroredElemTypes = (Test$package.Item.A.type, 
              Test$package.Item.B.type
            ); MirroredElemLabels = (("A" : String), ("B" : String))
          }
        
    }
  val m: 
    
      (
        deriving.Mirror{
          MirroredType = Item; MirroredMonoType = Item; 
            MirroredElemTypes <: Tuple
        }
       & 
        scala.deriving.Mirror.Sum{
          MirroredMonoType = Item; MirroredType = Item; 
            MirroredLabel = ("Item" : String)
        }
      ){
        MirroredElemTypes = (Test$package.Item.A.type, Test$package.Item.B.type)
          ; 
        MirroredElemLabels = (("A" : String), ("B" : String))
      }
    
   = $scrutinee2
  val subTypes: scala.collection.immutable.List[Schema[Any]] = 
    {
      val elem$1: Schema[Any] = 
        {
          given val t: Schema[Test$package.Item.A.type] = 
            (
              {
                val $scrutinee6: 
                  
                    scala.deriving.Mirror.Singleton{
                      MirroredMonoType = Test$package.Item.A.type; 
                        MirroredType = Test$package.Item.A.type
                      ; MirroredLabel = ("A" : String)
                    }
                  
                 = 
                  {
                    given val t: 
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.A.type; 
                            MirroredType = Test$package.Item.A.type
                          ; MirroredLabel = ("A" : String)
                        }
                      
                     = 
                      Item$.this.A.$asInstanceOf$[
                        
                          scala.deriving.Mirror.Singleton{
                            MirroredMonoType = Test$package.Item.A.type; 
                              MirroredType = Test$package.Item.A.type
                            ; MirroredLabel = ("A" : String)
                          }
                        
                      ]
                    t:
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.A.type; 
                            MirroredType = Test$package.Item.A.type
                          ; MirroredLabel = ("A" : String)
                        }
                      
                  }
                val m: 
                  
                    scala.deriving.Mirror.Singleton{
                      MirroredMonoType = Test$package.Item.A.type; 
                        MirroredType = Test$package.Item.A.type
                      ; MirroredLabel = ("A" : String)
                    }
                  
                 = $scrutinee6
                val fields: scala.collection.immutable.List[Schema[Any]] = 
                  Nil:scala.collection.immutable.List[Schema[Any]]
                {
                  final class $anon() extends Object(), 
                    Schema[Test$package.Item.A.type]
                   {}
                  new Object with Schema {...}():
                    Schema[Test$package.Item.A.type]
                }
              }:Schema[Test$package.Item.A.type]
            :Schema[Test$package.Item.A.type])
          (t:Schema[Test$package.Item.A.type])
        }.asInstanceOf[Schema[Any]]
      (
        {
          val elem$1: Schema[Any] = 
            {
              given val t: Schema[Test$package.Item.B.type] = 
                (
                  {
                    val $scrutinee11: 
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.B.type; 
                            MirroredType = Test$package.Item.B.type
                          ; MirroredLabel = ("B" : String)
                        }
                      
                     = 
                      {
                        given val t: 
                          
                            scala.deriving.Mirror.Singleton{
                              MirroredMonoType = Test$package.Item.B.type; 
                                MirroredType = Test$package.Item.B.type
                              ; MirroredLabel = ("B" : String)
                            }
                          
                         = 
                          Item$.this.B.$asInstanceOf$[
                            
                              scala.deriving.Mirror.Singleton{
                                MirroredMonoType = Test$package.Item.B.type; 
                                  MirroredType = Test$package.Item.B.type
                                ; MirroredLabel = ("B" : String)
                              }
                            
                          ]
                        t:
                          
                            scala.deriving.Mirror.Singleton{
                              MirroredMonoType = Test$package.Item.B.type; 
                                MirroredType = Test$package.Item.B.type
                              ; MirroredLabel = ("B" : String)
                            }
                          
                      }
                    val m: 
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.B.type; 
                            MirroredType = Test$package.Item.B.type
                          ; MirroredLabel = ("B" : String)
                        }
                      
                     = $scrutinee11
                    val fields: scala.collection.immutable.List[Schema[Any]] = 
                      Nil:scala.collection.immutable.List[Schema[Any]]
                    {
                      final class $anon() extends Object(), 
                        Schema[Test$package.Item.B.type]
                       {}
                      new Object with Schema {...}():
                        Schema[Test$package.Item.B.type]
                    }
                  }:Schema[Test$package.Item.B.type]
                :Schema[Test$package.Item.B.type])
              (t:Schema[Test$package.Item.B.type])
            }.asInstanceOf[Schema[Any]]
          (Nil:scala.collection.immutable.List[Schema[Any]]).::[Schema[Any]](
            elem$1
          )
        }
      :scala.collection.immutable.List[Schema[Any]]).::[Schema[Any]](elem$1)
    }:scala.collection.immutable.List[Schema[Any]]
  {
    final class $anon() extends Object(), Schema[Item] {}
    new Object with Schema {...}():Schema[Item]
  }
}:Schema[Item]:Schema[Item] of class class dotty.tools.dotc.ast.Trees$Typed # -1
exception while typing {
  val $scrutinee2: 
    
      (
        deriving.Mirror{
          MirroredType = Item; MirroredMonoType = Item; 
            MirroredElemTypes <: Tuple
        }
       & 
        scala.deriving.Mirror.Sum{
          MirroredMonoType = Item; MirroredType = Item; 
            MirroredLabel = ("Item" : String)
        }
      ){
        MirroredElemTypes = (Test$package.Item.A.type, Test$package.Item.B.type)
          ; 
        MirroredElemLabels = (("A" : String), ("B" : String))
      }
    
   = 
    {
      given val t: 
        
          (
            deriving.Mirror{
              MirroredType = Item; MirroredMonoType = Item; 
                MirroredElemTypes <: Tuple
            }
           & 
            scala.deriving.Mirror.Sum{
              MirroredMonoType = Item; MirroredType = Item; 
                MirroredLabel = ("Item" : String)
            }
          ){
            MirroredElemTypes = (Test$package.Item.A.type, 
              Test$package.Item.B.type
            ); MirroredElemLabels = (("A" : String), ("B" : String))
          }
        
       = 
        Item.$asInstanceOf$[
          
            (
              deriving.Mirror{
                MirroredType = Item; MirroredMonoType = Item; 
                  MirroredElemTypes <: Tuple
              }
             & 
              scala.deriving.Mirror.Sum{
                MirroredMonoType = Item; MirroredType = Item; 
                  MirroredLabel = ("Item" : String)
              }
            ){
              MirroredElemTypes = (Test$package.Item.A.type, 
                Test$package.Item.B.type
              ); MirroredElemLabels = (("A" : String), ("B" : String))
            }
          
        ]
      t:
        
          (
            deriving.Mirror{
              MirroredType = Item; MirroredMonoType = Item; 
                MirroredElemTypes <: Tuple
            }
           & 
            scala.deriving.Mirror.Sum{
              MirroredMonoType = Item; MirroredType = Item; 
                MirroredLabel = ("Item" : String)
            }
          ){
            MirroredElemTypes = (Test$package.Item.A.type, 
              Test$package.Item.B.type
            ); MirroredElemLabels = (("A" : String), ("B" : String))
          }
        
    }
  val m: 
    
      (
        deriving.Mirror{
          MirroredType = Item; MirroredMonoType = Item; 
            MirroredElemTypes <: Tuple
        }
       & 
        scala.deriving.Mirror.Sum{
          MirroredMonoType = Item; MirroredType = Item; 
            MirroredLabel = ("Item" : String)
        }
      ){
        MirroredElemTypes = (Test$package.Item.A.type, Test$package.Item.B.type)
          ; 
        MirroredElemLabels = (("A" : String), ("B" : String))
      }
    
   = $scrutinee2
  val subTypes: scala.collection.immutable.List[Schema[Any]] = 
    {
      val elem$1: Schema[Any] = 
        {
          given val t: Schema[Test$package.Item.A.type] = 
            (
              {
                val $scrutinee6: 
                  
                    scala.deriving.Mirror.Singleton{
                      MirroredMonoType = Test$package.Item.A.type; 
                        MirroredType = Test$package.Item.A.type
                      ; MirroredLabel = ("A" : String)
                    }
                  
                 = 
                  {
                    given val t: 
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.A.type; 
                            MirroredType = Test$package.Item.A.type
                          ; MirroredLabel = ("A" : String)
                        }
                      
                     = 
                      Item$.this.A.$asInstanceOf$[
                        
                          scala.deriving.Mirror.Singleton{
                            MirroredMonoType = Test$package.Item.A.type; 
                              MirroredType = Test$package.Item.A.type
                            ; MirroredLabel = ("A" : String)
                          }
                        
                      ]
                    t:
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.A.type; 
                            MirroredType = Test$package.Item.A.type
                          ; MirroredLabel = ("A" : String)
                        }
                      
                  }
                val m: 
                  
                    scala.deriving.Mirror.Singleton{
                      MirroredMonoType = Test$package.Item.A.type; 
                        MirroredType = Test$package.Item.A.type
                      ; MirroredLabel = ("A" : String)
                    }
                  
                 = $scrutinee6
                val fields: scala.collection.immutable.List[Schema[Any]] = 
                  Nil:scala.collection.immutable.List[Schema[Any]]
                {
                  final class $anon() extends Object(), 
                    Schema[Test$package.Item.A.type]
                   {}
                  new Object with Schema {...}():
                    Schema[Test$package.Item.A.type]
                }
              }:Schema[Test$package.Item.A.type]
            :Schema[Test$package.Item.A.type])
          (t:Schema[Test$package.Item.A.type])
        }.asInstanceOf[Schema[Any]]
      (
        {
          val elem$1: Schema[Any] = 
            {
              given val t: Schema[Test$package.Item.B.type] = 
                (
                  {
                    val $scrutinee11: 
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.B.type; 
                            MirroredType = Test$package.Item.B.type
                          ; MirroredLabel = ("B" : String)
                        }
                      
                     = 
                      {
                        given val t: 
                          
                            scala.deriving.Mirror.Singleton{
                              MirroredMonoType = Test$package.Item.B.type; 
                                MirroredType = Test$package.Item.B.type
                              ; MirroredLabel = ("B" : String)
                            }
                          
                         = 
                          Item$.this.B.$asInstanceOf$[
                            
                              scala.deriving.Mirror.Singleton{
                                MirroredMonoType = Test$package.Item.B.type; 
                                  MirroredType = Test$package.Item.B.type
                                ; MirroredLabel = ("B" : String)
                              }
                            
                          ]
                        t:
                          
                            scala.deriving.Mirror.Singleton{
                              MirroredMonoType = Test$package.Item.B.type; 
                                MirroredType = Test$package.Item.B.type
                              ; MirroredLabel = ("B" : String)
                            }
                          
                      }
                    val m: 
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.B.type; 
                            MirroredType = Test$package.Item.B.type
                          ; MirroredLabel = ("B" : String)
                        }
                      
                     = $scrutinee11
                    val fields: scala.collection.immutable.List[Schema[Any]] = 
                      Nil:scala.collection.immutable.List[Schema[Any]]
                    {
                      final class $anon() extends Object(), 
                        Schema[Test$package.Item.B.type]
                       {}
                      new Object with Schema {...}():
                        Schema[Test$package.Item.B.type]
                    }
                  }:Schema[Test$package.Item.B.type]
                :Schema[Test$package.Item.B.type])
              (t:Schema[Test$package.Item.B.type])
            }.asInstanceOf[Schema[Any]]
          (Nil:scala.collection.immutable.List[Schema[Any]]).::[Schema[Any]](
            elem$1
          )
        }
      :scala.collection.immutable.List[Schema[Any]]).::[Schema[Any]](elem$1)
    }:scala.collection.immutable.List[Schema[Any]]
  {
    final class $anon() extends Object(), Schema[Item] {}
    new Object with Schema {...}():Schema[Item]
  }
}:Schema[Item]:Schema[Item] of class class dotty.tools.dotc.ast.Trees$Inlined # -1
exception while typing {
  val $scrutinee2: 
    
      (
        deriving.Mirror{
          MirroredType = Item; MirroredMonoType = Item; 
            MirroredElemTypes <: Tuple
        }
       & 
        scala.deriving.Mirror.Sum{
          MirroredMonoType = Item; MirroredType = Item; 
            MirroredLabel = ("Item" : String)
        }
      ){
        MirroredElemTypes = (Test$package.Item.A.type, Test$package.Item.B.type)
          ; 
        MirroredElemLabels = (("A" : String), ("B" : String))
      }
    
   = 
    {
      given val t: 
        
          (
            deriving.Mirror{
              MirroredType = Item; MirroredMonoType = Item; 
                MirroredElemTypes <: Tuple
            }
           & 
            scala.deriving.Mirror.Sum{
              MirroredMonoType = Item; MirroredType = Item; 
                MirroredLabel = ("Item" : String)
            }
          ){
            MirroredElemTypes = (Test$package.Item.A.type, 
              Test$package.Item.B.type
            ); MirroredElemLabels = (("A" : String), ("B" : String))
          }
        
       = 
        Item.$asInstanceOf$[
          
            (
              deriving.Mirror{
                MirroredType = Item; MirroredMonoType = Item; 
                  MirroredElemTypes <: Tuple
              }
             & 
              scala.deriving.Mirror.Sum{
                MirroredMonoType = Item; MirroredType = Item; 
                  MirroredLabel = ("Item" : String)
              }
            ){
              MirroredElemTypes = (Test$package.Item.A.type, 
                Test$package.Item.B.type
              ); MirroredElemLabels = (("A" : String), ("B" : String))
            }
          
        ]
      t:
        
          (
            deriving.Mirror{
              MirroredType = Item; MirroredMonoType = Item; 
                MirroredElemTypes <: Tuple
            }
           & 
            scala.deriving.Mirror.Sum{
              MirroredMonoType = Item; MirroredType = Item; 
                MirroredLabel = ("Item" : String)
            }
          ){
            MirroredElemTypes = (Test$package.Item.A.type, 
              Test$package.Item.B.type
            ); MirroredElemLabels = (("A" : String), ("B" : String))
          }
        
    }
  val m: 
    
      (
        deriving.Mirror{
          MirroredType = Item; MirroredMonoType = Item; 
            MirroredElemTypes <: Tuple
        }
       & 
        scala.deriving.Mirror.Sum{
          MirroredMonoType = Item; MirroredType = Item; 
            MirroredLabel = ("Item" : String)
        }
      ){
        MirroredElemTypes = (Test$package.Item.A.type, Test$package.Item.B.type)
          ; 
        MirroredElemLabels = (("A" : String), ("B" : String))
      }
    
   = $scrutinee2
  val subTypes: scala.collection.immutable.List[Schema[Any]] = 
    {
      val elem$1: Schema[Any] = 
        {
          given val t: Schema[Test$package.Item.A.type] = 
            (
              {
                val $scrutinee6: 
                  
                    scala.deriving.Mirror.Singleton{
                      MirroredMonoType = Test$package.Item.A.type; 
                        MirroredType = Test$package.Item.A.type
                      ; MirroredLabel = ("A" : String)
                    }
                  
                 = 
                  {
                    given val t: 
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.A.type; 
                            MirroredType = Test$package.Item.A.type
                          ; MirroredLabel = ("A" : String)
                        }
                      
                     = 
                      Item$.this.A.$asInstanceOf$[
                        
                          scala.deriving.Mirror.Singleton{
                            MirroredMonoType = Test$package.Item.A.type; 
                              MirroredType = Test$package.Item.A.type
                            ; MirroredLabel = ("A" : String)
                          }
                        
                      ]
                    t:
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.A.type; 
                            MirroredType = Test$package.Item.A.type
                          ; MirroredLabel = ("A" : String)
                        }
                      
                  }
                val m: 
                  
                    scala.deriving.Mirror.Singleton{
                      MirroredMonoType = Test$package.Item.A.type; 
                        MirroredType = Test$package.Item.A.type
                      ; MirroredLabel = ("A" : String)
                    }
                  
                 = $scrutinee6
                val fields: scala.collection.immutable.List[Schema[Any]] = 
                  Nil:scala.collection.immutable.List[Schema[Any]]
                {
                  final class $anon() extends Object(), 
                    Schema[Test$package.Item.A.type]
                   {}
                  new Object with Schema {...}():
                    Schema[Test$package.Item.A.type]
                }
              }:Schema[Test$package.Item.A.type]
            :Schema[Test$package.Item.A.type])
          (t:Schema[Test$package.Item.A.type])
        }.asInstanceOf[Schema[Any]]
      (
        {
          val elem$1: Schema[Any] = 
            {
              given val t: Schema[Test$package.Item.B.type] = 
                (
                  {
                    val $scrutinee11: 
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.B.type; 
                            MirroredType = Test$package.Item.B.type
                          ; MirroredLabel = ("B" : String)
                        }
                      
                     = 
                      {
                        given val t: 
                          
                            scala.deriving.Mirror.Singleton{
                              MirroredMonoType = Test$package.Item.B.type; 
                                MirroredType = Test$package.Item.B.type
                              ; MirroredLabel = ("B" : String)
                            }
                          
                         = 
                          Item$.this.B.$asInstanceOf$[
                            
                              scala.deriving.Mirror.Singleton{
                                MirroredMonoType = Test$package.Item.B.type; 
                                  MirroredType = Test$package.Item.B.type
                                ; MirroredLabel = ("B" : String)
                              }
                            
                          ]
                        t:
                          
                            scala.deriving.Mirror.Singleton{
                              MirroredMonoType = Test$package.Item.B.type; 
                                MirroredType = Test$package.Item.B.type
                              ; MirroredLabel = ("B" : String)
                            }
                          
                      }
                    val m: 
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.B.type; 
                            MirroredType = Test$package.Item.B.type
                          ; MirroredLabel = ("B" : String)
                        }
                      
                     = $scrutinee11
                    val fields: scala.collection.immutable.List[Schema[Any]] = 
                      Nil:scala.collection.immutable.List[Schema[Any]]
                    {
                      final class $anon() extends Object(), 
                        Schema[Test$package.Item.B.type]
                       {}
                      new Object with Schema {...}():
                        Schema[Test$package.Item.B.type]
                    }
                  }:Schema[Test$package.Item.B.type]
                :Schema[Test$package.Item.B.type])
              (t:Schema[Test$package.Item.B.type])
            }.asInstanceOf[Schema[Any]]
          (Nil:scala.collection.immutable.List[Schema[Any]]).::[Schema[Any]](
            elem$1
          )
        }
      :scala.collection.immutable.List[Schema[Any]]).::[Schema[Any]](elem$1)
    }:scala.collection.immutable.List[Schema[Any]]
  {
    final class $anon() extends Object(), Schema[Item] {}
    new Object with Schema {...}():Schema[Item]
  }
}:Schema[Item]:Schema[Item] of class class dotty.tools.dotc.ast.Trees$Inlined # -1
exception while typing {
  val $scrutinee2: 
    
      (
        deriving.Mirror{
          MirroredType = Item; MirroredMonoType = Item; 
            MirroredElemTypes <: Tuple
        }
       & 
        scala.deriving.Mirror.Sum{
          MirroredMonoType = Item; MirroredType = Item; 
            MirroredLabel = ("Item" : String)
        }
      ){
        MirroredElemTypes = (Test$package.Item.A.type, Test$package.Item.B.type)
          ; 
        MirroredElemLabels = (("A" : String), ("B" : String))
      }
    
   = 
    {
      given val t: 
        
          (
            deriving.Mirror{
              MirroredType = Item; MirroredMonoType = Item; 
                MirroredElemTypes <: Tuple
            }
           & 
            scala.deriving.Mirror.Sum{
              MirroredMonoType = Item; MirroredType = Item; 
                MirroredLabel = ("Item" : String)
            }
          ){
            MirroredElemTypes = (Test$package.Item.A.type, 
              Test$package.Item.B.type
            ); MirroredElemLabels = (("A" : String), ("B" : String))
          }
        
       = 
        Item.$asInstanceOf$[
          
            (
              deriving.Mirror{
                MirroredType = Item; MirroredMonoType = Item; 
                  MirroredElemTypes <: Tuple
              }
             & 
              scala.deriving.Mirror.Sum{
                MirroredMonoType = Item; MirroredType = Item; 
                  MirroredLabel = ("Item" : String)
              }
            ){
              MirroredElemTypes = (Test$package.Item.A.type, 
                Test$package.Item.B.type
              ); MirroredElemLabels = (("A" : String), ("B" : String))
            }
          
        ]
      t:
        
          (
            deriving.Mirror{
              MirroredType = Item; MirroredMonoType = Item; 
                MirroredElemTypes <: Tuple
            }
           & 
            scala.deriving.Mirror.Sum{
              MirroredMonoType = Item; MirroredType = Item; 
                MirroredLabel = ("Item" : String)
            }
          ){
            MirroredElemTypes = (Test$package.Item.A.type, 
              Test$package.Item.B.type
            ); MirroredElemLabels = (("A" : String), ("B" : String))
          }
        
    }
  val m: 
    
      (
        deriving.Mirror{
          MirroredType = Item; MirroredMonoType = Item; 
            MirroredElemTypes <: Tuple
        }
       & 
        scala.deriving.Mirror.Sum{
          MirroredMonoType = Item; MirroredType = Item; 
            MirroredLabel = ("Item" : String)
        }
      ){
        MirroredElemTypes = (Test$package.Item.A.type, Test$package.Item.B.type)
          ; 
        MirroredElemLabels = (("A" : String), ("B" : String))
      }
    
   = $scrutinee2
  val subTypes: scala.collection.immutable.List[Schema[Any]] = 
    {
      val elem$1: Schema[Any] = 
        {
          given val t: Schema[Test$package.Item.A.type] = 
            (
              {
                val $scrutinee6: 
                  
                    scala.deriving.Mirror.Singleton{
                      MirroredMonoType = Test$package.Item.A.type; 
                        MirroredType = Test$package.Item.A.type
                      ; MirroredLabel = ("A" : String)
                    }
                  
                 = 
                  {
                    given val t: 
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.A.type; 
                            MirroredType = Test$package.Item.A.type
                          ; MirroredLabel = ("A" : String)
                        }
                      
                     = 
                      Item$.this.A.$asInstanceOf$[
                        
                          scala.deriving.Mirror.Singleton{
                            MirroredMonoType = Test$package.Item.A.type; 
                              MirroredType = Test$package.Item.A.type
                            ; MirroredLabel = ("A" : String)
                          }
                        
                      ]
                    t:
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.A.type; 
                            MirroredType = Test$package.Item.A.type
                          ; MirroredLabel = ("A" : String)
                        }
                      
                  }
                val m: 
                  
                    scala.deriving.Mirror.Singleton{
                      MirroredMonoType = Test$package.Item.A.type; 
                        MirroredType = Test$package.Item.A.type
                      ; MirroredLabel = ("A" : String)
                    }
                  
                 = $scrutinee6
                val fields: scala.collection.immutable.List[Schema[Any]] = 
                  Nil:scala.collection.immutable.List[Schema[Any]]
                {
                  final class $anon() extends Object(), 
                    Schema[Test$package.Item.A.type]
                   {}
                  new Object with Schema {...}():
                    Schema[Test$package.Item.A.type]
                }
              }:Schema[Test$package.Item.A.type]
            :Schema[Test$package.Item.A.type])
          (t:Schema[Test$package.Item.A.type])
        }.asInstanceOf[Schema[Any]]
      (
        {
          val elem$1: Schema[Any] = 
            {
              given val t: Schema[Test$package.Item.B.type] = 
                (
                  {
                    val $scrutinee11: 
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.B.type; 
                            MirroredType = Test$package.Item.B.type
                          ; MirroredLabel = ("B" : String)
                        }
                      
                     = 
                      {
                        given val t: 
                          
                            scala.deriving.Mirror.Singleton{
                              MirroredMonoType = Test$package.Item.B.type; 
                                MirroredType = Test$package.Item.B.type
                              ; MirroredLabel = ("B" : String)
                            }
                          
                         = 
                          Item$.this.B.$asInstanceOf$[
                            
                              scala.deriving.Mirror.Singleton{
                                MirroredMonoType = Test$package.Item.B.type; 
                                  MirroredType = Test$package.Item.B.type
                                ; MirroredLabel = ("B" : String)
                              }
                            
                          ]
                        t:
                          
                            scala.deriving.Mirror.Singleton{
                              MirroredMonoType = Test$package.Item.B.type; 
                                MirroredType = Test$package.Item.B.type
                              ; MirroredLabel = ("B" : String)
                            }
                          
                      }
                    val m: 
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.B.type; 
                            MirroredType = Test$package.Item.B.type
                          ; MirroredLabel = ("B" : String)
                        }
                      
                     = $scrutinee11
                    val fields: scala.collection.immutable.List[Schema[Any]] = 
                      Nil:scala.collection.immutable.List[Schema[Any]]
                    {
                      final class $anon() extends Object(), 
                        Schema[Test$package.Item.B.type]
                       {}
                      new Object with Schema {...}():
                        Schema[Test$package.Item.B.type]
                    }
                  }:Schema[Test$package.Item.B.type]
                :Schema[Test$package.Item.B.type])
              (t:Schema[Test$package.Item.B.type])
            }.asInstanceOf[Schema[Any]]
          (Nil:scala.collection.immutable.List[Schema[Any]]).::[Schema[Any]](
            elem$1
          )
        }
      :scala.collection.immutable.List[Schema[Any]]).::[Schema[Any]](elem$1)
    }:scala.collection.immutable.List[Schema[Any]]
  {
    final class $anon() extends Object(), Schema[Item] {}
    new Object with Schema {...}():Schema[Item]
  }
}:Schema[Item]:Schema[Item] of class class dotty.tools.dotc.ast.Trees$Inlined # -1
exception while typing {
  {
    val $scrutinee2: 
      
        (
          deriving.Mirror{
            MirroredType = Item; MirroredMonoType = Item; 
              MirroredElemTypes <: Tuple
          }
         & 
          scala.deriving.Mirror.Sum{
            MirroredMonoType = Item; MirroredType = Item; 
              MirroredLabel = ("Item" : String)
          }
        ){
          MirroredElemTypes = (Test$package.Item.A.type, 
            Test$package.Item.B.type
          ); MirroredElemLabels = (("A" : String), ("B" : String))
        }
      
     = 
      {
        given val t: 
          
            (
              deriving.Mirror{
                MirroredType = Item; MirroredMonoType = Item; 
                  MirroredElemTypes <: Tuple
              }
             & 
              scala.deriving.Mirror.Sum{
                MirroredMonoType = Item; MirroredType = Item; 
                  MirroredLabel = ("Item" : String)
              }
            ){
              MirroredElemTypes = (Test$package.Item.A.type, 
                Test$package.Item.B.type
              ); MirroredElemLabels = (("A" : String), ("B" : String))
            }
          
         = 
          Item.$asInstanceOf$[
            
              (
                deriving.Mirror{
                  MirroredType = Item; MirroredMonoType = Item; 
                    MirroredElemTypes <: Tuple
                }
               & 
                scala.deriving.Mirror.Sum{
                  MirroredMonoType = Item; MirroredType = Item; 
                    MirroredLabel = ("Item" : String)
                }
              ){
                MirroredElemTypes = (Test$package.Item.A.type, 
                  Test$package.Item.B.type
                ); MirroredElemLabels = (("A" : String), ("B" : String))
              }
            
          ]
        t:
          
            (
              deriving.Mirror{
                MirroredType = Item; MirroredMonoType = Item; 
                  MirroredElemTypes <: Tuple
              }
             & 
              scala.deriving.Mirror.Sum{
                MirroredMonoType = Item; MirroredType = Item; 
                  MirroredLabel = ("Item" : String)
              }
            ){
              MirroredElemTypes = (Test$package.Item.A.type, 
                Test$package.Item.B.type
              ); MirroredElemLabels = (("A" : String), ("B" : String))
            }
          
      }
    val m: 
      
        (
          deriving.Mirror{
            MirroredType = Item; MirroredMonoType = Item; 
              MirroredElemTypes <: Tuple
          }
         & 
          scala.deriving.Mirror.Sum{
            MirroredMonoType = Item; MirroredType = Item; 
              MirroredLabel = ("Item" : String)
          }
        ){
          MirroredElemTypes = (Test$package.Item.A.type, 
            Test$package.Item.B.type
          ); MirroredElemLabels = (("A" : String), ("B" : String))
        }
      
     = $scrutinee2
    val subTypes: scala.collection.immutable.List[Schema[Any]] = 
      {
        val elem$1: Schema[Any] = 
          {
            given val t: Schema[Test$package.Item.A.type] = 
              (
                {
                  val $scrutinee6: 
                    
                      scala.deriving.Mirror.Singleton{
                        MirroredMonoType = Test$package.Item.A.type; 
                          MirroredType = Test$package.Item.A.type
                        ; MirroredLabel = ("A" : String)
                      }
                    
                   = 
                    {
                      given val t: 
                        
                          scala.deriving.Mirror.Singleton{
                            MirroredMonoType = Test$package.Item.A.type; 
                              MirroredType = Test$package.Item.A.type
                            ; MirroredLabel = ("A" : String)
                          }
                        
                       = 
                        Item$.this.A.$asInstanceOf$[
                          
                            scala.deriving.Mirror.Singleton{
                              MirroredMonoType = Test$package.Item.A.type; 
                                MirroredType = Test$package.Item.A.type
                              ; MirroredLabel = ("A" : String)
                            }
                          
                        ]
                      t:
                        
                          scala.deriving.Mirror.Singleton{
                            MirroredMonoType = Test$package.Item.A.type; 
                              MirroredType = Test$package.Item.A.type
                            ; MirroredLabel = ("A" : String)
                          }
                        
                    }
                  val m: 
                    
                      scala.deriving.Mirror.Singleton{
                        MirroredMonoType = Test$package.Item.A.type; 
                          MirroredType = Test$package.Item.A.type
                        ; MirroredLabel = ("A" : String)
                      }
                    
                   = $scrutinee6
                  val fields: scala.collection.immutable.List[Schema[Any]] = 
                    Nil:scala.collection.immutable.List[Schema[Any]]
                  {
                    final class $anon() extends Object(), 
                      Schema[Test$package.Item.A.type]
                     {}
                    new Object with Schema {...}():
                      Schema[Test$package.Item.A.type]
                  }
                }:Schema[Test$package.Item.A.type]
              :Schema[Test$package.Item.A.type])
            (t:Schema[Test$package.Item.A.type])
          }.asInstanceOf[Schema[Any]]
        (
          {
            val elem$1: Schema[Any] = 
              {
                given val t: Schema[Test$package.Item.B.type] = 
                  (
                    {
                      val $scrutinee11: 
                        
                          scala.deriving.Mirror.Singleton{
                            MirroredMonoType = Test$package.Item.B.type; 
                              MirroredType = Test$package.Item.B.type
                            ; MirroredLabel = ("B" : String)
                          }
                        
                       = 
                        {
                          given val t: 
                            
                              scala.deriving.Mirror.Singleton{
                                MirroredMonoType = Test$package.Item.B.type; 
                                  MirroredType = Test$package.Item.B.type
                                ; MirroredLabel = ("B" : String)
                              }
                            
                           = 
                            Item$.this.B.$asInstanceOf$[
                              
                                scala.deriving.Mirror.Singleton{
                                  MirroredMonoType = Test$package.Item.B.type; 
                                    MirroredType = Test$package.Item.B.type
                                  ; MirroredLabel = ("B" : String)
                                }
                              [0m
                            ]
                          t:
                            
                              scala.deriving.Mirror.Singleton{
                                MirroredMonoType = Test$package.Item.B.type; 
                                  MirroredType = Test$package.Item.B.type
                                ; MirroredLabel = ("B" : String)
                              }
                            
                        }
                      val m: 
                        
                          scala.deriving.Mirror.Singleton{
                            MirroredMonoType = Test$package.Item.B.type; 
                              MirroredType = Test$package.Item.B.type
                            ; MirroredLabel = ("B" : String)
                          }
                        
                       = $scrutinee11
                      val fields: scala.collection.immutable.List[Schema[Any]]
                         = 
                      Nil:scala.collection.immutable.List[Schema[Any]]
                      {
                        final class $anon() extends Object(), 
                          Schema[Test$package.Item.B.type]
                         {}
                        new Object with Schema {...}():
                          Schema[Test$package.Item.B.type]
                      }
                    }:Schema[Test$package.Item.B.type]
                  :Schema[Test$package.Item.B.type])
                (t:Schema[Test$package.Item.B.type])
              }.asInstanceOf[Schema[Any]]
            (Nil:scala.collection.immutable.List[Schema[Any]]).::[Schema[Any]](
              elem$1
            )
          }
        :scala.collection.immutable.List[Schema[Any]]).::[Schema[Any]](elem$1)
      }:scala.collection.immutable.List[Schema[Any]]
    {
      final class $anon() extends Object(), Schema[Item] {}
      new Object with Schema {...}():Schema[Item]
    }
  }:Schema[Item]:Schema[Item]
  ()
} of class class dotty.tools.dotc.ast.Trees$Block # -1
exception while typing {
  @scala.annotation.internal.Child[Test$package.Item.B.type]() @
    scala.annotation.internal.Child
  [Test$package.Item.A.type]() sealed trait Item() extends Object {}
  final lazy module def Item: Item$ = new Item$()
  final module class Item$() extends Object(), scala.deriving.Mirror.Sum {
    final lazy module case def A: Test$package.Item.A$ = 
      new Test$package.Item.A$()
    final module case class A$() extends Object(), Item, Product, Serializable, 
      scala.deriving.Mirror.Singleton
     {
      override def hashCode(): Int = 65
      override def toString(): String = "A"
      override def canEqual(that: Any): Boolean = 
        that.isInstanceOf[Test$package.Item.A$ @unchecked]
      override def productArity: Int = 0
      override def productPrefix: String = "A"
      override def productElement(n: Int): Any = 
        matchResult1[Nothing]: 
          {
            case val x1: (n : Int) = n
            throw new IndexOutOfBoundsException(n.toString())
          }
      override def productElementName(n: Int): String = 
        matchResult2[Nothing]: 
          {
            case val x2: (n : Int) = n
            throw new IndexOutOfBoundsException(n.toString())
          }
    }
    final lazy module case def B: Test$package.Item.B$ = 
      new Test$package.Item.B$()
    final module case class B$() extends Object(), Item, Product, Serializable, 
      scala.deriving.Mirror.Singleton
     {
      override def hashCode(): Int = 66
      override def toString(): String = "B"
      override def canEqual(that: Any): Boolean = 
        that.isInstanceOf[Test$package.Item.B$ @unchecked]
      override def productArity: Int = 0
      override def productPrefix: String = "B"
      override def productElement(n: Int): Any = 
        matchResult3[Nothing]: 
          {
            case val x3: (n : Int) = n
            throw new IndexOutOfBoundsException(n.toString())
          }
      override def productElementName(n: Int): String = 
        matchResult4[Nothing]: 
          {
            case val x4: (n : Int) = n
            throw new IndexOutOfBoundsException(n.toString())
          }
    }
    type MirroredMonoType = Item
    def ordinal(x$0: Test$package.Item.MirroredMonoType): Int = 
      matchResult5[Int]: 
        {
          case val x5: (x$0 : Item) = x$0
          if x5.eq(Item.A) then return[matchResult5] 0 else ()
          if x5.eq(Item.B) then return[matchResult5] 1 else ()
          throw new MatchError(x5)
        }
  }
  {
    {
      val $scrutinee2: 
        
          (
            deriving.Mirror{
              MirroredType = Item; MirroredMonoType = Item; 
                MirroredElemTypes <: Tuple
            }
           & 
            scala.deriving.Mirror.Sum{
              MirroredMonoType = Item; MirroredType = Item; 
                MirroredLabel = ("Item" : String)
            }
          ){
            MirroredElemTypes = (Test$package.Item.A.type, 
              Test$package.Item.B.type
            ); MirroredElemLabels = (("A" : String), ("B" : String))
          }
        
       = 
        {
          given val t: 
            
              (
                deriving.Mirror{
                  MirroredType = Item; MirroredMonoType = Item; 
                    MirroredElemTypes <: Tuple
                }
               & 
                scala.deriving.Mirror.Sum{
                  MirroredMonoType = Item; MirroredType = Item; 
                    MirroredLabel = ("Item" : String)
                }
              ){
                MirroredElemTypes = (Test$package.Item.A.type, 
                  Test$package.Item.B.type
                ); MirroredElemLabels = (("A" : String), ("B" : String))
              }
            
           = 
            Item.$asInstanceOf$[
              
                (
                  deriving.Mirror{
                    MirroredType = Item; MirroredMonoType = Item; 
                      MirroredElemTypes <: Tuple
                  }
                 & 
                  scala.deriving.Mirror.Sum{
                    MirroredMonoType = Item; MirroredType = Item; 
                      MirroredLabel = ("Item" : String)
                  }
                ){
                  MirroredElemTypes = (Test$package.Item.A.type, 
                    Test$package.Item.B.type
                  ); MirroredElemLabels = (("A" : String), ("B" : String))
                }
              
            ]
          t:
            
              (
                deriving.Mirror{
                  MirroredType = Item; MirroredMonoType = Item; 
                    MirroredElemTypes <: Tuple
                }
               & 
                scala.deriving.Mirror.Sum{
                  MirroredMonoType = Item; MirroredType = Item; 
                    MirroredLabel = ("Item" : String)
                }
              ){
                MirroredElemTypes = (Test$package.Item.A.type, 
                  Test$package.Item.B.type
                ); MirroredElemLabels = (("A" : String), ("B" : String))
              }
            
        }
      val m: 
        
          (
            deriving.Mirror{
              MirroredType = Item; MirroredMonoType = Item; 
                MirroredElemTypes <: Tuple
            }
           & 
            scala.deriving.Mirror.Sum{
              MirroredMonoType = Item; MirroredType = Item; 
                MirroredLabel = ("Item" : String)
            }
          ){
            MirroredElemTypes = (Test$package.Item.A.type, 
              Test$package.Item.B.type
            ); MirroredElemLabels = (("A" : String), ("B" : String))
          }
        
       = $scrutinee2
      val subTypes: scala.collection.immutable.List[Schema[Any]] = 
        {
          val elem$1: Schema[Any] = 
            {
              given val t: Schema[Test$package.Item.A.type] = 
                (
                  {
                    val $scrutinee6[0m: 
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.A.type; 
                            MirroredType = Test$package.Item.A.type
                          ; MirroredLabel = ("A" : String)
                        }
                      
                     = 
                      {
                        given val t: 
                          
                            scala.deriving.Mirror.Singleton{
                              MirroredMonoType = Test$package.Item.A.type; 
                                MirroredType = Test$package.Item.A.type
                              ; MirroredLabel = ("A" : String)
                            }
                          
                         = 
                          Item$.this.A.$asInstanceOf$[
                            
                              scala.deriving.Mirror.Singleton{
                                MirroredMonoType = Test$package.Item.A.type; 
                                  MirroredType = Test$package.Item.A.type
                                ; MirroredLabel = ("A" : String)
                              }
                            
                          ]
                        t:
                          
                            scala.deriving.Mirror.Singleton{
                              MirroredMonoType = Test$package.Item.A.type; 
                                MirroredType = Test$package.Item.A.type
                              ; MirroredLabel = ("A" : String)
                            }
                          
                      }
                    val m: 
                      
                        scala.deriving.Mirror.Singleton{
                          MirroredMonoType = Test$package.Item.A.type; 
                            MirroredType = Test$package.Item.A.type
                          ; MirroredLabel = ("A" : String)
                        }
                      
                     = $scrutinee6
                    val fields: scala.collection.immutable.List[Schema[Any]] = 
                      Nil:scala.collection.immutable.List[Schema[Any]]
                    {
                      final class $anon() extends Object(), 
                        Schema[Test$package.Item.A.type]
                       {}
                      new Object with Schema {...}():
                        Schema[Test$package.Item.A.type]
                    }
                  }:Schema[Test$package.Item.A.type]
                :Schema[Test$package.Item.A.type])
              (t:Schema[Test$package.Item.A.type])
            }.asInstanceOf[Schema[Any]]
          (
            {
              val elem$1: Schema[Any] = 
                {
                  given val t: Schema[Test$package.Item.B.type] = 
                    (
                      {
                        val $scrutinee11: 
                          
                            scala.deriving.Mirror.Singleton{
                              MirroredMonoType = Test$package.Item.B.type; 
                                MirroredType = Test$package.Item.B.type
                              ; MirroredLabel = ("B" : String)
                            }
                          
                         = 
                          {
                            given val t: 
                              
                                scala.deriving.Mirror.Singleton{
                                  MirroredMonoType = Test$package.Item.B.type; 
                                    MirroredType = Test$package.Item.B.type
                                  ; MirroredLabel = ("B" : String)
                                }
                              
                             = 
                              Item$.this.B.$asInstanceOf$[
                                
                                  scala.deriving.Mirror.Singleton{
                                    MirroredMonoType = Test$package.Item.B.type
                                      ; 
                                    MirroredType = Test$package.Item.B.type; 
                                      MirroredLabel = ("B" : String)
                                  }
                                
                              ]
                            t:
                              
                                scala.deriving.Mirror.Singleton{
                                  MirroredMonoType = Test$package.Item.B.type; 
                                    MirroredType = Test$package.Item.B.type
                                  ; MirroredLabel = ("B" : String)
                                }
                              
                          }
                        val m: 
                          
                            scala.deriving.Mirror.Singleton{
                              MirroredMonoType = Test$package.Item.B.type; 
                                MirroredType = Test$package.Item.B.type
                              ; MirroredLabel = ("B" : String)
                            }
                          
                         = $scrutinee11
                        val fields: scala.collection.immutable.List[Schema[Any]]
                           = 
                        Nil:scala.collection.immutable.List[Schema[Any]]
                        {
                          final class $anon() extends Object(), 
                            Schema[Test$package.Item.B.type]
                           {}
                          new Object with Schema {...}():
                            Schema[Test$package.Item.B.type]
                        }
                      }:Schema[Test$package.Item.B.type]
                    :Schema[Test$package.Item.B.type])
                  (t:Schema[Test$package.Item.B.type])
                }.asInstanceOf[Schema[Any]]
              (Nil:scala.collection.immutable.List[Schema[Any]]).::[Schema[Any]]
                (
              elem$1)
            }
          :scala.collection.immutable.List[Schema[Any]]).::[Schema[Any]](elem$1)
        }:scala.collection.immutable.List[Schema[Any]]
      {
        final class $anon() extends Object(), Schema[Item] {}
        new Object with Schema {...}():Schema[Item]
      }
    }:Schema[Item]:Schema[Item]
    ()
  }
} of class class dotty.tools.dotc.ast.Trees$Block # -1
exception while typing @main() def hello: Unit = 
  {
    @scala.annotation.internal.Child[Test$package.Item.B.type]() @
      scala.annotation.internal.Child
    [Test$package.Item.A.type]() sealed trait Item() extends Object {}
    final lazy module def Item: Item$ = new Item$()
    final module class Item$() extends Object(), scala.deriving.Mirror.Sum {
      final lazy module case def A: Test$package.Item.A$ = 
        new Test$package.Item.A$()
      final module case class A$() extends Object(), Item, Product, Serializable
        , 
      scala.deriving.Mirror.Singleton {
        override def hashCode(): Int = 65
        override def toString(): String = "A"
        override def canEqual(that: Any): Boolean = 
          that.isInstanceOf[Test$package.Item.A$ @unchecked]
        override def productArity: Int = 0
        override def productPrefix: String = "A"
        override def productElement(n: Int): Any = 
          matchResult1[Nothing]: 
            {
              case val x1: (n : Int) = n
              throw new IndexOutOfBoundsException(n.toString())
            }
        override def productElementName(n: Int): String = 
          matchResult2[Nothing]: 
            {
              case val x2: (n : Int) = n
              throw new IndexOutOfBoundsException(n.toString())
            }
      }
      final lazy module case def B: Test$package.Item.B$ = 
        new Test$package.Item.B$()
      final module case class B$() extends Object(), Item, Product, Serializable
        , 
      scala.deriving.Mirror.Singleton {
        override def hashCode(): Int = 66
        override def toString(): String = "B"
        override def canEqual(that: Any): Boolean = 
          that.isInstanceOf[Test$package.Item.B$ @unchecked]
        override def productArity: Int = 0
        override def productPrefix: String = "B"
        override def productElement(n: Int): Any = 
          matchResult3[Nothing]: 
            {
              case val x3: (n : Int) = n
              throw new IndexOutOfBoundsException(n.toString())
            }
        override def productElementName(n: Int): String = 
          matchResult4[Nothing]: 
            {
              case val x4: (n : Int) = n
              throw new IndexOutOfBoundsException(n.toString())
            }
      }
      type MirroredMonoType = Item
      def ordinal(x$0: Test$package.Item.MirroredMonoType): Int = 
        matchResult5[Int]: 
          {
            case val x5: (x$0 : Item) = x$0
            if x5.eq(Item.A) then return[matchResult5] 0 else ()
            if x5.eq(Item.B) then return[matchResult5] 1 else ()
            throw new MatchError(x5)
          }
    }
    {
      {
        val $scrutinee2: 
          
            (
              deriving.Mirror{
                MirroredType = Item; MirroredMonoType = Item; 
                  MirroredElemTypes <: Tuple
              }
             & 
              scala.deriving.Mirror.Sum{
                MirroredMonoType = Item; MirroredType = Item; 
                  MirroredLabel = ("Item" : String)
              }
            ){
              MirroredElemTypes = (Test$package.Item.A.type, 
                Test$package.Item.B.type
              ); MirroredElemLabels = (("A" : String), ("B" : String))
            }
          
         = 
          {
            given val t: 
              
                (
                  deriving.Mirror{
                    MirroredType = Item; MirroredMonoType = Item; 
                      MirroredElemTypes <: Tuple
                  }
                 & 
                  scala.deriving.Mirror.Sum{
                    MirroredMonoType = Item; MirroredType = Item; 
                      MirroredLabel = ("Item" : String)
                  }
                ){
                  MirroredElemTypes = (Test$package.Item.A.type, 
                    Test$package.Item.B.type
                  ); MirroredElemLabels = (("A" : String), ("B" : String))
                }
              
             = 
              Item.$asInstanceOf$[
                
                  (
                    deriving.Mirror{
                      MirroredType = Item; MirroredMonoType = Item; 
                        MirroredElemTypes <: Tuple
                    }
                   & 
                    scala.deriving.Mirror.Sum{
                      MirroredMonoType = Item; MirroredType = Item; 
                        MirroredLabel = ("Item" : String)
                    }
                  ){
                    MirroredElemTypes = (Test$package.Item.A.type, 
                      Test$package.Item.B.type
                    ); MirroredElemLabels = (("A" : String), ("B" : String))
                  }
                
              ]
            t:
              
                (
                  deriving.Mirror{
                    MirroredType = Item; MirroredMonoType = Item; 
                      MirroredElemTypes <: Tuple
                  }
                 & 
                  scala.deriving.Mirror.Sum{
                    MirroredMonoType = Item; MirroredType = Item; 
                      MirroredLabel = ("Item" : String)
                  }
                ){
                  MirroredElemTypes = (Test$package.Item.A.type, 
                    Test$package.Item.B.type
                  ); MirroredElemLabels = (("A" : String), ("B" : String))
                }
              
          }
        val m: 
          
            (
              deriving.Mirror{
                MirroredType = Item; MirroredMonoType = Item; 
                  MirroredElemTypes <: Tuple
              }
             & 
              scala.deriving.Mirror.Sum{
                MirroredMonoType = Item; MirroredType = Item; 
                  MirroredLabel = ("Item" : String)
              }
            ){
              MirroredElemTypes = (Test$package.Item.A.type, 
                Test$package.Item.B.type
              ); MirroredElemLabels = (("A" : String), ("B" : String))
            }
          
         = $scrutinee2
        val subTypes: scala.collection.immutable.List[Schema[Any]] = 
          {
            val elem$1: Schema[Any] = 
              {
                given val t: Schema[Test$package.Item.A.type] = 
                  (
                    {
                      val $scrutinee6: 
                        
                          scala.deriving.Mirror.Singleton{
                            MirroredMonoType = Test$package.Item.A.type; 
                              MirroredType = Test$package.Item.A.type
                            ; MirroredLabel = ("A" : String)
                          }
                        
                       = 
                        {
                          given val t: 
                            
                              scala.deriving.Mirror.Singleton{
                                MirroredMonoType = Test$package.Item.A.type; 
                                  MirroredType = Test$package.Item.A.type
                                ; MirroredLabel = ("A" : String)
                              }
                            
                           = 
                            Item$.this.A.$asInstanceOf$[
                              
                                scala.deriving.Mirror.Singleton{
                                  MirroredMonoType = Test$package.Item.A.type; 
                                    MirroredType = Test$package.Item.A.type
                                  ; MirroredLabel = ("A" : String)
                                }
                              
                            ]
                          t:
                            
                              scala.deriving.Mirror.Singleton{
                                MirroredMonoType = Test$package.Item.A.type; 
                                  MirroredType = Test$package.Item.A.type
                                ; MirroredLabel = ("A" : String)
                              }
                            
                        }
                      val m: 
                        
                          scala.deriving.Mirror.Singleton{
                            MirroredMonoType = Test$package.Item.A.type; 
                              MirroredType = Test$package.Item.A.type
                            ; MirroredLabel = ("A" : String)
                          }
                        
                       = $scrutinee6
                      val fields: scala.collection.immutable.List[Schema[Any]]
                         = 
                      Nil:scala.collection.immutable.List[Schema[Any]]
                      {
                        final class $anon() extends Object(), 
                          Schema[Test$package.Item.A.type]
                         {}
                        new Object with Schema {...}():
                          Schema[Test$package.Item.A.type]
                      }
                    }:Schema[Test$package.Item.A.type]
                  :Schema[Test$package.Item.A.type])
                (t:Schema[Test$package.Item.A.type])
              }.asInstanceOf[Schema[Any]]
            (
              {
                val elem$1: Schema[Any] = 
                  {
                    given val t: Schema[Test$package.Item.B.type] = 
                      (
                        {
                          val $scrutinee11: 
                            
                              scala.deriving.Mirror.Singleton{
                                MirroredMonoType = Test$package.Item.B.type; 
                                  MirroredType = Test$package.Item.B.type
                                ; MirroredLabel = ("B" : String)
                              }
                            
                           = 
                            {
                              given val t: 
                                
                                  scala.deriving.Mirror.Singleton{
                                    MirroredMonoType = Test$package.Item.B.type
                                      ; 
                                    MirroredType = Test$package.Item.B.type; 
                                      MirroredLabel = ("B" : String)
                                  }
                                
                               = 
                                Item$.this.B.$asInstanceOf$[
                                  
                                    scala.deriving.Mirror.Singleton{
                                      MirroredMonoType = 
                                        Test$package.Item.B.type
                                      ; MirroredType = Test$package.Item.B.type
                                        ; 
                                      MirroredLabel = ("B" : String)
                                    }
                                  
                                ]
                              t:
                                
                                  scala.deriving.Mirror.Singleton{
                                    MirroredMonoType = Test$package.Item.B.type
                                      ; 
                                    MirroredType = Test$package.Item.B.type; 
                                      MirroredLabel = ("B" : String)
                                  }
                                
                            }
                          val m: 
                            
                              scala.deriving.Mirror.Singleton{
                                MirroredMonoType = Test$package.Item.B.type; 
                                  MirroredType = Test$package.Item.B.type
                                ; MirroredLabel = ("B" : String)
                              }
                            
                           = $scrutinee11
                          val fields: 
                            scala.collection.immutable.List[Schema[Any]]
                           = Nil:scala.collection.immutable.List[Schema[Any]]
                          {
                            final class $anon() extends Object(), 
                              Schema[Test$package.Item.B.type]
                             {}
                            new Object with Schema {...}():
                              Schema[Test$package.Item.B.type]
                          }
                        }:Schema[Test$package.Item.B.type]
                      :Schema[Test$package.Item.B.type])
                    (t:Schema[Test$package.Item.B.type])
                  }.asInstanceOf[Schema[Any]]
                (Nil:scala.collection.immutable.List[Schema[Any]]).::[
                  Schema[Any]
                ](elem$1)
              }
            :scala.collection.immutable.List[Schema[Any]]).::[Schema[Any]](
              elem$1
            )
          }:scala.collection.immutable.List[Schema[Any]]
        {
          final class $anon() extends Object(), Schema[Item] {}
          new Object with Schema {...}():Schema[Item]
        }
      }:Schema[Item]:Schema[Item]
      ()
    }
  } of class class dotty.tools.dotc.ast.Trees$DefDef # -1
exception while typing @scala.annotation.internal.SourceFile("core/src/test/scala-3/caliban/Test.scala"
  )
 final module class Test$package$() extends Object() {
  private def writeReplace(): AnyRef = 
    new scala.runtime.ModuleSerializationProxy(classOf[Test$package.type])
  @main() def hello: Unit = 
    {
      @scala.annotation.internal.Child[Test$package.Item.B.type]() @
        scala.annotation.internal.Child
      [Test$package.Item.A.type]() sealed trait Item() extends Object {}
      final lazy module def Item: Item$ = new Item$()
      final module class Item$() extends Object(), scala.deriving.Mirror.Sum {
        final lazy module case def A: Test$package.Item.A$ = 
          new Test$package.Item.A$()
        final module case class A$() extends Object(), Item, Product, 
          Serializable
        , scala.deriving.Mirror.Singleton {
          override def hashCode(): Int = 65
          override def toString(): String = "A"
          override def canEqual(that: Any): Boolean = 
            that.isInstanceOf[Test$package.Item.A$ @unchecked]
          override def productArity: Int = 0
          override def productPrefix: String = "A"
          override def productElement(n: Int): Any = 
            matchResult1[Nothing]: 
              {
                case val x1: (n : Int) = n
                throw new IndexOutOfBoundsException(n.toString())
              }
          override def productElementName(n: Int): String = 
            matchResult2[Nothing]: 
              {
                case val x2: (n : Int) = n
                throw new IndexOutOfBoundsException(n.toString())
              }
        }
        final lazy module case def B: Test$package.Item.B$ = 
          new Test$package.Item.B$()
        final module case class B$() extends Object(), Item, Product, 
          Serializable
        , scala.deriving.Mirror.Singleton {
          override def hashCode(): Int = 66
          override def toString(): String = "B"
          override def canEqual(that: Any): Boolean = 
            that.isInstanceOf[Test$package.Item.B$ @unchecked]
          override def productArity: Int = 0
          override def productPrefix: String = "B"
          override def productElement(n: Int): Any = 
            matchResult3[Nothing]: 
              {
                case val x3: (n : Int) = n
                throw new IndexOutOfBoundsException(n.toString())
              }
          override def productElementName(n: Int): String = 
            matchResult4[Nothing]: 
              {
                case val x4: (n : Int) = n
                throw new IndexOutOfBoundsException(n.toString())
              }
        }
        type MirroredMonoType = Item
        def ordinal(x$0: Test$package.Item.MirroredMonoType): Int = 
          matchResult5[Int]: 
            {
              case val x5: (x$0 : Item) = x$0
              if x5.eq(Item.A) then return[matchResult5] 0 else ()
              if x5.eq(Item.B) then return[matchResult5] 1 else ()
              throw new MatchError(x5)
            }
      }
      {
        {
          val $scrutinee2: 
            
              (
                deriving.Mirror{
                  MirroredType = Item; MirroredMonoType = Item; 
                    MirroredElemTypes <: Tuple
                }
               & 
                scala.deriving.Mirror.Sum{
                  MirroredMonoType = Item; MirroredType = Item; 
                    MirroredLabel = ("Item" : String)
                }
              ){
                MirroredElemTypes = (Test$package.Item.A.type, 
                  Test$package.Item.B.type
                ); MirroredElemLabels = (("A" : String), ("B" : String))
              }
            
           = 
            {
              given val t: 
                
                  (
                    deriving.Mirror{
                      MirroredType = Item; MirroredMonoType = Item; 
                        MirroredElemTypes <: Tuple
                    }
                   & 
                    scala.deriving.Mirror.Sum{
                      MirroredMonoType = Item; MirroredType = Item; 
                        MirroredLabel = ("Item" : String)
                    }
                  ){
                    MirroredElemTypes = (Test$package.Item.A.type, 
                      Test$package.Item.B.type
                    ); MirroredElemLabels = (("A" : String), ("B" : String))
                  }
                
               = 
                Item.$asInstanceOf$[
                  
                    (
                      deriving.Mirror{
                        MirroredType = Item; MirroredMonoType = Item; 
                          MirroredElemTypes <: Tuple
                      }
                     & 
                      scala.deriving.Mirror.Sum{
                        MirroredMonoType = Item; MirroredType = Item; 
                          MirroredLabel = ("Item" : String)
                      }
                    ){
                      MirroredElemTypes = (Test$package.Item.A.type, 
                        Test$package.Item.B.type
                      ); MirroredElemLabels = (("A" : String), ("B" : String))
                    }
                  
                ]
              t:
                
                  (
                    deriving.Mirror{
                      MirroredType = Item; MirroredMonoType = Item; 
                        MirroredElemTypes <: Tuple
                    }
                   & 
                    scala.deriving.Mirror.Sum{
                      MirroredMonoType = Item; MirroredType = Item; 
                        MirroredLabel = ("Item" : String)
                    }
                  ){
                    MirroredElemTypes = (Test$package.Item.A.type, 
                      Test$package.Item.B.type
                    ); MirroredElemLabels = (("A" : String), ("B" : String))
                  }
                
            }
          val m: 
            
              (
                deriving.Mirror{
                  MirroredType = Item; MirroredMonoType = Item; 
                    MirroredElemTypes <: Tuple
                }
               & 
                scala.deriving.Mirror.Sum{
                  MirroredMonoType = Item; MirroredType = Item; 
                    MirroredLabel = ("Item" : String)
                }
              ){
                MirroredElemTypes = (Test$package.Item.A.type, 
                  Test$package.Item.B.type
                ); MirroredElemLabels = (("A" : String), ("B" : String))
              }
            
           = $scrutinee2
          val subTypes: scala.collection.immutable.List[Schema[Any]] = 
            {
              val elem$1: Schema[Any] = 
                {
                  given val t: Schema[Test$package.Item.A.type] = 
                    (
                      {
                        val $scrutinee6: 
                          
                            scala.deriving.Mirror.Singleton{
                              MirroredMonoType = Test$package.Item.A.type; 
                                MirroredType = Test$package.Item.A.type
                              ; MirroredLabel = ("A" : String)
                            }
                          
                         = 
                          {
                            given val t: 
                              
                                scala.deriving.Mirror.Singleton{
                                  MirroredMonoType = Test$package.Item.A.type; 
                                    MirroredType = Test$package.Item.A.type
                                  ; MirroredLabel = ("A" : String)
                                }
                              
                             = 
                              Item$.this.A.$asInstanceOf$[
                                
                                  scala.deriving.Mirror.Singleton{
                                    MirroredMonoType = Test$package.Item.A.type
                                      ; 
                                    MirroredType = Test$package.Item.A.type; 
                                      MirroredLabel = ("A" : String)
                                  }
                                
                              ]
                            t:
                              
                                scala.deriving.Mirror.Singleton{
                                  MirroredMonoType = Test$package.Item.A.type; 
                                    MirroredType = Test$package.Item.A.type
                                  ; MirroredLabel = ("A" : String)
                                }
                              
                          }
                        val m: 
                          
                            scala.deriving.Mirror.Singleton{
                              MirroredMonoType = Test$package.Item.A.type; 
                                MirroredType = Test$package.Item.A.type
                              ; MirroredLabel = ("A" : String)
                            }
                          
                         = $scrutinee6
                        val fields: scala.collection.immutable.List[Schema[Any]]
                           = 
                        Nil:scala.collection.immutable.List[Schema[Any]]
                        {
                          final class $anon() extends Object(), 
                            Schema[Test$package.Item.A.type]
                           {}
                          new Object with Schema {...}():
                            Schema[Test$package.Item.A.type]
                        }
                      }:Schema[Test$package.Item.A.type]
                    :Schema[Test$package.Item.A.type])
                  (t:Schema[Test$package.Item.A.type])
                }.asInstanceOf[Schema[Any]]
              (
                {
                  val elem$1: Schema[Any] = 
                    {
                      given val t: Schema[Test$package.Item.B.type] = 
                        (
                          {
                            val $scrutinee11: 
                              
                                scala.deriving.Mirror.Singleton{
                                  MirroredMonoType = Test$package.Item.B.type; 
                                    MirroredType = Test$package.Item.B.type
                                  ; MirroredLabel = ("B" : String)
                                }
                              
                             = 
                              {
                                given val t: 
                                  
                                    scala.deriving.Mirror.Singleton{
                                      MirroredMonoType = 
                                        Test$package.Item.B.type
                                      ; MirroredType = Test$package.Item.B.type
                                        ; 
                                      MirroredLabel = ("B" : String)
                                    }
                                  
                                 = 
                                  Item$.this.B.$asInstanceOf$[
                                    
                                      scala.deriving.Mirror.Singleton{
                                        MirroredMonoType = 
                                          Test$package.Item.B.type
                                        ; 
                                          MirroredType = 
                                            Test$package.Item.B.type
                                        ; MirroredLabel = ("B" : String)
                                      }
                                    
                                  ]
                                t:
                                  
                                    scala.deriving.Mirror.Singleton{
                                      MirroredMonoType = 
                                        Test$package.Item.B.type
                                      ; MirroredType = Test$package.Item.B.type
                                        ; 
                                      MirroredLabel = ("B" : String)
                                    }
                                  
                              }
                            val m: 
                              
                                scala.deriving.Mirror.Singleton{
                                  MirroredMonoType = Test$package.Item.B.type; 
                                    MirroredType = Test$package.Item.B.type
                                  ; MirroredLabel = ("B" : String)
                                }
                              
                             = $scrutinee11
                            val fields: 
                              scala.collection.immutable.List[Schema[Any]]
                             = Nil:scala.collection.immutable.List[Schema[Any]]
                            {
                              final class $anon() extends Object(), 
                                Schema[Test$package.Item.B.type]
                               {}
                              new [35[0JmObject with Schema {...}():
                                Schema[Test$package.Item.B.type]
                            }
                          }:Schema[Test$package.Item.B.type]
                        :Schema[Test$package.Item.B.type])
                      (t:Schema[Test$package.Item.B.type])
                    }.asInstanceOf[Schema[Any]]
                  (Nil:scala.collection.immutable.List[Schema[Any]]).::[
                    Schema[Any]
                  ](elem$1)
                }
              :scala.collection.immutable.List[Schema[Any]]).::[Schema[Any]](
                elem$1
              )
            }:scala.collection.immutable.List[Schema[Any]]
          {
            final class $anon() extends Object(), Schema[Item] {}
            new Object with Schema {...}():Schema[Item]
          }
        }:Schema[Item]:Schema[Item]
        ()
      }
    }
} of class class dotty.tools.dotc.ast.Trees$TypeDef # -1
exception while typing package <empty> {
  @scala.annotation.internal.SourceFile(
    "core/src/test/scala-3/caliban/Test.scala"
  ) trait Schema[T]() extends Object {
    private type T
  }
  final lazy module val Schema: Schema$ = new Schema$()
  @scala.annotation.internal.SourceFile(
    "core/src/test/scala-3/caliban/Test.scala"
  ) final module class Schema$() extends Object() {
    private def writeReplace(): AnyRef = 
      new scala.runtime.ModuleSerializationProxy(classOf[Schema.type])
    private inline def recurse[A <: Tuple]: 
      scala.collection.immutable.List[Schema[Any]]
     = ???
    private inline def derived[T]: Schema[T] = ???
    private final inline given def gen[T]: Schema[T] = ???
  }
  final lazy module val Test$package: Test$package$ = new Test$package$()
  @scala.annotation.internal.SourceFile(
    "core/src/test/scala-3/caliban/Test.scala"
  ) final module class Test$package$() extends Object() {
    private def writeReplace(): AnyRef = 
      new scala.runtime.ModuleSerializationProxy(classOf[Test$package.type])
    @main() def hello: Unit = 
      {
        @scala.annotation.internal.Child[Test$package.Item.B.type]() @
          scala.annotation.internal.Child
        [Test$package.Item.A.type]() sealed trait Item() extends Object {}
        final lazy module def Item: Item$ = new Item$()
        final module class Item$() extends Object(), scala.deriving.Mirror.Sum {
          final lazy module case def A: Test$package.Item.A$ = 
            new Test$package.Item.A$()
          final module case class A$() extends Object(), Item, Product, 
            Serializable
          , scala.deriving.Mirror.Singleton {
            override def hashCode(): Int = 65
            override def toString(): String = "A"
            override def canEqual(that: Any): Boolean = 
              that.isInstanceOf[Test$package.Item.A$ @unchecked]
            override def productArity: Int = 0
            override def productPrefix: String = "A"
            override def productElement(n: Int): Any = 
              matchResult1[Nothing]: 
                {
                  case val x1: (n : Int) = n
                  throw new IndexOutOfBoundsException(n.toString())
                }
            override def productElementName(n: Int): String = 
              matchResult2[Nothing]: 
                {
                  case val x2: (n : Int) = n
                  throw new IndexOutOfBoundsException(n.toString())
                }
          }
          final lazy module case def B: Test$package.Item.B$ = 
            new Test$package.Item.B$()
          final module case class B$() extends Object(), Item, Product, 
            Serializable
          , scala.deriving.Mirror.Singleton {
            override def hashCode(): Int = 66
            override def toString(): String = "B"
            override def canEqual(that: Any): Boolean = 
              that.isInstanceOf[Test$package.Item.B$ @unchecked]
            override def productArity: Int = 0
            override def productPrefix: String = "B"
            override def productElement(n: Int): Any = 
              matchResult3[Nothing]: 
                {
                  case val x3: (n : Int) = n
                  throw new IndexOutOfBoundsException(n.toString())
                }
            override def productElementName(n: Int): String = 
              matchResult4[Nothing]: 
                {
                  case val x4: (n : Int) = n
                  throw new IndexOutOfBoundsException(n.toString())
                }
          }
          type MirroredMonoType = Item
          def ordinal(x$0: Test$package.Item.MirroredMonoType): Int = 
            matchResult5[Int]: 
              {
                case val x5: (x$0 : Item) = x$0
                if x5.eq(Item.A) then return[matchResult5] 0 else ()
                if x5.eq(Item.B) then return[matchResult5] 1 else ()
                throw new MatchError(x5)
              }
        }
        {
          {
            val $scrutinee2: 
              
                (
                  deriving.Mirror{
                    MirroredType = Item; MirroredMonoType = Item; 
                      MirroredElemTypes <: Tuple
                  }
                 & 
                  scala.deriving.Mirror.Sum{
                    MirroredMonoType = Item; MirroredType = Item; 
                      MirroredLabel = ("Item" : String)
                  }
                ){
                  MirroredElemTypes = (Test$package.Item.A.type, 
                    Test$package.Item.B.type
                  ); MirroredElemLabels = (("A" : String), ("B" : String))
                }
              
             = 
              {
                given val t: 
                  
                    (
                      deriving.Mirror{
                        MirroredType = Item; MirroredMonoType = Item; 
                          MirroredElemTypes <: Tuple
                      }
                     & 
                      scala.deriving.Mirror.Sum{
                        MirroredMonoType = Item; MirroredType = Item; 
                          MirroredLabel = ("Item" : String)
                      }
                    ){
                      MirroredElemTypes = (Test$package.Item.A.type, 
                        Test$package.Item.B.type
                      ); MirroredElemLabels = (("A" : String), ("B" : String))
                    }
                  
                 = 
                  Item.$asInstanceOf$[
                    
                      (
                        deriving.Mirror{
                          MirroredType = Item; MirroredMonoType = Item; 
                            MirroredElemTypes <: Tuple
                        }
                       & 
                        scala.deriving.Mirror.Sum{
                          MirroredMonoType = Item; MirroredType = Item; 
                            MirroredLabel = ("Item" : String)
                        }
                      ){
                        MirroredElemTypes = (Test$package.Item.A.type, 
                          Test$package.Item.B.type
                        ); MirroredElemLabels = (("A" : String), ("B" : String))
                      }
                    
                  ]
                t:
                  
                    (
                      deriving.Mirror{
                        MirroredType = Item; MirroredMonoType = Item; 
                          MirroredElemTypes <: Tuple
                      }
                     & 
                      scala.deriving.Mirror.Sum{
                        MirroredMonoType = Item; MirroredType = Item; 
                          MirroredLabel = ("Item" : String)
                      }
                    ){
                      MirroredElemTypes = (Test$package.Item.A.type, 
                        Test$package.Item.B.type
                      ); MirroredElemLabels = (("A" : String), ("B" : String))
                    }
                  
              }
            val m: 
              
                (
                  deriving.Mirror{
                    MirroredType = Item; MirroredMonoType = Item; 
                      MirroredElemTypes <: Tuple
                  }
                 & 
                  scala.deriving.Mirror.Sum{
                    MirroredMonoType = Item; MirroredType = Item; 
                      MirroredLabel = ("Item" : String)
                  }
                ){
                  MirroredElemTypes = (Test$package.Item.A.type, 
                    Test$package.Item.B.type
                  ); MirroredElemLabels = (("A" : String), ("B" : String))
                }
              
             = $scrutinee2
            val subTypes: scala.collection.immutable.List[Schema[Any]] = 
              {
                val elem$1: Schema[Any] = 
                  {
                    given val t: Schema[Test$package.Item.A.type] = 
                      (
                        {
                          val $scrutinee6: 
                            
                              scala.deriving.Mirror.Singleton{
                                MirroredMonoType = Test$package.Item.A.type; 
                                  MirroredType = Test$package.Item.A.type
                                ; MirroredLabel = ("A" : String)
                              }
                            
                           = 
                            {
                              given val t: 
                                
                                  scala.deriving.Mirror.Singleton{
                                    MirroredMonoType = Test$package.Item.A.type
                                      ; 
                                    MirroredType = Test$package.Item.A.type; 
                                      MirroredLabel = ("A" : String)
                                  }
                                
                               = 
                                Item$.this.A.$asInstanceOf$[
                                  
                                    scala.deriving.Mirror.Singleton{
                                      MirroredMonoType = 
                                        Test$package.Item.A.type
                                      ; MirroredType = Test$package.Item.A.type
                                        ; 
                                      MirroredLabel = ("A" : String)
                                    }
                                  
                                ]
                              t:
                                
                                  scala.deriving.Mirror.Singleton{
                                    MirroredMonoType = Test$package.Item.A.type
                                      ; 
                                    MirroredType = Test$package.Item.A.type; 
                                      MirroredLabel = ("A" : String)
                                  }
                                
                            }
                          val m: 
                            
                              scala.deriving.Mirror.Singleton{
                                MirroredMonoType = Test$package.Item.A.type; 
                                  MirroredType = Test$package.Item.A.type
                                ; MirroredLabel = ("A" : String)
                              }
                            
                           = $scrutinee6
                          val fields: 
                            scala.collection.immutable.List[Schema[Any]]
                           = Nil:scala.collection.immutable.List[Schema[Any]]
                          {
                            final class $anon() extends Object(), 
                              Schema[Test$package.Item.A.type]
                             {}
                            new Object with Schema {...}():
                              Schema[Test$package.Item.A.type]
                          }
                        }:Schema[Test$package.Item.A.type]
                      :Schema[Test$package.Item.A.type])
                    (t:Schema[Test$package.Item.A.type])
                  }.asInstanceOf[Schema[Any]]
                (
                  {
                    val elem$1: Schema[Any] = 
                      {
                        given val t: Schema[Test$package.Item.B.type] = 
                          (
                            {
                              val $scrutinee11: 
                                
                                  scala.deriving.Mirror.Singleton{
                                    MirroredMonoType = Test$package.Item.B.type
                                      ; 
                                    MirroredType = Test$package.Item.B.type; 
                                      MirroredLabel = ("B" : String)
                                  }
                                
                               = 
                                {
                                  given val t: 
                                    
                                      scala.deriving.Mirror.Singleton{
                                        MirroredMonoType = 
                                          Test$package.Item.B.type
                                        ; 
                                          MirroredType = 
                                            Test$package.Item.B.type
                                        ; MirroredLabel = ("B" : String)
                                      }
                                    
                                   = 
                                    Item$.this.B.$asInstanceOf$[
                                      
                                        scala.deriving.Mirror.Singleton{
                                          MirroredMonoType = 
                                            Test$package.Item.B.type
                                          ; 
                                            MirroredType = 
                                              Test$package.Item.B.type
                                          ; MirroredLabel = ("B" : String)
                                        }
                                      
                                    ]
                                  t:
                                    
                                      scala.deriving.Mirror.Singleton{
                                        MirroredMonoType = 
                                          Test$package.Item.B.type
                                        ; 
                                          MirroredType = 
                                            Test$package.Item.B.type
                                        ; MirroredLabel = ("B" : String)
                                      }
                                    
                                }
                              val m: 
                                
                                  scala.deriving.Mirror.Singleton{
                                    MirroredMonoType = Test$package.Item.B.type
                                      ; 
                                    MirroredType = Test$package.Item.B.type; 
                                      MirroredLabel = ("B" : String)
                                  }
                                
                               = $scrutinee11
                              val fields: 
                                scala.collection.immutable.List[Schema[Any]]
                               = 
                                Nil:scala.collection.immutable.List[Schema[Any]]
                              {
                                final class $anon() extends Object(), 
                                  Schema[Test$package.Item.B.type]
                                 {}
                                new Object with Schema {...}():
                                  Schema[Test$package.Item.B.type]
                              }
                            }:Schema[Test$package.Item.B.type]
                          :Schema[Test$package.Item.B.type])
                        (t:Schema[Test$package.Item.B.type])
                      }.asInstanceOf[Schema[Any]]
                    (Nil:scala.collection.immutable.List[Schema[Any]]).::[
                      Schema[Any]
                    ](elem$1)
                  }
                :scala.collection.immutable.List[Schema[Any]]).::[Schema[Any]](
                  elem$1
                )
              }:scala.collection.immutable.List[Schema[Any]]
            {
              final class $anon() extends Object(), Schema[Item] {}
              new Object with Schema {...}():Schema[Item]
            }
          }:Schema[Item]:Schema[Item]
          ()
        }
      }
  }
  @scala.annotation.internal.SourceFile(
    "core/src/test/scala-3/caliban/Test.scala"
  ) final class hello() extends Object() {
    <static> def main(args: Array[String]): Unit = 
      try Test$package.hello catch 
        {
          case error @ _:scala.util.CommandLineParser.ParseError => 
            scala.util.CommandLineParser.showError(error)
        }
  }
} of class class dotty.tools.dotc.ast.Trees$PackageDef # -1
[info] exception occurred while compiling /Users/pierre/GIT/caliban/core/src/test/scala-3/caliban/Test.scala
java.lang.AssertionError: assertion failed: asTerm called on not-a-Term val <none> while compiling /Users/pierre/GIT/caliban/core/src/test/scala-3/caliban/Test.scala
[error] ## Exception when compiling 17 sources to /Users/pierre/GIT/caliban/core/target/scala-3.0.0-RC3/test-classes
[error] java.lang.AssertionError: assertion failed: asTerm called on not-a-Term val <none>
[error] scala.runtime.Scala3RunTime$.assertFailed(Scala3RunTime.scala:8)
[error] dotty.tools.dotc.core.Symbols$Symbol.asTerm(Symbols.scala:163)
[error] dotty.tools.dotc.transform.ExplicitOuter$.dotty$tools$dotc$transform$ExplicitOuter$$$outerParamAccessor(ExplicitOuter.scala:230)
[error] dotty.tools.dotc.transform.ExplicitOuter$OuterOps$.loop$1(ExplicitOuter.scala:424)
[error] dotty.tools.dotc.transform.ExplicitOuter$OuterOps$.path$extension(ExplicitOuter.scala:433)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedThis(Erasure.scala:805)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2670)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2731)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedSelect(Erasure.scala:696)
[error] dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:2639)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2730)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedTyped(Erasure.scala:658)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2674)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2731)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:2916)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedTypeApply(Erasure.scala:822)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2688)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2731)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:2916)
[error] dotty.tools.dotc.typer.Typer.typedValDef(Typer.scala:2078)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedValDef(Erasure.scala:908)
[error] dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:2643)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2730)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:2822)
[error] dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:2872)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedStats(Erasure.scala:1068)
[error] dotty.tools.dotc.typer.Typer.typedBlockStats(Typer.scala:1012)
[error] dotty.tools.dotc.typer.Typer.typedBlock(Typer.scala:1016)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2677)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2731)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2793)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.typer.Typer.typedInlined(Typer.scala:1769)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedInlined(Erasure.scala:899)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2691)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2731)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:2916)
[error] dotty.tools.dotc.typer.Typer.typedValDef(Typer.scala:2078)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedValDef(Erasure.scala:908)
[error] dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:2643)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2730)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:2822)
[error] dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:2872)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedStats(Erasure.scala:1068)
[error] dotty.tools.dotc.typer.Typer.typedBlockStats(Typer.scala:1012)
[error] dotty.tools.dotc.typer.Typer.typedBlock(Typer.scala:1016)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2677)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2731)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedTyped(Erasure.scala:658)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2674)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2731)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.typer.Typer.typedInlined(Typer.scala:1769)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedInlined(Erasure.scala:899)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2691)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2731)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedTyped(Erasure.scala:658)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2674)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2731)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2793)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.typer.Typer.typedInlined(Typer.scala:1769)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedInlined(Erasure.scala:899)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2691)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2731)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:2916)
[error] dotty.tools.dotc.typer.Typer.typedValDef(Typer.scala:2078)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedValDef(Erasure.scala:908)
[error] dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:2643)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2730)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:2822)
[error] dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:2872)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedStats(Erasure.scala:1068)
[error] dotty.tools.dotc.typer.Typer.typedBlockStats(Typer.scala:1012)
[error] dotty.tools.dotc.typer.Typer.typedBlock(Typer.scala:1016)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2677)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2731)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2793)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.typer.Typer.typedInlined(Typer.scala:1769)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedInlined(Erasure.scala:899)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2691)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2731)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedTyped(Erasure.scala:658)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2674)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2731)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:2916)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedTypeApply(Erasure.scala:822)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2688)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2731)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:2916)
[error] dotty.tools.dotc.typer.Typer.typedValDef(Typer.scala:2078)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedValDef(Erasure.scala:908)
[error] dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:2643)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2730)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:2822)
[error] dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:2872)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedStats(Erasure.scala:1068)
[error] dotty.tools.dotc.typer.Typer.typedBlockStats(Typer.scala:1012)
[error] dotty.tools.dotc.typer.Typer.typedBlock(Typer.scala:1016)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2677)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2731)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedTyped(Erasure.scala:658)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2674)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2731)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.typer.Typer.typedInlined(Typer.scala:1769)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedInlined(Erasure.scala:899)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2691)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2731)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:2916)
[error] dotty.tools.dotc.typer.Typer.typedValDef(Typer.scala:2078)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedValDef(Erasure.scala:908)
[error] dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:2643)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2730)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:2822)
[error] dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:2872)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedStats(Erasure.scala:1068)
[error] dotty.tools.dotc.typer.Typer.typedBlockStats(Typer.scala:1012)
[error] dotty.tools.dotc.typer.Typer.typedBlock(Typer.scala:1016)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2677)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2731)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedTyped(Erasure.scala:658)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2674)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2731)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.typer.Typer.typedInlined(Typer.scala:1769)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedInlined(Erasure.scala:899)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2691)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2731)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedTyped(Erasure.scala:658)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2674)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2731)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2793)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.typer.Typer.typedInlined(Typer.scala:1769)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedInlined(Erasure.scala:899)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2691)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2731)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.typer.Typer.typedInlined(Typer.scala:1769)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedInlined(Erasure.scala:899)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2691)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2731)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2793)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.typer.Typer.typedInlined(Typer.scala:1769)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedInlined(Erasure.scala:899)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2691)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2731)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:2849)
[error] dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:2872)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedStats(Erasure.scala:1068)
[error] dotty.tools.dotc.typer.Typer.typedBlockStats(Typer.scala:1012)
[error] dotty.tools.dotc.typer.Typer.typedBlock(Typer.scala:1016)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2677)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2731)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:2916)
[error] dotty.tools.dotc.typer.Typer.typedBlock(Typer.scala:1018)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2677)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2731)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:2916)
[error] dotty.tools.dotc.typer.Typer.$anonfun$34(Typer.scala:2142)
[error] dotty.tools.dotc.typer.PrepareInlineable$.dropInlineIfError(PrepareInlineable.scala:225)
[error] dotty.tools.dotc.typer.Typer.typedDefDef(Typer.scala:2142)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedDefDef(Erasure.scala:955)
[error] dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:2646)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2730)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:2822)
[error] dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:2872)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedStats(Erasure.scala:1068)
[error] dotty.tools.dotc.typer.Typer.typedClassDef(Typer.scala:2328)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedClassDef(Erasure.scala:1057)
[error] dotty.tools.dotc.typer.Typer.typedTypeOrClassDef$2(Typer.scala:2657)
[error] dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:2661)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2730)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:2822)
[error] dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:2872)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedStats(Erasure.scala:1068)
[error] dotty.tools.dotc.typer.Typer.typedPackageDef(Typer.scala:2451)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2702)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2731)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:118)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2796)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2800)
[error] dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:2916)
[error] dotty.tools.dotc.transform.Erasure.run(Erasure.scala:132)
[error] dotty.tools.dotc.core.Phases$Phase.runOn$$anonfun$1(Phases.scala:303)
[error] scala.collection.immutable.List.map(List.scala:246)
[error] dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:304)
[error] dotty.tools.dotc.Run.runPhases$4$$anonfun$4(Run.scala:205)
[error] scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error] scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error] scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1323)
[error] dotty.tools.dotc.Run.runPhases$5(Run.scala:215)
[error] dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:223)
[error] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
[error] dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:67)
[error] dotty.tools.dotc.Run.compileUnits(Run.scala:230)
[error] dotty.tools.dotc.Run.compileSources(Run.scala:166)
[error] dotty.tools.dotc.Run.compile(Run.scala:150)
[error] dotty.tools.dotc.Driver.doCompile(Driver.scala:39)
[error] dotty.tools.xsbt.CompilerBridgeDriver.run(CompilerBridgeDriver.java:88)
[error] dotty.tools.xsbt.CompilerBridge.run(CompilerBridge.java:22)
[error] sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:91)
[error] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$7(MixedAnalyzingCompiler.scala:186)
[error] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
[error] sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:241)
[error] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4(MixedAnalyzingCompiler.scala:176)
[error] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4$adapted(MixedAnalyzingCompiler.scala:157)
[error] sbt.internal.inc.JarUtils$.withPreviousJar(JarUtils.scala:239)
[error] sbt.internal.inc.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:157)
[error] sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:204)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1(IncrementalCompilerImpl.scala:528)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1$adapted(IncrementalCompilerImpl.scala:528)
[error] sbt.internal.inc.Incremental$.$anonfun$apply$5(Incremental.scala:174)
[error] sbt.internal.inc.Incremental$.$anonfun$apply$5$adapted(Incremental.scala:172)
[error] sbt.internal.inc.Incremental$$anon$2.run(Incremental.scala:457)
[error] sbt.internal.inc.IncrementalCommon$CycleState.next(IncrementalCommon.scala:116)
[error] sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:56)
[error] sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:52)
[error] sbt.internal.inc.IncrementalCommon.cycle(IncrementalCommon.scala:261)
[error] sbt.internal.inc.Incremental$.$anonfun$incrementalCompile$8(Incremental.scala:412)
[error] sbt.internal.inc.Incremental$.withClassfileManager(Incremental.scala:499)
[error] sbt.internal.inc.Incremental$.incrementalCompile(Incremental.scala:399)
[error] sbt.internal.inc.Incremental$.apply(Incremental.scala:166)
[error] sbt.internal.inc.IncrementalCompilerImpl.compileInternal(IncrementalCompilerImpl.scala:528)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileIncrementally$1(IncrementalCompilerImpl.scala:482)
[error] sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:332)
[error] sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:420)
[error] sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:137)
[error] sbt.Defaults$.compileIncrementalTaskImpl(Defaults.scala:2346)
[error] sbt.Defaults$.$anonfun$compileIncrementalTask$2(Defaults.scala:2303)
[error] sbt.internal.io.Retry$.apply(Retry.scala:46)
[error] sbt.internal.io.Retry$.apply(Retry.scala:28)
[error] sbt.internal.io.Retry$.apply(Retry.scala:23)
[error] sbt.internal.server.BspCompileTask$.compute(BspCompileTask.scala:31)
[error] sbt.Defaults$.$anonfun$compileIncrementalTask$1(Defaults.scala:2299)
[error] scala.Function1.$anonfun$compose$1(Function1.scala:49)
[error] sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62)
[error] sbt.std.Transform$$anon$4.work(Transform.scala:68)
[error] sbt.Execute.$anonfun$submit$2(Execute.scala:282)
[error] sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:23)
[error] sbt.Execute.work(Execute.scala:291)
[error] sbt.Execute.$anonfun$submit$1(Execute.scala:282)
[error] sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
[error] sbt.CompletionService$$anon$2.call(CompletionService.scala:64)
[error] java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
[error] java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
[error] java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[error] java.base/java.lang.Thread.run(Thread.java:834)
[error]            
[error] stack trace is suppressed; run last Test / compileIncremental for the full output
[error] (Test / compileIncremental) java.lang.AssertionError: assertion failed: asTerm called on not-a-Term val <none>
[error] Total time: 0 s, completed May 5, 2021, 1:34:49 PM
[IJ]
@odersky
Copy link
Contributor

odersky commented May 5, 2021

We might have to disable mirror generation for local classes

@bishabosha
Copy link
Member

bishabosha commented Aug 27, 2021

I think the cause of this bug is just that the generated Mirror type does not preserve prefixes when the summoned type is path dependent - i.e given this example of an inner class sealed hierarchy:

class Outer {
  sealed trait Item
  object Item {
    case class A() extends Item
    case class B() extends Item
  }
}

@main def hello: Unit = {

  val o = new Outer()

  val mItem = summon[Mirror.Of[o.Item]] // summon path dependent Mirror

}

mItem has a type where the MirroredElemTypes does not preserve any prefixes (note Outer.Item.A, not o.Item.A):

val mItem:
  (
    deriving.Mirror{
      MirroredType = o.Item; MirroredMonoType = o.Item;
        MirroredElemTypes <: Tuple
    }
    &
    scala.deriving.Mirror.Sum{
      MirroredMonoType = o.Item; MirroredType = o.Item;
        MirroredLabel = ("Item" : String)
    }
  ){
    MirroredElemTypes = (Outer.Item.A, Outer.Item.B);
      MirroredElemLabels = (("A" : String), ("B" : String))
  }

 =
  o.Item.$asInstanceOf[...]

so when we project on the MirroredElemTypes we start getting ThisType which causes requirements for outer accessors:

@main def hello: Unit = {

  val o = new Outer()

  val mItem = summon[Mirror.Of[o.Item]]
  type oItemA = Tuple.Head[mItem.MirroredElemTypes]
  val mA = summon[Mirror.Of[oItemA]]

}

generates:

@main def hello: Unit = {
  ...
  type oItemA = Outer.Item.A
  val mA: (...) = 
    Outer.this.Item.this.A.$asInstanceOf[...] // note the outer accessor here
}

the Outer.this.Item then tries to call the non-existant outer accessor on the top level definition wrapper object, causing the crash at erasure

bishabosha added a commit to dotty-staging/dotty that referenced this issue Aug 27, 2021
@milessabin
Copy link
Contributor

We worked through a load of similar issues in shapeless 2 on Scala 2, and in the end people came to expect that shapeless's Generic would do the right thing even in the presence of non-trivial prefixes. It would be a shame to have things go backwards in Scala 3.

@bishabosha
Copy link
Member

I'm currently trying a fix to splice the right prefix in

bishabosha added a commit to dotty-staging/dotty that referenced this issue Sep 3, 2021
bishabosha added a commit to dotty-staging/dotty that referenced this issue Sep 3, 2021
add a new method healPrefix which converts
ThisTypes wrapping a Module into a TermRef
and subsitutes ThisType of enclosing classes
with matching parts of the prefix of the
summoned mirror

fixes scala#12328
fixes scala#11174
bishabosha added a commit to dotty-staging/dotty that referenced this issue Mar 2, 2022
add a new method healPrefix which converts
ThisTypes wrapping a Module into a TermRef
and subsitutes ThisType of enclosing classes
with matching parts of the prefix of the
summoned mirror

fixes scala#12328
fixes scala#11174
bishabosha added a commit to dotty-staging/dotty that referenced this issue Apr 1, 2022
add a new method healPrefix which converts
ThisTypes wrapping a Module into a TermRef
and subsitutes ThisType of enclosing classes
with matching parts of the prefix of the
summoned mirror

fixes scala#12328
fixes scala#11174
bishabosha added a commit to dotty-staging/dotty that referenced this issue Apr 1, 2022
add a new method healPrefix which converts
ThisTypes wrapping a Module into a TermRef
and subsitutes ThisType of enclosing classes
with matching parts of the prefix of the
summoned mirror

fixes scala#12328
fixes scala#11174
@odersky odersky assigned bishabosha and unassigned odersky Apr 3, 2022
bishabosha added a commit to dotty-staging/dotty that referenced this issue May 16, 2022
add a new method healPrefix which converts
ThisTypes wrapping a Module into a TermRef
and subsitutes ThisType of enclosing classes
with matching parts of the prefix of the
summoned mirror

fixes scala#12328
fixes scala#11174
bishabosha added a commit to dotty-staging/dotty that referenced this issue May 16, 2022
add a new method healPrefix which converts
ThisTypes wrapping a Module into a TermRef
and subsitutes ThisType of enclosing classes
with matching parts of the prefix of the
summoned mirror

fixes scala#12328
fixes scala#11174
bishabosha added a commit to dotty-staging/dotty that referenced this issue May 18, 2022
add a new method healPrefix which converts
ThisTypes wrapping a Module into a TermRef
and subsitutes ThisType of enclosing classes
with matching parts of the prefix of the
summoned mirror

fixes scala#12328
fixes scala#11174

use do not force symbols

add safety for unknown type

experiment with TypeOps.refineUsingParent

support hk types

rebase fixes

disable for scala2x generic product nonstatic

simplify a bit

add more tests

find common prefix of and/or types

refine implementation based on runtime tests

experiment with supertypes

remove prefix splice in companionref
@bishabosha
Copy link
Member

bishabosha commented Aug 3, 2022

We might have to disable mirror generation for local classes

mirror synthesis has worked with local case classes since 3.0.0 - is it ok to remove that?

@odersky
Copy link
Contributor

odersky commented Aug 4, 2022

mirror synthesis has worked with local case classes since 3.0.0 - is it ok to remove that?

I don't know. Probably not. But somebody will have to fix the issues otherwise.

@bishabosha
Copy link
Member

ill see where I get

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment