Giter VIP home page Giter VIP logo

miniboxing / miniboxing-plugin Goto Github PK

View Code? Open in Web Editor NEW
120.0 12.0 17.0 23.31 MB

Miniboxing is a program transformation that improves the performance of Scala generics when used with primitive types. It can speed up generic collections by factors between 1.5x and 22x, while maintaining bytecode duplication to a minimum. You can easily add miniboxing to your sbt project:

Home Page: http://scala-miniboxing.org

License: Other

Scala 49.74% Java 49.98% Shell 0.28%
generics optimization jvm specialization arrays collections user-defined-structures

miniboxing-plugin's Introduction

Miniboxing Logo

Miniboxing Plugin for Scala

Miniboxing is a Scala compiler transformation that improves the performance of generics for primitive numeric types. Unlike specialization, miniboxing reduces the amount of generated bytecode without sacrificing execution speed, therefore being capable of transforming the Scala collections hierachy.

Gitter Badge Travis Badge Codacy Badge Codecov Badge

Why use Miniboxing?

Short answer: because it matches the performance of specialization, without the bytecode blowup. For the Tuple3 class:

case class Tuple3[@specialized +T1, @specialized +T2, @specialized +T3](_1: T1, _2: T2, _3: T3)

Specialization generates 1000 classes. Just change @specialized to @miniboxed and you get only 8 classes.

Long answer: Aside from reducing the bytecode size, the miniboxing technique improves several other aspects of specialization:

  • miniboxing-specialized classes don't inherit generic fields (see SI-3585);
  • miniboxing-specialized classes can inherit from their miniboxing-specialized parents (see SI-8405 and this restriction).

To see the benchmarks we performed, have a look at the OOPSLA 2013 paper we just prepared. They include performance evaluations, bytecode size comparisons and many more. Also, the docs directory contains a series of papers and presentations which explain many aspects of the miniboxing transformation.

Using the Plugin

At this point, the miniboxing plugin is not production-ready, although it can compile spire. However, we do publish a nightly maven artifact on Sonatype, so anyone can try the current transformation. To get started, have a look at the example project we prepared.

Mind the gap: there are still many bugs and known limitations, so you're in for a thrill! Also, don't hesitate to add bugs to the tracker, good reductions that can be easily reproduced are highly appreciated!

Hacking the Plugin

The wiki is a good place to start looking into installing, testing, benchmarking and hacking on the miniboxing plugin. Also have a look at the docs directory, which contains some good resources.

The development branches are:

  • master is always stable, usually outdated
  • wip is pretty stable, usually has the last resonably stable developments
  • topic/erasure-rebase contains the most recent developments, but expect tests to be broken most of the time

Repository organization

  • wip is the working branch, most current version of the plugin
  • master is usually a bit behind wip, but should be stable (alpha-stable, not production-ready!)
  • sbt is used for compilation and testing
  • the repository contains several sbt sub-projects:
    • components/plugin - the actual Scala compiler plugin
    • components/runtime - the runtime support for the transformed code
    • components/classloader - the classloader used for runtime class specialization
    • tests/benchmarks - the benchmarks for the project
    • tests/correctness - the tests for the plugin transformation
    • docs - documents released as the development goes on

Questions?

If you have any question, you can contact me at vlad dot ureche at epfl dot ch.

miniboxing-plugin's People

Contributors

blaisorblade avatar ctalau avatar darkdimius avatar igormoreno avatar ilya-klyuchnikov avatar lastland avatar melodylucid avatar milosstojanovic avatar nicolasstucki avatar roldak avatar stevepeak avatar vladureche avatar xeno-by avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

miniboxing-plugin's Issues

Need outerEnv + tutorial

Example why:

$ cat gh-bug-18-1.scala 
package miniboxing.tests.compile
import miniboxing.plugin.minispec

abstract class Dist1[@minispec A] {
  def apply(a: A): A

  def iterateUntil() = new Dist1[A] {
    def apply(a: A): A = ???
  }
}

$ ../mb-scalac gh-bug-18-1.scala -Xprint:minibox
[[syntax trees at end of                   minibox]] // gh-bug-18.scala
package miniboxing.tests.compile {
  abstract trait Dist1[@miniboxing.plugin.minispec A >: Nothing <: Any] extends Object {
    def apply(a: A): A;
    def iterateUntil(): miniboxing.tests.compile.Dist1[A];
    def apply_J(Dist1_A_TypeTag: Byte, a: Long): Long
  };
  abstract class Dist1_J[Asp >: Nothing <: Any] extends Object with miniboxing.tests.compile.Dist1[Asp] {
    def <init>(Dist1_A_TypeTag: Byte): miniboxing.tests.compile.Dist1_J[Asp] = {
      Dist1_J.super.<init>();
      ()
    };
    def apply(a: Asp): Asp;
    def apply_J(Dist1_A_TypeTag: Byte, a: Long): Long;
    def iterateUntil(): miniboxing.tests.compile.Dist1[Asp] = {
      final class $anon extends miniboxing.tests.compile.Dist1_L[Asp] {
        def <init>(): anonymous class $anon = {
          $anon.super.<init>();
          ()
        };
        def apply(a: Asp): Asp = scala.this.Predef.???()
      };
      new anonymous class $anon()
    };
    <paramaccessor> private[this] val Dist1_A_TypeTag: Byte = _
  };
  abstract class Dist1_L[Asp >: Nothing <: Any] extends Object with miniboxing.tests.compile.Dist1[Asp] {
    def <init>(): miniboxing.tests.compile.Dist1_L[Asp] = {
      Dist1_L.super.<init>();
      ()
    };
    def apply(a: Asp): Asp;
    def apply_J(Dist1_A_TypeTag: Byte, a: Long): Long;
    def iterateUntil(): miniboxing.tests.compile.Dist1[Asp] = {
      final class $anon extends miniboxing.tests.compile.Dist1_L[Asp] {
        def <init>(): anonymous class $anon = {
          $anon.super.<init>();
          ()
        };
        def apply(a: Asp): Asp = scala.this.Predef.???()
      };
      new anonymous class $anon()
    }
  }
}

Note both $anon-s inherit from Dist1_L[Asp] because they have no idea Asp is specialized...

Crasher

sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ cat mb_spire_5.scala
package miniboxing.tests.compile
import miniboxing.plugin.minispec
import scala.annotation.tailrec

abstract class Dist[@minispec A] {
  def apply(a: A): A

  def iterateUntil(): Dist[A] = new Dist[A] {
    def loop(a: A): A = a
    def apply(a: A): A = loop(a)
  }
}
sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ ../mb-scalac mb_spire_5.scala 
mb_spire_5.scala:9: error: Parameter type in structural refinement may not refer to an abstract type defined outside that refinement
    def loop(a: A): A = a
             ^

     while compiling: mb_spire_5.scala
        during phase: minibox
     library version: version 2.10.3-20130625-164027-d22e8d282c
    compiler version: version 2.10.3-20130627-153946-54cb6af7db
  reconstructed args: -bootclasspath /home/sun/workspace/dev/miniboxing-plugin//components/runtime/target/scala-2.10/miniboxing-runtime_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar -Xplugin:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: This(anonymous class $anon)
              symbol: anonymous class $anon (flags: final)
   symbol definition: final class $anon extends Dist[Asp]
                 tpe: miniboxing.tests.compile.Dist[Asp]{def loop(a: Asp): Asp}
       symbol owners: anonymous class $anon -> method iterateUntil_J -> class Dist_J -> package compile
      context owners: constructor $anon -> anonymous class $anon -> method iterateUntil_J -> class Dist_J -> package compile

== Enclosing template or block ==

DefDef( // def <init>(): miniboxing.tests.compile.Dist[Asp]{def loop(a: Asp): Asp}
  <method> <triedcooking>
  "<init>"
  []
  List(Nil)
  <tpt> // tree.tpe=miniboxing.tests.compile.Dist[Asp]{def loop(a: Asp): Asp}
  Block( // tree.tpe=Unit
    Apply( // def <init>(): miniboxing.tests.compile.Dist[A] in trait Dist, tree.tpe=miniboxing.tests.compile.Dist[A]
      $anon.super."<init>" // def <init>(): miniboxing.tests.compile.Dist[A] in trait Dist, tree.tpe=()miniboxing.tests.compile.Dist[A]
      Nil
    )
    ()
  )
)

== Expanded type of tree ==

TypeRef(TypeSymbol(final class $anon extends Dist[Asp]))

unhandled exception while transforming mb_spire_5.scala
error: uncaught exception during compilation: java.util.NoSuchElementException
error: java.util.NoSuchElementException: key not found: constructor Object
    at scala.collection.MapLike$class.default(MapLike.scala:228)
    at scala.collection.AbstractMap.default(Map.scala:58)
    at scala.collection.mutable.HashMap.apply(HashMap.scala:64)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.rewiredMethodCall(MiniboxTreeTransformation.scala:521)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:356)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1238)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:458)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1235)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1233)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1232)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:458)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:174)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:174)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:174)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:458)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1238)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:458)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1235)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1233)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1232)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:190)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:174)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:174)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:174)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:458)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:144)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:141)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:141)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:94)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:94)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxPhase$class.afterMinibox(Minibox.scala:107)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:94)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:87)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Exception in thread "main" java.util.NoSuchElementException: key not found: constructor Object
    at scala.collection.MapLike$class.default(MapLike.scala:228)
    at scala.collection.AbstractMap.default(Map.scala:58)
    at scala.collection.mutable.HashMap.apply(HashMap.scala:64)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.rewiredMethodCall(MiniboxTreeTransformation.scala:521)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:356)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1238)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:458)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1235)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1233)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1232)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:458)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:174)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:174)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:174)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:458)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1238)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:458)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1235)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1233)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1232)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:190)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:174)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:174)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:174)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:458)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:144)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:141)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:141)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:94)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:94)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxPhase$class.afterMinibox(Minibox.scala:107)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:94)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:87)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Tailcalls error - due to labeldef nesting and unboxing

sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ cat mb_spire_8.scala
package miniboxing.tests.compile
import miniboxing.plugin.minispec
import scala.annotation.tailrec

class TailCallsCrasher3[@minispec A] {
  @tailrec final def euclid2(a: A, b: A): A = a match {
    case _ => euclid2(a, b)
  }
}
sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ ../mb-scalac mb_spire_8.scala 
error: 
     while compiling: mb_spire_8.scala
        during phase: minibox
     library version: version 2.10.3-20130625-164027-d22e8d282c
    compiler version: version 2.10.3-20130627-153946-54cb6af7db
  reconstructed args: -bootclasspath /home/sun/workspace/dev/miniboxing-plugin//components/runtime/target/scala-2.10/miniboxing-runtime_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar -Xplugin:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: term euclid2_J
              symbol: method euclid2_J in class TailCallsCrasher3_J (flags: <method> final <triedcooking>)
   symbol definition: final def euclid2_J(val TailCallsCrasher3_A_TypeTag: Byte,a: Long,b: Long): Long
       symbol owners: method euclid2_J -> class TailCallsCrasher3_J -> package compile
      context owners: method euclid2_J -> class TailCallsCrasher3_J -> package compile

== Enclosing template or block ==

Apply( // final def minibox2box[T](l: Long,tag: Byte): T in object MiniboxConversions, tree.tpe=Asp
  TypeApply( // final def minibox2box[T](l: Long,tag: Byte): T in object MiniboxConversions, tree.tpe=(l: Long, tag: Byte)Asp
    MiniboxConversions.this."minibox2box" // final def minibox2box[T](l: Long,tag: Byte): T in object MiniboxConversions, tree.tpe=[T](l: Long, tag: Byte)T
    <tpt> // tree.tpe=Asp
  )
  // 2 arguments
  "b" // b: Long, tree.tpe=Long
  "TailCallsCrasher3_A_TypeTag" // val TailCallsCrasher3_A_TypeTag: Byte, tree.tpe=Byte
)

uncaught exception during compilation: scala.reflect.internal.Types$TypeError
error: scala.reflect.internal.Types$TypeError: type mismatch;
 found   : A
 required: Asp
    at scala.tools.nsc.typechecker.Contexts$Context.issueCommon(Contexts.scala:397)
    at scala.tools.nsc.typechecker.Contexts$Context.issue(Contexts.scala:401)
    at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueTypeError(ContextErrors.scala:103)
    at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueNormalTypeError(ContextErrors.scala:87)
    at scala.tools.nsc.typechecker.ContextErrors$TyperContextErrors$TyperErrorGen$.AdaptTypeError(ContextErrors.scala:195)
    at scala.tools.nsc.typechecker.Typers$Typer.fallBack$1(Typers.scala:1277)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1282)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5621)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:389)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5682)
    at scala.tools.nsc.typechecker.Typers$Typer.typedLabelDef(Typers.scala:2340)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5547)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:284)
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:2925)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer.typedBlock(Typers.scala:2429)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typerWithLocalContext(Typers.scala:507)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:239)
    at scala.tools.nsc.typechecker.Typers$Typer.transformedOrTyped(Typers.scala:5806)
    at scala.tools.nsc.typechecker.Typers$Typer.typedDefDef(Typers.scala:2254)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5530)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:251)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5665)
    at miniboxing.plugin.Duplicators.retyped(Duplicators.scala:42)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$46.apply(MiniboxTreeTransformation.scala:727)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$46.apply(MiniboxTreeTransformation.scala:727)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.beforePhase(SymbolTable.scala:215)
    at miniboxing.plugin.MiniboxPhase$class.beforeMinibox(Minibox.scala:110)
    at miniboxing.plugin.Minibox$Component$.beforeMinibox(Minibox.scala:68)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.duplicateBody(MiniboxTreeTransformation.scala:727)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.specializeDefDefBody(MiniboxTreeTransformation.scala:693)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:224)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:174)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:174)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:174)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:458)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:144)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:141)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:141)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:94)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:94)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxPhase$class.afterMinibox(Minibox.scala:107)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:94)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:87)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Exception in thread "main" scala.reflect.internal.Types$TypeError: type mismatch;
 found   : A
 required: Asp
    at scala.tools.nsc.typechecker.Contexts$Context.issueCommon(Contexts.scala:397)
    at scala.tools.nsc.typechecker.Contexts$Context.issue(Contexts.scala:401)
    at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueTypeError(ContextErrors.scala:103)
    at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueNormalTypeError(ContextErrors.scala:87)
    at scala.tools.nsc.typechecker.ContextErrors$TyperContextErrors$TyperErrorGen$.AdaptTypeError(ContextErrors.scala:195)
    at scala.tools.nsc.typechecker.Typers$Typer.fallBack$1(Typers.scala:1277)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1282)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5621)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:389)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5682)
    at scala.tools.nsc.typechecker.Typers$Typer.typedLabelDef(Typers.scala:2340)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5547)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:284)
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:2925)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer.typedBlock(Typers.scala:2429)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typerWithLocalContext(Typers.scala:507)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:239)
    at scala.tools.nsc.typechecker.Typers$Typer.transformedOrTyped(Typers.scala:5806)
    at scala.tools.nsc.typechecker.Typers$Typer.typedDefDef(Typers.scala:2254)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5530)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:251)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5665)
    at miniboxing.plugin.Duplicators.retyped(Duplicators.scala:42)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$46.apply(MiniboxTreeTransformation.scala:727)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$46.apply(MiniboxTreeTransformation.scala:727)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.beforePhase(SymbolTable.scala:215)
    at miniboxing.plugin.MiniboxPhase$class.beforeMinibox(Minibox.scala:110)
    at miniboxing.plugin.Minibox$Component$.beforeMinibox(Minibox.scala:68)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.duplicateBody(MiniboxTreeTransformation.scala:727)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.specializeDefDefBody(MiniboxTreeTransformation.scala:693)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:224)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:174)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:174)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:174)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:458)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:144)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:141)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:141)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:94)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:94)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxPhase$class.afterMinibox(Minibox.scala:107)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:94)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:87)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Crash in uncurry with tpe == null

File:

package benchmarks
import miniboxing.plugin.minispec

class C[@minispec T](tail: C[T]) {
  // WORKS:
  //def length: Int = tail.length
  // CRASHES:
  def length: Int = if (tail!=null) tail.length else 0
}

Output:

$ build/quick/bin/scalac -Xplugin:/home/sun/workspace/dev/miniboxing-plugin/components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar -cp /home/sun/workspace/dev/miniboxing-plugin/components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin/components/runtime/target/scala-2.10/miniboxing-runime_2.10-0.1-SNAPSHOT.jar ../miniboxing-plugin/test/benchmarks/C.scala -d mboxing -Xprint:minibox -Xprint:specialize
Specializing class C...
-------------- WIDENDED CLAZZ ----------------
C [T]Object {
  private[this] val tail: benchmarks.C[T]
  def <init>(tail: benchmarks.C[T],val T_TypeTag: Byte): benchmarks.C[T]
  def length: Int
  private[this] val T_TypeTag: Byte
  def length_J: Int
}
-------------- INTERFACE ----------------
C_interface [Tsp]AnyRef {
  def length: Int
  def length_J: Int
}
-------------- ORIGINAL CLASS ----------------
C [T]Object
        with benchmarks.C_interface[T] {
  private[this] val tail: benchmarks.C[T]
  def <init>(tail: benchmarks.C[T],val T_TypeTag: Byte): benchmarks.C[T]
  def length: Int
  private[this] val T_TypeTag: Byte
  def length_J: Int
}
------------ SPEC CLASS ------------
C_J [Tsp]Object
        with benchmarks.C_interface[Tsp] {
  private[this] val T_TypeTag: Byte
  private[this] val tail: benchmarks.C_interface[Long]
  def <init>(tail: benchmarks.C_interface[Long],val T_TypeTag: Byte): benchmarks.C_J[Tsp]
  def length_J: Int
  def length: Int
}
------------ SPEC CLASS ------------
C_L [Tsp]Object
        with benchmarks.C_interface[Tsp] {
  private[this] val T_TypeTag: Byte
  private[this] val tail: benchmarks.C_interface[Tsp]
  def <init>(tail: benchmarks.C_interface[Tsp],val T_TypeTag: Byte): benchmarks.C_L[Tsp]
  def length_J: Int
  def length: Int
}
-------------- TEMPLATE MEMBERS ----------------
benchmarks.C.<init>
benchmarks.C.length
benchmarks.C.tail
collected benchmarks.C.tail
collected benchmarks.C.<init>
collected benchmarks.C.length
method length_J ===> ForwardTo(benchmarks.C.length)
method length ===> Interface()
method length_J ===> Interface()
benchmarks.C_L.tail
constructor C_L ===> SpecializedImplementationOf2(benchmarks.C.<init>)
benchmarks.C_L.<init>
method length_J ===> ForwardTo(benchmarks.C_L.length)
method length ===> SpecializedImplementationOf2(benchmarks.C.length)
benchmarks.C_L.length
benchmarks.C_J.tail
constructor C_J ===> SpecializedImplementationOf2(benchmarks.C.<init>)
benchmarks.C_J.<init>
method length_J ===> SpecializedImplementationOf2(benchmarks.C.length)
benchmarks.C_J.length_J
method length ===> ForwardTo(benchmarks.C_J.length_J)
[[syntax trees at end of                   minibox]] // C.scala
package benchmarks {
  class C[@miniboxing.plugin.minispec T >: Nothing <: Any] extends scala.AnyRef {
    <paramaccessor> private[this] val tail: benchmarks.C[T] = _;
    def <init>(tail: benchmarks.C[T], T_TypeTag: Byte): benchmarks.C[T] = {
      C.super.<init>();
      ()
    };
    def length: Int = if (C.this.tail.!=(null))
      C.this.tail.length
    else
      0;
    <synthetic> <paramaccessor> <synchronized> private[this] val T_TypeTag: Byte = _;
    <synchronized> def length_J: Int = C.this.length
  };
  abstract trait C_interface[Tsp >: Nothing <: Any] extends Object {
    <synchronized> def length: Int;
    <synchronized> def length_J: Int
  };
  class C_L[Tsp >: Nothing <: Any] extends Object with benchmarks.C_interface[Tsp] {
    <synthetic> <paramaccessor> <synchronized> private[this] val T_TypeTag: Byte = _;
    <paramaccessor> <synchronized> private[this] val tail: benchmarks.C_interface[Tsp] = _;
    <synchronized> def <init>(tail: benchmarks.C_interface[Tsp], T_TypeTag: Byte): benchmarks.C_L[Tsp] = {
      C_L.super.<init>();
      ()
    };
    <synchronized> def length_J: Int = C_L.this.length;
    <synchronized> def length(): Int = if (C_L.this.tail.!=(null))
      C_L.this.tail.length
    else
      0
  };
  class C_J[Tsp >: Nothing <: Any] extends Object with benchmarks.C_interface[Tsp] {
    <synthetic> <paramaccessor> <synchronized> private[this] val T_TypeTag: Byte = _;
    <paramaccessor> <synchronized> private[this] val tail: benchmarks.C_interface[Long] = _;
    <synchronized> def <init>(tail: benchmarks.C_interface[Long], T_TypeTag: Byte): benchmarks.C_J[Tsp] = {
      C_J.super.<init>();
      ()
    };
    <synchronized> def length_J(): Int = if (C_J.this.tail.!=(null))
      C_J.this.tail.length_J
    else
      0;
    <synchronized> def length: Int = C_J.this.length_J
  }
}

error: 
     while compiling: ../miniboxing-plugin/test/benchmarks/C.scala
        during phase: uncurry
     library version: version 2.10.0-20121014-154054-f3550d25e0
    compiler version: version 2.10.0-20121014-154054-f3550d25e0
  reconstructed args: -Xprint:minibox -Xprint:specialize -d mboxing -classpath /home/sun/workspace/dev/miniboxing-plugin/components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin/components/runtime/target/scala-2.10/miniboxing-runime_2.10-0.1-SNAPSHOT.jar -Xplugin:/home/sun/workspace/dev/miniboxing-plugin/components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: term benchmarks
              symbol: package benchmarks (flags: final <module> <package> <java> <triedcooking>)
   symbol definition: final package benchmarks
                 tpe: <notype>
       symbol owners: package benchmarks -> package <root>
      context owners: method length -> class C_L -> package benchmarks

== Enclosing template or block ==

DefDef( // def length: Int in class C_L
  <method> <triedcooking> <synchronized>
  "length"
  []
  List(Nil)
  <tpt> // tree.tpe=Int
  If( // tree.tpe=Int
    Apply( // final def !=(x$1: AnyRef): Boolean in class Object, tree.tpe=Boolean
      C_L.this."tail"."$bang$eq" // final def !=(x$1: AnyRef): Boolean in class Object, tree.tpe=(x$1: Object)Boolean
      null
    )
    C_L.this."tail"."length" // def length: Int in trait C_interface
    0
  )
)

== Expanded type of tree ==

<notype>

uncaught exception during compilation: java.lang.AssertionError
error: java.lang.AssertionError: assertion failed: 
     while compiling: ../miniboxing-plugin/test/benchmarks/C.scala
        during phase: uncurry
     library version: version 2.10.0-20121014-154054-f3550d25e0
    compiler version: version 2.10.0-20121014-154054-f3550d25e0
  reconstructed args: -Xprint:minibox -Xprint:specialize -d mboxing -classpath /home/sun/workspace/dev/miniboxing-plugin/components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin/components/runtime/target/scala-2.10/miniboxing-runime_2.10-0.1-SNAPSHOT.jar -Xplugin:/home/sun/workspace/dev/miniboxing-plugin/components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: term benchmarks
              symbol: package benchmarks (flags: final <module> <package> <java> <triedcooking>)
   symbol definition: final package benchmarks
                 tpe: <notype>
       symbol owners: package benchmarks -> package <root>
      context owners: method length -> class C_L -> package benchmarks

== Enclosing template or block ==

DefDef( // def length: Int in class C_L
  <method> <triedcooking> <synchronized>
  "length"
  []
  List(Nil)
  <tpt> // tree.tpe=Int
  If( // tree.tpe=Int
    Apply( // final def !=(x$1: AnyRef): Boolean in class Object, tree.tpe=Boolean
      C_L.this."tail"."$bang$eq" // final def !=(x$1: AnyRef): Boolean in class Object, tree.tpe=(x$1: Object)Boolean
      null
    )
    C_L.this."tail"."length" // def length: Int in trait C_interface
    0
  )
)

== Expanded type of tree ==

<notype>

C_L.this.tail.length tpe is null
    at scala.Predef$.assert(Predef.scala:179)
    at scala.tools.nsc.Global.assert(Global.scala:238)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.mainTransform(UnCurry.scala:669)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.transform(UnCurry.scala:122)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.transform(UnCurry.scala:82)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1198)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2816)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.mainTransform(UnCurry.scala:658)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.transform(UnCurry.scala:122)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.transform(UnCurry.scala:82)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1193)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1191)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2855)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1190)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2816)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.scala$tools$nsc$transform$UnCurry$UnCurryTransformer$$super$transform(UnCurry.scala:598)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer$$anonfun$12.apply(UnCurry.scala:598)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer$$anonfun$12.apply(UnCurry.scala:581)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.withNeedLift$1(UnCurry.scala:534)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.mainTransform(UnCurry.scala:580)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.transform(UnCurry.scala:122)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.transform(UnCurry.scala:82)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2846)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2844)
    at scala.collection.immutable.List.loop$1(List.scala:164)
    at scala.collection.immutable.List.mapConserve(List.scala:180)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2844)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1234)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2816)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.scala$tools$nsc$transform$TypingTransformers$TypingTransformer$$super$transform(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$1.apply(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$1.apply(TypingTransformers.scala:44)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2855)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.scala$tools$nsc$transform$UnCurry$UnCurryTransformer$$super$transform(UnCurry.scala:598)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer$$anonfun$23.apply(UnCurry.scala:655)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer$$anonfun$23.apply(UnCurry.scala:655)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.scala$tools$nsc$transform$UnCurry$UnCurryTransformer$$withInConstructorFlag$1(UnCurry.scala:561)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.mainTransform(UnCurry.scala:655)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.transform(UnCurry.scala:122)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.transform(UnCurry.scala:82)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2823)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1238)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1237)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2855)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1236)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2816)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.mainTransform(UnCurry.scala:658)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.transform(UnCurry.scala:122)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.transform(UnCurry.scala:82)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2846)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2844)
    at scala.collection.immutable.List.loop$1(List.scala:164)
    at scala.collection.immutable.List.mapConserve(List.scala:180)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2844)
    at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1256)
    at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1256)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2855)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1255)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2816)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.scala$tools$nsc$transform$TypingTransformers$TypingTransformer$$super$transform(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$2.apply(TypingTransformers.scala:46)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$2.apply(TypingTransformers.scala:46)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2855)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:46)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.mainTransform(UnCurry.scala:658)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.transform(UnCurry.scala:122)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.transform(UnCurry.scala:82)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:461)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:428)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:428)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1156)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:428)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1574)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1548)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1544)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1654)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Exception in thread "main" java.lang.AssertionError: assertion failed: 
     while compiling: ../miniboxing-plugin/test/benchmarks/C.scala
        during phase: uncurry
     library version: version 2.10.0-20121014-154054-f3550d25e0
    compiler version: version 2.10.0-20121014-154054-f3550d25e0
  reconstructed args: -Xprint:minibox -Xprint:specialize -d mboxing -classpath /home/sun/workspace/dev/miniboxing-plugin/components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin/components/runtime/target/scala-2.10/miniboxing-runime_2.10-0.1-SNAPSHOT.jar -Xplugin:/home/sun/workspace/dev/miniboxing-plugin/components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: term benchmarks
              symbol: package benchmarks (flags: final <module> <package> <java> <triedcooking>)
   symbol definition: final package benchmarks
                 tpe: <notype>
       symbol owners: package benchmarks -> package <root>
      context owners: method length -> class C_L -> package benchmarks

== Enclosing template or block ==

DefDef( // def length: Int in class C_L
  <method> <triedcooking> <synchronized>
  "length"
  []
  List(Nil)
  <tpt> // tree.tpe=Int
  If( // tree.tpe=Int
    Apply( // final def !=(x$1: AnyRef): Boolean in class Object, tree.tpe=Boolean
      C_L.this."tail"."$bang$eq" // final def !=(x$1: AnyRef): Boolean in class Object, tree.tpe=(x$1: Object)Boolean
      null
    )
    C_L.this."tail"."length" // def length: Int in trait C_interface
    0
  )
)

== Expanded type of tree ==

<notype>

C_L.this.tail.length tpe is null
  <stack trace again>

Tailcalls error - due to commutativity of If and miniboxing

sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ cat mb_spire_7.scala 
package miniboxing.tests.compile
import miniboxing.plugin.minispec
import scala.annotation.tailrec

class TailCallsCrasher2[@minispec A] {
  @tailrec final def euclid1(a: A, b: A): A =
    if (b == 0) a else euclid1(b, b)
}
sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ ../mb-scalac mb_spire_7.scala 
error: could not optimize @tailrec annotated method euclid1_J: it contains a recursive call not in tail position
one error found

Scala Library Crasher 4

sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ cat mb_library_4.scala 
package miniboxing.tests.compile
import miniboxing.plugin.minispec

trait IterableLike[@specialized +A, +Repr] extends Any

trait GenSeqLike[@specialized +A, +Repr] extends Any

trait SeqLike[@minispec +A, +Repr] extends Any with IterableLike[A, Repr] with GenSeqLike[A, Repr] {
  override def toString = super[IterableLike].toString
}
sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ ../mb-scalac mb_library_4.scala 
Picked up _JAVA_OPTIONS: -Xms2g -Xmx2g -Xss4m -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=256m -XX:+UseParallelGC -XX:PermSize=256m -XX:+TieredCompilation -XX:+UseNUMA
override def toString(): String = SeqLike.super[IterableLike].toString()
override def toString(): String = SeqLike.super[IterableLike].toString()
error: uncaught exception during compilation: java.lang.AssertionError
error: java.lang.AssertionError: assertion failed: 
     while compiling: mb_library_4.scala
        during phase: global=mixin, atPhase=cleanup
     library version: version 2.10.3-20130708-163611-504b5f3b15
    compiler version: version 2.10.3-20130708-163611-504b5f3b15
  reconstructed args: -bootclasspath /home/sun/workspace/dev/miniboxing-plugin//components/runtime/target/scala-2.10/miniboxing-runtime_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar -Xplugin:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: TypeTree(trait IterableLike)
              symbol: trait IterableLike in package compile (flags: <interface> abstract <trait>)
   symbol definition: abstract trait IterableLike extends Object
                 tpe: miniboxing.tests.compile.IterableLike[Boolean,Repr]
       symbol owners: trait IterableLike -> package compile
      context owners: class SeqLike_J$class -> package compile

== Enclosing template or block ==

Template( // val <local SeqLike_J$class>: <notype> in class SeqLike_J$class, tree.tpe=miniboxing.tests.compile.SeqLike_J$class
  "java.lang.Object", "miniboxing.tests.compile.IterableLike", "miniboxing.tests.compile.GenSeqLike", "miniboxing.tests.compile.SeqLike$class", "miniboxing.tests.compile.SeqLike_J" // parents
  ValDef(
    private
    "_"
    <tpt>
    <empty>
  )
  // 2 statements
  DefDef( // def toString(x$1: miniboxing.tests.compile.SeqLike_J): String in class SeqLike_J$class
    <method> override <notoverride>
    "toString"
    []
    List(Nil)
    <tpt> // tree.tpe=String
    Apply( // def toString(): String in class Object, tree.tpe=String
      SeqLike_J$class.super[IterableLike]."toString" // def toString(): String in class Object, tree.tpe=()String
      Nil
    )
  )
  DefDef( // def $init$(x$1: miniboxing.tests.compile.SeqLike_J): Unit in class SeqLike_J$class
    <method>
    "$init$"
    []
    List(Nil)
    <tpt> // tree.tpe=Unit
    Block( // tree.tpe=Unit
      {}
      ()
    )
  )
)

== Expanded type of tree ==

TypeRef(
  TypeSymbol(abstract trait IterableLike extends Object)
  args = List(
    TypeRef(TypeSymbol(final abstract class Boolean extends ))
    TypeParamTypeRef(TypeParam(+Repr >: ? <: ?))
  )
)

class SeqLike_J$class
    at scala.Predef$.assert(Predef.scala:179)
    at scala.tools.nsc.Global.assert(Global.scala:239)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.scala$tools$nsc$transform$Mixin$MixinTransformer$$postTransform(Mixin.scala:1200)
    at scala.tools.nsc.transform.Mixin$MixinTransformer$$anonfun$transform$1.apply(Mixin.scala:1261)
    at scala.tools.nsc.transform.Mixin$MixinTransformer$$anonfun$transform$1.apply(Mixin.scala:1261)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at scala.tools.nsc.Global.afterMixin(Global.scala:1103)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1261)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:471)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1235)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1233)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1232)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1258)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:471)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1276)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1258)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:471)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1258)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:471)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1298)
    at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1298)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1297)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1258)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:471)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Exception in thread "main" java.lang.AssertionError: assertion failed: 
     while compiling: mb_library_4.scala
        during phase: global=mixin, atPhase=cleanup
     library version: version 2.10.3-20130708-163611-504b5f3b15
    compiler version: version 2.10.3-20130708-163611-504b5f3b15
  reconstructed args: -bootclasspath /home/sun/workspace/dev/miniboxing-plugin//components/runtime/target/scala-2.10/miniboxing-runtime_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar -Xplugin:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: TypeTree(trait IterableLike)
              symbol: trait IterableLike in package compile (flags: <interface> abstract <trait>)
   symbol definition: abstract trait IterableLike extends Object
                 tpe: miniboxing.tests.compile.IterableLike[Boolean,Repr]
       symbol owners: trait IterableLike -> package compile
      context owners: class SeqLike_J$class -> package compile

== Enclosing template or block ==

Template( // val <local SeqLike_J$class>: <notype> in class SeqLike_J$class, tree.tpe=miniboxing.tests.compile.SeqLike_J$class
  "java.lang.Object", "miniboxing.tests.compile.IterableLike", "miniboxing.tests.compile.GenSeqLike", "miniboxing.tests.compile.SeqLike$class", "miniboxing.tests.compile.SeqLike_J" // parents
  ValDef(
    private
    "_"
    <tpt>
    <empty>
  )
  // 2 statements
  DefDef( // def toString(x$1: miniboxing.tests.compile.SeqLike_J): String in class SeqLike_J$class
    <method> override <notoverride>
    "toString"
    []
    List(Nil)
    <tpt> // tree.tpe=String
    Apply( // def toString(): String in class Object, tree.tpe=String
      SeqLike_J$class.super[IterableLike]."toString" // def toString(): String in class Object, tree.tpe=()String
      Nil
    )
  )
  DefDef( // def $init$(x$1: miniboxing.tests.compile.SeqLike_J): Unit in class SeqLike_J$class
    <method>
    "$init$"
    []
    List(Nil)
    <tpt> // tree.tpe=Unit
    Block( // tree.tpe=Unit
      {}
      ()
    )
  )
)

== Expanded type of tree ==

TypeRef(
  TypeSymbol(abstract trait IterableLike extends Object)
  args = List(
    TypeRef(TypeSymbol(final abstract class Boolean extends ))
    TypeParamTypeRef(TypeParam(+Repr >: ? <: ?))
  )
)

class SeqLike_J$class
    at scala.Predef$.assert(Predef.scala:179)
    at scala.tools.nsc.Global.assert(Global.scala:239)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.scala$tools$nsc$transform$Mixin$MixinTransformer$$postTransform(Mixin.scala:1200)
    at scala.tools.nsc.transform.Mixin$MixinTransformer$$anonfun$transform$1.apply(Mixin.scala:1261)
    at scala.tools.nsc.transform.Mixin$MixinTransformer$$anonfun$transform$1.apply(Mixin.scala:1261)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at scala.tools.nsc.Global.afterMixin(Global.scala:1103)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1261)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:471)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1235)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1233)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1232)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1258)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:471)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1276)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1258)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:471)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1258)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:471)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1298)
    at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1298)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1297)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1258)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:471)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Skolems

Which are completely ignored by the current implementation...

Clear override flags

TODO: We need to clear some override flags, but that's not critical for the classes to work.

Specialization leaves them, java doesn't care, so there's little incentive to actually do this.

Another crasher...

$ cat ../miniboxing-plugin/test/bugs/7.scala
package miniboxing.bugs
import miniboxing.plugin.minispec

class BUG7[@minispec T](head: T, tail: BUG7[T]) {
  override def hashCode(): Int = {
    val headhash = head.##
    if (tail == null)
      headhash
    else
      (headhash >> 8 | tail.hashCode)
  }
}
$ build/quick/bin/scalac -cp ../miniboxing-plugin/components/runtime/target/scala-2.10/miniboxing-runime_2.10-0.1-SNAPSHOT.jar:../miniboxing-plugin/components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar -Xplugin:../miniboxing-plugin/components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar ../miniboxing-plugin/test/bugs/7.scala 
Specializing class BUG7...
-------------- WIDENDED CLAZZ ----------------
BUG7 [T]Object {
  private[this] val head: T
  private[this] val tail: miniboxing.bugs.BUG7[T]
  def <init>(head: T,tail: miniboxing.bugs.BUG7[T],val T_TypeTag: Byte): miniboxing.bugs.BUG7[T]
  override def hashCode(): Int
  private[this] val T_TypeTag: Byte
  override def hashCode_J(): Int
}
-------------- INTERFACE ----------------
BUG7_interface [Tsp]AnyRef {
  override def hashCode(): Int
  override def hashCode_J(): Int
}
-------------- ORIGINAL CLASS ----------------
BUG7 [T]Object
        with miniboxing.bugs.BUG7_interface[T] {
  private[this] val head: T
  private[this] val tail: miniboxing.bugs.BUG7[T]
  def <init>(head: T,tail: miniboxing.bugs.BUG7[T],val T_TypeTag: Byte): miniboxing.bugs.BUG7[T]
  override def hashCode(): Int
  private[this] val T_TypeTag: Byte
  override def hashCode_J(): Int
}
------------ SPEC CLASS ------------
BUG7_J [Tsp]Object
        with miniboxing.bugs.BUG7_interface[Tsp] {
  private[this] val head: Long
  def <init>(head: Long,tail: miniboxing.bugs.BUG7_interface[Long],val T_TypeTag: Byte): miniboxing.bugs.BUG7_J[Tsp]
  override def hashCode(): Int
  private[this] val tail: miniboxing.bugs.BUG7_interface[Long]
  private[this] val T_TypeTag: Byte
  override def hashCode_J(): Int
}
------------ SPEC CLASS ------------
BUG7_L [Tsp]Object
        with miniboxing.bugs.BUG7_interface[Tsp] {
  private[this] val head: Tsp
  def <init>(head: Tsp,tail: miniboxing.bugs.BUG7_interface[Tsp],val T_TypeTag: Byte): miniboxing.bugs.BUG7_L[Tsp]
  override def hashCode(): Int
  private[this] val tail: miniboxing.bugs.BUG7_interface[Tsp]
  private[this] val T_TypeTag: Byte
  override def hashCode_J(): Int
}
-------------- TEMPLATE MEMBERS ----------------
miniboxing.bugs.BUG7.head
miniboxing.bugs.BUG7.hashCode
miniboxing.bugs.BUG7.tail
miniboxing.bugs.BUG7.<init>
miniboxing.bugs.BUG7_interface.hashCode_J   - Interface()
miniboxing.bugs.BUG7_J.head     - SpecializedImplementationOf2(miniboxing.bugs.BUG7.head)
miniboxing.bugs.BUG7_J.hashCode_J   - SpecializedImplementationOf2(miniboxing.bugs.BUG7.hashCode)
miniboxing.bugs.BUG7_L.head     - SpecializedImplementationOf2(miniboxing.bugs.BUG7.head)
miniboxing.bugs.BUG7_J.tail     - SpecializedImplementationOf2(miniboxing.bugs.BUG7.tail)
miniboxing.bugs.BUG7_L.hashCode_J   - ForwardTo(miniboxing.bugs.BUG7_L.hashCode)
miniboxing.bugs.BUG7_L.hashCode     - SpecializedImplementationOf2(miniboxing.bugs.BUG7.hashCode)
miniboxing.bugs.BUG7.hashCode_J     - ForwardTo(miniboxing.bugs.BUG7.hashCode)
miniboxing.bugs.BUG7_J.<init>   - SpecializedImplementationOf2(miniboxing.bugs.BUG7.<init>)
miniboxing.bugs.BUG7_L.<init>   - SpecializedImplementationOf2(miniboxing.bugs.BUG7.<init>)
miniboxing.bugs.BUG7_J.hashCode     - ForwardTo(miniboxing.bugs.BUG7_J.hashCode_J)
miniboxing.bugs.BUG7.hashCode   - ForwardTo(miniboxing.bugs.BUG7.hashCode)
miniboxing.bugs.BUG7_interface.hashCode     - Interface()
miniboxing.bugs.BUG7_L.tail     - SpecializedImplementationOf2(miniboxing.bugs.BUG7.tail)
creating class - BUG7_interface: List(class Object)
creating class - BUG7_L: List(class Object, trait BUG7_interface)
creating class - BUG7_J: List(class Object, trait BUG7_interface)
collected miniboxing.bugs.BUG7.head
collected miniboxing.bugs.BUG7.tail
collected miniboxing.bugs.BUG7.<init>
collected miniboxing.bugs.BUG7.hashCode
creating tree for miniboxing.bugs.BUG7.T_TypeTag
creating tree for miniboxing.bugs.BUG7.hashCode_J
creating tree for miniboxing.bugs.BUG7_interface.hashCode
creating tree for miniboxing.bugs.BUG7_interface.hashCode_J
creating tree for miniboxing.bugs.BUG7_L.head
creating tree for miniboxing.bugs.BUG7_L.<init>
creating tree for miniboxing.bugs.BUG7_L.hashCode
creating tree for miniboxing.bugs.BUG7_L.tail
creating tree for miniboxing.bugs.BUG7_L.T_TypeTag
creating tree for miniboxing.bugs.BUG7_L.hashCode_J
Duplicators default case: Ident(Tsp)
 ---> Tsp
Duplicators default case: Ident(Tsp)
 ---> Tsp
miniboxing.bugs.BUG7_L.<init>
Duplicators default case: Ident(Tsp)
 ---> Tsp
Duplicators default case: Ident(Tsp)
 ---> Tsp
Duplicators default case: Ident(Tsp)
 ---> Tsp
Duplicators default case: Ident(Tsp)
 ---> Tsp
Duplicators default case: Apply(constructor Object)
 ---> BUG7.super.<init>()
Duplicators default case: Select(Super(class BUG7), <init>)
 ---> BUG7.super.<init>
Duplicators default case: Super(class BUG7)
 ---> BUG7.super
Duplicators default case: Literal(Constant(()))
 ---> ()
 *** hashCode : class BUG7_L
  *  hashCode
miniboxing.bugs.BUG7_L.hashCode
Duplicators default case: Apply(method ##)
 ---> BUG7.this.head.##()
Duplicators default case: Select(Select(This(class BUG7), head), ##)
 ---> BUG7.this.head.##
Duplicators default case: If
 ---> if (BUG7.this.tail.==(null))
  headhash
else
  headhash.>>(8).|(BUG7.this.tail.hashCode()())
Duplicators default case: Apply(method ==)
 ---> BUG7.this.tail.==(null)
Duplicators default case: Select(Select(This(class BUG7), tail), ==)
 ---> BUG7.this.tail.==
Duplicators default case: Literal(Constant(null))
 ---> null
Duplicators default case: Ident(headhash)
 ---> headhash
Duplicators default case: Apply(method |)
 ---> headhash.>>(8).|(BUG7.this.tail.hashCode()())
Duplicators default case: Select(Apply(method >>), |)
 ---> headhash.>>(8).|
Duplicators default case: Apply(method >>)
 ---> headhash.>>(8)
Duplicators default case: Select(Ident(headhash), >>)
 ---> headhash.>>
Duplicators default case: Ident(headhash)
 ---> headhash
Duplicators default case: Literal(Constant(8))
 ---> 8
Duplicators default case: Apply(method hashCode)
 ---> BUG7.this.tail.hashCode()()
Duplicators default case: Apply(method hashCode)
 ---> BUG7.this.tail.hashCode()
Duplicators default case: Select(Select(This(class BUG7), tail), hashCode)
 ---> BUG7.this.tail.hashCode
ERROR:
BUG7.this.tail.hashCode()()
BUG7_L.this.tail.hashCode()


error: 
     while compiling: ../miniboxing-plugin/test/bugs/7.scala
        during phase: minibox
     library version: version 2.10.0-20121014-154054-f3550d25e0
    compiler version: version 2.10.0-20121011-125927-25ad7876a9
  reconstructed args: -Xplugin:../miniboxing-plugin/components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar -classpath ../miniboxing-plugin/components/runtime/target/scala-2.10/miniboxing-runime_2.10-0.1-SNAPSHOT.jar:../miniboxing-plugin/components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: Select(Select(This(class BUG7), tail), hashCode)
              symbol: method hashCode in trait BUG7_interface (flags: <method> override <triedcooking> <synchronized>)
   symbol definition: override def hashCode(): Int
       symbol owners: method hashCode -> trait BUG7_interface -> package bugs
      context owners: method hashCode -> class BUG7_L -> package bugs

== Enclosing template or block ==

Apply( // override def hashCode(): Int in trait BUG7_interface
  BUG7.this."tail"."hashCode" // override def hashCode(): Int in trait BUG7_interface
  Nil
)

uncaught exception during compilation: scala.reflect.internal.Types$TypeError
error: scala.reflect.internal.Types$TypeError: Int does not take parameters
    at scala.tools.nsc.typechecker.Contexts$Context.issueCommon(Contexts.scala:375)
    at scala.tools.nsc.typechecker.Contexts$Context.issue(Contexts.scala:379)
    at scala.tools.nsc.typechecker.Infer$Inferencer.issue(Infer.scala:281)
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$duplErrorTree$1(Typers.scala:2943)
    at scala.tools.nsc.typechecker.Typers$Typer.doTypedApply(Typers.scala:3254)
    at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4461)
    at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4493)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5366)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5443)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:415)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$56.apply(Typers.scala:2864)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$56.apply(Typers.scala:2864)
    at scala.tools.nsc.typechecker.Typers$Typer.withCondConstrTyper(Typers.scala:488)
    at scala.tools.nsc.typechecker.Typers$Typer.typedArg(Typers.scala:2864)
    at scala.tools.nsc.typechecker.Typers$Typer.loop$1(Typers.scala:2891)
    at scala.tools.nsc.typechecker.Typers$Typer.typedArgs(Typers.scala:2897)
    at scala.tools.nsc.typechecker.Typers$Typer.handleMonomorphicCall$1(Typers.scala:3156)
    at scala.tools.nsc.typechecker.Typers$Typer.doTypedApply(Typers.scala:3200)
    at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4461)
    at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4493)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5366)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5443)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:415)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5510)
    at scala.tools.nsc.typechecker.Typers$Typer.typedIf$1(Typers.scala:4169)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5373)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5443)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:415)
    at scala.tools.nsc.typechecker.Typers$Typer.typedBlock(Typers.scala:2335)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5372)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5372)
    at scala.tools.nsc.typechecker.Typers$Typer.typerWithLocalContext(Typers.scala:497)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5372)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5443)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:273)
    at scala.tools.nsc.typechecker.Typers$Typer.transformedOrTyped(Typers.scala:5642)
    at scala.tools.nsc.typechecker.Typers$Typer.typedDefDef(Typers.scala:2163)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5371)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5443)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:285)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5494)
    at miniboxing.plugin.Duplicators$BodyDuplicator.retypedMethodMB(Duplicators.scala:219)
    at miniboxing.plugin.Duplicators.retypedMethod(Duplicators.scala:50)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.addDefDefBody(MiniboxTreeTransformation.scala:300)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.addBody(MiniboxTreeTransformation.scala:264)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:111)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:52)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2819)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2819)
    at scala.collection.immutable.List.loop$1(List.scala:164)
    at scala.collection.immutable.List.mapConserve(List.scala:180)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2819)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$transform$2.apply(MiniboxTreeTransformation.scala:87)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$transform$2.apply(MiniboxTreeTransformation.scala:87)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2855)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:87)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:52)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2823)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1238)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1237)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2855)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1236)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2816)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:152)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:52)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2846)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2844)
    at scala.collection.immutable.List.loop$1(List.scala:164)
    at scala.collection.immutable.List.mapConserve(List.scala:180)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2844)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$transform$1.apply(MiniboxTreeTransformation.scala:72)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$transform$1.apply(MiniboxTreeTransformation.scala:66)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2855)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:66)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$transform$1.apply(Minibox.scala:41)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$transform$1.apply(Minibox.scala:41)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:201)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:210)
    at miniboxing.plugin.MiniboxPhase$class.afterMinibox(Minibox.scala:51)
    at miniboxing.plugin.Minibox$Component$.afterMinibox(Minibox.scala:20)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:41)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:38)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:461)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:428)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:428)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1156)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:428)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1574)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1548)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1544)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1654)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Exception in thread "main" scala.reflect.internal.Types$TypeError: Int does not take parameters
    at scala.tools.nsc.typechecker.Contexts$Context.issueCommon(Contexts.scala:375)
    at scala.tools.nsc.typechecker.Contexts$Context.issue(Contexts.scala:379)
    at scala.tools.nsc.typechecker.Infer$Inferencer.issue(Infer.scala:281)
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$duplErrorTree$1(Typers.scala:2943)
    at scala.tools.nsc.typechecker.Typers$Typer.doTypedApply(Typers.scala:3254)
    at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4461)
    at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4493)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5366)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5443)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:415)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$56.apply(Typers.scala:2864)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$56.apply(Typers.scala:2864)
    at scala.tools.nsc.typechecker.Typers$Typer.withCondConstrTyper(Typers.scala:488)
    at scala.tools.nsc.typechecker.Typers$Typer.typedArg(Typers.scala:2864)
    at scala.tools.nsc.typechecker.Typers$Typer.loop$1(Typers.scala:2891)
    at scala.tools.nsc.typechecker.Typers$Typer.typedArgs(Typers.scala:2897)
    at scala.tools.nsc.typechecker.Typers$Typer.handleMonomorphicCall$1(Typers.scala:3156)
    at scala.tools.nsc.typechecker.Typers$Typer.doTypedApply(Typers.scala:3200)
    at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4461)
    at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4493)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5366)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5443)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:415)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5510)
    at scala.tools.nsc.typechecker.Typers$Typer.typedIf$1(Typers.scala:4169)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5373)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5443)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:415)
    at scala.tools.nsc.typechecker.Typers$Typer.typedBlock(Typers.scala:2335)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5372)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5372)
    at scala.tools.nsc.typechecker.Typers$Typer.typerWithLocalContext(Typers.scala:497)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5372)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5443)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:273)
    at scala.tools.nsc.typechecker.Typers$Typer.transformedOrTyped(Typers.scala:5642)
    at scala.tools.nsc.typechecker.Typers$Typer.typedDefDef(Typers.scala:2163)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5371)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5443)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:285)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5494)
    at miniboxing.plugin.Duplicators$BodyDuplicator.retypedMethodMB(Duplicators.scala:219)
    at miniboxing.plugin.Duplicators.retypedMethod(Duplicators.scala:50)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.addDefDefBody(MiniboxTreeTransformation.scala:300)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.addBody(MiniboxTreeTransformation.scala:264)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:111)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:52)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2819)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2819)
    at scala.collection.immutable.List.loop$1(List.scala:164)
    at scala.collection.immutable.List.mapConserve(List.scala:180)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2819)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$transform$2.apply(MiniboxTreeTransformation.scala:87)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$transform$2.apply(MiniboxTreeTransformation.scala:87)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2855)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:87)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:52)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2823)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1238)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1237)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2855)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1236)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2816)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:152)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:52)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2846)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2844)
    at scala.collection.immutable.List.loop$1(List.scala:164)
    at scala.collection.immutable.List.mapConserve(List.scala:180)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2844)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$transform$1.apply(MiniboxTreeTransformation.scala:72)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$transform$1.apply(MiniboxTreeTransformation.scala:66)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2855)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:66)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$transform$1.apply(Minibox.scala:41)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$transform$1.apply(Minibox.scala:41)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:201)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:210)
    at miniboxing.plugin.MiniboxPhase$class.afterMinibox(Minibox.scala:51)
    at miniboxing.plugin.Minibox$Component$.afterMinibox(Minibox.scala:20)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:41)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:38)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:461)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:428)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:428)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1156)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:428)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1574)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1548)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1544)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1654)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Scala Library Crasher 7

sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ cat mb_library_7.scala 
package miniboxing.tests.compile.library7
import miniboxing.plugin.minispec

trait GenSeqLike[@minispec +A] {
  override def equals(that: Any): Boolean = that match {
    case that: GenSeqLike[_] => true
    case _                   => false
  }
}
sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ ../mb-scalac mb_library_7.scala

     while compiling: mb_library_7.scala
        during phase: global=lambdalift, atPhase=constructors
     library version: version 2.10.3-20130708-163611-504b5f3b15
    compiler version: version 2.10.3-20130708-163611-504b5f3b15
  reconstructed args: -bootclasspath /home/sun/workspace/dev/miniboxing-plugin//components/runtime/target/scala-2.10/miniboxing-runtime_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar -Xplugin:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: term library7
              symbol: package library7 in package compile (flags: final <module> <package> <java> <triedcooking>)
   symbol definition: final package library7
                 tpe: <notype>
       symbol owners: package library7 -> package compile
      context owners: value x1 -> method equals -> class GenSeqLike_J$class -> package library7

== Enclosing template or block ==

DefDef( // override def equals(that: Object): Boolean in class GenSeqLike_J$class
  <method> override
  "equals"
  []
  // 1 parameter list
  ValDef( // that: Object
    <param> <triedcooking>
    "that"
    <tpt> // tree.tpe=Object
    <empty>
  )
  <tpt> // tree.tpe=Boolean
  Block( // tree.tpe=Boolean
    // 3 statements
    ValDef( // case val x1: Object
      case <synthetic> <triedcooking>
      "x1"
      <tpt> // tree.tpe=Object
      "that" // that: Object, tree.tpe=Object
    )
    LabelDef( // case def case5(): Boolean, tree.tpe=Boolean
      ()
      If( // tree.tpe=Boolean
        Apply( // final def $isInstanceOf[T0 >: ? <: ?](): Boolean in class Object, tree.tpe=Boolean
          TypeApply( // final def $isInstanceOf[T0 >: ? <: ?](): Boolean in class Object, tree.tpe=()Boolean
            "x1"."$isInstanceOf" // final def $isInstanceOf[T0 >: ? <: ?](): Boolean in class Object, tree.tpe=[T0 >: ? <: ?]()Boolean
            <tpt> // tree.tpe=miniboxing.tests.compile.library7.GenSeqLike
          )
          Nil
        )
        Apply( // case def matchEnd4(x: Boolean): Boolean, tree.tpe=Boolean
          "matchEnd4" // case def matchEnd4(x: Boolean): Boolean, tree.tpe=(x: Boolean)Boolean
          true
        )
        Apply( // case def case6(): Boolean, tree.tpe=Boolean
          "case6" // case def case6(): Boolean, tree.tpe=()Boolean
          Nil
        )
      )
    )
    LabelDef( // case def case6(): Boolean, tree.tpe=Boolean
      ()
      Apply( // case def matchEnd4(x: Boolean): Boolean, tree.tpe=Boolean
        "matchEnd4" // case def matchEnd4(x: Boolean): Boolean, tree.tpe=(x: Boolean)Boolean
        false
      )
    )
    LabelDef( // case def matchEnd4(x: Boolean): Boolean, tree.tpe=Boolean
      "x" // x: Boolean, tree.tpe=Boolean
      "x" // x: Boolean, tree.tpe=Boolean
    )
  )
)

== Expanded type of tree ==

<notype>

unhandled exception while transforming mb_library_7.scala
error: uncaught exception during compilation: java.lang.IllegalArgumentException
error: java.lang.IllegalArgumentException: Could not find proxy for x: Boolean in List(value x, method equals, trait GenSeqLike_J, package library7, package compile, package tests, package miniboxing, package <root>) (currentOwner= method equals )
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1(LambdaLift.scala:303)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1$2.apply(LambdaLift.scala:308)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1$2.apply(LambdaLift.scala:308)
    at scala.Option.getOrElse(Option.scala:120)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1(LambdaLift.scala:308)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1$2.apply(LambdaLift.scala:308)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1$2.apply(LambdaLift.scala:308)
    at scala.Option.getOrElse(Option.scala:120)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1(LambdaLift.scala:308)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1$2.apply(LambdaLift.scala:308)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1$2.apply(LambdaLift.scala:308)
    at scala.Option.getOrElse(Option.scala:120)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1(LambdaLift.scala:308)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1$2.apply(LambdaLift.scala:308)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1$2.apply(LambdaLift.scala:308)
    at scala.Option.getOrElse(Option.scala:120)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1(LambdaLift.scala:308)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1$2.apply(LambdaLift.scala:308)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1$2.apply(LambdaLift.scala:308)
    at scala.Option.getOrElse(Option.scala:120)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1(LambdaLift.scala:308)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1$2.apply(LambdaLift.scala:308)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1$2.apply(LambdaLift.scala:308)
    at scala.Option.getOrElse(Option.scala:120)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1(LambdaLift.scala:308)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1$2.apply(LambdaLift.scala:308)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1$2.apply(LambdaLift.scala:308)
    at scala.Option.getOrElse(Option.scala:120)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1(LambdaLift.scala:308)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.proxy(LambdaLift.scala:317)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.scala$tools$nsc$transform$LambdaLift$LambdaLifter$$proxyRef(LambdaLift.scala:350)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.postTransform(LambdaLift.scala:517)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:547)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:42)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformIdents$1.apply(Trees.scala:2922)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformIdents$1.apply(Trees.scala:2922)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformIdents(Trees.scala:2922)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1293)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:324)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.preTransform(LambdaLift.scala:539)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:547)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:42)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1238)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:324)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.preTransform(LambdaLift.scala:539)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:547)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:42)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1235)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1233)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1232)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:324)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.preTransform(LambdaLift.scala:539)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:547)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:42)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transformStats(LambdaLift.scala:566)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transformStats(LambdaLift.scala:42)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1276)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.scala$tools$nsc$transform$TypingTransformers$TypingTransformer$$super$transform(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$1.apply(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$1.apply(TypingTransformers.scala:44)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:324)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.preTransform(LambdaLift.scala:539)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:547)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:42)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:324)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.preTransform(LambdaLift.scala:539)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:547)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:42)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transformStats(LambdaLift.scala:566)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transformStats(LambdaLift.scala:42)
    at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1298)
    at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1298)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1297)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.scala$tools$nsc$transform$TypingTransformers$TypingTransformer$$super$transform(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$2.apply(TypingTransformers.scala:46)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$2.apply(TypingTransformers.scala:46)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:46)
    at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:324)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.preTransform(LambdaLift.scala:539)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:547)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:42)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.scala$tools$nsc$transform$LambdaLift$LambdaLifter$$super$transformUnit(LambdaLift.scala:572)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$transformUnit$1.apply$mcV$sp(LambdaLift.scala:572)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$transformUnit$1.apply(LambdaLift.scala:572)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$transformUnit$1.apply(LambdaLift.scala:572)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at scala.tools.nsc.SubComponent.afterOwnPhase(SubComponent.scala:51)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transformUnit(LambdaLift.scala:571)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Exception in thread "main" java.lang.IllegalArgumentException: Could not find proxy for x: Boolean in List(value x, method equals, trait GenSeqLike_J, package library7, package compile, package tests, package miniboxing, package <root>) (currentOwner= method equals )
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1(LambdaLift.scala:303)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1$2.apply(LambdaLift.scala:308)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1$2.apply(LambdaLift.scala:308)
    at scala.Option.getOrElse(Option.scala:120)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1(LambdaLift.scala:308)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1$2.apply(LambdaLift.scala:308)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1$2.apply(LambdaLift.scala:308)
    at scala.Option.getOrElse(Option.scala:120)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1(LambdaLift.scala:308)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1$2.apply(LambdaLift.scala:308)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1$2.apply(LambdaLift.scala:308)
    at scala.Option.getOrElse(Option.scala:120)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1(LambdaLift.scala:308)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1$2.apply(LambdaLift.scala:308)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1$2.apply(LambdaLift.scala:308)
    at scala.Option.getOrElse(Option.scala:120)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1(LambdaLift.scala:308)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1$2.apply(LambdaLift.scala:308)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1$2.apply(LambdaLift.scala:308)
    at scala.Option.getOrElse(Option.scala:120)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1(LambdaLift.scala:308)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1$2.apply(LambdaLift.scala:308)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1$2.apply(LambdaLift.scala:308)
    at scala.Option.getOrElse(Option.scala:120)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1(LambdaLift.scala:308)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1$2.apply(LambdaLift.scala:308)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1$2.apply(LambdaLift.scala:308)
    at scala.Option.getOrElse(Option.scala:120)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.scala$tools$nsc$transform$LambdaLift$LambdaLifter$$searchIn$1(LambdaLift.scala:308)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.proxy(LambdaLift.scala:317)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.scala$tools$nsc$transform$LambdaLift$LambdaLifter$$proxyRef(LambdaLift.scala:350)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.postTransform(LambdaLift.scala:517)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:547)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:42)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformIdents$1.apply(Trees.scala:2922)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformIdents$1.apply(Trees.scala:2922)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformIdents(Trees.scala:2922)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1293)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:324)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.preTransform(LambdaLift.scala:539)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:547)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:42)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1238)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:324)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.preTransform(LambdaLift.scala:539)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:547)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:42)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1235)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1233)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1232)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:324)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.preTransform(LambdaLift.scala:539)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:547)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:42)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transformStats(LambdaLift.scala:566)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transformStats(LambdaLift.scala:42)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1276)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.scala$tools$nsc$transform$TypingTransformers$TypingTransformer$$super$transform(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$1.apply(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$1.apply(TypingTransformers.scala:44)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:324)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.preTransform(LambdaLift.scala:539)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:547)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:42)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:324)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.preTransform(LambdaLift.scala:539)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:547)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:42)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transformStats(LambdaLift.scala:566)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transformStats(LambdaLift.scala:42)
    at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1298)
    at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1298)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1297)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.scala$tools$nsc$transform$TypingTransformers$TypingTransformer$$super$transform(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$2.apply(TypingTransformers.scala:46)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$2.apply(TypingTransformers.scala:46)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:46)
    at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:324)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.preTransform(LambdaLift.scala:539)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:547)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transform(LambdaLift.scala:42)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.scala$tools$nsc$transform$LambdaLift$LambdaLifter$$super$transformUnit(LambdaLift.scala:572)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$transformUnit$1.apply$mcV$sp(LambdaLift.scala:572)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$transformUnit$1.apply(LambdaLift.scala:572)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter$$anonfun$transformUnit$1.apply(LambdaLift.scala:572)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at scala.tools.nsc.SubComponent.afterOwnPhase(SubComponent.scala:51)
    at scala.tools.nsc.transform.LambdaLift$LambdaLifter.transformUnit(LambdaLift.scala:571)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Scala Library Crasher 2

sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ cat mb_library_2.scala 
package miniboxing.tests.compile
import miniboxing.plugin.minispec

trait Growable[@minispec -A] {
  def +=(elem: A): this.type
  def ++=(xs: TraversableOnce[A]): this.type = { xs.seq foreach += ; this }
}
sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ ../mb-scalac mb_library_2.scala 
Picked up _JAVA_OPTIONS: -Xms2g -Xmx2g -Xss4m -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=256m -XX:+UseParallelGC -XX:PermSize=256m -XX:+TieredCompilation -XX:+UseNUMA
def ++=(xs: scala.collection.TraversableOnce[Asp]): miniboxing.tests.compile.Growable_J[Asp] = {
  xs.seq().foreach[miniboxing.tests.compile.Growable[A]]({
    {
      @SerialVersionUID(0) final <synthetic> class $anonfun extends scala.runtime.AbstractFunction1[A,Growable.this.type] with Serializable {
        def <init>(): anonymous class $anonfun = {
          $anonfun.super.<init>();
          ()
        };
        final def apply(elem: A): miniboxing.tests.compile.Growable[A] = Growable.this.+=(elem)
      };
      (new anonymous class $anonfun(): A => Growable.this.type)
    }
  });
  this
}
error: 
     while compiling: mb_library_2.scala
        during phase: minibox
     library version: version 2.10.3-20130708-163611-504b5f3b15
    compiler version: version 2.10.3-20130708-163611-504b5f3b15
  reconstructed args: -bootclasspath /home/sun/workspace/dev/miniboxing-plugin//components/runtime/target/scala-2.10/miniboxing-runtime_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar -Xplugin:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: term ++=
              symbol: method ++= in trait Growable_J (flags: <method>)
   symbol definition: def ++=(xs: scala.collection.TraversableOnce[Asp]): miniboxing.tests.compile.Growable_J[Asp]
       symbol owners: method ++= -> trait Growable_J -> package compile
      context owners: method apply -> anonymous class $anonfun -> method ++= -> trait Growable_J -> package compile

== Enclosing template or block ==

Apply( // def +=(elem: A): Growable.this.type in trait Growable
  Growable.this."$plus$eq" // def +=(elem: A): Growable.this.type in trait Growable, tree.tpe=(elem: A)Growable.this.type
  "elem" // elem: Asp, tree.tpe=Asp
)

uncaught exception during compilation: scala.reflect.internal.Types$TypeError
error: scala.reflect.internal.Types$TypeError: type mismatch;
 found   : miniboxing.tests.compile.Growable_J[Asp]
 required: Growable_J.this.type
    at scala.tools.nsc.typechecker.Contexts$Context.issueCommon(Contexts.scala:397)
    at scala.tools.nsc.typechecker.Contexts$Context.issue(Contexts.scala:401)
    at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueTypeError(ContextErrors.scala:103)
    at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueNormalTypeError(ContextErrors.scala:87)
    at scala.tools.nsc.typechecker.ContextErrors$TyperContextErrors$TyperErrorGen$.AdaptTypeError(ContextErrors.scala:195)
    at scala.tools.nsc.typechecker.Typers$Typer.fallBack$1(Typers.scala:1277)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1282)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5621)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:466)
    at scala.tools.nsc.typechecker.Typers$Typer.transformedOrTyped(Typers.scala:5806)
    at scala.tools.nsc.typechecker.Typers$Typer.typedDefDef(Typers.scala:2254)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5530)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:328)
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:2925)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:1918)
    at scala.tools.nsc.typechecker.Typers$Typer.typedClassDef(Typers.scala:1758)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5544)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:319)
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:2925)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer.typedBlock(Typers.scala:2429)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typerWithLocalContext(Typers.scala:507)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:312)
    at scala.tools.nsc.typechecker.Typers$Typer.typedBlock(Typers.scala:2430)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typerWithLocalContext(Typers.scala:507)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:312)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$61.apply(Typers.scala:3039)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$61.apply(Typers.scala:3039)
    at scala.tools.nsc.typechecker.Typers$Typer.withCondConstrTyper(Typers.scala:498)
    at scala.tools.nsc.typechecker.Typers$Typer.typedArg(Typers.scala:3039)
    at scala.tools.nsc.typechecker.Typers$Typer.loop$1(Typers.scala:3066)
    at scala.tools.nsc.typechecker.Typers$Typer.typedArgs(Typers.scala:3071)
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$handleMonomorphicCall$1(Typers.scala:3328)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$doTypedApply$2.apply(Typers.scala:3373)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$doTypedApply$2.apply(Typers.scala:3373)
    at scala.tools.nsc.typechecker.TypeDiagnostics$TyperDiagnostics$checkDead$.updateExpr(TypeDiagnostics.scala:459)
    at scala.tools.nsc.typechecker.Typers$Typer.doTypedApply(Typers.scala:3372)
    at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4588)
    at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4620)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5525)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:466)
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:2925)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer.typedBlock(Typers.scala:2429)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typerWithLocalContext(Typers.scala:507)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:312)
    at scala.tools.nsc.typechecker.Typers$Typer.transformedOrTyped(Typers.scala:5806)
    at scala.tools.nsc.typechecker.Typers$Typer.typedDefDef(Typers.scala:2254)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5530)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:328)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5665)
    at miniboxing.plugin.Duplicators.retyped(Duplicators.scala:42)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$64.apply(MiniboxTreeTransformation.scala:780)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$64.apply(MiniboxTreeTransformation.scala:780)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.beforePhase(SymbolTable.scala:215)
    at miniboxing.plugin.MiniboxComponent$class.beforeMinibox(Minibox.scala:31)
    at miniboxing.plugin.Minibox$Component$.beforeMinibox(Minibox.scala:77)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.duplicateBody(MiniboxTreeTransformation.scala:780)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.specializeDefDefBody(MiniboxTreeTransformation.scala:733)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:187)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:23)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:130)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:130)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:130)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:23)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:447)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:23)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:99)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:96)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:96)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:103)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:103)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxComponent$class.afterMinibox(Minibox.scala:28)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:103)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:96)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Exception in thread "main" scala.reflect.internal.Types$TypeError: type mismatch;
 found   : miniboxing.tests.compile.Growable_J[Asp]
 required: Growable_J.this.type
    at scala.tools.nsc.typechecker.Contexts$Context.issueCommon(Contexts.scala:397)
    at scala.tools.nsc.typechecker.Contexts$Context.issue(Contexts.scala:401)
    at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueTypeError(ContextErrors.scala:103)
    at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueNormalTypeError(ContextErrors.scala:87)
    at scala.tools.nsc.typechecker.ContextErrors$TyperContextErrors$TyperErrorGen$.AdaptTypeError(ContextErrors.scala:195)
    at scala.tools.nsc.typechecker.Typers$Typer.fallBack$1(Typers.scala:1277)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1282)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5621)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:466)
    at scala.tools.nsc.typechecker.Typers$Typer.transformedOrTyped(Typers.scala:5806)
    at scala.tools.nsc.typechecker.Typers$Typer.typedDefDef(Typers.scala:2254)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5530)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:328)
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:2925)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:1918)
    at scala.tools.nsc.typechecker.Typers$Typer.typedClassDef(Typers.scala:1758)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5544)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:319)
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:2925)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer.typedBlock(Typers.scala:2429)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typerWithLocalContext(Typers.scala:507)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:312)
    at scala.tools.nsc.typechecker.Typers$Typer.typedBlock(Typers.scala:2430)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typerWithLocalContext(Typers.scala:507)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:312)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$61.apply(Typers.scala:3039)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$61.apply(Typers.scala:3039)
    at scala.tools.nsc.typechecker.Typers$Typer.withCondConstrTyper(Typers.scala:498)
    at scala.tools.nsc.typechecker.Typers$Typer.typedArg(Typers.scala:3039)
    at scala.tools.nsc.typechecker.Typers$Typer.loop$1(Typers.scala:3066)
    at scala.tools.nsc.typechecker.Typers$Typer.typedArgs(Typers.scala:3071)
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$handleMonomorphicCall$1(Typers.scala:3328)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$doTypedApply$2.apply(Typers.scala:3373)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$doTypedApply$2.apply(Typers.scala:3373)
    at scala.tools.nsc.typechecker.TypeDiagnostics$TyperDiagnostics$checkDead$.updateExpr(TypeDiagnostics.scala:459)
    at scala.tools.nsc.typechecker.Typers$Typer.doTypedApply(Typers.scala:3372)
    at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4588)
    at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4620)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5525)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:466)
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:2925)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer.typedBlock(Typers.scala:2429)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typerWithLocalContext(Typers.scala:507)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:312)
    at scala.tools.nsc.typechecker.Typers$Typer.transformedOrTyped(Typers.scala:5806)
    at scala.tools.nsc.typechecker.Typers$Typer.typedDefDef(Typers.scala:2254)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5530)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:328)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5665)
    at miniboxing.plugin.Duplicators.retyped(Duplicators.scala:42)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$64.apply(MiniboxTreeTransformation.scala:780)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$64.apply(MiniboxTreeTransformation.scala:780)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.beforePhase(SymbolTable.scala:215)
    at miniboxing.plugin.MiniboxComponent$class.beforeMinibox(Minibox.scala:31)
    at miniboxing.plugin.Minibox$Component$.beforeMinibox(Minibox.scala:77)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.duplicateBody(MiniboxTreeTransformation.scala:780)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.specializeDefDefBody(MiniboxTreeTransformation.scala:733)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:187)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:23)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:130)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:130)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:130)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:23)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:447)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:23)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:99)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:96)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:96)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:103)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:103)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxComponent$class.afterMinibox(Minibox.scala:28)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:103)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:96)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Scala Library Crasher 6

sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ cat mb_library_6.scala
package miniboxing.tests.compile.library6
import miniboxing.plugin.minispec

package A {
  trait Iterator[@minispec +A]
}

package B {
  trait Iterator[@minispec +A]
}

class Iterator[@minispec +A] extends A.Iterator[A] with B.Iterator[A]
sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ ../mb-scalac mb_library_6.scala
Picked up _JAVA_OPTIONS: -Xms2g -Xmx2g -Xss4m -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=256m -XX:+UseParallelGC -XX:PermSize=256m -XX:+TieredCompilation -XX:+UseNUMA
TREE:
class Iterator_J[Asp >: Nothing <: Any] extends Object with miniboxing.tests.compile.library6.A.Iterator_J[Asp] with miniboxing.tests.compile.library6.B.Iterator_J[Asp] with miniboxing.tests.compile.library6.Iterator[Asp]
error: 
     while compiling: mb_library_6.scala
        during phase: minibox
     library version: version 2.10.3-20130708-163611-504b5f3b15
    compiler version: version 2.10.3-20130708-163611-504b5f3b15
  reconstructed args: -bootclasspath /home/sun/workspace/dev/miniboxing-plugin//components/runtime/target/scala-2.10/miniboxing-runtime_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar -Xplugin:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: TypeTree(trait Iterator)
              symbol: trait Iterator in package library6 (flags: abstract <trait>)
   symbol definition: abstract trait Iterator[+A] extends Iterator[A] with Iterator[A]
                 tpe: miniboxing.tests.compile.library6.Iterator[Asp]
       symbol owners: trait Iterator -> package library6
      context owners: class Iterator_J -> package library6

== Enclosing template or block ==

Template( // val <local Iterator_J>: <notype> in class Iterator_J
  "java.lang.Object", "miniboxing.tests.compile.library6.A.Iterator_J", "miniboxing.tests.compile.library6.B.Iterator_J", "miniboxing.tests.compile.library6.Iterator" // parents
  ValDef(
    private
    "_"
    <tpt>
    <empty>
  )
  {}
)

== Expanded type of tree ==

TypeRef(
  TypeSymbol(
    abstract trait Iterator[+A] extends Iterator[A] with Iterator[A]
  )
  args = List(TypeParamTypeRef(TypeParam(+Asp)))
)

uncaught exception during compilation: scala.reflect.internal.Types$TypeError
error: scala.reflect.internal.Types$TypeError: method Iterator_A_TypeTag is defined twice
  conflicting symbols both originated in file '/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox/mb_library_6.scala'
    at scala.tools.nsc.typechecker.Contexts$Context.issueCommon(Contexts.scala:399)
    at scala.tools.nsc.typechecker.Contexts$Context.issue(Contexts.scala:403)
    at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueTypeError(ContextErrors.scala:103)
    at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueSymbolTypeError(ContextErrors.scala:91)
    at scala.tools.nsc.typechecker.ContextErrors$TyperContextErrors$TyperErrorGen$.DefDefinedTwiceError(ContextErrors.scala:676)
    at scala.tools.nsc.typechecker.Typers$Typer.checkNoDoubleDefs$1(Typers.scala:2966)
    at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3032)
    at scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:1918)
    at scala.tools.nsc.typechecker.Typers$Typer.typedClassDef(Typers.scala:1758)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5544)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5665)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2$$anonfun$1.apply(MiniboxTreeTransformation.scala:98)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2$$anonfun$1.apply(MiniboxTreeTransformation.scala:98)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.immutable.List.foreach(List.scala:318)
    at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
    at scala.collection.AbstractTraversable.map(Traversable.scala:105)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:98)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:96)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:96)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:103)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:103)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxComponent$class.afterMinibox(Minibox.scala:28)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:103)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:96)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Exception in thread "main" scala.reflect.internal.Types$TypeError: method Iterator_A_TypeTag is defined twice
  conflicting symbols both originated in file '/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox/mb_library_6.scala'
    at scala.tools.nsc.typechecker.Contexts$Context.issueCommon(Contexts.scala:399)
    at scala.tools.nsc.typechecker.Contexts$Context.issue(Contexts.scala:403)
    at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueTypeError(ContextErrors.scala:103)
    at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueSymbolTypeError(ContextErrors.scala:91)
    at scala.tools.nsc.typechecker.ContextErrors$TyperContextErrors$TyperErrorGen$.DefDefinedTwiceError(ContextErrors.scala:676)
    at scala.tools.nsc.typechecker.Typers$Typer.checkNoDoubleDefs$1(Typers.scala:2966)
    at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3032)
    at scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:1918)
    at scala.tools.nsc.typechecker.Typers$Typer.typedClassDef(Typers.scala:1758)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5544)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5665)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2$$anonfun$1.apply(MiniboxTreeTransformation.scala:98)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2$$anonfun$1.apply(MiniboxTreeTransformation.scala:98)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.immutable.List.foreach(List.scala:318)
    at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
    at scala.collection.AbstractTraversable.map(Traversable.scala:105)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:98)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:96)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:96)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:103)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:103)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxComponent$class.afterMinibox(Minibox.scala:28)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:103)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:96)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Scala Library Crasher 9

There's an overloaded symbol leaking into the backend in a7ac5b2. It needs an involved test case, as the simple example I prepared does not trigger the bug:

sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ cat mb_library_9.scala 
package miniboxing.tests.compile.library9
import miniboxing.plugin.minispec

trait DiamondT[@minispec T] {
  def foo(): Int
}

trait DiamondTop[@minispec T] extends DiamondT[T] {
  def foo(): Int = 2
}

trait DiamondL[@minispec T] extends DiamondTop[T]

trait DiamondR1[T] extends DiamondTop[T]

trait DiamondR2[T] extends DiamondR1[T]

class DiamondB[@minispec T] extends DiamondL[T] with DiamondR1[T] {
  override def foo(): Int = super.foo()
}

Scala Library Crasher

sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ cat mb_scala_library_1.scala
package miniboxing.tests.compile.scala.library
import miniboxing.plugin.minispec

trait Function2[@minispec -T1, @minispec -T2, @minispec +R] extends AnyRef { self =>
  def apply(v1: T1, v2: T2): R
  def curried: T1 => T2 => R = {
    (x1: T1) => (x2: T2) => apply(x1, x2)
  }
  def tupled: Tuple2[T1, T2] => R = {
    case Tuple2(x1, x2) => apply(x1, x2)
  }
  override def toString() = "<function2>"
}

sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ ../mb-scalac mb_scala_library_1.scala
Picked up _JAVA_OPTIONS: -Xms2g -Xmx2g -Xss4m -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=256m -XX:+UseParallelGC -XX:PermSize=256m -XX:+TieredCompilation -XX:+UseNUMA
error: 
     while compiling: mb_scala_library_1.scala
        during phase: minibox
     library version: version 2.10.3-20130708-163611-504b5f3b15
    compiler version: version 2.10.3-20130708-163611-504b5f3b15
  reconstructed args: -bootclasspath /home/sun/workspace/dev/miniboxing-plugin//components/runtime/target/scala-2.10/miniboxing-runtime_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar -Xplugin:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: term tupled
              symbol: method tupled in trait Function2_JJJ (flags: <method>)
   symbol definition: def tupled(): ((T1sp, T2sp)) => Rsp
       symbol owners: method tupled -> trait Function2_JJJ -> package library
      context owners: value x1 -> method apply -> anonymous class $anonfun -> method tupled -> trait Function2_JJJ -> package library

== Enclosing template or block ==

Block(
  // 2 statements
  ValDef( // val x1: T1sp
    <triedcooking>
    "x1"
    <tpt> // tree.tpe=T1sp
    Apply( // val _1(): T1 in class Tuple2
      "x1"."_1" // val _1(): T1 in class Tuple2, tree.tpe=()x1._1.type
      Nil
    )
  )
  ValDef( // val x2: <?>
    <triedcooking>
    "x2"
    <tpt> // tree.tpe=T2
    Apply( // val _2(): T2 in class Tuple2, tree.tpe=T2
      "x1"."_2" // val _2(): T2 in class Tuple2, tree.tpe=()T2
      Nil
    )
  )
  Apply( // case def matchEnd3(x: R): R, tree.tpe=R
    "matchEnd3" // case def matchEnd3(x: R): R, tree.tpe=(x: R)R
    Apply( // def apply(v1: T1,v2: T2): R in trait Function2, tree.tpe=R
      Function2.this."apply" // def apply(v1: T1,v2: T2): R in trait Function2, tree.tpe=(v1: T1, v2: T2)R
      // 2 arguments
      "x1" // val x1: T1, tree.tpe=T1
      "x2" // val x2: T2, tree.tpe=T2
    )
  )
)

uncaught exception during compilation: scala.reflect.internal.Types$TypeError
error: scala.reflect.internal.Types$TypeError: type mismatch;
 found   : x1._1.type (with underlying type T1)
 required: T1sp
    at scala.tools.nsc.typechecker.Contexts$Context.issueCommon(Contexts.scala:397)
    at scala.tools.nsc.typechecker.Contexts$Context.issue(Contexts.scala:401)
    at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueTypeError(ContextErrors.scala:103)
    at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueNormalTypeError(ContextErrors.scala:87)
    at scala.tools.nsc.typechecker.ContextErrors$TyperContextErrors$TyperErrorGen$.AdaptTypeError(ContextErrors.scala:195)
    at scala.tools.nsc.typechecker.Typers$Typer.fallBack$1(Typers.scala:1277)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1282)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5621)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:466)
    at scala.tools.nsc.typechecker.Typers$Typer.transformedOrTyped(Typers.scala:5806)
    at scala.tools.nsc.typechecker.Typers$Typer.typedValDefImpl(Typers.scala:1996)
    at scala.tools.nsc.typechecker.Typers$Typer.typedValDef(Typers.scala:1959)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5529)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:335)
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:2925)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer.typedBlock(Typers.scala:2429)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typerWithLocalContext(Typers.scala:507)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:312)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5682)
    at scala.tools.nsc.typechecker.Typers$Typer.typedIf$1(Typers.scala:4276)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5532)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:466)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5682)
    at scala.tools.nsc.typechecker.Typers$Typer.typedLabelDef(Typers.scala:2340)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5547)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:361)
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:2925)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer.typedBlock(Typers.scala:2429)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typerWithLocalContext(Typers.scala:507)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:312)
    at scala.tools.nsc.typechecker.Typers$Typer.transformedOrTyped(Typers.scala:5806)
    at scala.tools.nsc.typechecker.Typers$Typer.typedDefDef(Typers.scala:2254)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5530)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:328)
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:2925)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:1918)
    at scala.tools.nsc.typechecker.Typers$Typer.typedClassDef(Typers.scala:1758)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5544)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:319)
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:2925)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer.typedBlock(Typers.scala:2429)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typerWithLocalContext(Typers.scala:507)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:312)
    at scala.tools.nsc.typechecker.Typers$Typer.transformedOrTyped(Typers.scala:5806)
    at scala.tools.nsc.typechecker.Typers$Typer.typedDefDef(Typers.scala:2254)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5530)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:328)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5665)
    at miniboxing.plugin.Duplicators.retyped(Duplicators.scala:42)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$64.apply(MiniboxTreeTransformation.scala:777)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$64.apply(MiniboxTreeTransformation.scala:777)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.beforePhase(SymbolTable.scala:215)
    at miniboxing.plugin.MiniboxComponent$class.beforeMinibox(Minibox.scala:31)
    at miniboxing.plugin.Minibox$Component$.beforeMinibox(Minibox.scala:77)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.duplicateBody(MiniboxTreeTransformation.scala:777)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.specializeDefDefBody(MiniboxTreeTransformation.scala:732)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:187)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:23)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:130)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:130)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:130)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:23)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:446)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:23)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:99)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:96)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:96)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:103)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:103)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxComponent$class.afterMinibox(Minibox.scala:28)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:103)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:96)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Exception in thread "main" scala.reflect.internal.Types$TypeError: type mismatch;
 found   : x1._1.type (with underlying type T1)
 required: T1sp
    at scala.tools.nsc.typechecker.Contexts$Context.issueCommon(Contexts.scala:397)
    at scala.tools.nsc.typechecker.Contexts$Context.issue(Contexts.scala:401)
    at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueTypeError(ContextErrors.scala:103)
    at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueNormalTypeError(ContextErrors.scala:87)
    at scala.tools.nsc.typechecker.ContextErrors$TyperContextErrors$TyperErrorGen$.AdaptTypeError(ContextErrors.scala:195)
    at scala.tools.nsc.typechecker.Typers$Typer.fallBack$1(Typers.scala:1277)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1282)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5621)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:466)
    at scala.tools.nsc.typechecker.Typers$Typer.transformedOrTyped(Typers.scala:5806)
    at scala.tools.nsc.typechecker.Typers$Typer.typedValDefImpl(Typers.scala:1996)
    at scala.tools.nsc.typechecker.Typers$Typer.typedValDef(Typers.scala:1959)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5529)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:335)
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:2925)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer.typedBlock(Typers.scala:2429)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typerWithLocalContext(Typers.scala:507)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:312)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5682)
    at scala.tools.nsc.typechecker.Typers$Typer.typedIf$1(Typers.scala:4276)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5532)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:466)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5682)
    at scala.tools.nsc.typechecker.Typers$Typer.typedLabelDef(Typers.scala:2340)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5547)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:361)
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:2925)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer.typedBlock(Typers.scala:2429)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typerWithLocalContext(Typers.scala:507)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:312)
    at scala.tools.nsc.typechecker.Typers$Typer.transformedOrTyped(Typers.scala:5806)
    at scala.tools.nsc.typechecker.Typers$Typer.typedDefDef(Typers.scala:2254)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5530)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:328)
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:2925)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:1918)
    at scala.tools.nsc.typechecker.Typers$Typer.typedClassDef(Typers.scala:1758)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5544)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:319)
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:2925)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer.typedBlock(Typers.scala:2429)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typerWithLocalContext(Typers.scala:507)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:312)
    at scala.tools.nsc.typechecker.Typers$Typer.transformedOrTyped(Typers.scala:5806)
    at scala.tools.nsc.typechecker.Typers$Typer.typedDefDef(Typers.scala:2254)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5530)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:328)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5665)
    at miniboxing.plugin.Duplicators.retyped(Duplicators.scala:42)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$64.apply(MiniboxTreeTransformation.scala:777)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$64.apply(MiniboxTreeTransformation.scala:777)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.beforePhase(SymbolTable.scala:215)
    at miniboxing.plugin.MiniboxComponent$class.beforeMinibox(Minibox.scala:31)
    at miniboxing.plugin.Minibox$Component$.beforeMinibox(Minibox.scala:77)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.duplicateBody(MiniboxTreeTransformation.scala:777)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.specializeDefDefBody(MiniboxTreeTransformation.scala:732)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:187)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:23)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:130)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:130)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:130)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:23)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:446)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:23)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:99)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:96)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:96)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:103)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:103)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxComponent$class.afterMinibox(Minibox.scala:28)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:103)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:96)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)
sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ 

Simply replacing:

  def tupled: Tuple2[T1, T2] => R = {
    case Tuple2(x1, x2) => apply(x1, x2)
  }

by

  def tupled: Tuple2[T1, T2] => R = {
    case Tuple2(z1, z2) => apply(z1, z2)
  }

Makes it compile, so I assume there's an x in scope already. Need to debug further.

Crasher

sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ cat gh-bug-18.scala 
package miniboxing.tests.compile
import miniboxing.plugin.minispec
import scala.annotation.tailrec

abstract class Dist[@minispec A] {
  def apply(a: A): A

  def iterateUntil(): Dist[A] = new Dist[A] {
    def loop(a: A): A = a
    def apply(a: A): A = loop(a)
  }
}
sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ ../mb-scalac gh-bug-18.scala 
gh-bug-18.scala:9: error: Parameter type in structural refinement may not refer to an abstract type defined outside that refinement
    def loop(a: A): A = a
             ^

     while compiling: gh-bug-18.scala
        during phase: minibox
     library version: version 2.10.3-20130625-164027-d22e8d282c
    compiler version: version 2.10.3-20130627-153946-54cb6af7db
  reconstructed args: -bootclasspath /home/sun/workspace/dev/miniboxing-plugin//components/runtime/target/scala-2.10/miniboxing-runtime_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar -Xplugin:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: This(anonymous class $anon)
              symbol: anonymous class $anon (flags: final)
   symbol definition: final class $anon extends Dist[Asp]
                 tpe: miniboxing.tests.compile.Dist[Asp]{def loop(a: Asp): Asp}
       symbol owners: anonymous class $anon -> method iterateUntil_J -> class Dist_J -> package compile
      context owners: constructor $anon -> anonymous class $anon -> method iterateUntil_J -> class Dist_J -> package compile

== Enclosing template or block ==

DefDef( // def <init>(): miniboxing.tests.compile.Dist[Asp]{def loop(a: Asp): Asp}
  <method> <triedcooking>
  "<init>"
  []
  List(Nil)
  <tpt> // tree.tpe=miniboxing.tests.compile.Dist[Asp]{def loop(a: Asp): Asp}
  Block( // tree.tpe=Unit
    Apply( // def <init>(): miniboxing.tests.compile.Dist[A] in trait Dist, tree.tpe=miniboxing.tests.compile.Dist[A]
      $anon.super."<init>" // def <init>(): miniboxing.tests.compile.Dist[A] in trait Dist, tree.tpe=()miniboxing.tests.compile.Dist[A]
      Nil
    )
    ()
  )
)

== Expanded type of tree ==

TypeRef(TypeSymbol(final class $anon extends Dist[Asp]))

unhandled exception while transforming gh-bug-18.scala
error: uncaught exception during compilation: java.util.NoSuchElementException
error: java.util.NoSuchElementException: key not found: constructor Object
    at scala.collection.MapLike$class.default(MapLike.scala:228)
    at scala.collection.AbstractMap.default(Map.scala:58)
    at scala.collection.mutable.HashMap.apply(HashMap.scala:64)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.rewiredMethodCall(MiniboxTreeTransformation.scala:521)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:356)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1238)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:458)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1235)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1233)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1232)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:458)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:174)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:174)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:174)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:458)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1238)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:458)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1235)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1233)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1232)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:190)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:174)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:174)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:174)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:458)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:144)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:141)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:141)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:94)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:94)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxPhase$class.afterMinibox(Minibox.scala:107)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:94)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:87)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Exception in thread "main" java.util.NoSuchElementException: key not found: constructor Object
    at scala.collection.MapLike$class.default(MapLike.scala:228)
    at scala.collection.AbstractMap.default(Map.scala:58)
    at scala.collection.mutable.HashMap.apply(HashMap.scala:64)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.rewiredMethodCall(MiniboxTreeTransformation.scala:521)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:356)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1238)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:458)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1235)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1233)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1232)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:458)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:174)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:174)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:174)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:458)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1238)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:458)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1235)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1233)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1232)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:190)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:174)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:174)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:174)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:458)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:144)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:141)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:141)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:94)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:94)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxPhase$class.afterMinibox(Minibox.scala:107)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:94)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:87)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Tail Calls Crasher

Interaction with tail calls renders AST nodes without types set -- and this crashes erasure:

package miniboxing.tests.compile
import miniboxing.plugin.minispec

class TailCallsCrash[@minispec T](val head: T) {
  final def containsTail(e: T): Boolean = {
    println(e)
    containsTail(e)
  }
}

Incorrect array return type

$ rm -rf miniboxing/ && ../mb-scalac mb_array_ops.scala -P:minibox:spec-opt -P:minibox:log -Xprint:minibox -Ycheck:minibox 
Specializing class VerifyArrayOps...

  // interface:
  abstract trait VerifyArrayOps[T] extends Object {
    def reverse(): Unit                                                   
    val x(): Array[T]                                                     
  }

  // specialized class:
  class VerifyArrayOps_J[Tsp] extends VerifyArrayOps[Tsp] {
    def <init>(val VerifyArrayOps_T_TypeTag: Byte,evidence$1: scala.reflect.Manifest[Tsp]): miniboxing.tests.compile.VerifyArrayOps_J[Tsp] // is a specialized implementation of constructor VerifyArrayOps
    def reverse(): Unit                                                    // is a specialized implementation of method reverse
    implicit private[this] val evidence$1: scala.reflect.Manifest[Tsp]     // is a specialized implementation of value evidence$1
    private[this] val VerifyArrayOps_T_TypeTag: Byte                       // no info
    private[this] val x: Array[Tsp]                                        // is a specialized implementation of value x
    val x(): Array[Tsp]                                                    // is a specialized implementation of value x
  }

  // specialized class:
  class VerifyArrayOps_L[Tsp] extends VerifyArrayOps[Tsp] {
    def <init>(evidence$1: scala.reflect.Manifest[Tsp]): miniboxing.tests.compile.VerifyArrayOps_L[Tsp] // is a specialized implementation of constructor VerifyArrayOps
    def reverse(): Unit                                                    // is a specialized implementation of method reverse
    implicit private[this] val evidence$1: scala.reflect.Manifest[Tsp]     // is a specialized implementation of value evidence$1
    private[this] val x: Array[Tsp]                                        // is a specialized implementation of value x
    val x(): Array[Tsp]                                                    // is a setter or getter for value x
  }




[[syntax trees at end of                   minibox]] // mb_array_ops.scala
package miniboxing.tests.compile {
  abstract trait VerifyArrayOps[@miniboxing.plugin.minispec T >: Nothing <: Any] extends Object {
    <stable> <accessor> def x(): Array[T];
    def reverse(): Unit
  };
  class VerifyArrayOps_J[Tsp >: Nothing <: Any] extends Object with miniboxing.tests.compile.VerifyArrayOps[Tsp] {
    def <init>(VerifyArrayOps_T_TypeTag: Byte, evidence$1: scala.reflect.Manifest[Tsp]): miniboxing.tests.compile.VerifyArrayOps_J[Tsp] = {
      VerifyArrayOps_J.super.<init>();
      ()
    };
    def reverse(): Unit = {
      var i: Int = 0;
      var j: Int = MiniboxArray_FullSwitch.this.mbarray_length(VerifyArrayOps_J.this.x(), VerifyArrayOps_J.this.VerifyArrayOps_T_TypeTag).-(1);
      while$1(){
        if (i.<(j))
          {
            {
              val t1: Long = MiniboxArray_FullSwitch.this.mbarray_apply_minibox(VerifyArrayOps_J.this.x(), i, VerifyArrayOps_J.this.VerifyArrayOps_T_TypeTag);
              val t2: Long = MiniboxArray_FullSwitch.this.mbarray_apply_minibox(VerifyArrayOps_J.this.x(), j, VerifyArrayOps_J.this.VerifyArrayOps_T_TypeTag);
              MiniboxArray_FullSwitch.this.mbarray_update_minibox(VerifyArrayOps_J.this.x(), i, t2, VerifyArrayOps_J.this.VerifyArrayOps_T_TypeTag);
              MiniboxArray_FullSwitch.this.mbarray_update_minibox(VerifyArrayOps_J.this.x(), j, t1, VerifyArrayOps_J.this.VerifyArrayOps_T_TypeTag);
              i = i.+(1);
              j = j.-(1)
            };
            while$1()
          }
        else
          ()
      }
    };
    implicit <synthetic> <paramaccessor> private[this] val evidence$1: scala.reflect.Manifest[Tsp] = _;
    <paramaccessor> private[this] val VerifyArrayOps_T_TypeTag: Byte = _;
    private[this] val x: Array[Tsp] = MiniboxArray_FullSwitch.this.mbarray_new(10, VerifyArrayOps_J.this.VerifyArrayOps_T_TypeTag);
    <stable> <accessor> def x(): Array[Tsp] = VerifyArrayOps_J.this.x
  };
  class VerifyArrayOps_L[Tsp >: Nothing <: Any] extends Object with miniboxing.tests.compile.VerifyArrayOps[Tsp] {
    def <init>(evidence$1: scala.reflect.Manifest[Tsp]): miniboxing.tests.compile.VerifyArrayOps_L[Tsp] = {
      VerifyArrayOps_L.super.<init>();
      ()
    };
    def reverse(): Unit = {
      var i: Int = 0;
      var j: Int = VerifyArrayOps_L.this.x().length().-(1);
      while$1(){
        if (i.<(j))
          {
            {
              val t1: Tsp = VerifyArrayOps_L.this.x().apply(i);
              val t2: Tsp = VerifyArrayOps_L.this.x().apply(j);
              VerifyArrayOps_L.this.x().update(i, t2);
              VerifyArrayOps_L.this.x().update(j, t1);
              i = i.+(1);
              j = j.-(1)
            };
            while$1()
          }
        else
          ()
      }
    };
    implicit <synthetic> <paramaccessor> private[this] val evidence$1: scala.reflect.Manifest[Tsp] = _;
    private[this] val x: Array[Tsp] = VerifyArrayOps_L.this.evidence$1.newArray(10);
    <stable> <accessor> def x(): Array[Tsp] = VerifyArrayOps_L.this.x
  }
}

[Now checking: minibox]
mb_array_ops.scala:6: error: 
**** ERROR DURING INTERNAL CHECKING ****
type mismatch;
 found   : Any
 required: Array[Tsp]
  val x = new Array[T](10)
      ^
one error found
sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ rm -rf miniboxing/ && ../mb-scalac mb_array_ops.scala -P:minibox:spec-opt -P:minibox:log -Xprint:minibox -Ycheck:minibox 
Specializing class VerifyArrayOps...

  // interface:
  abstract trait VerifyArrayOps[T] extends Object {
    def reverse(): Unit                                                   
    val x(): Array[T]                                                     
  }

  // specialized class:
  class VerifyArrayOps_J[Tsp] extends VerifyArrayOps[Tsp] {
    def <init>(val VerifyArrayOps_T_TypeTag: Byte,evidence$1: scala.reflect.Manifest[Tsp]): miniboxing.tests.compile.VerifyArrayOps_J[Tsp] // is a specialized implementation of constructor VerifyArrayOps
    def reverse(): Unit                                                    // is a specialized implementation of method reverse
    implicit private[this] val evidence$1: scala.reflect.Manifest[Tsp]     // is a specialized implementation of value evidence$1
    private[this] val VerifyArrayOps_T_TypeTag: Byte                       // no info
    private[this] val x: Array[Tsp]                                        // is a specialized implementation of value x
    val x(): Array[Tsp]                                                    // is a specialized implementation of value x
  }

  // specialized class:
  class VerifyArrayOps_L[Tsp] extends VerifyArrayOps[Tsp] {
    def <init>(evidence$1: scala.reflect.Manifest[Tsp]): miniboxing.tests.compile.VerifyArrayOps_L[Tsp] // is a specialized implementation of constructor VerifyArrayOps
    def reverse(): Unit                                                    // is a specialized implementation of method reverse
    implicit private[this] val evidence$1: scala.reflect.Manifest[Tsp]     // is a specialized implementation of value evidence$1
    private[this] val x: Array[Tsp]                                        // is a specialized implementation of value x
    val x(): Array[Tsp]                                                    // is a setter or getter for value x
  }




[[syntax trees at end of                   minibox]] // mb_array_ops.scala
package miniboxing.tests.compile {
  abstract trait VerifyArrayOps[@miniboxing.plugin.minispec T >: Nothing <: Any] extends Object {
    <stable> <accessor> def x(): Array[T];
    def reverse(): Unit
  };
  class VerifyArrayOps_J[Tsp >: Nothing <: Any] extends Object with miniboxing.tests.compile.VerifyArrayOps[Tsp] {
    def <init>(VerifyArrayOps_T_TypeTag: Byte, evidence$1: scala.reflect.Manifest[Tsp]): miniboxing.tests.compile.VerifyArrayOps_J[Tsp] = {
      VerifyArrayOps_J.super.<init>();
      ()
    };
    def reverse(): Unit = {
      var i: Int = 0;
      var j: Int = MiniboxArray_FullSwitch.this.mbarray_length(VerifyArrayOps_J.this.x(), VerifyArrayOps_J.this.VerifyArrayOps_T_TypeTag).-(1);
      while$1(){
        if (i.<(j))
          {
            {
              val t1: Long = MiniboxArray_FullSwitch.this.mbarray_apply_minibox(VerifyArrayOps_J.this.x(), i, VerifyArrayOps_J.this.VerifyArrayOps_T_TypeTag);
              val t2: Long = MiniboxArray_FullSwitch.this.mbarray_apply_minibox(VerifyArrayOps_J.this.x(), j, VerifyArrayOps_J.this.VerifyArrayOps_T_TypeTag);
              MiniboxArray_FullSwitch.this.mbarray_update_minibox(VerifyArrayOps_J.this.x(), i, t2, VerifyArrayOps_J.this.VerifyArrayOps_T_TypeTag);
              MiniboxArray_FullSwitch.this.mbarray_update_minibox(VerifyArrayOps_J.this.x(), j, t1, VerifyArrayOps_J.this.VerifyArrayOps_T_TypeTag);
              i = i.+(1);
              j = j.-(1)
            };
            while$1()
          }
        else
          ()
      }
    };
    implicit <synthetic> <paramaccessor> private[this] val evidence$1: scala.reflect.Manifest[Tsp] = _;
    <paramaccessor> private[this] val VerifyArrayOps_T_TypeTag: Byte = _;
    private[this] val x: Array[Tsp] = MiniboxArray_FullSwitch.this.mbarray_new(10, VerifyArrayOps_J.this.VerifyArrayOps_T_TypeTag);
    <stable> <accessor> def x(): Array[Tsp] = VerifyArrayOps_J.this.x
  };
  class VerifyArrayOps_L[Tsp >: Nothing <: Any] extends Object with miniboxing.tests.compile.VerifyArrayOps[Tsp] {
    def <init>(evidence$1: scala.reflect.Manifest[Tsp]): miniboxing.tests.compile.VerifyArrayOps_L[Tsp] = {
      VerifyArrayOps_L.super.<init>();
      ()
    };
    def reverse(): Unit = {
      var i: Int = 0;
      var j: Int = VerifyArrayOps_L.this.x().length().-(1);
      while$1(){
        if (i.<(j))
          {
            {
              val t1: Tsp = VerifyArrayOps_L.this.x().apply(i);
              val t2: Tsp = VerifyArrayOps_L.this.x().apply(j);
              VerifyArrayOps_L.this.x().update(i, t2);
              VerifyArrayOps_L.this.x().update(j, t1);
              i = i.+(1);
              j = j.-(1)
            };
            while$1()
          }
        else
          ()
      }
    };
    implicit <synthetic> <paramaccessor> private[this] val evidence$1: scala.reflect.Manifest[Tsp] = _;
    private[this] val x: Array[Tsp] = VerifyArrayOps_L.this.evidence$1.newArray(10);
    <stable> <accessor> def x(): Array[Tsp] = VerifyArrayOps_L.this.x
  }
}

[Now checking: minibox]
mb_array_ops.scala:6: error: 
**** ERROR DURING INTERNAL CHECKING ****
type mismatch;
 found   : Any
 required: Array[Tsp]
  val x = new Array[T](10)
      ^
one error found

Specializer needs to treat methods

Have a look at mb_library_5.scala:

[[syntax trees at end of                   minibox]] // mb_library_5.scala
  abstract trait AbstractIterator[@miniboxing.plugin.minispec A >: Nothing <: Any] extends Object with miniboxing.tests.compile.Iterator[A];
  abstract trait Iterator_J[Asp >: Nothing <: Any] extends Object with miniboxing.tests.compile.Iterator[Asp] {
    def Iterator_A_TypeTag(): Byte;
    def filter(p: Asp => Boolean): miniboxing.tests.compile.Iterator[Asp] = {
      final class $anon extends miniboxing.tests.compile.AbstractIterator_L[Asp] {
        def <init>(): anonymous class $anon = {
          $anon.super.<init>();
          ()
        };
        private[this] var hd: Long = _;
        <accessor> private def hd(): Asp = MiniboxConversions.this.minibox2box[Asp]($anon.this.hd, Iterator_J.this.Iterator_A_TypeTag());
        <accessor> private def hd_=(x$1: Asp): Unit = $anon.this.hd = MiniboxConversions.this.box2minibox_tt[Asp](x$1, Iterator_J.this.Iterator_A_TypeTag());
        private[this] var hdDefined: Boolean = false;
        <accessor> private def hdDefined(): Boolean = $anon.this.hdDefined;
        <accessor> private def hdDefined_=(x$1: Boolean): Unit = $anon.this.hdDefined = x$1;
        def hasNext(): Boolean = $anon.this.hdDefined().||({
          doWhile$1(){
            {
              if (Iterator_J.this.hasNext().unary_!())
                return false
              else
                ();
              $anon.this.hd_=(Iterator_J.this.next())
            };
            if (p.apply($anon.this.hd()).unary_!())
              doWhile$1()
            else
              ()
          };
          $anon.this.hdDefined_=(true);
          true
        });
        def next(): Asp = if ($anon.this.hasNext())
          {
            $anon.this.hdDefined_=(false);
            $anon.this.hd()
          }
        else
          scala.this.Predef.???()
      };
      new anonymous class $anon()
    };
    def hasNext(): Boolean;
    def isEmpty(): Boolean = Iterator_J.this.hasNext().unary_!();
    def next(): Asp;
    def next_J(Iterator_A_TypeTag: Byte): Long;
    def seq(): miniboxing.tests.compile.Iterator[Asp] = Iterator_J.this
  };

actually:

        private[this] var hd: Long = _;
        <accessor> private def hd(): Asp = MiniboxConversions.this.minibox2box[Asp]($anon.this.hd, Iterator_J.this.Iterator_A_TypeTag());
        <accessor> private def hd_=(x$1: Asp): Unit = $anon.this.hd = MiniboxConversions.this.box2minibox_tt[Asp](x$1, Iterator_J.this.Iterator_A_TypeTag());

So: storage is specialized, accessor (method) is not. Boo.

Crasher in type instantiation

sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ cat mb_spire_2.scala 
package miniboxing.tests.compile
import miniboxing.plugin.minispec

case class ZZZ[@minispec T]
sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ ../mb-scalac mb_spire_2.scala -P:minibox:spec-opt
Specializing class ZZZ...

  // interface:
  case abstract trait ZZZ[T] extends Product with Serializable {
    def canEqual(x$1: Any): Boolean                                       
    def copy[T](): miniboxing.tests.compile.ZZZ[T]                        
    def productArity(): Int                                               
    def productElement(x$1: Int): Any                                     
    override def equals(x$1: Any): Boolean                                
    override def hashCode(): Int                                          
    override def productIterator(): Iterator[Any]                         
    override def productPrefix(): String                                  
    override def toString(): String                                       
  }

  // specialized class:
  case class ZZZ_J[Tsp] extends Product with Serializable with ZZZ[Tsp] {
    def <init>(val ZZZ_T_TypeTag: Byte): miniboxing.tests.compile.ZZZ_J[Tsp] // is a specialized implementation of constructor ZZZ
    def canEqual(x$1: Any): Boolean                                        // is a specialized implementation of method canEqual
    def copy[T](): miniboxing.tests.compile.ZZZ[T]                         // is a specialized implementation of method copy
    def productArity(): Int                                                // is a specialized implementation of method productArity
    def productElement(x$1: Int): Any                                      // is a specialized implementation of method productElement
    override def equals(x$1: Any): Boolean                                 // is a specialized implementation of method equals
    override def hashCode(): Int                                           // is a specialized implementation of method hashCode
    override def productIterator(): Iterator[Any]                          // is a specialized implementation of method productIterator
    override def productPrefix(): String                                   // is a specialized implementation of method productPrefix
    override def toString(): String                                        // is a specialized implementation of method toString
    private[this] val ZZZ_T_TypeTag: Byte                                  // no info
  }

  // specialized class:
  case class ZZZ_L[Tsp] extends Product with Serializable with ZZZ[Tsp] {
    def <init>(): miniboxing.tests.compile.ZZZ_L[Tsp]                      // is a specialized implementation of constructor ZZZ
    def canEqual(x$1: Any): Boolean                                        // is a specialized implementation of method canEqual
    def copy[T](): miniboxing.tests.compile.ZZZ[T]                         // is a specialized implementation of method copy
    def productArity(): Int                                                // is a specialized implementation of method productArity
    def productElement(x$1: Int): Any                                      // is a specialized implementation of method productElement
    override def equals(x$1: Any): Boolean                                 // is a specialized implementation of method equals
    override def hashCode(): Int                                           // is a specialized implementation of method hashCode
    override def productIterator(): Iterator[Any]                          // is a specialized implementation of method productIterator
    override def productPrefix(): String                                   // is a specialized implementation of method productPrefix
    override def toString(): String                                        // is a specialized implementation of method toString
  }




error: T in trait ZZZ cannot be instantiated from miniboxing.tests.compile.ZZZ_J[Tsp]
unhandled exception while transforming mb_spire_2.scala
error: uncaught exception during compilation: scala.reflect.internal.FatalError
error: scala.reflect.internal.FatalError: 
     while compiling: mb_spire_2.scala
        during phase: minibox
     library version: version 2.10.3-20130625-164027-d22e8d282c
    compiler version: version 2.10.3-20130627-153946-54cb6af7db
  reconstructed args: -P:minibox:spec-opt -bootclasspath /home/sun/workspace/dev/miniboxing-plugin//components/runtime/target/scala-2.10/miniboxing-runtime_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar -Xplugin:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: term canEqual
              symbol: method canEqual in class ZZZ_J (flags: <method> <synthetic> <triedcooking>)
   symbol definition: def canEqual(x$1: Any): Boolean
       symbol owners: method canEqual -> class ZZZ_J -> package compile
      context owners: method canEqual -> class ZZZ_J -> package compile

== Enclosing template or block ==

Apply( // final def $isInstanceOf[T0](): Boolean in class Object
  TypeApply( // final def $isInstanceOf[T0](): Boolean in class Object
    "x$1"."$isInstanceOf" // final def $isInstanceOf[T0](): Boolean in class Object, tree.tpe=[T0]()Boolean
    <tpt> // tree.tpe=miniboxing.tests.compile.ZZZ[_]
  )
  Nil
)

T in trait ZZZ cannot be instantiated from miniboxing.tests.compile.ZZZ_J[Tsp]
    at scala.reflect.internal.SymbolTable.abort(SymbolTable.scala:49)
    at scala.tools.nsc.Global.abort(Global.scala:254)
    at scala.reflect.internal.Types$AsSeenFromMap.throwError$1(Types.scala:4579)
    at scala.reflect.internal.Types$AsSeenFromMap.instParam$1(Types.scala:4599)
    at scala.reflect.internal.Types$AsSeenFromMap.toInstance$1(Types.scala:4619)
    at scala.reflect.internal.Types$AsSeenFromMap.apply(Types.scala:4637)
    at scala.reflect.internal.Types$AsSeenFromMap.apply(Types.scala:4501)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.internal.Types$TypeMap.mapOver(Types.scala:4185)
    at scala.reflect.internal.Types$AsSeenFromMap.apply(Types.scala:4639)
    at scala.reflect.internal.Types$TypeMap.mapOver(Types.scala:4233)
    at scala.reflect.internal.Types$AsSeenFromMap.apply(Types.scala:4639)
    at scala.reflect.internal.Types$Type.asSeenFrom(Types.scala:754)
    at miniboxing.plugin.Duplicators$BodyDuplicator.fixType(Duplicators.scala:135)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:231)
    at scala.tools.nsc.typechecker.Typers$Typer.typedType(Typers.scala:5730)
    at scala.tools.nsc.typechecker.Typers$Typer.typedHigherKindedType(Typers.scala:5737)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$112.apply(Typers.scala:5429)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$112.apply(Typers.scala:5429)
    at scala.reflect.internal.Types$class.map2Conserve(Types.scala:6416)
    at scala.reflect.internal.SymbolTable.map2Conserve(SymbolTable.scala:13)
    at scala.tools.nsc.typechecker.Typers$Typer.typedTypeApply$1(Typers.scala:5427)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5533)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:389)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$92.apply(Typers.scala:4569)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$92.apply(Typers.scala:4569)
    at scala.tools.nsc.typechecker.Typers$Typer.silent(Typers.scala:727)
    at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4569)
    at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4620)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5525)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:389)
    at scala.tools.nsc.typechecker.Typers$Typer.transformedOrTyped(Typers.scala:5806)
    at scala.tools.nsc.typechecker.Typers$Typer.typedDefDef(Typers.scala:2254)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5530)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:251)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5665)
    at miniboxing.plugin.Duplicators.retyped(Duplicators.scala:42)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$45.apply(MiniboxTreeTransformation.scala:721)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$45.apply(MiniboxTreeTransformation.scala:721)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.beforePhase(SymbolTable.scala:215)
    at miniboxing.plugin.MiniboxPhase$class.beforeMinibox(Minibox.scala:110)
    at miniboxing.plugin.Minibox$Component$.beforeMinibox(Minibox.scala:68)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.duplicateBody(MiniboxTreeTransformation.scala:721)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.specializeDefDefBody(MiniboxTreeTransformation.scala:687)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:218)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:120)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$8.apply(MiniboxTreeTransformation.scala:168)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$8.apply(MiniboxTreeTransformation.scala:168)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:168)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:120)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:452)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:120)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:139)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:136)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:136)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:120)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:94)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:94)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxPhase$class.afterMinibox(Minibox.scala:107)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:94)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:87)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Scala Library Crasher 5

sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ cat mb_library_5.scala 
package miniboxing.tests.compile
import miniboxing.plugin.minispec

trait Iterator[@minispec +A] {
  self =>

  def seq: Iterator[A] = this
  def hasNext: Boolean
  def next(): A
  def isEmpty: Boolean = !hasNext

  def filter(p: A => Boolean): Iterator[A] = new AbstractIterator[A] {
    private var hd: A = _
    private var hdDefined: Boolean = false

    def hasNext: Boolean = hdDefined || {
      do {
        if (!self.hasNext) return false
        hd = self.next()
      } while (!p(hd))
      hdDefined = true
      true
    }

    def next() = if (hasNext) { hdDefined = false; hd } else ???
  }
}

abstract class AbstractIterator[@minispec +A] extends Iterator[A]
sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ ../mb-scalac mb_library_5.scala 
Picked up _JAVA_OPTIONS: -Xms2g -Xmx2g -Xss4m -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=256m -XX:+UseParallelGC -XX:PermSize=256m -XX:+TieredCompilation -XX:+UseNUMA
def filter(p: Asp => Boolean): miniboxing.tests.compile.Iterator[Asp] = {
  final class $anon extends miniboxing.tests.compile.AbstractIterator[A] {
    def <init>(): anonymous class $anon = {
      $anon.super.<init>();
      ()
    };
    private[this] var hd: A = _;
    <accessor> private def hd(): A = $anon.this.hd;
    <accessor> private def hd_=(x$1: A): Unit = $anon.this.hd = x$1;
    private[this] var hdDefined: Boolean = false;
    <accessor> private def hdDefined(): Boolean = $anon.this.hdDefined;
    <accessor> private def hdDefined_=(x$1: Boolean): Unit = $anon.this.hdDefined = x$1;
    def hasNext(): Boolean = $anon.this.hdDefined().||({
      doWhile$1(){
        {
          if (Iterator.this.hasNext().unary_!())
            return false
          else
            ();
          $anon.this.hd_=(Iterator.this.next())
        };
        if (p.apply($anon.this.hd()).unary_!())
          doWhile$1()
        else
          ()
      };
      $anon.this.hdDefined_=(true);
      true
    });
    def next(): A = if ($anon.this.hasNext())
      {
        $anon.this.hdDefined_=(false);
        $anon.this.hd()
      }
    else
      scala.this.Predef.???()
  };
  new anonymous class $anon()
}
error: 
     while compiling: mb_library_5.scala
        during phase: minibox
     library version: version 2.10.3-20130708-163611-504b5f3b15
    compiler version: version 2.10.3-20130708-163611-504b5f3b15
  reconstructed args: -bootclasspath /home/sun/workspace/dev/miniboxing-plugin//components/runtime/target/scala-2.10/miniboxing-runtime_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar -Xplugin:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: This(anonymous class $anon)
              symbol: anonymous class $anon (flags: final)
   symbol definition: final class $anon extends AbstractIterator[Asp]
                 tpe: miniboxing.tests.compile.Iterator_J.$anon.type
       symbol owners: anonymous class $anon -> method filter -> trait Iterator_J -> package compile
      context owners: variable hd -> anonymous class $anon -> method filter -> trait Iterator_J -> package compile

== Enclosing template or block ==

Template( // val <local $anon>: <notype>, tree.tpe=miniboxing.tests.compile.AbstractIterator[Asp]{}
  "miniboxing.tests.compile.AbstractIterator" // parents
  ValDef(
    private
    "_"
    <tpt>
    <empty>
  )
  // 9 statements
  DefDef( // def <init>(): miniboxing.tests.compile.AbstractIterator[Asp]{}
    <method> <triedcooking>
    "<init>"
    []
    List(Nil)
    <tpt> // tree.tpe=miniboxing.tests.compile.AbstractIterator[Asp]{}
    Block( // tree.tpe=Unit
      Apply( // def <init>(): miniboxing.tests.compile.AbstractIterator[A] in trait AbstractIterator, tree.tpe=miniboxing.tests.compile.AbstractIterator[Asp]
        $anon.super."<init>" // def <init>(): miniboxing.tests.compile.AbstractIterator[A] in trait AbstractIterator, tree.tpe=()miniboxing.tests.compile.AbstractIterator[Asp]
        Nil
      )
      ()
    )
  )
  ValDef( // private[this] var hd: Long
    private <mutable> <local> <defaultinit> <triedcooking>
    "hd "
    <tpt> // tree.tpe=Long
    <empty>
  )
  DefDef( // private def hd(): Asp
    <method> private <accessor> <defaultinit> <triedcooking>
    "hd"
    []
    List(Nil)
    <tpt> // tree.tpe=Asp
    $anon.this."hd " // private[this] var hd: Long, tree.tpe=Asp
  )
  DefDef( // private def hd_=(x$1: Asp): Unit
    <method> private <accessor> <defaultinit> <triedcooking>
    "hd_$eq"
    []
    // 1 parameter list
    ValDef( // x$1: Asp
      <param> <synthetic> <triedcooking>
      "x$1"
      <tpt> // tree.tpe=Asp
      <empty>
    )
    <tpt> // tree.tpe=Unit
    Assign( // tree.tpe=Unit
      $anon.this."hd " // private[this] var hd: Long, tree.tpe=Asp
      "x$1" // x$1: Asp, tree.tpe=Asp
    )
  )
  ValDef( // private[this] var hdDefined: Boolean
    private <mutable> <local> <triedcooking>
    "hdDefined "
    <tpt> // tree.tpe=Boolean
    false
  )
  DefDef( // private def hdDefined(): Boolean
    <method> private <accessor> <triedcooking>
    "hdDefined"
    []
    List(Nil)
    <tpt> // tree.tpe=Boolean
    $anon.this."hdDefined " // private[this] var hdDefined: Boolean, tree.tpe=Boolean
  )
  DefDef( // private def hdDefined_=(x$1: Boolean): Unit
    <method> private <accessor> <triedcooking>
    "hdDefined_$eq"
    []
    // 1 parameter list
    ValDef( // x$1: Boolean
      <param> <synthetic> <triedcooking>
      "x$1"
      <tpt> // tree.tpe=Boolean
      <empty>
    )
    <tpt> // tree.tpe=Unit
    Assign( // tree.tpe=Unit
      $anon.this."hdDefined " // private[this] var hdDefined: Boolean, tree.tpe=Boolean
      "x$1" // x$1: Boolean, tree.tpe=Boolean
    )
  )
  DefDef( // def hasNext(): Boolean
    <method> <triedcooking>
    "hasNext"
    []
    List(Nil)
    <tpt> // tree.tpe=Boolean
    Apply( // def ||(x: Boolean): Boolean in class Boolean, tree.tpe=Boolean
      $anon.this.hdDefined()."$bar$bar" // def ||(x: Boolean): Boolean in class Boolean, tree.tpe=(x: Boolean)Boolean
      Block( // tree.tpe=Boolean
        // 2 statements
        LabelDef( // def doWhile$1(): Unit, tree.tpe=Unit
          ()
          Block( // tree.tpe=Unit
            Block( // tree.tpe=Unit
              If( // tree.tpe=Unit
                Apply( // def unary_!(): Boolean in class Boolean, tree.tpe=Boolean
                  Iterator_J.this.hasNext()."unary_$bang" // def unary_!(): Boolean in class Boolean, tree.tpe=()Boolean
                  Nil
                )
                Return( // def hasNext(): Boolean, tree.tpe=Nothing
                  false
                )
                ()
              )
              Apply( // private def hd_=(x$1: Asp): Unit, tree.tpe=Unit
                $anon.this."hd_$eq" // private def hd_=(x$1: Asp): Unit, tree.tpe=(x$1: Asp)Unit
                Apply( // def next(): Asp in trait Iterator_J, tree.tpe=Asp
                  Iterator_J.this."next" // def next(): Asp in trait Iterator_J, tree.tpe=()Asp
                  Nil
                )
              )
            )
            If( // tree.tpe=Unit
              Apply( // def unary_!(): Boolean in class Boolean, tree.tpe=Boolean
                p.apply($anon.this.hd())."unary_$bang" // def unary_!(): Boolean in class Boolean, tree.tpe=()Boolean
                Nil
              )
              Apply( // def doWhile$1(): Unit, tree.tpe=Unit
                "doWhile$1" // def doWhile$1(): Unit, tree.tpe=()Unit
                Nil
              )
              ()
            )
          )
        )
        Apply( // private def hdDefined_=(x$1: Boolean): Unit, tree.tpe=Unit
          $anon.this."hdDefined_$eq" // private def hdDefined_=(x$1: Boolean): Unit, tree.tpe=(x$1: Boolean)Unit
          true
        )
        true
      )
    )
  )
  DefDef( // def next(): Asp
    <method>
    "next"
    []
    List(Nil)
    <tpt> // tree.tpe=Asp
    If( // tree.tpe=Asp
      Apply( // def hasNext(): Boolean, tree.tpe=Boolean
        $anon.this."hasNext" // def hasNext(): Boolean, tree.tpe=()Boolean
        Nil
      )
      Block( // tree.tpe=Asp
        Apply( // private def hdDefined_=(x$1: Boolean): Unit, tree.tpe=Unit
          $anon.this."hdDefined_$eq" // private def hdDefined_=(x$1: Boolean): Unit, tree.tpe=(x$1: Boolean)Unit
          false
        )
        Apply( // private def hd(): Asp, tree.tpe=Asp
          $anon.this."hd" // private def hd(): Asp, tree.tpe=()Asp
          Nil
        )
      )
      Apply( // def ???(): Nothing in object Predef, tree.tpe=Nothing
        scala.this."Predef"."$qmark$qmark$qmark" // def ???(): Nothing in object Predef, tree.tpe=()Nothing
        Nil
      )
    )
  )
)

== Expanded type of tree ==

ThisType(anonymous class $anon)

uncaught exception during compilation: scala.reflect.internal.Types$TypeError
error: scala.reflect.internal.Types$TypeError: variable hd cannot be accessed in miniboxing.tests.compile.AbstractIterator_L[Asp]{}
    at scala.tools.nsc.typechecker.Contexts$Context.issueCommon(Contexts.scala:397)
    at scala.tools.nsc.typechecker.Contexts$Context.issue(Contexts.scala:401)
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedSelect$1(Typers.scala:4816)
    at scala.tools.nsc.typechecker.Typers$Typer.typedSelectOrSuperCall$1(Typers.scala:4894)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5524)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at scala.tools.nsc.typechecker.Typers$Typer.typedAssign$1(Typers.scala:4232)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5539)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5665)
    at miniboxing.plugin.MiniboxTreeSpecializer$MiniboxTreeSpecializer.boxingTransform(MiniboxTreeSpecializer.scala:209)
    at miniboxing.plugin.MiniboxTreeSpecializer$MiniboxTreeSpecializer.transform(MiniboxTreeSpecializer.scala:167)
    at miniboxing.plugin.MiniboxTreeSpecializer$MiniboxTreeSpecializer.boxingTransform(MiniboxTreeSpecializer.scala:214)
    at miniboxing.plugin.MiniboxTreeSpecializer$MiniboxTreeSpecializer.transform(MiniboxTreeSpecializer.scala:167)
    at miniboxing.plugin.MiniboxTreeSpecializer$MiniboxTreeSpecializer.transform(MiniboxTreeSpecializer.scala:147)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1276)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.scala$tools$nsc$transform$TypingTransformers$TypingTransformer$$super$transform(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$1.apply(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$1.apply(TypingTransformers.scala:44)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:44)
    at miniboxing.plugin.MiniboxTreeSpecializer$MiniboxTreeSpecializer.boxingTransform(MiniboxTreeSpecializer.scala:219)
    at miniboxing.plugin.MiniboxTreeSpecializer$MiniboxTreeSpecializer.transform(MiniboxTreeSpecializer.scala:167)
    at miniboxing.plugin.MiniboxTreeSpecializer$MiniboxTreeSpecializer.transform(MiniboxTreeSpecializer.scala:147)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at miniboxing.plugin.MiniboxTreeSpecializer$MiniboxTreeSpecializer.boxingTransform(MiniboxTreeSpecializer.scala:218)
    at miniboxing.plugin.MiniboxTreeSpecializer$MiniboxTreeSpecializer.transform(MiniboxTreeSpecializer.scala:167)
    at miniboxing.plugin.MiniboxTreeSpecializer$MiniboxTreeSpecializer.transform(MiniboxTreeSpecializer.scala:147)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1238)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeSpecializer$MiniboxTreeSpecializer.boxingTransform(MiniboxTreeSpecializer.scala:219)
    at miniboxing.plugin.MiniboxTreeSpecializer$MiniboxTreeSpecializer.transform(MiniboxTreeSpecializer.scala:167)
    at miniboxing.plugin.MiniboxTreeSpecializer$MiniboxTreeSpecializer.boxingTransform(MiniboxTreeSpecializer.scala:214)
    at miniboxing.plugin.MiniboxTreeSpecializer$MiniboxTreeSpecializer.transform(MiniboxTreeSpecializer.scala:167)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.duplicateBody(MiniboxTreeTransformation.scala:793)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.specializeDefDefBody(MiniboxTreeTransformation.scala:733)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:187)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:23)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:130)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:130)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:130)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:23)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:447)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:23)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:99)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:96)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:96)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:103)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:103)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxComponent$class.afterMinibox(Minibox.scala:28)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:103)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:96)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Exception in thread "main" scala.reflect.internal.Types$TypeError: variable hd cannot be accessed in miniboxing.tests.compile.AbstractIterator_L[Asp]{}
    at scala.tools.nsc.typechecker.Contexts$Context.issueCommon(Contexts.scala:397)
    at scala.tools.nsc.typechecker.Contexts$Context.issue(Contexts.scala:401)
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedSelect$1(Typers.scala:4816)
    at scala.tools.nsc.typechecker.Typers$Typer.typedSelectOrSuperCall$1(Typers.scala:4894)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5524)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at scala.tools.nsc.typechecker.Typers$Typer.typedAssign$1(Typers.scala:4232)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5539)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5665)
    at miniboxing.plugin.MiniboxTreeSpecializer$MiniboxTreeSpecializer.boxingTransform(MiniboxTreeSpecializer.scala:209)
    at miniboxing.plugin.MiniboxTreeSpecializer$MiniboxTreeSpecializer.transform(MiniboxTreeSpecializer.scala:167)
    at miniboxing.plugin.MiniboxTreeSpecializer$MiniboxTreeSpecializer.boxingTransform(MiniboxTreeSpecializer.scala:214)
    at miniboxing.plugin.MiniboxTreeSpecializer$MiniboxTreeSpecializer.transform(MiniboxTreeSpecializer.scala:167)
    at miniboxing.plugin.MiniboxTreeSpecializer$MiniboxTreeSpecializer.transform(MiniboxTreeSpecializer.scala:147)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1276)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.scala$tools$nsc$transform$TypingTransformers$TypingTransformer$$super$transform(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$1.apply(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$1.apply(TypingTransformers.scala:44)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:44)
    at miniboxing.plugin.MiniboxTreeSpecializer$MiniboxTreeSpecializer.boxingTransform(MiniboxTreeSpecializer.scala:219)
    at miniboxing.plugin.MiniboxTreeSpecializer$MiniboxTreeSpecializer.transform(MiniboxTreeSpecializer.scala:167)
    at miniboxing.plugin.MiniboxTreeSpecializer$MiniboxTreeSpecializer.transform(MiniboxTreeSpecializer.scala:147)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at miniboxing.plugin.MiniboxTreeSpecializer$MiniboxTreeSpecializer.boxingTransform(MiniboxTreeSpecializer.scala:218)
    at miniboxing.plugin.MiniboxTreeSpecializer$MiniboxTreeSpecializer.transform(MiniboxTreeSpecializer.scala:167)
    at miniboxing.plugin.MiniboxTreeSpecializer$MiniboxTreeSpecializer.transform(MiniboxTreeSpecializer.scala:147)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1238)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeSpecializer$MiniboxTreeSpecializer.boxingTransform(MiniboxTreeSpecializer.scala:219)
    at miniboxing.plugin.MiniboxTreeSpecializer$MiniboxTreeSpecializer.transform(MiniboxTreeSpecializer.scala:167)
    at miniboxing.plugin.MiniboxTreeSpecializer$MiniboxTreeSpecializer.boxingTransform(MiniboxTreeSpecializer.scala:214)
    at miniboxing.plugin.MiniboxTreeSpecializer$MiniboxTreeSpecializer.transform(MiniboxTreeSpecializer.scala:167)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.duplicateBody(MiniboxTreeTransformation.scala:793)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.specializeDefDefBody(MiniboxTreeTransformation.scala:733)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:187)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:23)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:130)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:130)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:130)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:23)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:447)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:23)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:99)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:96)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:96)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:103)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:103)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxComponent$class.afterMinibox(Minibox.scala:28)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:103)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:96)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

MINIBOXED coincides with SYNCHRONIZED

  final val SYNCHRONIZED  = 1L << 45      // symbol is a method which should be marked ACC_SYNCHRONIZED
  final val ARTIFACT      = 1L << 46      // symbol should be ignored when typechecking; will be marked ACC_SYNTHETIC in bytecode

47 is free.

Problems copying type parameters in duplicator

See https://github.com/miniboxing/miniboxing-plugin/tree/wip/tests/correctness/src/miniboxing/tests/compile/mb_nested_class_fifth.check:

Specializing class CCCCC...

  // interface:
  abstract trait CCCCC[T] extends Object {
    def test(): Unit
    def test_J(val CCCCC_T_TypeTag: Byte): Unit
  }

  // specialized class:
  class CCCCC_J[Tsp] extends CCCCC[Tsp] {
    def <init>(val CCCCC_T_TypeTag: Byte,c: Long): miniboxing.tests.compile.nested.CCCCC_J[Tsp] // is a specialized implementation of constructor CCCCC
    def test(): Unit                                                       // is a forwarder to method test_J
    def test_J(val CCCCC_T_TypeTag: Byte): Unit                            // is a specialized implementation of method test
    private[this] val CCCCC_T_TypeTag: Byte                                // no info
    private[this] val c: Long                                              // is a specialized implementation of value c
  }

  // specialized class:
  class CCCCC_L[Tsp] extends CCCCC[Tsp] {
    def <init>(c: Tsp): miniboxing.tests.compile.nested.CCCCC_L[Tsp]       // is a specialized implementation of constructor CCCCC
    def test(): Unit                                                       // is a specialized implementation of method test
    def test_J(val CCCCC_T_TypeTag: Byte): Unit                            // is a forwarder to method test
    private[this] val c: Tsp                                               // is a specialized implementation of value c
  }




[[syntax trees at end of                   minibox]] // newSource1.scala
package miniboxing.tests.compile.nested {
  abstract trait CCCCC[@miniboxing.plugin.minispec T >: Nothing <: Any] extends Object {
    def test(): Unit;
    def test_J(CCCCC_T_TypeTag: Byte): Unit
  };
  class CCCCC_J[Tsp >: Nothing <: Any] extends Object with miniboxing.tests.compile.nested.CCCCC[Tsp] {
    def <init>(CCCCC_T_TypeTag: Byte, c: Long): miniboxing.tests.compile.nested.CCCCC_J[Tsp] = {
      CCCCC_J.super.<init>();
      ()
    };
    def test(): Unit = CCCCC_J.this.test_J(CCCCC_J.this.CCCCC_T_TypeTag);
    def test_J(CCCCC_T_TypeTag: Byte): Unit = {
      class DDDDD[U >: Nothing <: Any] extends Object {
        <paramaccessor> private[this] val d: U = _;
        def <init>(d: U): DDDDD[U] = {
          DDDDD.super.<init>();
          ()
        };
        private[this] val x1: Long = CCCCC_J.this.c;
        <stable> <accessor> def x1(): Tsp = DDDDD.this.x1;
        private[this] val x2: U = DDDDD.this.d;
        <stable> <accessor> def x2(): U = DDDDD.this.x2;
        def foo(): Unit = {
          val x3: Long = CCCCC_J.this.c;
          val x4: U = DDDDD.this.d;
          scala.this.Predef.println(DDDDD.this.x1().==(DDDDD.this.x2()));
          scala.this.Predef.println(MiniboxTypeTagDispatch.this.mboxed_eqeq_other(x3, CCCCC_T_TypeTag, x4))
        }
      };
      ()
    };
    <paramaccessor> private[this] val CCCCC_T_TypeTag: Byte = _;
    <paramaccessor> private[this] val c: Long = _
  };
  class CCCCC_L[Tsp >: Nothing <: Any] extends Object with miniboxing.tests.compile.nested.CCCCC[Tsp] {
    def <init>(c: Tsp): miniboxing.tests.compile.nested.CCCCC_L[Tsp] = {
      CCCCC_L.super.<init>();
      ()
    };
    def test(): Unit = {
      class DDDDD[U >: Nothing <: Any] extends Object {
        <paramaccessor> private[this] val d: U = _;
        def <init>(d: U): DDDDD[U] = {
          DDDDD.super.<init>();
          ()
        };
        private[this] val x1: Tsp = CCCCC_L.this.c;
        <stable> <accessor> def x1(): Tsp = DDDDD.this.x1;
        private[this] val x2: U = DDDDD.this.d;
        <stable> <accessor> def x2(): U = DDDDD.this.x2;
        def foo(): Unit = {
          val x3: Tsp = CCCCC_L.this.c;
          val x4: U = DDDDD.this.d;
          scala.this.Predef.println(DDDDD.this.x1().==(DDDDD.this.x2()));
          scala.this.Predef.println(x3.==(x4))
        }
      };
      ()
    };
    def test_J(CCCCC_T_TypeTag: Byte): Unit = CCCCC_L.this.test();
    <paramaccessor> private[this] val c: Tsp = _
  }
}

[Now checking: minibox]
[check: minibox] 2 DefTrees with symbol ''type U' in class DDDDD': <sym='type U' in class DDDDD>, <sym='type U' in class DDDDD>
[check: minibox] newSource1.scala:7:
 currentOwner chain: class DDDDD -> method test_J -> class CCCCC_J
       symbol chain: type U -> class DDDDD -> method test -> trait CCCCC -> package nested -> package compile -> package tests -> package miniboxing -> package <root>scala.reflect.internal.Trees$TypeDef / type U
[check: minibox] The symbol, tpe or info of tree `(<paramaccessor> private[this] val d: U = _) : U` refers to a out-of-scope symbol, type U in class DDDDD. tree.symbol.ownerChain: value d, class DDDDD, method test_J, class CCCCC_J, package nested, package compile, package tests, package miniboxing, package <root>
[check: minibox] The symbol, tpe or info of tree `(def <init>(d: U): DDDDD[U] = {
  DDDDD.super.<init>();
  ()
}) : (d: U)DDDDD[U]` refers to a out-of-scope symbol, type U in class DDDDD. tree.symbol.ownerChain: constructor DDDDD, class DDDDD, method test_J, class CCCCC_J, package nested, package compile, package tests, package miniboxing, package <root>
[check: minibox] The symbol, tpe or info of tree `(val d: U = _) : U` refers to a out-of-scope symbol, type U in class DDDDD. tree.symbol.ownerChain: value d, constructor DDDDD, class DDDDD, method test_J, class CCCCC_J, package nested, package compile, package tests, package miniboxing, package <root>
[check: minibox] The symbol, tpe or info of tree `(private[this] val x2: U = DDDDD.this.d) : U` refers to a out-of-scope symbol, type U in class DDDDD. tree.symbol.ownerChain: value x2, class DDDDD, method test_J, class CCCCC_J, package nested, package compile, package tests, package miniboxing, package <root>
[check: minibox] The symbol, tpe or info of tree `(DDDDD.this.d) : U` refers to a out-of-scope symbol, type U in class DDDDD. tree.symbol.ownerChain: value d, class DDDDD, method test_J, class CCCCC_J, package nested, package compile, package tests, package miniboxing, package <root>
[check: minibox] The symbol, tpe or info of tree `(DDDDD.this.x2) : U` refers to a out-of-scope symbol, type U in class DDDDD. tree.symbol.ownerChain: value x2, class DDDDD, method test_J, class CCCCC_J, package nested, package compile, package tests, package miniboxing, package <root>
[check: minibox] The symbol, tpe or info of tree `(val x4: U = DDDDD.this.d) : U` refers to a out-of-scope symbol, type U in class DDDDD. tree.symbol.ownerChain: value x4, method foo, class DDDDD, method test_J, class CCCCC_J, package nested, package compile, package tests, package miniboxing, package <root>
[check: minibox] The symbol, tpe or info of tree `(DDDDD.this.d) : U` refers to a out-of-scope symbol, type U in class DDDDD. tree.symbol.ownerChain: value d, class DDDDD, method test_J, class CCCCC_J, package nested, package compile, package tests, package miniboxing, package <root>
[check: minibox] The symbol, tpe or info of tree `(x4) : U` refers to a out-of-scope symbol, type U in class DDDDD. tree.symbol.ownerChain: value x4, method foo, class DDDDD, method test_J, class CCCCC_J, package nested, package compile, package tests, package miniboxing, package <root>
[check: minibox] newSource1.scala:7:
 currentOwner chain: class DDDDD -> method test -> class CCCCC_L
       symbol chain: type U -> class DDDDD -> method test -> trait CCCCC -> package nested -> package compile -> package tests -> package miniboxing -> package <root>scala.reflect.internal.Trees$TypeDef / type U
[check: minibox] The symbol, tpe or info of tree `(<paramaccessor> private[this] val d: U = _) : U` refers to a out-of-scope symbol, type U in class DDDDD. tree.symbol.ownerChain: value d, class DDDDD, method test, class CCCCC_L, package nested, package compile, package tests, package miniboxing, package <root>
[check: minibox] The symbol, tpe or info of tree `(def <init>(d: U): DDDDD[U] = {
  DDDDD.super.<init>();
  ()
}) : (d: U)DDDDD[U]` refers to a out-of-scope symbol, type U in class DDDDD. tree.symbol.ownerChain: constructor DDDDD, class DDDDD, method test, class CCCCC_L, package nested, package compile, package tests, package miniboxing, package <root>
[check: minibox] The symbol, tpe or info of tree `(val d: U = _) : U` refers to a out-of-scope symbol, type U in class DDDDD. tree.symbol.ownerChain: value d, constructor DDDDD, class DDDDD, method test, class CCCCC_L, package nested, package compile, package tests, package miniboxing, package <root>
[check: minibox] The symbol, tpe or info of tree `(private[this] val x2: U = DDDDD.this.d) : U` refers to a out-of-scope symbol, type U in class DDDDD. tree.symbol.ownerChain: value x2, class DDDDD, method test, class CCCCC_L, package nested, package compile, package tests, package miniboxing, package <root>
[check: minibox] The symbol, tpe or info of tree `(DDDDD.this.d) : U` refers to a out-of-scope symbol, type U in class DDDDD. tree.symbol.ownerChain: value d, class DDDDD, method test, class CCCCC_L, package nested, package compile, package tests, package miniboxing, package <root>
[check: minibox] The symbol, tpe or info of tree `(DDDDD.this.x2) : U` refers to a out-of-scope symbol, type U in class DDDDD. tree.symbol.ownerChain: value x2, class DDDDD, method test, class CCCCC_L, package nested, package compile, package tests, package miniboxing, package <root>
[check: minibox] The symbol, tpe or info of tree `(val x4: U = DDDDD.this.d) : U` refers to a out-of-scope symbol, type U in class DDDDD. tree.symbol.ownerChain: value x4, method foo, class DDDDD, method test, class CCCCC_L, package nested, package compile, package tests, package miniboxing, package <root>
[check: minibox] The symbol, tpe or info of tree `(DDDDD.this.d) : U` refers to a out-of-scope symbol, type U in class DDDDD. tree.symbol.ownerChain: value d, class DDDDD, method test, class CCCCC_L, package nested, package compile, package tests, package miniboxing, package <root>
[check: minibox] The symbol, tpe or info of tree `(x4) : U` refers to a out-of-scope symbol, type U in class DDDDD. tree.symbol.ownerChain: value x4, method foo, class DDDDD, method test, class CCCCC_L, package nested, package compile, package tests, package miniboxing, package <root>
newSource1.scala:8: error:
**** ERROR DURING INTERNAL CHECKING ****
type mismatch;
 found   : DDDDD.this.x1.type (with underlying type Long)
 required: Tsp
      val x1: T = c
          ^
warning: TreeCheckers detected non-compliant trees in newSource1.scala

Incorrect field access rewiring

sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ cat mb_spire_10.scala 
package miniboxing.tests.compile
import miniboxing.plugin.minispec

trait Field1[@minispec A] {
  def zero: A
  def plus(o1: A, o2: A): A
  def times(o1: A, o2: A): A
}

trait ArrayInnerProductSpace1[@minispec A] {
  def scalar: Field1[A]

  def dot(v: Array[A], w: Array[A], zero: A): A = {
    var z = scalar.zero
    var i = 0
    while (i < v.length && i < w.length) {
      z = scalar.plus(z, scalar.times(v(i), w(i)))
      i += 1
    }
    z
  }
}
sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ ../mb-scalac mb_spire_10.scala 
var z: Long = $this.scalar_J(ArrayInnerProductSpace1_A_TypeTag).zero_J(ArrayInnerProductSpace1_A_TypeTag)
var i: Int = 0
while$1(){
  if (i.<(MiniboxArray_FullSwitch.this.mbarray_length(v, ArrayInnerProductSpace1_A_TypeTag)).&&(i.<(MiniboxArray_FullSwitch.this.mbarray_length(w, ArrayInnerProductSpace1_A_TypeTag))))
    {
      {
        MiniboxConversions.this.minibox2box(z, ArrayInnerProductSpace1_A_TypeTag) = MiniboxConversions.this.minibox2box($this.scalar_J(ArrayInnerProductSpace1_A_TypeTag).plus_J(ArrayInnerProductSpace1_A_TypeTag, z, $this.scalar_J(ArrayInnerProductSpace1_A_TypeTag).times_J(ArrayInnerProductSpace1_A_TypeTag, MiniboxArray_FullSwitch.this.mbarray_apply_minibox(v, i, ArrayInnerProductSpace1_A_TypeTag), MiniboxArray_FullSwitch.this.mbarray_apply_minibox(w, i, ArrayInnerProductSpace1_A_TypeTag))), ArrayInnerProductSpace1_A_TypeTag);
        i = i.+(1)
      };
      while$1()
    }
  else
    ()
}
{
  MiniboxConversions.this.minibox2box(z, ArrayInnerProductSpace1_A_TypeTag) = MiniboxConversions.this.minibox2box($this.scalar_J(ArrayInnerProductSpace1_A_TypeTag).plus_J(ArrayInnerProductSpace1_A_TypeTag, z, $this.scalar_J(ArrayInnerProductSpace1_A_TypeTag).times_J(ArrayInnerProductSpace1_A_TypeTag, MiniboxArray_FullSwitch.this.mbarray_apply_minibox(v, i, ArrayInnerProductSpace1_A_TypeTag), MiniboxArray_FullSwitch.this.mbarray_apply_minibox(w, i, ArrayInnerProductSpace1_A_TypeTag))), ArrayInnerProductSpace1_A_TypeTag);
  i = i.+(1)
}
MiniboxConversions.this.minibox2box(z, ArrayInnerProductSpace1_A_TypeTag) = MiniboxConversions.this.minibox2box($this.scalar_J(ArrayInnerProductSpace1_A_TypeTag).plus_J(ArrayInnerProductSpace1_A_TypeTag, z, $this.scalar_J(ArrayInnerProductSpace1_A_TypeTag).times_J(ArrayInnerProductSpace1_A_TypeTag, MiniboxArray_FullSwitch.this.mbarray_apply_minibox(v, i, ArrayInnerProductSpace1_A_TypeTag), MiniboxArray_FullSwitch.this.mbarray_apply_minibox(w, i, ArrayInnerProductSpace1_A_TypeTag))), ArrayInnerProductSpace1_A_TypeTag)
error: Unknown type: (l: Long, tag: Byte)Object, (l: Long, tag: Byte)Object [class scala.reflect.internal.Types$MethodType, class scala.reflect.internal.Types$MethodType] TypeRef? false
error: uncaught exception during compilation: scala.reflect.internal.FatalError
error: scala.reflect.internal.FatalError: 
     while compiling: mb_spire_10.scala
        during phase: icode
     library version: version 2.10.3-20130708-144415-62405227dd
    compiler version: version 2.10.3-20130708-163611-504b5f3b15
  reconstructed args: -bootclasspath /home/sun/workspace/dev/miniboxing-plugin//components/runtime/target/scala-2.10/miniboxing-runtime_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar -Xplugin:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: Ident(i)
              symbol: variable i (flags: <mutable> <triedcooking>)
   symbol definition: var i: Int
                 tpe: Int
       symbol owners: variable i -> method dot -> object ArrayInnerProductSpace1_L$class -> package compile
      context owners: object ArrayInnerProductSpace1_L$class -> package compile

== Enclosing template or block ==

Template( // val <local ArrayInnerProductSpace1_L$class>: <notype> in object ArrayInnerProductSpace1_L$class, tree.tpe=miniboxing.tests.compile.ArrayInnerProductSpace1_L
  // parents
  ValDef(
    private
    "_"
    <tpt>
    <empty>
  )
  // 3 statements
  DefDef( // def dot(x$1: miniboxing.tests.compile.ArrayInnerProductSpace1_L,v: Object,w: Object,zero: Object): Object in object ArrayInnerProductSpace1_L$class
    <method> <notoverride>
    "dot"
    []
    // 1 parameter list
    ValDef( // $this: miniboxing.tests.compile.ArrayInnerProductSpace1_L
      <param>
      "$this"
      <tpt> // tree.tpe=miniboxing.tests.compile.ArrayInnerProductSpace1_L
      <empty>
    )
    ValDef( // v: Object
      <param> <triedcooking>
      "v"
      <tpt> // tree.tpe=Object
      <empty>
    )
    ValDef( // w: Object
      <param> <triedcooking>
      "w"
      <tpt> // tree.tpe=Object
      <empty>
    )
    ValDef( // zero: Object
      <param>
      "zero"
      <tpt> // tree.tpe=Object
      <empty>
    )
    <tpt> // tree.tpe=Object
    Block( // tree.tpe=Object
      // 3 statements
      ValDef( // var z: Object
        <mutable> <triedcooking>
        "z"
        <tpt> // tree.tpe=Object
        Apply( // def zero(): Object in trait Field1, tree.tpe=Object
          $this.scalar()."zero" // def zero(): Object in trait Field1, tree.tpe=()Object
          Nil
        )
      )
      ValDef( // var i: Int
        <mutable> <triedcooking>
        "i"
        <tpt> // tree.tpe=Int
        0
      )
      LabelDef( // def while$1(): Unit, tree.tpe=Unit
        ()
        If( // tree.tpe=Unit
          Apply( // def &&(x: Boolean): Boolean in class Boolean, tree.tpe=Boolean
            i.<(runtime.this.ScalaRunTime.array_length(v))."$amp$amp" // def &&(x: Boolean): Boolean in class Boolean, tree.tpe=(x: Boolean)Boolean
            Apply( // def <(x: Int): Boolean in class Int, tree.tpe=Boolean
              "i"."$less" // def <(x: Int): Boolean in class Int, tree.tpe=(x: Int)Boolean
              Apply( // def array_length(xs: Object): Int in object ScalaRunTime, tree.tpe=Int
                runtime.this."ScalaRunTime"."array_length" // def array_length(xs: Object): Int in object ScalaRunTime, tree.tpe=(xs: Object)Int
                "w" // w: Object, tree.tpe=Object
              )
            )
          )
          Block( // tree.tpe=Unit
            Block( // tree.tpe=Unit
              Assign( // tree.tpe=Unit
                "z" // var z: Object, tree.tpe=Object
                Apply( // def plus(o1: Object,o2: Object): Object in trait Field1, tree.tpe=Object
                  $this.scalar()."plus" // def plus(o1: Object,o2: Object): Object in trait Field1, tree.tpe=(o1: Object, o2: Object)Object
                  // 2 arguments
                  "z" // var z: Object, tree.tpe=Object
                  Apply( // def times(o1: Object,o2: Object): Object in trait Field1, tree.tpe=Object
                    $this.scalar()."times" // def times(o1: Object,o2: Object): Object in trait Field1, tree.tpe=(o1: Object, o2: Object)Object
                    // 2 arguments
                    Apply( // def array_apply(xs: Object,idx: Int): Object in object ScalaRunTime, tree.tpe=Object
                      runtime.this."ScalaRunTime"."array_apply" // def array_apply(xs: Object,idx: Int): Object in object ScalaRunTime, tree.tpe=(xs: Object, idx: Int)Object
                      // 2 arguments
                      "v" // v: Object, tree.tpe=Object
                      "i" // var i: Int, tree.tpe=Int
                    )
                    Apply( // def array_apply(xs: Object,idx: Int): Object in object ScalaRunTime, tree.tpe=Object
                      runtime.this."ScalaRunTime"."array_apply" // def array_apply(xs: Object,idx: Int): Object in object ScalaRunTime, tree.tpe=(xs: Object, idx: Int)Object
                      // 2 arguments
                      "w" // w: Object, tree.tpe=Object
                      "i" // var i: Int, tree.tpe=Int
                    )
                  )
                )
              )
              Assign( // tree.tpe=Unit
                "i" // var i: Int, tree.tpe=Int
                Apply( // def +(x: Int): Int in class Int, tree.tpe=Int
                  "i"."$plus" // def +(x: Int): Int in class Int, tree.tpe=(x: Int)Int
                  1
                )
              )
            )
            Apply( // def while$1(): Unit, tree.tpe=Unit
              "while$1" // def while$1(): Unit, tree.tpe=()Unit
              Nil
            )
          )
          ()
        )
      )
      "z" // var z: Object, tree.tpe=Object
    )
  )
  DefDef( // def dot_J(x$1: miniboxing.tests.compile.ArrayInnerProductSpace1_L,val ArrayInnerProductSpace1_A_TypeTag: Byte,v: Object,w: Object,zero: Long): Long in object ArrayInnerProductSpace1_L$class
    <method> <notoverride>
    "dot_J"
    []
    // 1 parameter list
    ValDef( // $this: miniboxing.tests.compile.ArrayInnerProductSpace1_L
      <param>
      "$this"
      <tpt> // tree.tpe=miniboxing.tests.compile.ArrayInnerProductSpace1_L
      <empty>
    )
    ValDef( // val ArrayInnerProductSpace1_A_TypeTag: Byte
      <triedcooking>
      "ArrayInnerProductSpace1_A_TypeTag"
      <tpt> // tree.tpe=Byte
      <empty>
    )
    ValDef( // v: Object
      <param> <triedcooking>
      "v"
      <tpt> // tree.tpe=Object
      <empty>
    )
    ValDef( // w: Object
      <param> <triedcooking>
      "w"
      <tpt> // tree.tpe=Object
      <empty>
    )
    ValDef( // zero: Long
      <param> <triedcooking>
      "zero"
      <tpt> // tree.tpe=Long
      <empty>
    )
    <tpt> // tree.tpe=Long
    Apply( // final def box2minibox_tt(a: Object,tag: Byte): Long in object MiniboxConversions, tree.tpe=Long
      MiniboxConversions.this."box2minibox_tt" // final def box2minibox_tt(a: Object,tag: Byte): Long in object MiniboxConversions, tree.tpe=(a: Object, tag: Byte)Long
      // 2 arguments
      Apply( // def dot(v: Object,w: Object,zero: Object): Object in trait ArrayInnerProductSpace1_L, tree.tpe=Object
        "$this"."dot" // def dot(v: Object,w: Object,zero: Object): Object in trait ArrayInnerProductSpace1_L, tree.tpe=(v: Object, w: Object, zero: Object)Object
        // 3 arguments
        "v" // v: Object, tree.tpe=Object
        "w" // w: Object, tree.tpe=Object
        Apply( // final def minibox2box(l: Long,tag: Byte): Object in object MiniboxConversions, tree.tpe=Object
          MiniboxConversions.this."minibox2box" // final def minibox2box(l: Long,tag: Byte): Object in object MiniboxConversions, tree.tpe=(l: Long, tag: Byte)Object
          // 2 arguments
          "zero" // zero: Long, tree.tpe=Long
          "ArrayInnerProductSpace1_A_TypeTag" // val ArrayInnerProductSpace1_A_TypeTag: Byte, tree.tpe=Byte
        )
      )
      "ArrayInnerProductSpace1_A_TypeTag" // val ArrayInnerProductSpace1_A_TypeTag: Byte, tree.tpe=Byte
    )
  )
  DefDef( // def $init$(x$1: miniboxing.tests.compile.ArrayInnerProductSpace1_L): Unit in object ArrayInnerProductSpace1_L$class
    <method> <notoverride>
    "$init$"
    []
    // 1 parameter list
    ValDef( // $this: miniboxing.tests.compile.ArrayInnerProductSpace1_L
      <param>
      "$this"
      <tpt> // tree.tpe=miniboxing.tests.compile.ArrayInnerProductSpace1_L
      <empty>
    )
    <tpt> // tree.tpe=Unit
    Block( // tree.tpe=Unit
      {}
      ()
    )
  )
)

== Expanded type of tree ==

TypeRef(TypeSymbol(final abstract class Int extends ))

Unknown type: (l: Long, tag: Byte)Object, (l: Long, tag: Byte)Object [class scala.reflect.internal.Types$MethodType, class scala.reflect.internal.Types$MethodType] TypeRef? false
    at scala.reflect.internal.SymbolTable.abort(SymbolTable.scala:49)
    at scala.tools.nsc.Global.abort(Global.scala:254)
    at scala.tools.nsc.backend.icode.TypeKinds$class.toTypeKind(TypeKinds.scala:397)
    at scala.tools.nsc.backend.icode.ICodes.toTypeKind(ICodes.scala:20)
    at scala.tools.nsc.backend.icode.GenICode$ICodePhase.scala$tools$nsc$backend$icode$GenICode$ICodePhase$$genStat(GenICode.scala:183)
    at scala.tools.nsc.backend.icode.GenICode$ICodePhase$$anonfun$genStat$1.apply(GenICode.scala:156)
    at scala.tools.nsc.backend.icode.GenICode$ICodePhase$$anonfun$genStat$1.apply(GenICode.scala:156)
    at scala.collection.LinearSeqOptimized$class.foldLeft(LinearSeqOptimized.scala:111)
    at scala.collection.immutable.List.foldLeft(List.scala:84)
    at scala.tools.nsc.backend.icode.GenICode$ICodePhase.genStat(GenICode.scala:156)
    at scala.tools.nsc.backend.icode.GenICode$ICodePhase.scala$tools$nsc$backend$icode$GenICode$ICodePhase$$genLoad(GenICode.scala:1071)
    at scala.tools.nsc.backend.icode.GenICode$ICodePhase.scala$tools$nsc$backend$icode$GenICode$ICodePhase$$genStat(GenICode.scala:189)
    at scala.tools.nsc.backend.icode.GenICode$ICodePhase$$anonfun$genStat$1.apply(GenICode.scala:156)
    at scala.tools.nsc.backend.icode.GenICode$ICodePhase$$anonfun$genStat$1.apply(GenICode.scala:156)
    at scala.collection.LinearSeqOptimized$class.foldLeft(LinearSeqOptimized.scala:111)
    at scala.collection.immutable.List.foldLeft(List.scala:84)
    at scala.tools.nsc.backend.icode.GenICode$ICodePhase.genStat(GenICode.scala:156)
    at scala.tools.nsc.backend.icode.GenICode$ICodePhase.scala$tools$nsc$backend$icode$GenICode$ICodePhase$$genLoad(GenICode.scala:1071)
    at scala.tools.nsc.backend.icode.GenICode$ICodePhase.genLoadIf(GenICode.scala:385)
    at scala.tools.nsc.backend.icode.GenICode$ICodePhase.scala$tools$nsc$backend$icode$GenICode$ICodePhase$$genLoad(GenICode.scala:668)
    at scala.tools.nsc.backend.icode.GenICode$ICodePhase.genLoadLabelDef$1(GenICode.scala:637)
    at scala.tools.nsc.backend.icode.GenICode$ICodePhase.scala$tools$nsc$backend$icode$GenICode$ICodePhase$$genLoad(GenICode.scala:639)
    at scala.tools.nsc.backend.icode.GenICode$ICodePhase.scala$tools$nsc$backend$icode$GenICode$ICodePhase$$genStat(GenICode.scala:189)
    at scala.tools.nsc.backend.icode.GenICode$ICodePhase$$anonfun$genStat$1.apply(GenICode.scala:156)
    at scala.tools.nsc.backend.icode.GenICode$ICodePhase$$anonfun$genStat$1.apply(GenICode.scala:156)
    at scala.collection.LinearSeqOptimized$class.foldLeft(LinearSeqOptimized.scala:111)
    at scala.collection.immutable.List.foldLeft(List.scala:84)
    at scala.tools.nsc.backend.icode.GenICode$ICodePhase.genStat(GenICode.scala:156)
    at scala.tools.nsc.backend.icode.GenICode$ICodePhase.scala$tools$nsc$backend$icode$GenICode$ICodePhase$$genLoad(GenICode.scala:1071)
    at scala.tools.nsc.backend.icode.GenICode$ICodePhase.gen(GenICode.scala:124)
    at scala.tools.nsc.backend.icode.GenICode$ICodePhase$$anonfun$gen$1.apply(GenICode.scala:72)
    at scala.tools.nsc.backend.icode.GenICode$ICodePhase$$anonfun$gen$1.apply(GenICode.scala:72)
    at scala.collection.immutable.List.foreach(List.scala:318)
    at scala.tools.nsc.backend.icode.GenICode$ICodePhase.gen(GenICode.scala:72)
    at scala.tools.nsc.backend.icode.GenICode$ICodePhase.gen(GenICode.scala:149)
    at scala.tools.nsc.backend.icode.GenICode$ICodePhase.gen(GenICode.scala:99)
    at scala.tools.nsc.backend.icode.GenICode$ICodePhase$$anonfun$gen$1.apply(GenICode.scala:72)
    at scala.tools.nsc.backend.icode.GenICode$ICodePhase$$anonfun$gen$1.apply(GenICode.scala:72)
    at scala.collection.immutable.List.foreach(List.scala:318)
    at scala.tools.nsc.backend.icode.GenICode$ICodePhase.gen(GenICode.scala:72)
    at scala.tools.nsc.backend.icode.GenICode$ICodePhase.gen(GenICode.scala:90)
    at scala.tools.nsc.backend.icode.GenICode$ICodePhase.gen(GenICode.scala:68)
    at scala.tools.nsc.backend.icode.GenICode$ICodePhase.apply(GenICode.scala:64)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.backend.icode.GenICode$ICodePhase.run(GenICode.scala:57)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Tailcalls issue (spire)

sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ cat mb_spire_6.scala 
package miniboxing.tests.compile
import miniboxing.plugin.minispec
import scala.annotation.tailrec

class X[@minispec A] {
  @tailrec def zzz(x: A): A = zzz(x)
}
sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ ../mb-scalac mb_spire_6.scala 
mb_spire_6.scala:6: error: @tailrec annotated method contains no recursive calls
  @tailrec def zzz(x: A): A = zzz(x)
               ^
one error found

Explicitouter crash on empty specialized class

Fallout from the scalac changes:

package benchmarks

import miniboxing.plugin.minispec

class MBList[@minispec T]() {}

Spits out:

error: no-symbol does not have an owner

     while compiling: ../miniboxing-plugin/test/benchmarks/MBList.scala
        during phase: global=explicitouter, atPhase=erasure
     library version: version 2.10.0-20121014-154054-f3550d25e0
    compiler version: version 2.10.0-20121014-154054-f3550d25e0
  reconstructed args: -Xprint:minibox -Xprint:selectiveanf -Xprint:specialize -d mboxing -classpath /home/sun/workspace/dev/miniboxing-plugin/components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin/components/runtime/target/scala-2.10/miniboxing-runime_2.10-0.1-SNAPSHOT.jar -uniqid -Xplugin:/home/sun/workspace/dev/miniboxing-plugin/components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: term benchmarks
              symbol: package benchmarks#6919 (flags: final <module> <package> <java> <triedcooking>)
   symbol definition: final package benchmarks#6919
                 tpe: <notype>
       symbol owners: package benchmarks#6919 -> package <root>#2
      context owners: value T_TypeTag#12799 -> constructor MBList_L#12794 -> class MBList_L#12791 -> package benchmarks#6920

== Enclosing template or block ==

DefDef( // def <init>#12794(val T_TypeTag#12795: Byte#1217): benchmarks#6920.MBList_L#12791[Tsp#12792] in class MBList_L#12791
  <method> <synchronized>
  "<init>"
  []
  // 1 parameter list
  ValDef( // val T_TypeTag#12799: Byte#1217
    <synthetic>
    "T_TypeTag"
    <tpt> // tree.tpe=Byte#1217
    <empty>
  )
  <tpt> // tree.tpe=benchmarks#6920.MBList_L#12791[Tsp#12792]
  Block( // tree.tpe=Unit#614
    Apply( // def <init>#4677(): Object#1728 in class Object#1728, tree.tpe=Object#1728
      MBList#6922.super."<init>" // def <init>#4677(): Object#1728 in class Object#1728, tree.tpe=()Object#1728
      Nil
    )
    ()
  )
)

== Expanded type of tree ==

<notype>

unhandled exception while transforming MBList.scala
error: 
     while compiling: ../miniboxing-plugin/test/benchmarks/MBList.scala
        during phase: explicitouter
     library version: version 2.10.0-20121014-154054-f3550d25e0
    compiler version: version 2.10.0-20121014-154054-f3550d25e0
  reconstructed args: -Xprint:minibox -Xprint:selectiveanf -Xprint:specialize -d mboxing -classpath /home/sun/workspace/dev/miniboxing-plugin/components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin/components/runtime/target/scala-2.10/miniboxing-runime_2.10-0.1-SNAPSHOT.jar -uniqid -Xplugin:/home/sun/workspace/dev/miniboxing-plugin/components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: term benchmarks
              symbol: package benchmarks#6919 (flags: final <module> <package> <java> <triedcooking>)
   symbol definition: final package benchmarks#6919
                 tpe: <notype>
       symbol owners: package benchmarks#6919 -> package <root>#2
      context owners: value T_TypeTag#12799 -> constructor MBList_L#12794 -> class MBList_L#12791 -> package benchmarks#6920

== Enclosing template or block ==

DefDef( // def <init>#12794(val T_TypeTag#12795: Byte#1217): benchmarks#6920.MBList_L#12791[Tsp#12792] in class MBList_L#12791
  <method> <synchronized>
  "<init>"
  []
  // 1 parameter list
  ValDef( // val T_TypeTag#12799: Byte#1217
    <synthetic>
    "T_TypeTag"
    <tpt> // tree.tpe=Byte#1217
    <empty>
  )
  <tpt> // tree.tpe=benchmarks#6920.MBList_L#12791[Tsp#12792]
  Block( // tree.tpe=Unit#614
    Apply( // def <init>#4677(): Object#1728 in class Object#1728, tree.tpe=Object#1728
      MBList#6922.super."<init>" // def <init>#4677(): Object#1728 in class Object#1728, tree.tpe=()Object#1728
      Nil
    )
    ()
  )
)

== Expanded type of tree ==

<notype>

uncaught exception during compilation: scala.reflect.internal.FatalError
error: scala.reflect.internal.FatalError: 
     while compiling: ../miniboxing-plugin/test/benchmarks/MBList.scala
        during phase: global=explicitouter, atPhase=erasure
     library version: version 2.10.0-20121014-154054-f3550d25e0
    compiler version: version 2.10.0-20121014-154054-f3550d25e0
  reconstructed args: -Xprint:minibox -Xprint:selectiveanf -Xprint:specialize -d mboxing -classpath /home/sun/workspace/dev/miniboxing-plugin/components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin/components/runtime/target/scala-2.10/miniboxing-runime_2.10-0.1-SNAPSHOT.jar -uniqid -Xplugin:/home/sun/workspace/dev/miniboxing-plugin/components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: term benchmarks
              symbol: package benchmarks#6919 (flags: final <module> <package> <java> <triedcooking>)
   symbol definition: final package benchmarks#6919
                 tpe: <notype>
       symbol owners: package benchmarks#6919 -> package <root>#2
      context owners: value T_TypeTag#12799 -> constructor MBList_L#12794 -> class MBList_L#12791 -> package benchmarks#6920

== Enclosing template or block ==

DefDef( // def <init>#12794(val T_TypeTag#12795: Byte#1217): benchmarks#6920.MBList_L#12791[Tsp#12792] in class MBList_L#12791
  <method> <synchronized>
  "<init>"
  []
  // 1 parameter list
  ValDef( // val T_TypeTag#12799: Byte#1217
    <synthetic>
    "T_TypeTag"
    <tpt> // tree.tpe=Byte#1217
    <empty>
  )
  <tpt> // tree.tpe=benchmarks#6920.MBList_L#12791[Tsp#12792]
  Block( // tree.tpe=Unit#614
    Apply( // def <init>#4677(): Object#1728 in class Object#1728, tree.tpe=Object#1728
      MBList#6922.super."<init>" // def <init>#4677(): Object#1728 in class Object#1728, tree.tpe=()Object#1728
      Nil
    )
    ()
  )
)

== Expanded type of tree ==

<notype>

no-symbol does not have an owner
    at scala.reflect.internal.SymbolTable.abort(SymbolTable.scala:48)
    at scala.tools.nsc.Global.abort(Global.scala:253)
    at scala.reflect.internal.Symbols$NoSymbol.owner(Symbols.scala:3193)
    at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.outerSelect(ExplicitOuter.scala:231)
    at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.outerValue(ExplicitOuter.scala:215)
    at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:499)
    at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:335)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1226)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2816)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:274)
    at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:562)
    at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:335)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1175)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2816)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:274)
    at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:512)
    at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:335)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1177)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2816)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:274)
    at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:562)
    at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:335)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2846)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2844)
    at scala.collection.immutable.List.loop$1(List.scala:164)
    at scala.collection.immutable.List.mapConserve(List.scala:180)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2844)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1196)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2816)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:274)
    at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:562)
    at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:335)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1193)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1191)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2855)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1190)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2816)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:274)
    at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:492)
    at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:335)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2846)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2844)
    at scala.collection.immutable.List.loop$1(List.scala:164)
    at scala.collection.immutable.List.mapConserve(List.scala:180)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2844)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1234)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2816)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.scala$tools$nsc$transform$TypingTransformers$TypingTransformer$$super$transform(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$1.apply(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$1.apply(TypingTransformers.scala:44)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2855)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:274)
    at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:473)
    at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:335)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2823)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1238)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1237)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2855)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1236)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2816)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:274)
    at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:562)
    at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:335)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2846)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2844)
    at scala.collection.immutable.List.loop$1(List.scala:164)
    at scala.collection.immutable.List.mapConserve(List.scala:180)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2844)
    at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1256)
    at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1256)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2855)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1255)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2816)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.scala$tools$nsc$transform$TypingTransformers$TypingTransformer$$super$transform(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$2.apply(TypingTransformers.scala:46)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$2.apply(TypingTransformers.scala:46)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2855)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:46)
    at scala.tools.nsc.transform.ExplicitOuter$OuterPathTransformer.transform(ExplicitOuter.scala:274)
    at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:562)
    at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transform(ExplicitOuter.scala:335)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.scala$tools$nsc$transform$ExplicitOuter$ExplicitOuterTransformer$$super$transformUnit(ExplicitOuter.scala:570)
    at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer$$anonfun$transformUnit$1.apply$mcV$sp(ExplicitOuter.scala:570)
    at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer$$anonfun$transformUnit$1.apply(ExplicitOuter.scala:570)
    at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer$$anonfun$transformUnit$1.apply(ExplicitOuter.scala:570)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:201)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:210)
    at scala.tools.nsc.Global.afterExplicitOuter(Global.scala:1098)
    at scala.tools.nsc.transform.ExplicitOuter$ExplicitOuterTransformer.transformUnit(ExplicitOuter.scala:570)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:461)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:428)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:428)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1156)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:428)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1574)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1548)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1544)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1654)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

error: fatal error: 
     while compiling: ../miniboxing-plugin/test/benchmarks/MBList.scala
        during phase: global=explicitouter, atPhase=erasure
     library version: version 2.10.0-20121014-154054-f3550d25e0
    compiler version: version 2.10.0-20121014-154054-f3550d25e0
  reconstructed args: -Xprint:minibox -Xprint:selectiveanf -Xprint:specialize -d mboxing -classpath /home/sun/workspace/dev/miniboxing-plugin/components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin/components/runtime/target/scala-2.10/miniboxing-runime_2.10-0.1-SNAPSHOT.jar -uniqid -Xplugin:/home/sun/workspace/dev/miniboxing-plugin/components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: term benchmarks
              symbol: package benchmarks#6919 (flags: final <module> <package> <java> <triedcooking>)
   symbol definition: final package benchmarks#6919
                 tpe: <notype>
       symbol owners: package benchmarks#6919 -> package <root>#2
      context owners: value T_TypeTag#12799 -> constructor MBList_L#12794 -> class MBList_L#12791 -> package benchmarks#6920

== Enclosing template or block ==

DefDef( // def <init>#12794(val T_TypeTag#12795: Byte#1217): benchmarks#6920.MBList_L#12791[Tsp#12792] in class MBList_L#12791
  <method> <synchronized>
  "<init>"
  []
  // 1 parameter list
  ValDef( // val T_TypeTag#12799: Byte#1217
    <synthetic>
    "T_TypeTag"
    <tpt> // tree.tpe=Byte#1217
    <empty>
  )
  <tpt> // tree.tpe=benchmarks#6920.MBList_L#12791[Tsp#12792]
  Block( // tree.tpe=Unit#614
    Apply( // def <init>#4677(): Object#1728 in class Object#1728, tree.tpe=Object#1728
      MBList#6922.super."<init>" // def <init>#4677(): Object#1728 in class Object#1728, tree.tpe=()Object#1728
      Nil
    )
    ()
  )
)

== Expanded type of tree ==

<notype>

no-symbol does not have an owner

Test suite

I really need to make the testing automatic -- it's way too painful to run by hand.

Another crasher - recursive methods this time

$ cat ../miniboxing-plugin/test/bugs/8.scala
class BUG8[@miniboxing.plugin.minispec T](tail: BUG8[T]) {
  def contains(e: T): Boolean = tail.contains(e)
}
$ build/quick/bin/scalac -d mboxing -cp ../miniboxing-plugin/components/runtime/target/scala-2.10/miniboxing-runime_2.10-0.1-SNAPSHOT.jar:../miniboxing-plugin/components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar -Xplugin:../miniboxing-plugin/components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar ../miniboxing-plugin/test/bugs/8.scala

Specializing class BUG8...
-------------- WIDENDED CLAZZ ----------------
BUG8
private[this] val tail: BUG8[T]
def <init>(tail: BUG8[T],val T_TypeTag: Byte): BUG8[T]
def contains(e: T): Boolean
private[this] val T_TypeTag: Byte
def contains_J(e: Long): Boolean
-------------- INTERFACE ----------------
BUG8_interface
def contains(e: Tsp): Boolean
def contains_J(e: Long): Boolean
-------------- ORIGINAL CLASS ----------------
BUG8
private[this] val tail: BUG8[T]
def <init>(tail: BUG8[T],val T_TypeTag: Byte): BUG8[T]
def contains(e: T): Boolean
private[this] val T_TypeTag: Byte
def contains_J(e: Long): Boolean
------------ SPEC CLASS ------------
BUG8_J
def contains_J(e: Long): Boolean
private[this] val tail: BUG8_interface[Long]
def contains(e: Tsp): Boolean
def <init>(tail: BUG8_interface[Long],val T_TypeTag: Byte): BUG8_J[Tsp]
private[this] val T_TypeTag: Byte
------------ SPEC CLASS ------------
BUG8_L
def contains_J(e: Long): Boolean
private[this] val tail: BUG8_interface[Tsp]
def contains(e: Tsp): Boolean
def <init>(tail: BUG8_interface[Tsp],val T_TypeTag: Byte): BUG8_L[Tsp]
private[this] val T_TypeTag: Byte
-------------- TEMPLATE MEMBERS ----------------
BUG8.tail
BUG8.<init>
BUG8.contains
collected BUG8.tail
collected BUG8.<init>
collected BUG8.contains
uncurrying: BUG8.super.<init>
uncurrying: BUG8.this.tail.contains
uncurrying: BUG8.this.contains
uncurrying: MiniboxConversions.this.minibox2box[Nothing]
uncurrying: BUG8_L.this.contains
uncurrying: MiniboxConversions.this.minibox2box[Nothing]
uncurrying: BUG8.this.tail.<contains: error>

     while compiling: ../miniboxing-plugin/test/bugs/8.scala
        during phase: uncurry
     library version: version 2.10.1-20121112-131306-1a6c859710
    compiler version: version 2.10.1-20121112-131306-1a6c859710
  reconstructed args: -d mboxing -Xplugin:../miniboxing-plugin/components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar -classpath ../miniboxing-plugin/components/runtime/target/scala-2.10/miniboxing-runime_2.10-0.1-SNAPSHOT.jar:../miniboxing-plugin/components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: term <empty>
              symbol: package <empty> (flags: final <module> <package> <java> <static> <triedcooking>)
   symbol definition: final package <empty>
                 tpe: <notype>
       symbol owners: package <empty> -> package <root>
      context owners: value e -> method contains -> class BUG8_L -> package <empty>

== Enclosing template or block ==

DefDef( // def contains(e: Tsp): Boolean in class BUG8_L
  <method> <triedcooking> <synchronized>
  "contains"
  []
  // 1 parameter list
  ValDef( // e: Tsp
    <param> <triedcooking>
    "e"
    <tpt> // tree.tpe=Tsp
    <empty>
  )
  <tpt> // tree.tpe=Boolean
  Apply( // val <error>: <error> in class <error>, tree.tpe=<error>
    BUG8.this."tail"."contains" // val <error>: <error> in class <error>
    "e" // e: T, tree.tpe=T
  )
)

== Expanded type of tree ==

<notype>

unhandled exception while transforming 8.scala
error: 
     while compiling: ../miniboxing-plugin/test/bugs/8.scala
        during phase: uncurry
     library version: version 2.10.1-20121112-131306-1a6c859710
    compiler version: version 2.10.1-20121112-131306-1a6c859710
  reconstructed args: -d mboxing -Xplugin:../miniboxing-plugin/components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar -classpath ../miniboxing-plugin/components/runtime/target/scala-2.10/miniboxing-runime_2.10-0.1-SNAPSHOT.jar:../miniboxing-plugin/components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: term <empty>
              symbol: package <empty> (flags: final <module> <package> <java> <static> <triedcooking>)
   symbol definition: final package <empty>
                 tpe: <notype>
       symbol owners: package <empty> -> package <root>
      context owners: value e -> method contains -> class BUG8_L -> package <empty>

== Enclosing template or block ==

DefDef( // def contains(e: Tsp): Boolean in class BUG8_L
  <method> <triedcooking> <synchronized>
  "contains"
  []
  // 1 parameter list
  ValDef( // e: Tsp
    <param> <triedcooking>
    "e"
    <tpt> // tree.tpe=Tsp
    <empty>
  )
  <tpt> // tree.tpe=Boolean
  Apply( // val <error>: <error> in class <error>, tree.tpe=<error>
    BUG8.this."tail"."contains" // val <error>: <error> in class <error>
    "e" // e: T, tree.tpe=T
  )
)

== Expanded type of tree ==

<notype>

uncaught exception during compilation: java.lang.NullPointerException
error: java.lang.NullPointerException
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer$$anonfun$18.apply(UnCurry.scala:624)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer$$anonfun$18.apply(UnCurry.scala:622)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.withNeedLift$1(UnCurry.scala:534)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.mainTransform(UnCurry.scala:622)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.transform(UnCurry.scala:122)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.transform(UnCurry.scala:82)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1193)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1191)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2872)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1190)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2833)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.scala$tools$nsc$transform$UnCurry$UnCurryTransformer$$super$transform(UnCurry.scala:598)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer$$anonfun$12.apply(UnCurry.scala:598)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer$$anonfun$12.apply(UnCurry.scala:581)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.withNeedLift$1(UnCurry.scala:534)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.mainTransform(UnCurry.scala:580)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.transform(UnCurry.scala:122)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.transform(UnCurry.scala:82)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2863)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2861)
    at scala.collection.immutable.List.loop$1(List.scala:164)
    at scala.collection.immutable.List.mapConserve(List.scala:180)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2861)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1234)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2833)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.scala$tools$nsc$transform$TypingTransformers$TypingTransformer$$super$transform(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$1.apply(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$1.apply(TypingTransformers.scala:44)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2872)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.scala$tools$nsc$transform$UnCurry$UnCurryTransformer$$super$transform(UnCurry.scala:598)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer$$anonfun$23.apply(UnCurry.scala:656)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer$$anonfun$23.apply(UnCurry.scala:656)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.scala$tools$nsc$transform$UnCurry$UnCurryTransformer$$withInConstructorFlag$1(UnCurry.scala:561)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.mainTransform(UnCurry.scala:656)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.transform(UnCurry.scala:122)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.transform(UnCurry.scala:82)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2840)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1238)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1237)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2872)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1236)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2833)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.mainTransform(UnCurry.scala:659)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.transform(UnCurry.scala:122)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.transform(UnCurry.scala:82)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2863)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2861)
    at scala.collection.immutable.List.loop$1(List.scala:164)
    at scala.collection.immutable.List.mapConserve(List.scala:180)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2861)
    at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1256)
    at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1256)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2872)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1255)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2833)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.scala$tools$nsc$transform$TypingTransformers$TypingTransformer$$super$transform(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$2.apply(TypingTransformers.scala:46)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$2.apply(TypingTransformers.scala:46)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2872)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:46)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.mainTransform(UnCurry.scala:659)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.transform(UnCurry.scala:122)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.transform(UnCurry.scala:82)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:461)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:428)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:428)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1156)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:428)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1574)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1548)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1544)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1654)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Exception in thread "main" java.lang.NullPointerException
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer$$anonfun$18.apply(UnCurry.scala:624)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer$$anonfun$18.apply(UnCurry.scala:622)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.withNeedLift$1(UnCurry.scala:534)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.mainTransform(UnCurry.scala:622)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.transform(UnCurry.scala:122)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.transform(UnCurry.scala:82)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1193)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1191)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2872)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1190)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2833)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.scala$tools$nsc$transform$UnCurry$UnCurryTransformer$$super$transform(UnCurry.scala:598)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer$$anonfun$12.apply(UnCurry.scala:598)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer$$anonfun$12.apply(UnCurry.scala:581)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.withNeedLift$1(UnCurry.scala:534)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.mainTransform(UnCurry.scala:580)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.transform(UnCurry.scala:122)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.transform(UnCurry.scala:82)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2863)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2861)
    at scala.collection.immutable.List.loop$1(List.scala:164)
    at scala.collection.immutable.List.mapConserve(List.scala:180)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2861)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1234)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2833)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.scala$tools$nsc$transform$TypingTransformers$TypingTransformer$$super$transform(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$1.apply(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$1.apply(TypingTransformers.scala:44)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2872)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.scala$tools$nsc$transform$UnCurry$UnCurryTransformer$$super$transform(UnCurry.scala:598)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer$$anonfun$23.apply(UnCurry.scala:656)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer$$anonfun$23.apply(UnCurry.scala:656)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.scala$tools$nsc$transform$UnCurry$UnCurryTransformer$$withInConstructorFlag$1(UnCurry.scala:561)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.mainTransform(UnCurry.scala:656)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.transform(UnCurry.scala:122)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.transform(UnCurry.scala:82)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2840)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1238)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1237)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2872)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1236)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2833)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.mainTransform(UnCurry.scala:659)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.transform(UnCurry.scala:122)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.transform(UnCurry.scala:82)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2863)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2861)
    at scala.collection.immutable.List.loop$1(List.scala:164)
    at scala.collection.immutable.List.mapConserve(List.scala:180)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2861)
    at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1256)
    at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1256)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2872)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1255)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2833)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.scala$tools$nsc$transform$TypingTransformers$TypingTransformer$$super$transform(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$2.apply(TypingTransformers.scala:46)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$2.apply(TypingTransformers.scala:46)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2872)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:46)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.mainTransform(UnCurry.scala:659)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.transform(UnCurry.scala:122)
    at scala.tools.nsc.transform.UnCurry$UnCurryTransformer.transform(UnCurry.scala:82)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:461)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:428)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:428)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1156)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:428)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1574)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1548)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1544)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1654)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Mismatching type tags crashing peephole transformation

$ cat mb_spire_3.scala 
package miniboxing.tests.compile
import miniboxing.plugin.minispec

trait Order[@minispec A] {
  def max(x: A, y: A): A
}

final class ArrayOps[@minispec A](arr:Array[A]) {
  def qmax(implicit ev:Order[A]) = {
    def f5(t:A): A = f5(ev.max(t, arr(0)))
    f5(arr(0))
  }
}

$../mb-scalac mb_spire_3.scala -P:minibox:spec-opt -P:minibox:log -Xprint:minibox -Ycheck:minibox -P:minibox:hijack
Specializing trait Order...

  // interface:
  abstract trait Order[A] extends Object {
    def max(x: A,y: A): A                                                 
    def max_J(val Order_A_TypeTag: Byte,x: Long,y: Long): Long            
  }

  // specialized class:
  abstract trait Order_J[Asp] extends Order[Asp] {
    def Order_A_TypeTag(): Byte                                            // is a type tag
    def max(x: Asp,y: Asp): Asp                                            // is an interface method
    def max_J(val Order_A_TypeTag: Byte,x: Long,y: Long): Long             // is an interface method
  }

  // specialized class:
  abstract trait Order_L[Asp] extends Order[Asp] {
    def max(x: Asp,y: Asp): Asp                                            // is an interface method
    def max_J(val Order_A_TypeTag: Byte,x: Long,y: Long): Long             // is an interface method
  }




Specializing class ArrayOps...

  // interface:
  final abstract trait ArrayOps[A] extends Object {
    def qmax(ev: miniboxing.tests.compile.Order[A]): A                    
    def qmax_J(val ArrayOps_A_TypeTag: Byte,ev: miniboxing.tests.compile.Order[A]): Long
  }

  // specialized class:
  final class ArrayOps_J[Asp] extends ArrayOps[Asp] {
    def <init>(val ArrayOps_A_TypeTag: Byte,arr: Array[Asp]): miniboxing.tests.compile.ArrayOps_J[Asp] // is a specialized implementation of constructor ArrayOps
    def qmax(ev: miniboxing.tests.compile.Order[Asp]): Asp                 // is a forwarder to method qmax_J
    def qmax_J(val ArrayOps_A_TypeTag: Byte,ev: miniboxing.tests.compile.Order[Asp]): Long // is a specialized implementation of method qmax
    private[this] val ArrayOps_A_TypeTag: Byte                             // no info
    private[this] val arr: Array[Asp]                                      // is a specialized implementation of value arr
  }

  // specialized class:
  final class ArrayOps_L[Asp] extends ArrayOps[Asp] {
    def <init>(arr: Array[Asp]): miniboxing.tests.compile.ArrayOps_L[Asp]  // is a specialized implementation of constructor ArrayOps
    def qmax(ev: miniboxing.tests.compile.Order[Asp]): Asp                 // is a specialized implementation of method qmax
    def qmax_J(val ArrayOps_A_TypeTag: Byte,ev: miniboxing.tests.compile.Order[Asp]): Long // is a forwarder to method qmax
    private[this] val arr: Array[Asp]                                      // is a specialized implementation of value arr
  }




error: uncaught exception during compilation: java.lang.AssertionError
error: java.lang.AssertionError: assertion failed: 
     while compiling: mb_spire_3.scala
        during phase: global=minibox, atPhase=tailcalls
     library version: version 2.10.3-20130625-164027-d22e8d282c
    compiler version: version 2.10.3-20130627-153946-54cb6af7db
  reconstructed args: -no-specialization -Xprint:minibox -P:minibox:spec-opt -P:minibox:log -P:minibox:hijack -Ycheck:minibox -bootclasspath /home/sun/workspace/dev/miniboxing-plugin//components/runtime/target/scala-2.10/miniboxing-runtime_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar -Xplugin:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: term compile
              symbol: package compile in package tests (flags: final <module> <package> <java> <triedcooking>)
   symbol definition: final package compile
                 tpe: <notype>
       symbol owners: package compile -> package tests
      context owners: value t -> method f5 -> method qmax_J -> class ArrayOps_J -> package compile

== Enclosing template or block ==

DefDef( // def f5(t: Long): Asp
  <method> <triedcooking>
  "f5"
  []
  // 1 parameter list
  ValDef( // t: Long
    <param> <triedcooking>
    "t"
    <tpt> // tree.tpe=Long
    Apply( // final def box2minibox_tt[T](a: T,tag: Byte): Long in object MiniboxConversions, tree.tpe=Long
      TypeApply( // final def box2minibox_tt[T](a: T,tag: Byte): Long in object MiniboxConversions, tree.tpe=(a: Asp, tag: Byte)Long
        MiniboxConversions.this."box2minibox_tt" // final def box2minibox_tt[T](a: T,tag: Byte): Long in object MiniboxConversions, tree.tpe=[T](a: T, tag: Byte)Long
        <tpt> // tree.tpe=Asp
      )
      // 2 arguments
      <empty>
      "ArrayOps_A_TypeTag" // val ArrayOps_A_TypeTag: Byte, tree.tpe=Byte
    )
  )
  <tpt> // tree.tpe=Asp
  Apply( // def f5(t: Long): Asp, tree.tpe=Asp
    "f5" // def f5(t: Long): Asp, tree.tpe=(t: Long)Asp
    Apply( // final def minibox2box[T](l: Long,tag: Byte): T in object MiniboxConversions, tree.tpe=Asp
      TypeApply( // final def minibox2box[T](l: Long,tag: Byte): T in object MiniboxConversions, tree.tpe=(l: Long, tag: Byte)Asp
        MiniboxConversions.this."minibox2box" // final def minibox2box[T](l: Long,tag: Byte): T in object MiniboxConversions, tree.tpe=[T](l: Long, tag: Byte)T
        <tpt> // tree.tpe=Asp
      )
      // 2 arguments
      Apply( // def max_J(val Order_A_TypeTag: Byte,x: Long,y: Long): Long in trait Order, tree.tpe=Long
        "ev"."max_J" // def max_J(val Order_A_TypeTag: Byte,x: Long,y: Long): Long in trait Order, tree.tpe=(val Order_A_TypeTag: Byte, x: Long, y: Long)Long
        // 3 arguments
        ArrayOps_J.this."ArrayOps_A_TypeTag" // private[this] val ArrayOps_A_TypeTag: Byte in class ArrayOps_J, tree.tpe=Byte
        Apply( // final def box2minibox_tt[T](a: T,tag: Byte): Long in object MiniboxConversions, tree.tpe=Long
          TypeApply( // final def box2minibox_tt[T](a: T,tag: Byte): Long in object MiniboxConversions, tree.tpe=(a: Asp, tag: Byte)Long
            MiniboxConversions.this."box2minibox_tt" // final def box2minibox_tt[T](a: T,tag: Byte): Long in object MiniboxConversions, tree.tpe=[T](a: T, tag: Byte)Long
            <tpt> // tree.tpe=Asp
          )
          // 2 arguments
          Apply( // final def minibox2box[T](l: Long,tag: Byte): T in object MiniboxConversions, tree.tpe=Asp
            TypeApply( // final def minibox2box[T](l: Long,tag: Byte): T in object MiniboxConversions, tree.tpe=(l: Long, tag: Byte)Asp
              MiniboxConversions.this."minibox2box" // final def minibox2box[T](l: Long,tag: Byte): T in object MiniboxConversions, tree.tpe=[T](l: Long, tag: Byte)T
              <tpt> // tree.tpe=Asp
            )
            // 2 arguments
            "t" // t: Long, tree.tpe=Long
            "ArrayOps_A_TypeTag" // val ArrayOps_A_TypeTag: Byte, tree.tpe=Byte
          )
          ArrayOps_J.this."ArrayOps_A_TypeTag" // private[this] val ArrayOps_A_TypeTag: Byte in class ArrayOps_J, tree.tpe=Byte
        )
        Apply( // final def box2minibox_tt[T](a: T,tag: Byte): Long in object MiniboxConversions, tree.tpe=Long
          TypeApply( // final def box2minibox_tt[T](a: T,tag: Byte): Long in object MiniboxConversions, tree.tpe=(a: Asp, tag: Byte)Long
            MiniboxConversions.this."box2minibox_tt" // final def box2minibox_tt[T](a: T,tag: Byte): Long in object MiniboxConversions, tree.tpe=[T](a: T, tag: Byte)Long
            <tpt> // tree.tpe=Asp
          )
          // 2 arguments
          Apply( // final def minibox2box[T](l: Long,tag: Byte): T in object MiniboxConversions, tree.tpe=Asp
            TypeApply( // final def minibox2box[T](l: Long,tag: Byte): T in object MiniboxConversions, tree.tpe=(l: Long, tag: Byte)Asp
              MiniboxConversions.this."minibox2box" // final def minibox2box[T](l: Long,tag: Byte): T in object MiniboxConversions, tree.tpe=[T](l: Long, tag: Byte)T
              <tpt> // tree.tpe=Asp
            )
            // 2 arguments
            Apply( // final def mbarray_apply_minibox(array: Any,idx: Int,tag: Byte): Long in object MiniboxArray_FullSwitch, tree.tpe=Long
              MiniboxArray_FullSwitch.this."mbarray_apply_minibox" // final def mbarray_apply_minibox(array: Any,idx: Int,tag: Byte): Long in object MiniboxArray_FullSwitch, tree.tpe=(array: Any, idx: Int, tag: Byte)Long
              // 3 arguments
              ArrayOps_J.this."arr" // private[this] val arr: Array[Asp] in class ArrayOps_J, tree.tpe=ArrayOps_J.this.arr.type
              0
              ArrayOps_J.this."ArrayOps_A_TypeTag" // private[this] val ArrayOps_A_TypeTag: Byte in class ArrayOps_J, tree.tpe=Byte
            )
            ArrayOps_J.this."ArrayOps_A_TypeTag" // private[this] val ArrayOps_A_TypeTag: Byte in class ArrayOps_J, tree.tpe=Byte
          )
          ArrayOps_J.this."ArrayOps_A_TypeTag" // private[this] val ArrayOps_A_TypeTag: Byte in class ArrayOps_J, tree.tpe=Byte
        )
      )
      ArrayOps_J.this."ArrayOps_A_TypeTag" // private[this] val ArrayOps_A_TypeTag: Byte in class ArrayOps_J, tree.tpe=Byte
    )
  )
)

== Expanded type of tree ==

<notype>

Peephole optimization checks: reduced type tags should be identical: ArrayOps_J.this.ArrayOps_A_TypeTag vs ArrayOps_A_TypeTag in method f5 of class ArrayOps_J
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.peepholeTransform(MiniboxPeepholeTransformation.scala:38)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:23)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:19)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1219)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.peepholeTransform(MiniboxPeepholeTransformation.scala:78)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:23)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:19)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1219)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.peepholeTransform(MiniboxPeepholeTransformation.scala:78)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:23)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:19)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1219)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.peepholeTransform(MiniboxPeepholeTransformation.scala:78)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:23)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:19)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1235)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1233)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1232)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.peepholeTransform(MiniboxPeepholeTransformation.scala:78)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:23)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:19)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1238)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.peepholeTransform(MiniboxPeepholeTransformation.scala:78)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:23)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:19)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1235)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1233)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1232)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.peepholeTransform(MiniboxPeepholeTransformation.scala:78)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:23)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:19)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1276)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.scala$tools$nsc$transform$TypingTransformers$TypingTransformer$$super$transform(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$1.apply(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$1.apply(TypingTransformers.scala:44)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:44)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.peepholeTransform(MiniboxPeepholeTransformation.scala:78)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:23)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:19)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.peepholeTransform(MiniboxPeepholeTransformation.scala:78)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:23)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:19)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1298)
    at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1298)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1297)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.scala$tools$nsc$transform$TypingTransformers$TypingTransformer$$super$transform(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$2.apply(TypingTransformers.scala:46)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$2.apply(TypingTransformers.scala:46)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:46)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.peepholeTransform(MiniboxPeepholeTransformation.scala:78)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:23)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$2.apply(Minibox.scala:95)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$2.apply(Minibox.scala:95)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxPhase$class.afterMinibox(Minibox.scala:107)
    at miniboxing.plugin.Minibox$Component$.afterMinibox(Minibox.scala:68)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:95)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:87)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Exception in thread "main" java.lang.AssertionError: assertion failed: 
     while compiling: mb_spire_3.scala
        during phase: global=minibox, atPhase=tailcalls
     library version: version 2.10.3-20130625-164027-d22e8d282c
    compiler version: version 2.10.3-20130627-153946-54cb6af7db
  reconstructed args: -no-specialization -Xprint:minibox -P:minibox:spec-opt -P:minibox:log -P:minibox:hijack -Ycheck:minibox -bootclasspath /home/sun/workspace/dev/miniboxing-plugin//components/runtime/target/scala-2.10/miniboxing-runtime_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar -Xplugin:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: term compile
              symbol: package compile in package tests (flags: final <module> <package> <java> <triedcooking>)
   symbol definition: final package compile
                 tpe: <notype>
       symbol owners: package compile -> package tests
      context owners: value t -> method f5 -> method qmax_J -> class ArrayOps_J -> package compile

== Enclosing template or block ==

DefDef( // def f5(t: Long): Asp
  <method> <triedcooking>
  "f5"
  []
  // 1 parameter list
  ValDef( // t: Long
    <param> <triedcooking>
    "t"
    <tpt> // tree.tpe=Long
    Apply( // final def box2minibox_tt[T](a: T,tag: Byte): Long in object MiniboxConversions, tree.tpe=Long
      TypeApply( // final def box2minibox_tt[T](a: T,tag: Byte): Long in object MiniboxConversions, tree.tpe=(a: Asp, tag: Byte)Long
        MiniboxConversions.this."box2minibox_tt" // final def box2minibox_tt[T](a: T,tag: Byte): Long in object MiniboxConversions, tree.tpe=[T](a: T, tag: Byte)Long
        <tpt> // tree.tpe=Asp
      )
      // 2 arguments
      <empty>
      "ArrayOps_A_TypeTag" // val ArrayOps_A_TypeTag: Byte, tree.tpe=Byte
    )
  )
  <tpt> // tree.tpe=Asp
  Apply( // def f5(t: Long): Asp, tree.tpe=Asp
    "f5" // def f5(t: Long): Asp, tree.tpe=(t: Long)Asp
    Apply( // final def minibox2box[T](l: Long,tag: Byte): T in object MiniboxConversions, tree.tpe=Asp
      TypeApply( // final def minibox2box[T](l: Long,tag: Byte): T in object MiniboxConversions, tree.tpe=(l: Long, tag: Byte)Asp
        MiniboxConversions.this."minibox2box" // final def minibox2box[T](l: Long,tag: Byte): T in object MiniboxConversions, tree.tpe=[T](l: Long, tag: Byte)T
        <tpt> // tree.tpe=Asp
      )
      // 2 arguments
      Apply( // def max_J(val Order_A_TypeTag: Byte,x: Long,y: Long): Long in trait Order, tree.tpe=Long
        "ev"."max_J" // def max_J(val Order_A_TypeTag: Byte,x: Long,y: Long): Long in trait Order, tree.tpe=(val Order_A_TypeTag: Byte, x: Long, y: Long)Long
        // 3 arguments
        ArrayOps_J.this."ArrayOps_A_TypeTag" // private[this] val ArrayOps_A_TypeTag: Byte in class ArrayOps_J, tree.tpe=Byte
        Apply( // final def box2minibox_tt[T](a: T,tag: Byte): Long in object MiniboxConversions, tree.tpe=Long
          TypeApply( // final def box2minibox_tt[T](a: T,tag: Byte): Long in object MiniboxConversions, tree.tpe=(a: Asp, tag: Byte)Long
            MiniboxConversions.this."box2minibox_tt" // final def box2minibox_tt[T](a: T,tag: Byte): Long in object MiniboxConversions, tree.tpe=[T](a: T, tag: Byte)Long
            <tpt> // tree.tpe=Asp
          )
          // 2 arguments
          Apply( // final def minibox2box[T](l: Long,tag: Byte): T in object MiniboxConversions, tree.tpe=Asp
            TypeApply( // final def minibox2box[T](l: Long,tag: Byte): T in object MiniboxConversions, tree.tpe=(l: Long, tag: Byte)Asp
              MiniboxConversions.this."minibox2box" // final def minibox2box[T](l: Long,tag: Byte): T in object MiniboxConversions, tree.tpe=[T](l: Long, tag: Byte)T
              <tpt> // tree.tpe=Asp
            )
            // 2 arguments
            "t" // t: Long, tree.tpe=Long
            "ArrayOps_A_TypeTag" // val ArrayOps_A_TypeTag: Byte, tree.tpe=Byte
          )
          ArrayOps_J.this."ArrayOps_A_TypeTag" // private[this] val ArrayOps_A_TypeTag: Byte in class ArrayOps_J, tree.tpe=Byte
        )
        Apply( // final def box2minibox_tt[T](a: T,tag: Byte): Long in object MiniboxConversions, tree.tpe=Long
          TypeApply( // final def box2minibox_tt[T](a: T,tag: Byte): Long in object MiniboxConversions, tree.tpe=(a: Asp, tag: Byte)Long
            MiniboxConversions.this."box2minibox_tt" // final def box2minibox_tt[T](a: T,tag: Byte): Long in object MiniboxConversions, tree.tpe=[T](a: T, tag: Byte)Long
            <tpt> // tree.tpe=Asp
          )
          // 2 arguments
          Apply( // final def minibox2box[T](l: Long,tag: Byte): T in object MiniboxConversions, tree.tpe=Asp
            TypeApply( // final def minibox2box[T](l: Long,tag: Byte): T in object MiniboxConversions, tree.tpe=(l: Long, tag: Byte)Asp
              MiniboxConversions.this."minibox2box" // final def minibox2box[T](l: Long,tag: Byte): T in object MiniboxConversions, tree.tpe=[T](l: Long, tag: Byte)T
              <tpt> // tree.tpe=Asp
            )
            // 2 arguments
            Apply( // final def mbarray_apply_minibox(array: Any,idx: Int,tag: Byte): Long in object MiniboxArray_FullSwitch, tree.tpe=Long
              MiniboxArray_FullSwitch.this."mbarray_apply_minibox" // final def mbarray_apply_minibox(array: Any,idx: Int,tag: Byte): Long in object MiniboxArray_FullSwitch, tree.tpe=(array: Any, idx: Int, tag: Byte)Long
              // 3 arguments
              ArrayOps_J.this."arr" // private[this] val arr: Array[Asp] in class ArrayOps_J, tree.tpe=ArrayOps_J.this.arr.type
              0
              ArrayOps_J.this."ArrayOps_A_TypeTag" // private[this] val ArrayOps_A_TypeTag: Byte in class ArrayOps_J, tree.tpe=Byte
            )
            ArrayOps_J.this."ArrayOps_A_TypeTag" // private[this] val ArrayOps_A_TypeTag: Byte in class ArrayOps_J, tree.tpe=Byte
          )
          ArrayOps_J.this."ArrayOps_A_TypeTag" // private[this] val ArrayOps_A_TypeTag: Byte in class ArrayOps_J, tree.tpe=Byte
        )
      )
      ArrayOps_J.this."ArrayOps_A_TypeTag" // private[this] val ArrayOps_A_TypeTag: Byte in class ArrayOps_J, tree.tpe=Byte
    )
  )
)

== Expanded type of tree ==

<notype>

Peephole optimization checks: reduced type tags should be identical: ArrayOps_J.this.ArrayOps_A_TypeTag vs ArrayOps_A_TypeTag in method f5 of class ArrayOps_J
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.peepholeTransform(MiniboxPeepholeTransformation.scala:38)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:23)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:19)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1219)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.peepholeTransform(MiniboxPeepholeTransformation.scala:78)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:23)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:19)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1219)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.peepholeTransform(MiniboxPeepholeTransformation.scala:78)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:23)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:19)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1219)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.peepholeTransform(MiniboxPeepholeTransformation.scala:78)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:23)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:19)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1235)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1233)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1232)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.peepholeTransform(MiniboxPeepholeTransformation.scala:78)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:23)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:19)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1238)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.peepholeTransform(MiniboxPeepholeTransformation.scala:78)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:23)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:19)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1235)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1233)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1232)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.peepholeTransform(MiniboxPeepholeTransformation.scala:78)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:23)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:19)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1276)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.scala$tools$nsc$transform$TypingTransformers$TypingTransformer$$super$transform(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$1.apply(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$1.apply(TypingTransformers.scala:44)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:44)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.peepholeTransform(MiniboxPeepholeTransformation.scala:78)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:23)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:19)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.peepholeTransform(MiniboxPeepholeTransformation.scala:78)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:23)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:19)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1298)
    at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1298)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1297)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.scala$tools$nsc$transform$TypingTransformers$TypingTransformer$$super$transform(TypingTransformers.scala:44)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$2.apply(TypingTransformers.scala:46)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer$$anonfun$transform$2.apply(TypingTransformers.scala:46)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:46)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.peepholeTransform(MiniboxPeepholeTransformation.scala:78)
    at miniboxing.plugin.MiniboxPeepholeTransformation$MiniboxPeepholeTransformer.transform(MiniboxPeepholeTransformation.scala:23)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$2.apply(Minibox.scala:95)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$2.apply(Minibox.scala:95)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxPhase$class.afterMinibox(Minibox.scala:107)
    at miniboxing.plugin.Minibox$Component$.afterMinibox(Minibox.scala:68)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:95)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:87)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Crasher

sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ cat mb_spire_14.scala
package miniboxing.tests.compile
import miniboxing.plugin.minispec

trait ComplexAlgebra[@minispec A] {
  def foo: Int
}

trait ComplexInstances {
  implicit def ComplexAlgebra[@minispec A] =
    new ComplexAlgebra[A] {
      def foo = 1
    }
}
sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ ../mb-scalac mb_spire_14.scala 
final class $anon extends Object with miniboxing.tests.compile.ComplexAlgebra[A] {
  def <init>(): anonymous class $anon = {
    $anon.super.<init>();
    ()
  };
  def foo(): Int = 1
}
error: 
     while compiling: mb_spire_14.scala
        during phase: minibox
     library version: version 2.10.3-20130708-144415-62405227dd
    compiler version: version 2.10.3-20130708-163611-504b5f3b15
  reconstructed args: -bootclasspath /home/sun/workspace/dev/miniboxing-plugin//components/runtime/target/scala-2.10/miniboxing-runtime_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar -Xplugin:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: term ComplexAlgebra_n_J
              symbol: method ComplexAlgebra_n_J in trait ComplexInstances (flags: <method> implicit)
   symbol definition: implicit def ComplexAlgebra_n_J[A](val ComplexAlgebra_A_TypeTag: Byte): miniboxing.tests.compile.ComplexAlgebra[A]
       symbol owners: method ComplexAlgebra_n_J -> trait ComplexInstances -> package compile
      context owners: anonymous class $anon -> method ComplexAlgebra_n_J -> trait ComplexInstances -> package compile

== Enclosing template or block ==

Template( // val <local $anon>: <notype>, tree.tpe=miniboxing.tests.compile.ComplexAlgebra[A]
  "java.lang.Object", "miniboxing.tests.compile.ComplexAlgebra" // parents
  ValDef(
    private
    "_"
    <tpt>
    <empty>
  )
  // 2 statements
  DefDef( // def <init>: <?>
    <method>
    "<init>"
    []
    List(Nil)
    <tpt> // tree.tpe=miniboxing.tests.compile.ComplexAlgebra[A]
    Block( // tree.tpe=Unit
      Apply( // def <init>(): Object in class Object, tree.tpe=Object
        $anon.super."<init>" // def <init>(): Object in class Object, tree.tpe=()Object
        Nil
      )
      ()
    )
  )
  DefDef( // def foo: <?>
    <method>
    "foo"
    []
    List(Nil)
    <tpt> // tree.tpe=Int
    1
  )
)

uncaught exception during compilation: scala.reflect.internal.Types$TypeError
error: scala.reflect.internal.Types$TypeError: class ComplexAlgebra needs to be a trait to be mixed in
    at scala.tools.nsc.typechecker.Contexts$Context.issueCommon(Contexts.scala:397)
    at scala.tools.nsc.typechecker.Contexts$Context.issue(Contexts.scala:401)
    at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueTypeError(ContextErrors.scala:103)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$validateParentClasses$3.apply(Typers.scala:1724)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$validateParentClasses$3.apply(Typers.scala:1724)
    at scala.collection.immutable.List.foreach(List.scala:318)
    at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:32)
    at scala.collection.mutable.ListBuffer.foreach(ListBuffer.scala:45)
    at scala.tools.nsc.typechecker.Typers$Typer.validateParentClasses(Typers.scala:1724)
    at scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:1904)
    at scala.tools.nsc.typechecker.Typers$Typer.typedClassDef(Typers.scala:1758)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5544)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:320)
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:2925)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer.typedBlock(Typers.scala:2429)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typerWithLocalContext(Typers.scala:507)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:312)
    at scala.tools.nsc.typechecker.Typers$Typer.transformedOrTyped(Typers.scala:5806)
    at scala.tools.nsc.typechecker.Typers$Typer.typedDefDef(Typers.scala:2254)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5530)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:329)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5665)
    at miniboxing.plugin.Duplicators.retyped(Duplicators.scala:42)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$64.apply(MiniboxTreeTransformation.scala:774)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$64.apply(MiniboxTreeTransformation.scala:774)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.beforePhase(SymbolTable.scala:215)
    at miniboxing.plugin.MiniboxComponent$class.beforeMinibox(Minibox.scala:31)
    at miniboxing.plugin.Minibox$Component$.beforeMinibox(Minibox.scala:77)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.duplicateBody(MiniboxTreeTransformation.scala:774)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.specializeDefDefBody(MiniboxTreeTransformation.scala:732)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:187)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:23)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:130)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:130)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:130)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:23)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:446)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:23)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:99)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:96)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:96)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:103)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:103)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxComponent$class.afterMinibox(Minibox.scala:28)
    at miniboxing.plugin.Minibox$Component$.afterMinibox(Minibox.scala:77)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:103)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:96)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Exception in thread "main" scala.reflect.internal.Types$TypeError: class ComplexAlgebra needs to be a trait to be mixed in
    at scala.tools.nsc.typechecker.Contexts$Context.issueCommon(Contexts.scala:397)
    at scala.tools.nsc.typechecker.Contexts$Context.issue(Contexts.scala:401)
    at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueTypeError(ContextErrors.scala:103)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$validateParentClasses$3.apply(Typers.scala:1724)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$validateParentClasses$3.apply(Typers.scala:1724)
    at scala.collection.immutable.List.foreach(List.scala:318)
    at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:32)
    at scala.collection.mutable.ListBuffer.foreach(ListBuffer.scala:45)
    at scala.tools.nsc.typechecker.Typers$Typer.validateParentClasses(Typers.scala:1724)
    at scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:1904)
    at scala.tools.nsc.typechecker.Typers$Typer.typedClassDef(Typers.scala:1758)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5544)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:320)
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:2925)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer.typedBlock(Typers.scala:2429)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typerWithLocalContext(Typers.scala:507)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:312)
    at scala.tools.nsc.typechecker.Typers$Typer.transformedOrTyped(Typers.scala:5806)
    at scala.tools.nsc.typechecker.Typers$Typer.typedDefDef(Typers.scala:2254)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5530)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:329)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5665)
    at miniboxing.plugin.Duplicators.retyped(Duplicators.scala:42)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$64.apply(MiniboxTreeTransformation.scala:774)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$64.apply(MiniboxTreeTransformation.scala:774)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.beforePhase(SymbolTable.scala:215)
    at miniboxing.plugin.MiniboxComponent$class.beforeMinibox(Minibox.scala:31)
    at miniboxing.plugin.Minibox$Component$.beforeMinibox(Minibox.scala:77)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.duplicateBody(MiniboxTreeTransformation.scala:774)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.specializeDefDefBody(MiniboxTreeTransformation.scala:732)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:187)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:23)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:130)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:130)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:130)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:23)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:446)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:23)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:99)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:96)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:96)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:103)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:103)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxComponent$class.afterMinibox(Minibox.scala:28)
    at miniboxing.plugin.Minibox$Component$.afterMinibox(Minibox.scala:77)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:103)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:96)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Incorrectly assigned symbol

$ cat ../miniboxing-plugin/test/benchmarks/D.scala
package benchmarks

import miniboxing.plugin.minispec

class BUG3[@minispec T]() {
  def hashMode(): T = {
    val headhash: T = ???
    headhash
  }
}
$ build/quick/bin/scalac -Xplugin:/home/sun/workspace/dev/miniboxing-plugin/components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar -cp /home/sun/workspace/dev/miniboxing-plugin/components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin/components/runtime/target/scala-2.10/miniboxing-runime_2.10-0.1-SNAPSHOT.jar ../miniboxing-plugin/test/benchmarks/D.scala -d mboxing
Specializing class BUG3...
-------------- WIDENDED CLAZZ ----------------
BUG3 [T]Object {
  def <init>(val T_TypeTag: Byte): benchmarks.BUG3[T]
  def hashMode(): T
  private[this] val T_TypeTag: Byte
  def hashMode_J(): Long
}
-------------- INTERFACE ----------------
BUG3_interface [Tsp]AnyRef {
  def hashMode(): Tsp
  def hashMode_J(): Long
}
-------------- ORIGINAL CLASS ----------------
BUG3 [T]Object
        with benchmarks.BUG3_interface[T] {
  def <init>(val T_TypeTag: Byte): benchmarks.BUG3[T]
  def hashMode(): T
  private[this] val T_TypeTag: Byte
  def hashMode_J(): Long
}
------------ SPEC CLASS ------------
BUG3_J [Tsp]Object
        with benchmarks.BUG3_interface[Tsp] {
  def hashMode_J(): Long
  private[this] val T_TypeTag: Byte
  def hashMode(): Tsp
  def <init>(val T_TypeTag: Byte): benchmarks.BUG3_J[Tsp]
}
------------ SPEC CLASS ------------
BUG3_L [Tsp]Object
        with benchmarks.BUG3_interface[Tsp] {
  def hashMode_J(): Long
  private[this] val T_TypeTag: Byte
  def hashMode(): Tsp
  def <init>(val T_TypeTag: Byte): benchmarks.BUG3_L[Tsp]
}
-------------- TEMPLATE MEMBERS ----------------
benchmarks.BUG3.<init>
benchmarks.BUG3.hashMode
benchmarks.BUG3_L.<init>    - SpecializedImplementationOf2(benchmarks.BUG3.<init>)
benchmarks.BUG3_J.hashMode_J    - SpecializedImplementationOf2(benchmarks.BUG3.hashMode)
benchmarks.BUG3.hashMode    - ForwardTo(benchmarks.BUG3.hashMode)
benchmarks.BUG3_interface.hashMode  - Interface()
benchmarks.BUG3_L.hashMode  - SpecializedImplementationOf2(benchmarks.BUG3.hashMode)
benchmarks.BUG3_J.hashMode  - ForwardTo(benchmarks.BUG3_J.hashMode_J)
benchmarks.BUG3_interface.hashMode_J    - Interface()
benchmarks.BUG3_L.hashMode_J    - ForwardTo(benchmarks.BUG3_L.hashMode)
benchmarks.BUG3_J.<init>    - SpecializedImplementationOf2(benchmarks.BUG3.<init>)
benchmarks.BUG3.hashMode_J  - ForwardTo(benchmarks.BUG3.hashMode)
creating class - BUG3_interface: List(class Object)
creating class - BUG3_L: List(class Object, trait BUG3_interface)
creating class - BUG3_J: List(class Object, trait BUG3_interface)
collected benchmarks.BUG3.<init>
collected benchmarks.BUG3.hashMode
creating tree for benchmarks.BUG3.T_TypeTag
creating tree for benchmarks.BUG3.hashMode_J
method hashMode_J ===> ForwardTo(benchmarks.BUG3.hashMode)
creating tree for benchmarks.BUG3_interface.hashMode
creating tree for benchmarks.BUG3_interface.hashMode_J
method hashMode ===> Interface()
method hashMode_J ===> Interface()
creating tree for benchmarks.BUG3_L.hashMode_J
creating tree for benchmarks.BUG3_L.T_TypeTag
creating tree for benchmarks.BUG3_L.hashMode
creating tree for benchmarks.BUG3_L.<init>
method hashMode_J ===> ForwardTo(benchmarks.BUG3_L.hashMode)
method hashMode ===> SpecializedImplementationOf2(benchmarks.BUG3.hashMode)
benchmarks.BUG3_L.hashMode
error: 
     while compiling: ../miniboxing-plugin/test/benchmarks/D.scala
        during phase: minibox
     library version: version 2.10.0-20121014-154054-f3550d25e0
    compiler version: version 2.10.0-20121014-154054-f3550d25e0
  reconstructed args: -d mboxing -classpath /home/sun/workspace/dev/miniboxing-plugin/components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin/components/runtime/target/scala-2.10/miniboxing-runime_2.10-0.1-SNAPSHOT.jar -Xplugin:/home/sun/workspace/dev/miniboxing-plugin/components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: This(class BUG3_L)
              symbol: class BUG3_L in package benchmarks (flags: )
   symbol definition: class BUG3_L[Tsp] extends BUG3_interface[Tsp]
                 tpe: benchmarks.BUG3_L[Tsp]
       symbol owners: class BUG3_L -> package benchmarks
      context owners: value headhash -> method hashMode -> class BUG3_L -> package benchmarks

== Enclosing template or block ==

Block(
  ValDef( // val headhash: Tsp
    0
    "headhash"
    <tpt> // tree.tpe=Tsp
    scala.this."Predef"."$qmark$qmark$qmark" // def ???: Nothing in object Predef, tree.tpe=Nothing
  )
  "headhash"
)

== Expanded type of tree ==

TypeRef(
  TypeSymbol(class BUG3_L[Tsp] extends BUG3_interface[Tsp])
  args = List(TypeParamTypeRef(TypeParam(Tsp)))
)

uncaught exception during compilation: scala.reflect.internal.Types$TypeError
error: scala.reflect.internal.Types$TypeError: type mismatch;
 found   : T
 required: Tsp
    at scala.tools.nsc.typechecker.Contexts$Context.issueCommon(Contexts.scala:375)
    at scala.tools.nsc.typechecker.Contexts$Context.issue(Contexts.scala:379)
    at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueTypeError(ContextErrors.scala:84)
    at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueNormalTypeError(ContextErrors.scala:69)
    at scala.tools.nsc.typechecker.ContextErrors$TyperContextErrors$TyperErrorGen$.AdaptTypeError(ContextErrors.scala:176)
    at scala.tools.nsc.typechecker.Typers$Typer.fallBack$1(Typers.scala:1243)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1248)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5451)
    at scala.tools.nsc.typechecker.Duplicators$BodyDuplicator.typed(Duplicators.scala:384)
    at scala.tools.nsc.typechecker.Typers$Typer.typedBlock(Typers.scala:2335)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5371)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5371)
    at scala.tools.nsc.typechecker.Typers$Typer.typerWithLocalContext(Typers.scala:497)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5371)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5442)
    at scala.tools.nsc.typechecker.Duplicators$BodyDuplicator.typed(Duplicators.scala:254)
    at scala.tools.nsc.typechecker.Typers$Typer.transformedOrTyped(Typers.scala:5641)
    at scala.tools.nsc.typechecker.Typers$Typer.typedDefDef(Typers.scala:2163)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5370)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5442)
    at scala.tools.nsc.typechecker.Duplicators$BodyDuplicator.typed(Duplicators.scala:266)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5493)
    at scala.tools.nsc.typechecker.Duplicators.retyped(Duplicators.scala:40)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.addBody(MiniboxTreeTransformation.scala:306)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:111)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:52)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2819)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2819)
    at scala.collection.immutable.List.loop$1(List.scala:164)
    at scala.collection.immutable.List.mapConserve(List.scala:180)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2819)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$transform$2.apply(MiniboxTreeTransformation.scala:87)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$transform$2.apply(MiniboxTreeTransformation.scala:87)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2855)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:87)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:52)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2823)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1238)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1237)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2855)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1236)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2816)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:152)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:52)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2846)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2844)
    at scala.collection.immutable.List.loop$1(List.scala:164)
    at scala.collection.immutable.List.mapConserve(List.scala:180)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2844)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$transform$1.apply(MiniboxTreeTransformation.scala:72)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$transform$1.apply(MiniboxTreeTransformation.scala:66)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2855)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:66)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$transform$1.apply(Minibox.scala:41)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$transform$1.apply(Minibox.scala:41)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:201)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:210)
    at miniboxing.plugin.MiniboxPhase$class.afterMinibox(Minibox.scala:51)
    at miniboxing.plugin.Minibox$Component$.afterMinibox(Minibox.scala:20)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:41)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:38)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:461)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:428)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:428)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1156)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:428)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1574)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1548)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1544)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1654)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Exception in thread "main" scala.reflect.internal.Types$TypeError: type mismatch;
 found   : T
 required: Tsp
    at scala.tools.nsc.typechecker.Contexts$Context.issueCommon(Contexts.scala:375)
    at scala.tools.nsc.typechecker.Contexts$Context.issue(Contexts.scala:379)
    at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueTypeError(ContextErrors.scala:84)
    at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueNormalTypeError(ContextErrors.scala:69)
    at scala.tools.nsc.typechecker.ContextErrors$TyperContextErrors$TyperErrorGen$.AdaptTypeError(ContextErrors.scala:176)
    at scala.tools.nsc.typechecker.Typers$Typer.fallBack$1(Typers.scala:1243)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1248)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5451)
    at scala.tools.nsc.typechecker.Duplicators$BodyDuplicator.typed(Duplicators.scala:384)
    at scala.tools.nsc.typechecker.Typers$Typer.typedBlock(Typers.scala:2335)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5371)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5371)
    at scala.tools.nsc.typechecker.Typers$Typer.typerWithLocalContext(Typers.scala:497)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5371)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5442)
    at scala.tools.nsc.typechecker.Duplicators$BodyDuplicator.typed(Duplicators.scala:254)
    at scala.tools.nsc.typechecker.Typers$Typer.transformedOrTyped(Typers.scala:5641)
    at scala.tools.nsc.typechecker.Typers$Typer.typedDefDef(Typers.scala:2163)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5370)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5442)
    at scala.tools.nsc.typechecker.Duplicators$BodyDuplicator.typed(Duplicators.scala:266)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5493)
    at scala.tools.nsc.typechecker.Duplicators.retyped(Duplicators.scala:40)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.addBody(MiniboxTreeTransformation.scala:306)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:111)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:52)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2819)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2819)
    at scala.collection.immutable.List.loop$1(List.scala:164)
    at scala.collection.immutable.List.mapConserve(List.scala:180)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2819)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$transform$2.apply(MiniboxTreeTransformation.scala:87)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$transform$2.apply(MiniboxTreeTransformation.scala:87)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2855)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:87)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:52)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2823)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1238)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1237)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2855)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1236)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:12)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2816)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:152)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:52)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2846)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2844)
    at scala.collection.immutable.List.loop$1(List.scala:164)
    at scala.collection.immutable.List.mapConserve(List.scala:180)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2844)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$transform$1.apply(MiniboxTreeTransformation.scala:72)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$transform$1.apply(MiniboxTreeTransformation.scala:66)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2855)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:66)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$transform$1.apply(Minibox.scala:41)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$transform$1.apply(Minibox.scala:41)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:201)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:210)
    at miniboxing.plugin.MiniboxPhase$class.afterMinibox(Minibox.scala:51)
    at miniboxing.plugin.Minibox$Component$.afterMinibox(Minibox.scala:20)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:41)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:38)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:461)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:428)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:428)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1156)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:428)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1574)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1548)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1544)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1654)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Automatically add getters/setters to class fields

Citing spire compilation:

core/src/main/scala/spire/math/Rational.scala:412: error: The program is accessing field integral of miniboxed class (or trait) Rationals, a pattern which becomes invalid after the miniboxing transformation. Please allow Scala to generate getters (and possibly setters) by using val (or var) without the "private[this]" qualifier: val integral: spire#29.math#7202.Integral#7636[A#7667]".
    override def signum: Int = scala.math.signum(integral.compare(num, zero))
                                                 ^
core/src/main/scala/spire/math/Rational.scala:412: error: The program is accessing field integral of miniboxed class (or trait) Rationals, a pattern which becomes invalid after the miniboxing transformation. Please allow Scala to generate getters (and possibly setters) by using val (or var) without the "private[this]" qualifier: val integral: spire#29.math#7202.Integral#7636[A#7667]".
    override def signum: Int = scala.math.signum(integral.compare(num, zero))
                                                                       ^
core/src/main/scala/spire/math/Rational.scala:414: error: The program is accessing field integral of miniboxed class (or trait) Rationals, a pattern which becomes invalid after the miniboxing transformation. Please allow Scala to generate getters (and possibly setters) by using val (or var) without the "private[this]" qualifier: val integral: spire#29.math#7202.Integral#7636[A#7667]".
    def isWhole: Boolean = den == one
                                  ^
core/src/main/scala/spire/math/Rational.scala:418: error: The program is accessing field integral of miniboxed class (or trait) Rationals, a pattern which becomes invalid after the miniboxing transformation. Please allow Scala to generate getters (and possibly setters) by using val (or var) without the "private[this]" qualifier: val integral: spire#29.math#7202.Integral#7636[A#7667]".
    def toBigInt: BigInt = (integral.toBigInt(num) / integral.toBigInt(den))
                            ^
core/src/main/scala/spire/math/Rational.scala:418: error: The program is accessing field integral of miniboxed class (or trait) Rationals, a pattern which becomes invalid after the miniboxing transformation. Please allow Scala to generate getters (and possibly setters) by using val (or var) without the "private[this]" qualifier: val integral: spire#29.math#7202.Integral#7636[A#7667]".
    def toBigInt: BigInt = (integral.toBigInt(num) / integral.toBigInt(den))
                                                     ^
core/src/main/scala/spire/math/Rational.scala:419: error: The program is accessing field integral of miniboxed class (or trait) Rationals, a pattern which becomes invalid after the miniboxing transformation. Please allow Scala to generate getters (and possibly setters) by using val (or var) without the "private[this]" qualifier: val integral: spire#29.math#7202.Integral#7636[A#7667]".
    def toBigDecimal: BigDecimal = integral.toBigDecimal(num) / integral.toBigDecimal(den)
                                   ^
core/src/main/scala/spire/math/Rational.scala:419: error: The program is accessing field integral of miniboxed class (or trait) Rationals, a pattern which becomes invalid after the miniboxing transformation. Please allow Scala to generate getters (and possibly setters) by using val (or var) without the "private[this]" qualifier: val integral: spire#29.math#7202.Integral#7636[A#7667]".
    def toBigDecimal: BigDecimal = integral.toBigDecimal(num) / integral.toBigDecimal(den)
                                                                ^
core/src/main/scala/spire/math/Rational.scala:426: error: The program is accessing field integral of miniboxed class (or trait) Rationals, a pattern which becomes invalid after the miniboxing transformation. Please allow Scala to generate getters (and possibly setters) by using val (or var) without the "private[this]" qualifier: val integral: spire#29.math#7202.Integral#7636[A#7667]".
    def doubleValue: Double = if (num == zero) {
                                         ^
core/src/main/scala/spire/math/Rational.scala:428: error: The program is accessing field integral of miniboxed class (or trait) Rationals, a pattern which becomes invalid after the miniboxing transformation. Please allow Scala to generate getters (and possibly setters) by using val (or var) without the "private[this]" qualifier: val integral: spire#29.math#7202.Integral#7636[A#7667]".
    } else if (integral.lt(num, zero)) {
               ^
core/src/main/scala/spire/math/Rational.scala:428: error: The program is accessing field integral of miniboxed class (or trait) Rationals, a pattern which becomes invalid after the miniboxing transformation. Please allow Scala to generate getters (and possibly setters) by using val (or var) without the "private[this]" qualifier: val integral: spire#29.math#7202.Integral#7636[A#7667]".
    } else if (integral.lt(num, zero)) {
                                ^
core/src/main/scala/spire/math/Rational.scala:435: error: The program is accessing field integral of miniboxed class (or trait) Rationals, a pattern which becomes invalid after the miniboxing transformation. Please allow Scala to generate getters (and possibly setters) by using val (or var) without the "private[this]" qualifier: val integral: spire#29.math#7202.Integral#7636[A#7667]".
      val n = integral.toBigInt(num)
              ^
core/src/main/scala/spire/math/Rational.scala:436: error: The program is accessing field integral of miniboxed class (or trait) Rationals, a pattern which becomes invalid after the miniboxing transformation. Please allow Scala to generate getters (and possibly setters) by using val (or var) without the "private[this]" qualifier: val integral: spire#29.math#7202.Integral#7636[A#7667]".
      val d = integral.toBigInt(den)
              ^

Generic method crasher

sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ cat gh-bug-10.scala 
package miniboxing.tests.compile
import miniboxing.plugin.minispec

class Order[T]

class X[@minispec X] {
  def foo[T](o: Order[T]) = o
}
sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ ../mb-scalac gh-bug-10.scala 
Picked up _JAVA_OPTIONS: -Xms2g -Xmx2g -Xss4m -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=256m -XX:+UseParallelGC -XX:PermSize=256m -XX:+TieredCompilation -XX:+UseNUMA
Specializing class X...

method foo_J: [T](val X_X_TypeTag: Byte, o: miniboxing.tests.compile.Order[T])miniboxing.tests.compile.Order[T] ==> 
method foo: [T](o: miniboxing.tests.compile.Order[T])miniboxing.tests.compile.Order[T] ==> 
class Order
class Order
A cast which is neither boxing, nor unboxing when handling `ForwardTo`.
class Order --> class Order
scala.NotImplementedError: an implementation is missing
    at scala.Predef$.$qmark$qmark$qmark(Predef.scala:252)
    at miniboxing.plugin.MiniboxInfoTransformation$class.genCastInfo$1(MiniboxInfoTransformation.scala:546)
    at miniboxing.plugin.MiniboxInfoTransformation$class.miniboxing$plugin$MiniboxInfoTransformation$$genForwardingInfo(MiniboxInfoTransformation.scala:577)
    at miniboxing.plugin.MiniboxInfoTransformation$$anonfun$widen$1$3$$anonfun$apply$16$$anonfun$apply$17.apply(MiniboxInfoTransformation.scala:439)
    at miniboxing.plugin.MiniboxInfoTransformation$$anonfun$widen$1$3$$anonfun$apply$16.apply(MiniboxInfoTransformation.scala:438)
    at miniboxing.plugin.MiniboxInfoTransformation$$anonfun$widen$1$3.apply(MiniboxInfoTransformation.scala:438)
    at miniboxing.plugin.MiniboxInfoTransformation$$anonfun$widen$1$3.apply(MiniboxInfoTransformation.scala:388)
    at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:772)
    at scala.collection.immutable.List.foreach(List.scala:318)
    at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:771)
    at miniboxing.plugin.MiniboxInfoTransformation$class.widen$1(MiniboxInfoTransformation.scala:388)
    at miniboxing.plugin.MiniboxInfoTransformation$class.specialize(MiniboxInfoTransformation.scala:466)
    at miniboxing.plugin.Minibox$Component$.specialize(Minibox.scala:57)
    at miniboxing.plugin.MiniboxInfoTransformation$class.transformInfo(MiniboxInfoTransformation.scala:25)
    at miniboxing.plugin.Minibox$Component$.transformInfo(Minibox.scala:57)
    at scala.tools.nsc.transform.InfoTransform$Phase$$anon$1.transform(InfoTransform.scala:38)
    at scala.reflect.internal.Symbols$Symbol.rawInfo(Symbols.scala:1312)
    at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1239)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxing$plugin$MiniboxTreeTransformation$MiniboxTreeTransformer$$createSpecializedClassesTrees$1$$anonfun$apply$4.apply(MiniboxTreeTransformation.scala:610)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxing$plugin$MiniboxTreeTransformation$MiniboxTreeTransformer$$createSpecializedClassesTrees$1$$anonfun$apply$4.apply(MiniboxTreeTransformation.scala:610)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.afterMinibox(MiniboxTreeTransformation.scala:118)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxing$plugin$MiniboxTreeTransformation$MiniboxTreeTransformer$$createSpecializedClassesTrees(MiniboxTreeTransformation.scala:607)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:137)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:136)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:136)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:120)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:82)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:82)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxPhase$class.afterMinibox(Minibox.scala:95)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:82)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:75)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)
error: 
     while compiling: gh-bug-10.scala
        during phase: minibox
     library version: version 2.10.3-20130625-164027-d22e8d282c
    compiler version: version 2.10.3-20130627-153946-54cb6af7db
  reconstructed args: -bootclasspath /home/sun/workspace/dev/miniboxing-plugin//components/runtime/target/scala-2.10/miniboxing-runtime_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar -Xplugin:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: TypeTree(class Order)
              symbol: class Order in package compile (flags: )
   symbol definition: class Order[T] extends Object
                 tpe: miniboxing.tests.compile.Order[T]
       symbol owners: class Order -> package compile
      context owners: package compile

== Enclosing template or block ==

PackageDef(
  "miniboxing"."tests"."compile" // final package compile in package tests, tree.tpe=miniboxing.tests.compile.type
  ClassDef( // class Order[T] extends Object in package compile
    0
    "Order"
    TypeDef( // T in class Order
      <deferred> <param>
      "T"
      []
      <tpt> // tree.tpe=
    )
    Template( // val <local Order>: <notype> in class Order, tree.tpe=miniboxing.tests.compile.Order[T]
      "java.lang.Object" // parents
      ValDef(
        private
        "_"
        <tpt>
        <empty>
      )
      DefDef( // def <init>(): miniboxing.tests.compile.Order[T] in class Order
        <method>
        "<init>"
        []
        List(Nil)
        <tpt> // tree.tpe=miniboxing.tests.compile.Order[T]
        Block( // tree.tpe=Unit
          Apply( // def <init>(): Object in class Object, tree.tpe=Object
            Order.super."<init>" // def <init>(): Object in class Object, tree.tpe=()Object
            Nil
          )
          ()
        )
      )
    )
  )
  ClassDef( // class X[X] extends Object in package compile
    0
    "X"
    TypeDef( // X in class X
      <deferred> <param> @{ miniboxing.plugin.minispec }
      "X"
      []
      <tpt> // tree.tpe=
    )
    Template( // val <local X>: <notype> in class X, tree.tpe=miniboxing.tests.compile.X[X]
      "java.lang.Object" // parents
      ValDef(
        private
        "_"
        <tpt>
        <empty>
      )
      // 2 statements
      DefDef( // def <init>(): miniboxing.tests.compile.X[X] in class X
        <method>
        "<init>"
        []
        List(Nil)
        <tpt> // tree.tpe=miniboxing.tests.compile.X[X]
        Block( // tree.tpe=Unit
          Apply( // def <init>(): Object in class Object, tree.tpe=Object
            X.super."<init>" // def <init>(): Object in class Object, tree.tpe=()Object
            Nil
          )
          ()
        )
      )
      DefDef( // def foo[T](o: miniboxing.tests.compile.Order[T]): miniboxing.tests.compile.Order[T] in class X
        <method>
        "foo"
        TypeDef( // T
          <deferred> <param>
          "T"
          []
          <tpt> // tree.tpe=
        )
        // 1 parameter list
        ValDef( // o: miniboxing.tests.compile.Order[T]
          <param> <triedcooking>
          "o"
          <tpt> // tree.tpe=miniboxing.tests.compile.Order[T]
          <empty>
        )
        <tpt> // tree.tpe=miniboxing.tests.compile.Order[T]
        "o" // o: miniboxing.tests.compile.Order[T], tree.tpe=miniboxing.tests.compile.Order[T]
      )
    )
  )
)

== Expanded type of tree ==

TypeRef(
  TypeSymbol(class Order[T] extends Object)
  args = List(SkolemTypeRef(TypeSkolem(T)))
)

uncaught exception during compilation: scala.NotImplementedError
error: scala.NotImplementedError: an implementation is missing
    at scala.Predef$.$qmark$qmark$qmark(Predef.scala:252)
    at miniboxing.plugin.MiniboxInfoTransformation$class.genCastInfo$1(MiniboxInfoTransformation.scala:546)
    at miniboxing.plugin.MiniboxInfoTransformation$class.miniboxing$plugin$MiniboxInfoTransformation$$genForwardingInfo(MiniboxInfoTransformation.scala:577)
    at miniboxing.plugin.MiniboxInfoTransformation$$anonfun$widen$1$3$$anonfun$apply$16$$anonfun$apply$17.apply(MiniboxInfoTransformation.scala:439)
    at miniboxing.plugin.MiniboxInfoTransformation$$anonfun$widen$1$3$$anonfun$apply$16.apply(MiniboxInfoTransformation.scala:438)
    at miniboxing.plugin.MiniboxInfoTransformation$$anonfun$widen$1$3.apply(MiniboxInfoTransformation.scala:438)
    at miniboxing.plugin.MiniboxInfoTransformation$$anonfun$widen$1$3.apply(MiniboxInfoTransformation.scala:388)
    at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:772)
    at scala.collection.immutable.List.foreach(List.scala:318)
    at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:771)
    at miniboxing.plugin.MiniboxInfoTransformation$class.widen$1(MiniboxInfoTransformation.scala:388)
    at miniboxing.plugin.MiniboxInfoTransformation$class.specialize(MiniboxInfoTransformation.scala:466)
    at miniboxing.plugin.Minibox$Component$.specialize(Minibox.scala:57)
    at miniboxing.plugin.MiniboxInfoTransformation$class.transformInfo(MiniboxInfoTransformation.scala:25)
    at miniboxing.plugin.Minibox$Component$.transformInfo(Minibox.scala:57)
    at scala.tools.nsc.transform.InfoTransform$Phase$$anon$1.transform(InfoTransform.scala:38)
    at scala.reflect.internal.Symbols$Symbol.rawInfo(Symbols.scala:1312)
    at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1239)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxing$plugin$MiniboxTreeTransformation$MiniboxTreeTransformer$$createSpecializedClassesTrees$1$$anonfun$apply$4.apply(MiniboxTreeTransformation.scala:610)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxing$plugin$MiniboxTreeTransformation$MiniboxTreeTransformer$$createSpecializedClassesTrees$1$$anonfun$apply$4.apply(MiniboxTreeTransformation.scala:610)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.afterMinibox(MiniboxTreeTransformation.scala:118)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxing$plugin$MiniboxTreeTransformation$MiniboxTreeTransformer$$createSpecializedClassesTrees(MiniboxTreeTransformation.scala:607)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:137)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:136)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:136)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:120)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:82)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:82)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxPhase$class.afterMinibox(Minibox.scala:95)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:82)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:75)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Exception in thread "main" scala.NotImplementedError: an implementation is missing
    at scala.Predef$.$qmark$qmark$qmark(Predef.scala:252)
    at miniboxing.plugin.MiniboxInfoTransformation$class.genCastInfo$1(MiniboxInfoTransformation.scala:546)
    at miniboxing.plugin.MiniboxInfoTransformation$class.miniboxing$plugin$MiniboxInfoTransformation$$genForwardingInfo(MiniboxInfoTransformation.scala:577)
    at miniboxing.plugin.MiniboxInfoTransformation$$anonfun$widen$1$3$$anonfun$apply$16$$anonfun$apply$17.apply(MiniboxInfoTransformation.scala:439)
    at miniboxing.plugin.MiniboxInfoTransformation$$anonfun$widen$1$3$$anonfun$apply$16.apply(MiniboxInfoTransformation.scala:438)
    at miniboxing.plugin.MiniboxInfoTransformation$$anonfun$widen$1$3.apply(MiniboxInfoTransformation.scala:438)
    at miniboxing.plugin.MiniboxInfoTransformation$$anonfun$widen$1$3.apply(MiniboxInfoTransformation.scala:388)
    at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:772)
    at scala.collection.immutable.List.foreach(List.scala:318)
    at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:771)
    at miniboxing.plugin.MiniboxInfoTransformation$class.widen$1(MiniboxInfoTransformation.scala:388)
    at miniboxing.plugin.MiniboxInfoTransformation$class.specialize(MiniboxInfoTransformation.scala:466)
    at miniboxing.plugin.Minibox$Component$.specialize(Minibox.scala:57)
    at miniboxing.plugin.MiniboxInfoTransformation$class.transformInfo(MiniboxInfoTransformation.scala:25)
    at miniboxing.plugin.Minibox$Component$.transformInfo(Minibox.scala:57)
    at scala.tools.nsc.transform.InfoTransform$Phase$$anon$1.transform(InfoTransform.scala:38)
    at scala.reflect.internal.Symbols$Symbol.rawInfo(Symbols.scala:1312)
    at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1239)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxing$plugin$MiniboxTreeTransformation$MiniboxTreeTransformer$$createSpecializedClassesTrees$1$$anonfun$apply$4.apply(MiniboxTreeTransformation.scala:610)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxing$plugin$MiniboxTreeTransformation$MiniboxTreeTransformer$$createSpecializedClassesTrees$1$$anonfun$apply$4.apply(MiniboxTreeTransformation.scala:610)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.afterMinibox(MiniboxTreeTransformation.scala:118)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxing$plugin$MiniboxTreeTransformation$MiniboxTreeTransformer$$createSpecializedClassesTrees(MiniboxTreeTransformation.scala:607)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:137)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:136)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:136)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:120)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:82)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:82)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxPhase$class.afterMinibox(Minibox.scala:95)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:82)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:75)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Mixin crasher

package miniboxing.tests.compile
import miniboxing.plugin.minispec
import scala.annotation.tailrec
import scala.reflect.ClassTag

trait Ordering[@minispec A] {
  def eqv(x: Array[A], y: Array[A]): Boolean = false
}

trait ArrayVectorOrder[@minispec A] extends Ordering[A] {
  override def eqv(x: Array[A], y: Array[A]): Boolean = super.eqv(x, y)
}

object vectorOrder {
  implicit def arrayOrder[@minispec A](implicit ct: ClassTag[A]) = new ArrayVectorOrder[A] { }
}
sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ rm -rf miniboxing && ../mb-scalac mb_spire_9.scala

     while compiling: mb_spire_9.scala
        during phase: mixin
     library version: version 2.10.3-20130625-164027-d22e8d282c
    compiler version: version 2.10.3-20130627-153946-54cb6af7db
  reconstructed args: -bootclasspath /home/sun/workspace/dev/miniboxing-plugin//components/runtime/target/scala-2.10/miniboxing-runtime_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar -Xplugin:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: TypeTree(object ArrayVectorOrder_L$class)
              symbol: object ArrayVectorOrder_L$class in package compile (flags: <module> abstract <trait> <implclass> <latemodule>)
   symbol definition: abstract class ArrayVectorOrder_L$class extends Ordering_L$class with ArrayVectorOrder with ArrayVectorOrder_L
                 tpe: miniboxing.tests.compile.ArrayVectorOrder_L$class
       symbol owners: object ArrayVectorOrder_L$class -> package compile
      context owners: anonymous class anon$1 -> package compile

== Enclosing template or block ==

Template( // val <local $anon>: <notype>, tree.tpe=miniboxing.tests.compile.anon$1
  "java.lang.Object", "miniboxing.tests.compile.ArrayVectorOrder_L" // parents
  ValDef(
    private
    "_"
    <tpt>
    <empty>
  )
  DefDef( // def <init>(): miniboxing.tests.compile.anon$1
    <method> <triedcooking>
    "<init>"
    []
    List(Nil)
    <tpt> // tree.tpe=miniboxing.tests.compile.anon$1
    Block( // tree.tpe=Unit
      // 3 statements
      Apply( // def <init>(): Object in class Object, tree.tpe=Object
        vectorOrder$$anon$1.super."<init>" // def <init>(): Object in class Object, tree.tpe=()Object
        Nil
      )
      Apply( // def $init$(): Unit in object Ordering_L$class, tree.tpe=Unit
        vectorOrder$$anon$1.this.$asInstanceOf[miniboxing.tests.compile.Ordering_L$class]()."$init$" // def $init$(): Unit in object Ordering_L$class, tree.tpe=()Unit
        Nil
      )
      Apply( // def $init$(): Unit in object ArrayVectorOrder_L$class, tree.tpe=Unit
        vectorOrder$$anon$1.this.$asInstanceOf[miniboxing.tests.compile.ArrayVectorOrder_L$class]()."$init$" // def $init$(): Unit in object ArrayVectorOrder_L$class, tree.tpe=()Unit
        Nil
      )
      ()
    )
  )
)

== Expanded type of tree ==

TypeRef(
  TypeSymbol(
    abstract class ArrayVectorOrder_L$class extends Ordering_L$class with ArrayVectorOrder with ArrayVectorOrder_L

  )
)

unhandled exception while transforming mb_spire_9.scala
error: uncaught exception during compilation: java.lang.UnsupportedOperationException
error: java.lang.UnsupportedOperationException: tail of empty list
    at scala.collection.immutable.Nil$.tail(List.scala:339)
    at scala.collection.immutable.Nil$.tail(List.scala:334)
    at scala.tools.nsc.transform.Mixin$$anonfun$scala$tools$nsc$transform$Mixin$$rebindSuper$1.apply(Mixin.scala:129)
    at scala.tools.nsc.transform.Mixin$$anonfun$scala$tools$nsc$transform$Mixin$$rebindSuper$1.apply(Mixin.scala:122)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at scala.tools.nsc.Global.afterPickler(Global.scala:1104)
    at scala.tools.nsc.transform.Mixin.scala$tools$nsc$transform$Mixin$$rebindSuper(Mixin.scala:122)
    at scala.tools.nsc.transform.Mixin$$anonfun$scala$tools$nsc$transform$Mixin$$mixinTraitMembers$1$1.apply(Mixin.scala:345)
    at scala.tools.nsc.transform.Mixin$$anonfun$scala$tools$nsc$transform$Mixin$$mixinTraitMembers$1$1.apply(Mixin.scala:298)
    at scala.collection.immutable.List.foreach(List.scala:318)
    at scala.reflect.internal.Scopes$Scope.foreach(Scopes.scala:315)
    at scala.tools.nsc.transform.Mixin.scala$tools$nsc$transform$Mixin$$mixinTraitMembers$1(Mixin.scala:298)
    at scala.tools.nsc.transform.Mixin$$anonfun$addMixedinMembers$3.apply(Mixin.scala:373)
    at scala.tools.nsc.transform.Mixin$$anonfun$addMixedinMembers$3.apply(Mixin.scala:369)
    at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:772)
    at scala.collection.immutable.List.foreach(List.scala:318)
    at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:771)
    at scala.tools.nsc.transform.Mixin.addMixedinMembers(Mixin.scala:369)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.preTransform(Mixin.scala:536)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1264)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:477)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1264)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:477)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1298)
    at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1298)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1297)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1264)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:477)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Exception in thread "main" java.lang.UnsupportedOperationException: tail of empty list
    at scala.collection.immutable.Nil$.tail(List.scala:339)
    at scala.collection.immutable.Nil$.tail(List.scala:334)
    at scala.tools.nsc.transform.Mixin$$anonfun$scala$tools$nsc$transform$Mixin$$rebindSuper$1.apply(Mixin.scala:129)
    at scala.tools.nsc.transform.Mixin$$anonfun$scala$tools$nsc$transform$Mixin$$rebindSuper$1.apply(Mixin.scala:122)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at scala.tools.nsc.Global.afterPickler(Global.scala:1104)
    at scala.tools.nsc.transform.Mixin.scala$tools$nsc$transform$Mixin$$rebindSuper(Mixin.scala:122)
    at scala.tools.nsc.transform.Mixin$$anonfun$scala$tools$nsc$transform$Mixin$$mixinTraitMembers$1$1.apply(Mixin.scala:345)
    at scala.tools.nsc.transform.Mixin$$anonfun$scala$tools$nsc$transform$Mixin$$mixinTraitMembers$1$1.apply(Mixin.scala:298)
    at scala.collection.immutable.List.foreach(List.scala:318)
    at scala.reflect.internal.Scopes$Scope.foreach(Scopes.scala:315)
    at scala.tools.nsc.transform.Mixin.scala$tools$nsc$transform$Mixin$$mixinTraitMembers$1(Mixin.scala:298)
    at scala.tools.nsc.transform.Mixin$$anonfun$addMixedinMembers$3.apply(Mixin.scala:373)
    at scala.tools.nsc.transform.Mixin$$anonfun$addMixedinMembers$3.apply(Mixin.scala:369)
    at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:772)
    at scala.collection.immutable.List.foreach(List.scala:318)
    at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:771)
    at scala.tools.nsc.transform.Mixin.addMixedinMembers(Mixin.scala:369)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.preTransform(Mixin.scala:536)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1264)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:477)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1264)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:477)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1298)
    at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1298)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1297)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1264)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:477)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Incorrect var handling

sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ cat mb_spire_11.scala 
package miniboxing.tests.compile
import miniboxing.plugin.minispec

trait Field2[@minispec A] {
  def zero: A
  def plus(o1: A, o2: A): A
  def times(o1: A, o2: A): A
}

trait ArrayInnerProductSpace2[@minispec A] {
  def scalar: Field2[A]
  private[this] var z: A = _

  def dot(v: Array[A], w: Array[A], zero: A): A = {
    z = scalar.zero
    var i = 0
    while (i < v.length && i < w.length) {
      z = scalar.plus(z, scalar.times(v(i), w(i)))
      i += 1
    }
    z
  }
}
sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ ../mb-scalac mb_spire_11.scala 
error: 
     while compiling: mb_spire_11.scala
        during phase: minibox
     library version: version 2.10.3-20130708-144415-62405227dd
    compiler version: version 2.10.3-20130708-163611-504b5f3b15
  reconstructed args: -bootclasspath /home/sun/workspace/dev/miniboxing-plugin//components/runtime/target/scala-2.10/miniboxing-runtime_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar -Xplugin:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: term dot_J
              symbol: method dot_J in trait ArrayInnerProductSpace2_J (flags: <method>)
   symbol definition: def dot_J(val ArrayInnerProductSpace2_A_TypeTag: Byte,v: Array[Asp],w: Array[Asp],zero: Long): Long
       symbol owners: method dot_J -> trait ArrayInnerProductSpace2_J -> package compile
      context owners: method dot_J -> trait ArrayInnerProductSpace2_J -> package compile

== Enclosing template or block ==

Apply( // final def minibox2box[T](l: Long,tag: Byte): T in object MiniboxConversions
  TypeApply( // final def minibox2box[T](l: Long,tag: Byte): T in object MiniboxConversions, tree.tpe=(l: Long, tag: Byte)Asp
    MiniboxConversions.this."minibox2box" // final def minibox2box[T](l: Long,tag: Byte): T in object MiniboxConversions, tree.tpe=[T](l: Long, tag: Byte)T
    <tpt> // tree.tpe=Asp
  )
  // 2 arguments
  ArrayInnerProductSpace2.this."z" // private[this] var z: Long in trait ArrayInnerProductSpace2_J, tree.tpe=Long
  "ArrayInnerProductSpace2_A_TypeTag" // val ArrayInnerProductSpace2_A_TypeTag: Byte, tree.tpe=Byte
)

uncaught exception during compilation: scala.reflect.internal.Types$TypeError
error: scala.reflect.internal.Types$TypeError: reassignment to val
    at scala.tools.nsc.typechecker.Contexts$Context.issueCommon(Contexts.scala:397)
    at scala.tools.nsc.typechecker.Contexts$Context.issue(Contexts.scala:401)
    at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueTypeError(ContextErrors.scala:103)
    at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueNormalTypeError(ContextErrors.scala:87)
    at scala.tools.nsc.typechecker.ContextErrors$TyperContextErrors$TyperErrorGen$.AssignmentError(ContextErrors.scala:296)
    at scala.tools.nsc.typechecker.Typers$Typer.fail$3(Typers.scala:4238)
    at scala.tools.nsc.typechecker.Typers$Typer.typedAssign$1(Typers.scala:4265)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5539)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:389)
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:2925)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer.typedBlock(Typers.scala:2429)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typerWithLocalContext(Typers.scala:507)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:239)
    at scala.tools.nsc.typechecker.Typers$Typer.transformedOrTyped(Typers.scala:5806)
    at scala.tools.nsc.typechecker.Typers$Typer.typedDefDef(Typers.scala:2254)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5530)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:251)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5665)
    at miniboxing.plugin.Duplicators.retyped(Duplicators.scala:42)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$46.apply(MiniboxTreeTransformation.scala:727)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$46.apply(MiniboxTreeTransformation.scala:727)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.beforePhase(SymbolTable.scala:215)
    at miniboxing.plugin.MiniboxPhase$class.beforeMinibox(Minibox.scala:112)
    at miniboxing.plugin.Minibox$Component$.beforeMinibox(Minibox.scala:70)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.duplicateBody(MiniboxTreeTransformation.scala:727)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.specializeDefDefBody(MiniboxTreeTransformation.scala:693)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:224)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:174)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:174)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:174)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:458)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:144)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:141)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:141)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:96)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:96)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxPhase$class.afterMinibox(Minibox.scala:109)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:96)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:89)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Exception in thread "main" scala.reflect.internal.Types$TypeError: reassignment to val
    at scala.tools.nsc.typechecker.Contexts$Context.issueCommon(Contexts.scala:397)
    at scala.tools.nsc.typechecker.Contexts$Context.issue(Contexts.scala:401)
    at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueTypeError(ContextErrors.scala:103)
    at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueNormalTypeError(ContextErrors.scala:87)
    at scala.tools.nsc.typechecker.ContextErrors$TyperContextErrors$TyperErrorGen$.AssignmentError(ContextErrors.scala:296)
    at scala.tools.nsc.typechecker.Typers$Typer.fail$3(Typers.scala:4238)
    at scala.tools.nsc.typechecker.Typers$Typer.typedAssign$1(Typers.scala:4265)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5539)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:389)
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:2925)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer.typedBlock(Typers.scala:2429)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typerWithLocalContext(Typers.scala:507)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:239)
    at scala.tools.nsc.typechecker.Typers$Typer.transformedOrTyped(Typers.scala:5806)
    at scala.tools.nsc.typechecker.Typers$Typer.typedDefDef(Typers.scala:2254)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5530)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:251)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5665)
    at miniboxing.plugin.Duplicators.retyped(Duplicators.scala:42)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$46.apply(MiniboxTreeTransformation.scala:727)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$46.apply(MiniboxTreeTransformation.scala:727)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.beforePhase(SymbolTable.scala:215)
    at miniboxing.plugin.MiniboxPhase$class.beforeMinibox(Minibox.scala:112)
    at miniboxing.plugin.Minibox$Component$.beforeMinibox(Minibox.scala:70)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.duplicateBody(MiniboxTreeTransformation.scala:727)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.specializeDefDefBody(MiniboxTreeTransformation.scala:693)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:224)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:174)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:174)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:174)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:458)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:144)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:141)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:141)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:96)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:96)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxPhase$class.afterMinibox(Minibox.scala:109)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:96)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:89)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Crasher in constructor rewiring

sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ cat mb_spire_1.scala 
package miniboxing.tests.compile
import miniboxing.plugin.minispec

object `package` {
  implicit val IntIntegral = new Integral[Long]
}

class Integral[T]
object LongRationals extends Rationals[Long]
abstract class Rationals[@minispec A](implicit integral: Integral[A])
sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ ../mb-scalac mb_spire_1.scala
Specializing class Rationals...

  // interface:
  abstract trait Rationals[A] extends Object {
  }

  // specialized class:
  abstract class Rationals_J[Asp] extends Rationals[Asp] {
    def <init>(val Rationals_A_TypeTag: Byte,integral: miniboxing.tests.compile.Integral[Asp]): miniboxing.tests.compile.Rationals_J[Asp] // is a specialized implementation of constructor Rationals
    implicit private[this] val integral: miniboxing.tests.compile.Integral[Asp] // is a specialized implementation of value integral
    private[this] val Rationals_A_TypeTag: Byte                            // no info
  }

  // specialized class:
  abstract class Rationals_L[Asp] extends Rationals[Asp] {
    def <init>(integral: miniboxing.tests.compile.Integral[Asp]): miniboxing.tests.compile.Rationals_L[Asp] // is a specialized implementation of constructor Rationals
    implicit private[this] val integral: miniboxing.tests.compile.Integral[Asp] // is a specialized implementation of value integral
  }




Tag not found:
List(value Rationals_A_TypeTag)
List(value integral)
Map(value Rationals_A_TypeTag -> type Asp)
object LongRationals
constructor LongRationals
Map(class Short -> 3, class Byte -> 2, class Int -> 5, class Unit -> 0, class Double -> 8, class Nothing -> 9, class Boolean -> 1, class Long -> 6, class Char -> 4, class Float -> 7)
java.util.NoSuchElementException: key not found: value Rationals_A_TypeTag
    at scala.collection.MapLike$class.default(MapLike.scala:228)
    at scala.collection.AbstractMap.default(Map.scala:58)
    at scala.collection.MapLike$class.apply(MapLike.scala:141)
    at scala.collection.AbstractMap.apply(Map.scala:58)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$40.apply(MiniboxTreeTransformation.scala:517)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$40.apply(MiniboxTreeTransformation.scala:515)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.immutable.List.foreach(List.scala:318)
    at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
    at scala.collection.AbstractTraversable.map(Traversable.scala:105)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.rewiredMethodCall(MiniboxTreeTransformation.scala:515)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:350)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:120)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1238)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:452)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:120)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1235)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1233)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1232)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:452)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:120)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$8.apply(MiniboxTreeTransformation.scala:168)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$8.apply(MiniboxTreeTransformation.scala:168)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:168)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:120)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:452)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:120)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:139)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:136)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:136)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:120)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:82)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:82)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxPhase$class.afterMinibox(Minibox.scala:95)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:82)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:75)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

     while compiling: mb_spire_1.scala
        during phase: minibox
     library version: version 2.10.3-20130625-164027-d22e8d282c
    compiler version: version 2.10.3-20130627-153946-54cb6af7db
  reconstructed args: -bootclasspath /home/sun/workspace/dev/miniboxing-plugin//components/runtime/target/scala-2.10/miniboxing-runtime_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar -Xplugin:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: This(object LongRationals)
              symbol: object LongRationals in package compile (flags: <module>)
   symbol definition: class LongRationals extends Rationals[Long]
                 tpe: miniboxing.tests.compile.LongRationals.type
       symbol owners: object LongRationals -> package compile
      context owners: constructor LongRationals -> object LongRationals -> package compile

== Enclosing template or block ==

DefDef( // def <init>(): miniboxing.tests.compile.LongRationals.type in object LongRationals
  <method>
  "<init>"
  []
  List(Nil)
  <tpt> // tree.tpe=miniboxing.tests.compile.LongRationals.type
  Block( // tree.tpe=Unit
    Apply( // def <init>(integral: miniboxing.tests.compile.Integral[A]): miniboxing.tests.compile.Rationals[A] in trait Rationals, tree.tpe=miniboxing.tests.compile.Rationals[Long]
      LongRationals.super."<init>" // def <init>(integral: miniboxing.tests.compile.Integral[A]): miniboxing.tests.compile.Rationals[A] in trait Rationals, tree.tpe=(integral: miniboxing.tests.compile.Integral[Long])miniboxing.tests.compile.Rationals[Long]
      Apply( // implicit val IntIntegral(): miniboxing.tests.compile.Integral[Long] in package compile, tree.tpe=miniboxing.tests.compile.Integral[Long]
        compile.this."package"."IntIntegral" // implicit val IntIntegral(): miniboxing.tests.compile.Integral[Long] in package compile, tree.tpe=()miniboxing.tests.compile.Integral[Long]
        Nil
      )
    )
    ()
  )
)

== Expanded type of tree ==

SingleType(pre = ThisType(package compile), object LongRationals)

unhandled exception while transforming mb_spire_1.scala
error: uncaught exception during compilation: java.util.NoSuchElementException
error: java.util.NoSuchElementException: key not found: <none>
    at scala.collection.MapLike$class.default(MapLike.scala:228)
    at scala.collection.AbstractMap.default(Map.scala:58)
    at scala.collection.MapLike$class.apply(MapLike.scala:141)
    at scala.collection.AbstractMap.apply(Map.scala:58)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.immutable.List.foreach(List.scala:318)
    at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
    at scala.collection.AbstractTraversable.map(Traversable.scala:105)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.rewiredMethodCall(MiniboxTreeTransformation.scala:535)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:350)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:120)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1238)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:452)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:120)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1235)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1233)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1232)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:452)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:120)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$8.apply(MiniboxTreeTransformation.scala:168)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$8.apply(MiniboxTreeTransformation.scala:168)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:168)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:120)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:452)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:120)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:139)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:136)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:136)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:120)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:82)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:82)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxPhase$class.afterMinibox(Minibox.scala:95)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:82)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:75)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Exception in thread "main" java.util.NoSuchElementException: key not found: <none>
    at scala.collection.MapLike$class.default(MapLike.scala:228)
    at scala.collection.AbstractMap.default(Map.scala:58)
    at scala.collection.MapLike$class.apply(MapLike.scala:141)
    at scala.collection.AbstractMap.apply(Map.scala:58)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.immutable.List.foreach(List.scala:318)
    at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
    at scala.collection.AbstractTraversable.map(Traversable.scala:105)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.rewiredMethodCall(MiniboxTreeTransformation.scala:535)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:350)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:120)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1238)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:452)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:120)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1235)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1233)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1232)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:452)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:120)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$8.apply(MiniboxTreeTransformation.scala:168)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$8.apply(MiniboxTreeTransformation.scala:168)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:168)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:120)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:452)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:120)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:139)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:136)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:136)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:120)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:82)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:82)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxPhase$class.afterMinibox(Minibox.scala:95)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:82)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:75)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Scala Library Crasher 8

Miniboxing + super + mixin => boom

sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ cat mb_library_8.scala 
package miniboxing.tests.compile.library8
import miniboxing.plugin.minispec

trait Growable[@minispec A] {
  def ++=() = {}
}

class VectorBuilder[@minispec A] extends Growable[A] {
  override def ++=() =
    super.++=()
}
sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ ../mb-scalac mb_library_8.scala 
VectorBuilder_J.super.++=()
def ++=(): Unit
List(method ++=, trait Growable, package library8, package compile, package tests, package miniboxing, package <root>)
class Growable$class
<none>
error: uncaught exception during compilation: java.lang.AssertionError
error: java.lang.AssertionError: assertion failed: 
     while compiling: mb_library_8.scala
        during phase: global=mixin, atPhase=cleanup
     library version: version 2.10.3-20130708-163611-504b5f3b15
    compiler version: version 2.10.3-20130708-163611-504b5f3b15
  reconstructed args: -bootclasspath /home/sun/workspace/dev/miniboxing-plugin//components/runtime/target/scala-2.10/miniboxing-runtime_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar -Xplugin:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: Ident(miniboxing$tests$compile$library8$VectorBuilder_J|A_TypeTag)
              symbol: value miniboxing$tests$compile$library8$VectorBuilder_J|A_TypeTag (flags: <triedcooking>)
   symbol definition: val miniboxing$tests$compile$library8$VectorBuilder_J|A_TypeTag: Byte
                 tpe: Byte
       symbol owners: value miniboxing$tests$compile$library8$VectorBuilder_J|A_TypeTag -> constructor VectorBuilder_J -> class VectorBuilder_J -> package library8
      context owners: class VectorBuilder_J -> package library8

== Enclosing template or block ==

Template( // val <local VectorBuilder_J>: <notype> in class VectorBuilder_J, tree.tpe=miniboxing.tests.compile.library8.VectorBuilder_J
  "java.lang.Object", "miniboxing.tests.compile.library8.Growable_J", "miniboxing.tests.compile.library8.VectorBuilder" // parents
  ValDef(
    private
    "_"
    <tpt>
    <empty>
  )
  // 4 statements
  DefDef( // def miniboxing$tests$compile$library8$Growable_J|A_TypeTag(): Byte in class VectorBuilder_J
    <method> <deferred>
    "miniboxing$tests$compile$library8$Growable_J|A_TypeTag"
    []
    List(Nil)
    <tpt> // tree.tpe=Byte
    VectorBuilder_J.this."miniboxing$tests$compile$library8$VectorBuilder_J|A_TypeTag" // private[this] val miniboxing$tests$compile$library8$VectorBuilder_J|A_TypeTag: Byte in class VectorBuilder_J, tree.tpe=Byte
  )
  DefDef( // override def ++=(): Unit in class VectorBuilder_J
    <method> override
    "$plus$plus$eq"
    []
    List(Nil)
    <tpt> // tree.tpe=Unit
    Apply( // def ++=(): Unit in trait Growable, tree.tpe=Unit
      VectorBuilder_J.super."$plus$plus$eq" // def ++=(): Unit in trait Growable, tree.tpe=()Unit
      Nil
    )
  )
  ValDef( // private[this] val miniboxing$tests$compile$library8$VectorBuilder_J|A_TypeTag: Byte in class VectorBuilder_J
    private <local> <paramaccessor> <triedcooking>
    "miniboxing$tests$compile$library8$VectorBuilder_J|A_TypeTag"
    <tpt> // tree.tpe=Byte
    <empty>
  )
  DefDef( // def <init>(val miniboxing$tests$compile$library8$VectorBuilder_J|A_TypeTag: Byte): miniboxing.tests.compile.library8.VectorBuilder_J in class VectorBuilder_J
    <method>
    "<init>"
    []
    // 1 parameter list
    ValDef( // val miniboxing$tests$compile$library8$VectorBuilder_J|A_TypeTag: Byte
      <triedcooking>
      "miniboxing$tests$compile$library8$VectorBuilder_J|A_TypeTag"
      <tpt> // tree.tpe=Byte
      <empty>
    )
    <tpt> // tree.tpe=miniboxing.tests.compile.library8.VectorBuilder_J
    Block( // tree.tpe=Unit
      // 5 statements
      Assign( // tree.tpe=Unit
        VectorBuilder_J.this."miniboxing$tests$compile$library8$VectorBuilder_J|A_TypeTag" // private[this] val miniboxing$tests$compile$library8$VectorBuilder_J|A_TypeTag: Byte in class VectorBuilder_J, tree.tpe=Byte
        "miniboxing$tests$compile$library8$VectorBuilder_J|A_TypeTag" // val miniboxing$tests$compile$library8$VectorBuilder_J|A_TypeTag: Byte, tree.tpe=Byte
      )
      Apply( // def <init>(): Object in class Object, tree.tpe=Object
        VectorBuilder_J.super."<init>" // def <init>(): Object in class Object, tree.tpe=()Object
        Nil
      )
      Apply( // def $init$(x$1: miniboxing.tests.compile.library8.Growable): Unit in object Growable$class, tree.tpe=Unit
        VectorBuilder_J.this.$asInstanceOf[miniboxing.tests.compile.library8.Growable$class]()."$init$" // def $init$(x$1: miniboxing.tests.compile.library8.Growable): Unit in object Growable$class, tree.tpe=()Unit
        Nil
      )
      Apply( // def $init$(x$1: miniboxing.tests.compile.library8.Growable_J): Unit in class Growable_J$class, tree.tpe=Unit
        VectorBuilder_J.this.$asInstanceOf[miniboxing.tests.compile.library8.Growable_J$class]()."$init$" // def $init$(x$1: miniboxing.tests.compile.library8.Growable_J): Unit in class Growable_J$class, tree.tpe=()Unit
        Nil
      )
      Apply( // def $init$(x$1: miniboxing.tests.compile.library8.VectorBuilder): Unit in class VectorBuilder$class, tree.tpe=Unit
        VectorBuilder_J.this.$asInstanceOf[miniboxing.tests.compile.library8.VectorBuilder$class]()."$init$" // def $init$(x$1: miniboxing.tests.compile.library8.VectorBuilder): Unit in class VectorBuilder$class, tree.tpe=()Unit
        Nil
      )
      ()
    )
  )
)

== Expanded type of tree ==

TypeRef(TypeSymbol(final abstract class Byte extends ))

method ++=: ()Unit trait Growable object Growable$class <none> ()Unit cleanup ()Unit <notype>
    at scala.Predef$.assert(Predef.scala:179)
    at scala.tools.nsc.Global.assert(Global.scala:239)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.staticCall$1(Mixin.scala:1165)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.scala$tools$nsc$transform$Mixin$MixinTransformer$$postTransform(Mixin.scala:1201)
    at scala.tools.nsc.transform.Mixin$MixinTransformer$$anonfun$transform$1.apply(Mixin.scala:1266)
    at scala.tools.nsc.transform.Mixin$MixinTransformer$$anonfun$transform$1.apply(Mixin.scala:1266)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at scala.tools.nsc.Global.afterMixin(Global.scala:1103)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1266)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:471)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1235)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1233)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1232)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1263)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:471)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1276)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1263)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:471)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1263)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:471)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1298)
    at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1298)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1297)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1263)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:471)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Exception in thread "main" java.lang.AssertionError: assertion failed: 
     while compiling: mb_library_8.scala
        during phase: global=mixin, atPhase=cleanup
     library version: version 2.10.3-20130708-163611-504b5f3b15
    compiler version: version 2.10.3-20130708-163611-504b5f3b15
  reconstructed args: -bootclasspath /home/sun/workspace/dev/miniboxing-plugin//components/runtime/target/scala-2.10/miniboxing-runtime_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar -Xplugin:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: Ident(miniboxing$tests$compile$library8$VectorBuilder_J|A_TypeTag)
              symbol: value miniboxing$tests$compile$library8$VectorBuilder_J|A_TypeTag (flags: <triedcooking>)
   symbol definition: val miniboxing$tests$compile$library8$VectorBuilder_J|A_TypeTag: Byte
                 tpe: Byte
       symbol owners: value miniboxing$tests$compile$library8$VectorBuilder_J|A_TypeTag -> constructor VectorBuilder_J -> class VectorBuilder_J -> package library8
      context owners: class VectorBuilder_J -> package library8

== Enclosing template or block ==

Template( // val <local VectorBuilder_J>: <notype> in class VectorBuilder_J, tree.tpe=miniboxing.tests.compile.library8.VectorBuilder_J
  "java.lang.Object", "miniboxing.tests.compile.library8.Growable_J", "miniboxing.tests.compile.library8.VectorBuilder" // parents
  ValDef(
    private
    "_"
    <tpt>
    <empty>
  )
  // 4 statements
  DefDef( // def miniboxing$tests$compile$library8$Growable_J|A_TypeTag(): Byte in class VectorBuilder_J
    <method> <deferred>
    "miniboxing$tests$compile$library8$Growable_J|A_TypeTag"
    []
    List(Nil)
    <tpt> // tree.tpe=Byte
    VectorBuilder_J.this."miniboxing$tests$compile$library8$VectorBuilder_J|A_TypeTag" // private[this] val miniboxing$tests$compile$library8$VectorBuilder_J|A_TypeTag: Byte in class VectorBuilder_J, tree.tpe=Byte
  )
  DefDef( // override def ++=(): Unit in class VectorBuilder_J
    <method> override
    "$plus$plus$eq"
    []
    List(Nil)
    <tpt> // tree.tpe=Unit
    Apply( // def ++=(): Unit in trait Growable, tree.tpe=Unit
      VectorBuilder_J.super."$plus$plus$eq" // def ++=(): Unit in trait Growable, tree.tpe=()Unit
      Nil
    )
  )
  ValDef( // private[this] val miniboxing$tests$compile$library8$VectorBuilder_J|A_TypeTag: Byte in class VectorBuilder_J
    private <local> <paramaccessor> <triedcooking>
    "miniboxing$tests$compile$library8$VectorBuilder_J|A_TypeTag"
    <tpt> // tree.tpe=Byte
    <empty>
  )
  DefDef( // def <init>(val miniboxing$tests$compile$library8$VectorBuilder_J|A_TypeTag: Byte): miniboxing.tests.compile.library8.VectorBuilder_J in class VectorBuilder_J
    <method>
    "<init>"
    []
    // 1 parameter list
    ValDef( // val miniboxing$tests$compile$library8$VectorBuilder_J|A_TypeTag: Byte
      <triedcooking>
      "miniboxing$tests$compile$library8$VectorBuilder_J|A_TypeTag"
      <tpt> // tree.tpe=Byte
      <empty>
    )
    <tpt> // tree.tpe=miniboxing.tests.compile.library8.VectorBuilder_J
    Block( // tree.tpe=Unit
      // 5 statements
      Assign( // tree.tpe=Unit
        VectorBuilder_J.this."miniboxing$tests$compile$library8$VectorBuilder_J|A_TypeTag" // private[this] val miniboxing$tests$compile$library8$VectorBuilder_J|A_TypeTag: Byte in class VectorBuilder_J, tree.tpe=Byte
        "miniboxing$tests$compile$library8$VectorBuilder_J|A_TypeTag" // val miniboxing$tests$compile$library8$VectorBuilder_J|A_TypeTag: Byte, tree.tpe=Byte
      )
      Apply( // def <init>(): Object in class Object, tree.tpe=Object
        VectorBuilder_J.super."<init>" // def <init>(): Object in class Object, tree.tpe=()Object
        Nil
      )
      Apply( // def $init$(x$1: miniboxing.tests.compile.library8.Growable): Unit in object Growable$class, tree.tpe=Unit
        VectorBuilder_J.this.$asInstanceOf[miniboxing.tests.compile.library8.Growable$class]()."$init$" // def $init$(x$1: miniboxing.tests.compile.library8.Growable): Unit in object Growable$class, tree.tpe=()Unit
        Nil
      )
      Apply( // def $init$(x$1: miniboxing.tests.compile.library8.Growable_J): Unit in class Growable_J$class, tree.tpe=Unit
        VectorBuilder_J.this.$asInstanceOf[miniboxing.tests.compile.library8.Growable_J$class]()."$init$" // def $init$(x$1: miniboxing.tests.compile.library8.Growable_J): Unit in class Growable_J$class, tree.tpe=()Unit
        Nil
      )
      Apply( // def $init$(x$1: miniboxing.tests.compile.library8.VectorBuilder): Unit in class VectorBuilder$class, tree.tpe=Unit
        VectorBuilder_J.this.$asInstanceOf[miniboxing.tests.compile.library8.VectorBuilder$class]()."$init$" // def $init$(x$1: miniboxing.tests.compile.library8.VectorBuilder): Unit in class VectorBuilder$class, tree.tpe=()Unit
        Nil
      )
      ()
    )
  )
)

== Expanded type of tree ==

TypeRef(TypeSymbol(final abstract class Byte extends ))

method ++=: ()Unit trait Growable object Growable$class <none> ()Unit cleanup ()Unit <notype>
    at scala.Predef$.assert(Predef.scala:179)
    at scala.tools.nsc.Global.assert(Global.scala:239)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.staticCall$1(Mixin.scala:1165)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.scala$tools$nsc$transform$Mixin$MixinTransformer$$postTransform(Mixin.scala:1201)
    at scala.tools.nsc.transform.Mixin$MixinTransformer$$anonfun$transform$1.apply(Mixin.scala:1266)
    at scala.tools.nsc.transform.Mixin$MixinTransformer$$anonfun$transform$1.apply(Mixin.scala:1266)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at scala.tools.nsc.Global.afterMixin(Global.scala:1103)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1266)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:471)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1235)
    at scala.reflect.internal.Trees$$anonfun$itransform$2.apply(Trees.scala:1233)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1232)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1263)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:471)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1276)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1263)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:471)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1263)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:471)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1298)
    at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1298)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1297)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:1263)
    at scala.tools.nsc.transform.Mixin$MixinTransformer.transform(Mixin.scala:471)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Scala Library - Incorrect methods generated for make-not-private methods

sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/tests/classloader-bench(wip)$ ./run.sh 
===============================================================================
RUNNING THE TEST PROJECT
===============================================================================
Running miniboxing tester...
Test Miniboxing
java.lang.ClassFormatError: Method miniboxing$benchmarks$collection$TraversableLike$$sliceInternal in class miniboxing/benchmarks/collection/TraversableLike$class has illegal modifiers: 0x409
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:792)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at miniboxing.benchmarks.collection.AbstractTraversable_class_J.<init>(Traversable.scala:105)
    at miniboxing.benchmarks.collection.AbstractIterable_class_J.<init>(AbstractIterable.scala:54)
    at miniboxing.benchmarks.collection.AbstractSeq_class_J.<init>(AbstractSeq.scala:40)
    at miniboxing.benchmarks.collection.immutable.Vector_class_J.<init>(Vector.scala:66)
    at miniboxing.classloader.test.TestMboxing$.main(TestMbox.scala:9)
    at miniboxing.classloader.test.TestMboxing.main(TestMbox.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at scala.tools.nsc.util.ScalaClassLoader$$anonfun$run$1.apply(ScalaClassLoader.scala:71)
    at scala.tools.nsc.util.ScalaClassLoader$class.asContext(ScalaClassLoader.scala:31)
    at scala.tools.nsc.util.ScalaClassLoader$URLClassLoader.asContext(ScalaClassLoader.scala:139)
    at scala.tools.nsc.util.ScalaClassLoader$class.run(ScalaClassLoader.scala:71)
    at scala.tools.nsc.util.ScalaClassLoader$URLClassLoader.run(ScalaClassLoader.scala:139)
    at scala.tools.nsc.CommonRunner$class.run(ObjectRunner.scala:28)
    at scala.tools.nsc.ObjectRunner$.run(ObjectRunner.scala:45)
    at scala.tools.nsc.CommonRunner$class.runAndCatch(ObjectRunner.scala:35)
    at scala.tools.nsc.ObjectRunner$.runAndCatch(ObjectRunner.scala:45)
    at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:74)
    at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:96)
    at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:105)
    at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)

The problem is a stale not-private accessor method miniboxing$benchmarks$collection$TraversableLike$$sliceInternal to
private[this] def sliceInternal(from: Int, until: Int, b: Builder[A, Repr]): Repr
in TraversableLike$class. The method is both static and in an interface, crashing the JVM with the above error.

No time for finding a minimalization now. :(

Crasher

sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ cat gh-bug-20.scala 
package miniboxing.tests.compile
import miniboxing.plugin.minispec

abstract class Dist[@minispec A] {
  def apply(a: A): A
}
sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ ../mb-scalac gh-bug-20.scala 
error: 
     while compiling: gh-bug-20.scala
        during phase: jvm
     library version: version 2.10.3-20130625-164027-d22e8d282c
    compiler version: version 2.10.3-20130627-153946-54cb6af7db
  reconstructed args: -bootclasspath /home/sun/workspace/dev/miniboxing-plugin//components/runtime/target/scala-2.10/miniboxing-runtime_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar -Xplugin:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: term Dist_A_TypeTag
              symbol: value Dist_A_TypeTag in class Dist_J (flags: <paramaccessor> private[this])
   symbol definition: private[this] val Dist_A_TypeTag: Byte
                 tpe: <notype>
       symbol owners: value Dist_A_TypeTag -> class Dist_J -> package compile
      context owners: class Dist_L -> package compile

== Enclosing template or block ==

Template( // val <local Dist_L>: <notype> in class Dist_L, tree.tpe=miniboxing.tests.compile.Dist_L
  "java.lang.Object", "miniboxing.tests.compile.Dist" // parents
  ValDef(
    private
    "_"
    <tpt>
    <empty>
  )
  // 3 statements
  DefDef( // def apply(a: Object): Object in class Dist_L
    <method> <deferred>
    "apply"
    []
    // 1 parameter list
    ValDef( // a: Object
      <param>
      "a"
      <tpt> // tree.tpe=Object
      <empty>
    )
    <tpt> // tree.tpe=Object
    <empty>
  )
  DefDef( // def apply_J(val Dist_A_TypeTag: Byte,a: Long): Long in class Dist_L
    <method> <deferred>
    "apply_J"
    []
    // 1 parameter list
    ValDef( // val Dist_A_TypeTag: Byte
      0
      "Dist_A_TypeTag"
      <tpt> // tree.tpe=Byte
      <empty>
    )
    ValDef( // a: Long
      <param>
      "a"
      <tpt> // tree.tpe=Long
      <empty>
    )
    <tpt> // tree.tpe=Long
    <empty>
  )
  DefDef( // def <init>(): miniboxing.tests.compile.Dist_L in class Dist_L
    <method>
    "<init>"
    []
    List(Nil)
    <tpt> // tree.tpe=miniboxing.tests.compile.Dist_L
    Block( // tree.tpe=Unit
      Apply( // def <init>(): Object in class Object, tree.tpe=Object
        Dist_L.super."<init>" // def <init>(): Object in class Object, tree.tpe=()Object
        Nil
      )
      ()
    )
  )
)

== Expanded type of tree ==

<notype>

uncaught exception during compilation: java.lang.AssertionError
error: java.lang.AssertionError: assertion failed: List(trait Dist_L, class Dist_L)
    at scala.Predef$.assert(Predef.scala:179)
    at scala.reflect.internal.Symbols$Symbol.suchThat(Symbols.scala:1669)
    at scala.reflect.internal.Symbols$Symbol.companionClass(Symbols.scala:1972)
    at scala.tools.nsc.backend.jvm.GenASM$JCommonBuilder.addForwarders(GenASM.scala:1101)
    at scala.tools.nsc.backend.jvm.GenASM$JPlainBuilder.genClass(GenASM.scala:1378)
    at scala.tools.nsc.backend.jvm.GenASM$AsmPhase.run(GenASM.scala:119)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Exception in thread "main" java.lang.AssertionError: assertion failed: List(trait Dist_L, class Dist_L)
    at scala.Predef$.assert(Predef.scala:179)
    at scala.reflect.internal.Symbols$Symbol.suchThat(Symbols.scala:1669)
    at scala.reflect.internal.Symbols$Symbol.companionClass(Symbols.scala:1972)
    at scala.tools.nsc.backend.jvm.GenASM$JCommonBuilder.addForwarders(GenASM.scala:1101)
    at scala.tools.nsc.backend.jvm.GenASM$JPlainBuilder.genClass(GenASM.scala:1378)
    at scala.tools.nsc.backend.jvm.GenASM$AsmPhase.run(GenASM.scala:119)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Crasher

sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ cat mb_spire_4.scala 
package miniboxing.tests.compile
import miniboxing.plugin.minispec
import scala.collection.generic.CanBuildFrom
import scala.language.higherKinds

trait Dist[@minispec A] { self =>
  def sample[CC[A] <: Iterable[A]](n: Int)(implicit a: A, cbf: CanBuildFrom[CC[A], A, CC[A]]): CC[A] =
    cbf().result
}
sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ ../mb-scalac mb_spire_4.scala -P:minibox:spec-opt -P:minibox:log -Xprint:minibox
Specializing trait Dist...

  // interface:
  abstract trait Dist[A] extends Object {
    def sample[CC[A] <: Iterable[A]](n: Int,implicit a: A,implicit cbf: scala.collection.generic.CanBuildFrom[CC[A],A,CC[A]]): CC[A]
    def sample_J[CC[A] <: Iterable[A]](val Dist_A_TypeTag: Byte,n: Int,implicit a: Long,implicit cbf: scala.collection.generic.CanBuildFrom[CC[A],A,CC[A]]): CC[A]
  }

  // specialized class:
  abstract trait Dist_J[Asp] extends Dist[Asp] {
    def Dist_A_TypeTag(): Byte                                             // is a type tag
    def sample[CC[A] <: Iterable[A]](n: Int,implicit a: Asp,implicit cbf: scala.collection.generic.CanBuildFrom[CC[Asp],Asp,CC[Asp]]): CC[Asp] // is a forwarder to method sample_J
    def sample_J[CC[A] <: Iterable[A]](val Dist_A_TypeTag: Byte,n: Int,implicit a: Long,implicit cbf: scala.collection.generic.CanBuildFrom[CC[Asp],Asp,CC[Asp]]): CC[Asp] // is a specialized implementation of method sample
  }

  // specialized class:
  abstract trait Dist_L[Asp] extends Dist[Asp] {
    def sample[CC[A] <: Iterable[A]](n: Int,implicit a: Asp,implicit cbf: scala.collection.generic.CanBuildFrom[CC[Asp],Asp,CC[Asp]]): CC[Asp] // is a specialized implementation of method sample
    def sample_J[CC[A] <: Iterable[A]](val Dist_A_TypeTag: Byte,n: Int,implicit a: Long,implicit cbf: scala.collection.generic.CanBuildFrom[CC[Asp],Asp,CC[Asp]]): CC[Asp] // is a forwarder to method sample
  }




error: 
     while compiling: mb_spire_4.scala
        during phase: minibox
     library version: version 2.10.3-20130625-164027-d22e8d282c
    compiler version: version 2.10.3-20130627-153946-54cb6af7db
  reconstructed args: -P:minibox:spec-opt -P:minibox:log -Xprint:minibox -bootclasspath /home/sun/workspace/dev/miniboxing-plugin//components/runtime/target/scala-2.10/miniboxing-runtime_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar -Xplugin:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: TypeTree
              symbol: <none> (flags: )
   symbol definition: <none>
                 tpe: <error>
       symbol owners: 
      context owners: trait Dist_J -> package compile

== Enclosing template or block ==

Apply( // def sample_J[CC[A] <: Iterable[A]](val Dist_A_TypeTag: Byte,n: Int,implicit a: Long,implicit cbf: scala.collection.generic.CanBuildFrom[CC[Asp],Asp,CC[Asp]]): CC[Asp] in trait Dist_J
  TypeApply( // def sample_J[CC[A] <: Iterable[A]](val Dist_A_TypeTag: Byte,n: Int,implicit a: Long,implicit cbf: scala.collection.generic.CanBuildFrom[CC[Asp],Asp,CC[Asp]]): CC[Asp] in trait Dist_J, tree.tpe=(val Dist_A_TypeTag: Byte, n: Int, implicit a: Long, implicit cbf: scala.collection.generic.CanBuildFrom[<error>,Asp,<error>])<error>
    Dist_J.this."sample_J" // def sample_J[CC[A] <: Iterable[A]](val Dist_A_TypeTag: Byte,n: Int,implicit a: Long,implicit cbf: scala.collection.generic.CanBuildFrom[CC[Asp],Asp,CC[Asp]]): CC[Asp] in trait Dist_J, tree.tpe=[CC[A] <: Iterable[A]](val Dist_A_TypeTag: Byte, n: Int, implicit a: Long, implicit cbf: scala.collection.generic.CanBuildFrom[CC[Asp],Asp,CC[Asp]])CC[Asp]
    <tpt> // tree.tpe=<error>
  )
  // 4 arguments
  Dist_J.this."Dist_A_TypeTag" // def Dist_A_TypeTag(): Byte in trait Dist_J, tree.tpe=()Byte
  "n" // n: Int, tree.tpe=Int
  Apply( // final def box2minibox_tt[T](a: T,tag: Byte): Long in object MiniboxConversions, tree.tpe=Long
    TypeApply( // final def box2minibox_tt[T](a: T,tag: Byte): Long in object MiniboxConversions, tree.tpe=(a: Asp, tag: Byte)Long
      MiniboxConversions.this."box2minibox_tt" // final def box2minibox_tt[T](a: T,tag: Byte): Long in object MiniboxConversions, tree.tpe=[T](a: T, tag: Byte)Long
      <tpt> // tree.tpe=Asp
    )
    // 2 arguments
    "a" // implicit a: Asp, tree.tpe=Asp
    Apply( // def Dist_A_TypeTag(): Byte in trait Dist_J, tree.tpe=Byte
      Dist_J.this."Dist_A_TypeTag" // def Dist_A_TypeTag(): Byte in trait Dist_J, tree.tpe=()Byte
      Nil
    )
  )
  "cbf" // implicit cbf: scala.collection.generic.CanBuildFrom[CC[Asp],Asp,CC[Asp]], tree.tpe=scala.collection.generic.CanBuildFrom[CC[Asp],Asp,CC[Asp]]
)

== Expanded type of tree ==

<error>

uncaught exception during compilation: scala.reflect.internal.Types$TypeError
error: scala.reflect.internal.Types$TypeError: CC[A] takes no type parameters, expected: one
    at scala.tools.nsc.typechecker.Contexts$Context.issueCommon(Contexts.scala:397)
    at scala.tools.nsc.typechecker.Contexts$Context.issue(Contexts.scala:401)
    at scala.tools.nsc.typechecker.Infer$Inferencer.issue(Infer.scala:312)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$normalTypedApply$1$1.apply(Typers.scala:4608)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$normalTypedApply$1$1.apply(Typers.scala:4608)
    at scala.tools.nsc.typechecker.Typers$Typer.onError$3(Typers.scala:4566)
    at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4608)
    at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4620)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5525)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5665)
    at scala.tools.nsc.typechecker.Typers$Typer.typedPos(Typers.scala:5670)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.ltypedpos(MiniboxTreeTransformation.scala:581)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxing$plugin$MiniboxTreeTransformation$MiniboxTreeTransformer$$cast(MiniboxTreeTransformation.scala:592)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$16.apply(MiniboxTreeTransformation.scala:218)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$16.apply(MiniboxTreeTransformation.scala:218)
    at scala.reflect.internal.Trees$class.deriveDefDef(Trees.scala:1595)
    at scala.reflect.internal.SymbolTable.deriveDefDef(SymbolTable.scala:13)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:218)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:174)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:174)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:174)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:458)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:144)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:141)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:141)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:94)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:94)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxPhase$class.afterMinibox(Minibox.scala:107)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:94)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:87)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Exception in thread "main" scala.reflect.internal.Types$TypeError: CC[A] takes no type parameters, expected: one
    at scala.tools.nsc.typechecker.Contexts$Context.issueCommon(Contexts.scala:397)
    at scala.tools.nsc.typechecker.Contexts$Context.issue(Contexts.scala:401)
    at scala.tools.nsc.typechecker.Infer$Inferencer.issue(Infer.scala:312)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$normalTypedApply$1$1.apply(Typers.scala:4608)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$normalTypedApply$1$1.apply(Typers.scala:4608)
    at scala.tools.nsc.typechecker.Typers$Typer.onError$3(Typers.scala:4566)
    at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4608)
    at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4620)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5525)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5665)
    at scala.tools.nsc.typechecker.Typers$Typer.typedPos(Typers.scala:5670)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.ltypedpos(MiniboxTreeTransformation.scala:581)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxing$plugin$MiniboxTreeTransformation$MiniboxTreeTransformer$$cast(MiniboxTreeTransformation.scala:592)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$16.apply(MiniboxTreeTransformation.scala:218)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$16.apply(MiniboxTreeTransformation.scala:218)
    at scala.reflect.internal.Trees$class.deriveDefDef(Trees.scala:1595)
    at scala.reflect.internal.SymbolTable.deriveDefDef(SymbolTable.scala:13)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:218)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:174)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:174)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:174)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:458)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:70)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:144)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:141)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:141)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:125)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:94)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:94)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxPhase$class.afterMinibox(Minibox.scala:107)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:94)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:87)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Array-related crasher in Breeze

sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ cat mb_breeze_2.scala 
package miniboxing.tests.compile
import miniboxing.plugin.minispec

trait TensorLike[@minispec K, @minispec V, +This]
trait VectorLike[@minispec E, +Self <: Vector[E]] extends TensorLike[Int, E, Self]
trait Vector[@minispec E] extends VectorLike[E, Vector[E]] {
  def toDenseVector() = {
    new DenseVector(toArray)
  }
  def toArray: Array[E] = ???
}

trait Storage[@minispec Elem]
trait StorageVector[E] extends Vector[E] with Storage[E]

class DenseVector[@minispec E](val data: Array[E],
                               val offset: Int,
                               val stride: Int,
                               val length: Int) extends StorageVector[E]
                               with VectorLike[E, DenseVector[E]] with Serializable {
  def this(data: Array[E]) = this(data, 0, 1, data.length)
  def this(data: Array[E], offset: Int) = this(data, offset, 1, data.length)
}

sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ ../mb-scalac mb_breeze_2.scala 
Picked up _JAVA_OPTIONS: -Xms2g -Xmx2g -Xss4m -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=256m -XX:+UseParallelGC -XX:PermSize=256m -XX:+TieredCompilation -XX:+UseNUMA
error: 
     while compiling: mb_breeze_2.scala
        during phase: minibox
     library version: version 2.10.3-20130708-163611-504b5f3b15
    compiler version: version 2.10.3-20130708-163611-504b5f3b15
  reconstructed args: -bootclasspath /home/sun/workspace/dev/miniboxing-plugin//components/runtime/target/scala-2.10/miniboxing-runtime_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar -Xplugin:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: term <init>
              symbol: constructor DenseVector_J in class DenseVector_J (flags: <method>)
   symbol definition: def <init>(val miniboxing$tests$compile$DenseVector_J|E_TypeTag: Byte,data: Array[Esp]): miniboxing.tests.compile.DenseVector_J[Esp]
       symbol owners: constructor DenseVector_J -> class DenseVector_J -> package compile
      context owners: constructor DenseVector_J -> class DenseVector_J -> package compile

== Enclosing template or block ==

Block(
  Apply( // def <init>(data: Array[E],offset: Int,stride: Int,length: Int): miniboxing.tests.compile.DenseVector[E] in class DenseVector
    DenseVector.this."<init>" // def <init>(data: Array[E],offset: Int,stride: Int,length: Int): miniboxing.tests.compile.DenseVector[E] in class DenseVector, tree.tpe=(data: Array[E], offset: Int, stride: Int, length: Int)miniboxing.tests.compile.DenseVector[E]
    // 4 arguments
    "data" // data: Array[Esp]
    0
    1
    Apply( // def length(): Int in class Array, tree.tpe=Int
      "data"."length" // def length(): Int in class Array, tree.tpe=()Int
      Nil
    )
  )
  ()
)

uncaught exception during compilation: scala.reflect.internal.Types$TypeError
error: scala.reflect.internal.Types$TypeError: type mismatch;
 found   : Array[Esp]
 required: Array[E]
    at scala.tools.nsc.typechecker.Contexts$Context.issueCommon(Contexts.scala:397)
    at scala.tools.nsc.typechecker.Contexts$Context.issue(Contexts.scala:401)
    at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueTypeError(ContextErrors.scala:103)
    at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueNormalTypeError(ContextErrors.scala:87)
    at scala.tools.nsc.typechecker.ContextErrors$TyperContextErrors$TyperErrorGen$.AdaptTypeError(ContextErrors.scala:195)
    at scala.tools.nsc.typechecker.Typers$Typer.fallBack$1(Typers.scala:1277)
    at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1282)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5621)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:473)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$61.apply(Typers.scala:3039)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$61.apply(Typers.scala:3039)
    at scala.tools.nsc.typechecker.Typers$Typer.typerWithLocalContext(Typers.scala:507)
    at scala.tools.nsc.typechecker.Typers$Typer.withCondConstrTyper(Typers.scala:496)
    at scala.tools.nsc.typechecker.Typers$Typer.typedArg(Typers.scala:3039)
    at scala.tools.nsc.typechecker.Typers$Typer.loop$1(Typers.scala:3066)
    at scala.tools.nsc.typechecker.Typers$Typer.typedArgs(Typers.scala:3071)
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$handleMonomorphicCall$1(Typers.scala:3328)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$doTypedApply$2.apply(Typers.scala:3373)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$doTypedApply$2.apply(Typers.scala:3373)
    at scala.tools.nsc.typechecker.TypeDiagnostics$TyperDiagnostics$checkDead$.updateExpr(TypeDiagnostics.scala:460)
    at scala.tools.nsc.typechecker.Typers$Typer.doTypedApply(Typers.scala:3372)
    at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4588)
    at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4620)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5525)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:473)
    at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:2925)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$60.apply(Typers.scala:3029)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3029)
    at scala.tools.nsc.typechecker.Typers$Typer.typedBlock(Typers.scala:2429)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typed1$1.apply(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typerWithLocalContext(Typers.scala:507)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5531)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:312)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5665)
    at scala.tools.nsc.typechecker.Typers$Typer.typedDefDef(Typers.scala:2248)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5530)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at miniboxing.plugin.Duplicators$BodyDuplicator.typed(Duplicators.scala:328)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5665)
    at miniboxing.plugin.Duplicators.retyped(Duplicators.scala:42)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$66.apply(MiniboxTreeTransformation.scala:809)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$66.apply(MiniboxTreeTransformation.scala:809)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.beforePhase(SymbolTable.scala:215)
    at miniboxing.plugin.MiniboxComponent$class.beforeMinibox(Minibox.scala:29)
    at miniboxing.plugin.Minibox$MiniboxPhase$.beforeMinibox(Minibox.scala:89)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.duplicateBody(MiniboxTreeTransformation.scala:809)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.specializeDefDefBody(MiniboxTreeTransformation.scala:764)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:187)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:23)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:130)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:130)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:130)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:23)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:477)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:23)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:99)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:96)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:96)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.Minibox$MiniboxPhase$$anon$1$$anonfun$1.apply(Minibox.scala:111)
    at miniboxing.plugin.Minibox$MiniboxPhase$$anon$1$$anonfun$1.apply(Minibox.scala:111)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxComponent$class.afterMinibox(Minibox.scala:26)
    at miniboxing.plugin.Minibox$MiniboxPhase$.afterMinibox(Minibox.scala:89)
    at miniboxing.plugin.Minibox$MiniboxPhase$$anon$1.transform(Minibox.scala:111)
    at miniboxing.plugin.Minibox$MiniboxPhase$$anon$1.transform(Minibox.scala:108)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Breeze crasher

sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ cat mb_breeze_1.scala 
package miniboxing.tests.compile
import miniboxing.plugin.minispec

trait TensorLike[@minispec K, @minispec V, +This]
trait VectorLike[@minispec E, +Self <: Vector[E]] extends TensorLike[Int, E, Self]
trait Vector[@minispec E] extends VectorLike[E, Vector[E]]

sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ ../mb-scalac mb_breeze_1.scala 
java.util.NoSuchElementException: key not found: class Int
    at scala.collection.MapLike$class.default(MapLike.scala:228)
    at scala.collection.AbstractMap.default(Map.scala:58)
    at scala.collection.MapLike$class.apply(MapLike.scala:141)
    at scala.collection.AbstractMap.apply(Map.scala:58)
    at scala.collection.MapLike$MappedValues$$anonfun$foreach$3.apply(MapLike.scala:245)
    at scala.collection.MapLike$MappedValues$$anonfun$foreach$3.apply(MapLike.scala:245)
    at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:772)
    at scala.collection.mutable.HashMap$$anonfun$foreach$1.apply(HashMap.scala:98)
    at scala.collection.mutable.HashMap$$anonfun$foreach$1.apply(HashMap.scala:98)
    at scala.collection.mutable.HashTable$class.foreachEntry(HashTable.scala:226)
    at scala.collection.mutable.HashMap.foreachEntry(HashMap.scala:39)
    at scala.collection.mutable.HashMap.foreach(HashMap.scala:98)
    at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:771)
    at scala.collection.MapLike$MappedValues.foreach(MapLike.scala:245)
    at scala.collection.TraversableOnce$class.foldLeft(TraversableOnce.scala:144)
    at scala.collection.AbstractTraversable.foldLeft(Traversable.scala:105)
    at scala.collection.TraversableOnce$class.$div$colon(TraversableOnce.scala:138)
    at scala.collection.AbstractTraversable.$div$colon(Traversable.scala:105)
    at scala.collection.MapLike$class.$plus$plus(MapLike.scala:302)
    at scala.collection.AbstractMap.$plus$plus(Map.scala:58)
    at miniboxing.plugin.MiniboxInfoTransformation$SpecializeTypeMap.apply(MiniboxInfoTransformation.scala:84)
    at miniboxing.plugin.MiniboxInfoTransformation$$anon$2.apply(MiniboxInfoTransformation.scala:101)
    at miniboxing.plugin.MiniboxInfoTransformation$$anon$2.apply(MiniboxInfoTransformation.scala:95)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.immutable.List.foreach(List.scala:318)
    at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
    at scala.collection.AbstractTraversable.map(Traversable.scala:105)
    at miniboxing.plugin.MiniboxInfoTransformation$class.specialize1$1(MiniboxInfoTransformation.scala:233)
    at miniboxing.plugin.MiniboxInfoTransformation$$anonfun$62.apply(MiniboxInfoTransformation.scala:737)
    at miniboxing.plugin.MiniboxInfoTransformation$$anonfun$62.apply(MiniboxInfoTransformation.scala:736)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.immutable.List.foreach(List.scala:318)
    at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
    at scala.collection.AbstractTraversable.map(Traversable.scala:105)
    at miniboxing.plugin.MiniboxInfoTransformation$class.specialize(MiniboxInfoTransformation.scala:735)
    at miniboxing.plugin.Minibox$Component$.specialize(Minibox.scala:77)
    at miniboxing.plugin.MiniboxInfoTransformation$class.transformInfo(MiniboxInfoTransformation.scala:32)
    at miniboxing.plugin.Minibox$Component$.transformInfo(Minibox.scala:77)
    at scala.tools.nsc.transform.InfoTransform$Phase$$anon$1.transform(InfoTransform.scala:38)
    at scala.reflect.internal.Symbols$Symbol.rawInfo(Symbols.scala:1312)
    at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1239)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxing$plugin$MiniboxTreeTransformation$MiniboxTreeTransformer$$createSpecializedClassesTrees$1$$anonfun$apply$10.apply(MiniboxTreeTransformation.scala:673)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxing$plugin$MiniboxTreeTransformation$MiniboxTreeTransformer$$createSpecializedClassesTrees$1$$anonfun$apply$10.apply(MiniboxTreeTransformation.scala:673)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.afterMinibox(MiniboxTreeTransformation.scala:78)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxing$plugin$MiniboxTreeTransformation$MiniboxTreeTransformer$$createSpecializedClassesTrees(MiniboxTreeTransformation.scala:670)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:97)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:96)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:96)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:103)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:103)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxComponent$class.afterMinibox(Minibox.scala:28)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:103)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:96)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

     while compiling: mb_breeze_1.scala
        during phase: minibox
     library version: version 2.10.3-20130708-163611-504b5f3b15
    compiler version: version 2.10.3-20130708-163611-504b5f3b15
  reconstructed args: -bootclasspath /home/sun/workspace/dev/miniboxing-plugin//components/runtime/target/scala-2.10/miniboxing-runtime_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar -Xplugin:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: TypeTree(trait VectorLike)
              symbol: trait VectorLike in package compile (flags: <interface> abstract <trait>)
   symbol definition: abstract trait VectorLike[E, +Self <: miniboxing.tests.compile.Vector[E]] extends TensorLike[Int,E,Self]
                 tpe: miniboxing.tests.compile.VectorLike[E,miniboxing.tests.compile.Vector[E]]
       symbol owners: trait VectorLike -> package compile
      context owners: package compile

== Enclosing template or block ==

PackageDef(
  "miniboxing"."tests"."compile" // final package compile in package tests, tree.tpe=miniboxing.tests.compile.type
  ClassDef( // abstract trait TensorLike[K, V, +This] extends Object in package compile
    <interface> abstract <defaultparam/trait>
    "TensorLike"
    // 3 type parameters
    TypeDef( // K in trait TensorLike
      <deferred> <param> @{ miniboxing.plugin.minispec }
      "K"
      []
      <tpt> // tree.tpe=
    )
    TypeDef( // V in trait TensorLike
      <deferred> <param> @{ miniboxing.plugin.minispec }
      "V"
      []
      <tpt> // tree.tpe=
    )
    TypeDef( // +This in trait TensorLike
      <deferred> <param> <bynameparam/captured/covariant>
      "This"
      []
      <tpt> // tree.tpe=
    )
    Template( // val <local TensorLike>: <notype> in trait TensorLike, tree.tpe=miniboxing.tests.compile.TensorLike[K,V,This]
      "java.lang.Object" // parents
      ValDef(
        private
        "_"
        <tpt>
        <empty>
      )
      {}
    )
  )
  ClassDef( // abstract trait VectorLike[E, +Self <: miniboxing.tests.compile.Vector[E]] extends TensorLike[Int,E,Self] in package compile
    <interface> abstract <defaultparam/trait>
    "VectorLike"
    // 2 type parameters
    TypeDef( // E in trait VectorLike
      <deferred> <param> @{ miniboxing.plugin.minispec }
      "E"
      []
      <tpt> // tree.tpe=
    )
    TypeDef( // +Self <: miniboxing.tests.compile.Vector[E] in trait VectorLike
      <deferred> <param> <bynameparam/captured/covariant>
      "Self"
      []
      <tpt> // tree.tpe= <: miniboxing.tests.compile.Vector[E]
    )
    Template( // val <local VectorLike>: <notype> in trait VectorLike, tree.tpe=miniboxing.tests.compile.VectorLike[E,Self]
      "java.lang.Object", "miniboxing.tests.compile.TensorLike" // parents
      ValDef(
        private
        "_"
        <tpt>
        <empty>
      )
      {}
    )
  )
  ClassDef( // abstract trait Vector[E] extends VectorLike[E,miniboxing.tests.compile.Vector[E]] in package compile
    <interface> abstract <defaultparam/trait>
    "Vector"
    TypeDef( // E in trait Vector
      <deferred> <param> @{ miniboxing.plugin.minispec }
      "E"
      []
      <tpt> // tree.tpe=
    )
    Template( // val <local Vector>: <notype> in trait Vector, tree.tpe=miniboxing.tests.compile.Vector[E]
      "java.lang.Object", "miniboxing.tests.compile.VectorLike" // parents
      ValDef(
        private
        "_"
        <tpt>
        <empty>
      )
      {}
    )
  )
)

== Expanded type of tree ==

TypeRef(
  TypeSymbol(
    abstract trait VectorLike[E, +Self <: miniboxing.tests.compile.Vector[E]] extends TensorLike[Int,E,Self]

  )
  args = List(
    TypeParamTypeRef(TypeParam(E))
    TypeRef(
      TypeSymbol(
        abstract trait Vector[E] extends VectorLike[E,miniboxing.tests.compile.Vector[E]]

      )
      args = List(TypeParamTypeRef(TypeParam(E)))
    )
  )
)

unhandled exception while transforming mb_breeze_1.scala
error: uncaught exception during compilation: java.util.NoSuchElementException
error: java.util.NoSuchElementException: key not found: class Int
    at scala.collection.MapLike$class.default(MapLike.scala:228)
    at scala.collection.AbstractMap.default(Map.scala:58)
    at scala.collection.MapLike$class.apply(MapLike.scala:141)
    at scala.collection.AbstractMap.apply(Map.scala:58)
    at scala.collection.MapLike$MappedValues$$anonfun$foreach$3.apply(MapLike.scala:245)
    at scala.collection.MapLike$MappedValues$$anonfun$foreach$3.apply(MapLike.scala:245)
    at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:772)
    at scala.collection.mutable.HashMap$$anonfun$foreach$1.apply(HashMap.scala:98)
    at scala.collection.mutable.HashMap$$anonfun$foreach$1.apply(HashMap.scala:98)
    at scala.collection.mutable.HashTable$class.foreachEntry(HashTable.scala:226)
    at scala.collection.mutable.HashMap.foreachEntry(HashMap.scala:39)
    at scala.collection.mutable.HashMap.foreach(HashMap.scala:98)
    at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:771)
    at scala.collection.MapLike$MappedValues.foreach(MapLike.scala:245)
    at scala.collection.TraversableOnce$class.foldLeft(TraversableOnce.scala:144)
    at scala.collection.AbstractTraversable.foldLeft(Traversable.scala:105)
    at scala.collection.TraversableOnce$class.$div$colon(TraversableOnce.scala:138)
    at scala.collection.AbstractTraversable.$div$colon(Traversable.scala:105)
    at scala.collection.MapLike$class.$plus$plus(MapLike.scala:302)
    at scala.collection.AbstractMap.$plus$plus(Map.scala:58)
    at miniboxing.plugin.MiniboxInfoTransformation$SpecializeTypeMap.apply(MiniboxInfoTransformation.scala:84)
    at miniboxing.plugin.MiniboxInfoTransformation$$anon$2.apply(MiniboxInfoTransformation.scala:101)
    at miniboxing.plugin.MiniboxInfoTransformation$$anon$2.apply(MiniboxInfoTransformation.scala:95)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.immutable.List.foreach(List.scala:318)
    at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
    at scala.collection.AbstractTraversable.map(Traversable.scala:105)
    at miniboxing.plugin.MiniboxInfoTransformation$class.specialize1$1(MiniboxInfoTransformation.scala:233)
    at miniboxing.plugin.MiniboxInfoTransformation$$anonfun$62.apply(MiniboxInfoTransformation.scala:737)
    at miniboxing.plugin.MiniboxInfoTransformation$$anonfun$62.apply(MiniboxInfoTransformation.scala:736)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.immutable.List.foreach(List.scala:318)
    at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
    at scala.collection.AbstractTraversable.map(Traversable.scala:105)
    at miniboxing.plugin.MiniboxInfoTransformation$class.specialize(MiniboxInfoTransformation.scala:735)
    at miniboxing.plugin.Minibox$Component$.specialize(Minibox.scala:77)
    at miniboxing.plugin.MiniboxInfoTransformation$class.transformInfo(MiniboxInfoTransformation.scala:32)
    at miniboxing.plugin.Minibox$Component$.transformInfo(Minibox.scala:77)
    at scala.tools.nsc.transform.InfoTransform$Phase$$anon$1.transform(InfoTransform.scala:38)
    at scala.reflect.internal.Symbols$Symbol.rawInfo(Symbols.scala:1312)
    at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1239)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxing$plugin$MiniboxTreeTransformation$MiniboxTreeTransformer$$createSpecializedClassesTrees$1$$anonfun$apply$10.apply(MiniboxTreeTransformation.scala:673)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxing$plugin$MiniboxTreeTransformation$MiniboxTreeTransformer$$createSpecializedClassesTrees$1$$anonfun$apply$10.apply(MiniboxTreeTransformation.scala:673)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.afterMinibox(MiniboxTreeTransformation.scala:78)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxing$plugin$MiniboxTreeTransformation$MiniboxTreeTransformer$$createSpecializedClassesTrees(MiniboxTreeTransformation.scala:670)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:97)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:96)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:96)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:103)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:103)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxComponent$class.afterMinibox(Minibox.scala:28)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:103)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:96)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Exception in thread "main" java.util.NoSuchElementException: key not found: class Int
    at scala.collection.MapLike$class.default(MapLike.scala:228)
    at scala.collection.AbstractMap.default(Map.scala:58)
    at scala.collection.MapLike$class.apply(MapLike.scala:141)
    at scala.collection.AbstractMap.apply(Map.scala:58)
    at scala.collection.MapLike$MappedValues$$anonfun$foreach$3.apply(MapLike.scala:245)
    at scala.collection.MapLike$MappedValues$$anonfun$foreach$3.apply(MapLike.scala:245)
    at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:772)
    at scala.collection.mutable.HashMap$$anonfun$foreach$1.apply(HashMap.scala:98)
    at scala.collection.mutable.HashMap$$anonfun$foreach$1.apply(HashMap.scala:98)
    at scala.collection.mutable.HashTable$class.foreachEntry(HashTable.scala:226)
    at scala.collection.mutable.HashMap.foreachEntry(HashMap.scala:39)
    at scala.collection.mutable.HashMap.foreach(HashMap.scala:98)
    at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:771)
    at scala.collection.MapLike$MappedValues.foreach(MapLike.scala:245)
    at scala.collection.TraversableOnce$class.foldLeft(TraversableOnce.scala:144)
    at scala.collection.AbstractTraversable.foldLeft(Traversable.scala:105)
    at scala.collection.TraversableOnce$class.$div$colon(TraversableOnce.scala:138)
    at scala.collection.AbstractTraversable.$div$colon(Traversable.scala:105)
    at scala.collection.MapLike$class.$plus$plus(MapLike.scala:302)
    at scala.collection.AbstractMap.$plus$plus(Map.scala:58)
    at miniboxing.plugin.MiniboxInfoTransformation$SpecializeTypeMap.apply(MiniboxInfoTransformation.scala:84)
    at miniboxing.plugin.MiniboxInfoTransformation$$anon$2.apply(MiniboxInfoTransformation.scala:101)
    at miniboxing.plugin.MiniboxInfoTransformation$$anon$2.apply(MiniboxInfoTransformation.scala:95)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.immutable.List.foreach(List.scala:318)
    at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
    at scala.collection.AbstractTraversable.map(Traversable.scala:105)
    at miniboxing.plugin.MiniboxInfoTransformation$class.specialize1$1(MiniboxInfoTransformation.scala:233)
    at miniboxing.plugin.MiniboxInfoTransformation$$anonfun$62.apply(MiniboxInfoTransformation.scala:737)
    at miniboxing.plugin.MiniboxInfoTransformation$$anonfun$62.apply(MiniboxInfoTransformation.scala:736)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.immutable.List.foreach(List.scala:318)
    at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
    at scala.collection.AbstractTraversable.map(Traversable.scala:105)
    at miniboxing.plugin.MiniboxInfoTransformation$class.specialize(MiniboxInfoTransformation.scala:735)
    at miniboxing.plugin.Minibox$Component$.specialize(Minibox.scala:77)
    at miniboxing.plugin.MiniboxInfoTransformation$class.transformInfo(MiniboxInfoTransformation.scala:32)
    at miniboxing.plugin.Minibox$Component$.transformInfo(Minibox.scala:77)
    at scala.tools.nsc.transform.InfoTransform$Phase$$anon$1.transform(InfoTransform.scala:38)
    at scala.reflect.internal.Symbols$Symbol.rawInfo(Symbols.scala:1312)
    at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1239)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxing$plugin$MiniboxTreeTransformation$MiniboxTreeTransformer$$createSpecializedClassesTrees$1$$anonfun$apply$10.apply(MiniboxTreeTransformation.scala:673)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxing$plugin$MiniboxTreeTransformation$MiniboxTreeTransformer$$createSpecializedClassesTrees$1$$anonfun$apply$10.apply(MiniboxTreeTransformation.scala:673)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.afterMinibox(MiniboxTreeTransformation.scala:78)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxing$plugin$MiniboxTreeTransformation$MiniboxTreeTransformer$$createSpecializedClassesTrees(MiniboxTreeTransformation.scala:670)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:97)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:96)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:96)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:103)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:103)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxComponent$class.afterMinibox(Minibox.scala:28)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:103)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:96)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Scala Library Crasher 3

sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ cat mb_library_3.scala 
package miniboxing.tests.compile
import miniboxing.plugin.minispec

trait GenTraversableOnce[@minispec +A] extends Any {
  def min[A1 >: A](implicit ord: Ordering[A1]): A
  def max[A1 >: A](implicit ord: Ordering[A1]): A
}

trait TraversableOnce[@minispec +A] extends Any with GenTraversableOnce[A] {
  def min[B >: A](implicit cmp: Ordering[B]): A = ???
  def max[B >: A](implicit cmp: Ordering[B]): A = ???
}
sun@sun-laptop:/mnt/data-local/Work/Workspace/dev/miniboxing-plugin/sandbox(wip)$ ../mb-scalac mb_library_3.scala 
Picked up _JAVA_OPTIONS: -Xms2g -Xmx2g -Xss4m -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=256m -XX:+UseParallelGC -XX:PermSize=256m -XX:+TieredCompilation -XX:+UseNUMA
error: 
     while compiling: mb_library_3.scala
        during phase: minibox
     library version: version 2.10.3-20130708-163611-504b5f3b15
    compiler version: version 2.10.3-20130708-163611-504b5f3b15
  reconstructed args: -bootclasspath /home/sun/workspace/dev/miniboxing-plugin//components/runtime/target/scala-2.10/miniboxing-runtime_2.10-0.1-SNAPSHOT.jar:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar -Xplugin:/home/sun/workspace/dev/miniboxing-plugin//components/plugin/target/scala-2.10/miniboxing-plugin_2.10-0.1-SNAPSHOT.jar

  last tree to typer: TypeTree(type B)
              symbol: type B (flags: <deferred> <param>)
   symbol definition: B >: Asp
                 tpe: B
       symbol owners: type B -> method max -> trait TraversableOnce_J -> package compile
      context owners: trait TraversableOnce_J -> package compile

== Enclosing template or block ==

Apply( // def max_J[B >: Long](val TraversableOnce_A_TypeTag: Byte,cmp: scala.math.Ordering[B]): Long in trait TraversableOnce_J
  TypeApply( // def max_J[B >: Long](val TraversableOnce_A_TypeTag: Byte,cmp: scala.math.Ordering[B]): Long in trait TraversableOnce_J, tree.tpe=(val TraversableOnce_A_TypeTag: Byte, cmp: scala.math.Ordering[B])Long
    TraversableOnce_J.this."max_J" // def max_J[B >: Long](val TraversableOnce_A_TypeTag: Byte,cmp: scala.math.Ordering[B]): Long in trait TraversableOnce_J, tree.tpe=[B >: Long](val TraversableOnce_A_TypeTag: Byte, cmp: scala.math.Ordering[B])Long
    <tpt> // tree.tpe=B
  )
  // 2 arguments
  TraversableOnce_J.this."TraversableOnce_A_TypeTag" // def TraversableOnce_A_TypeTag(): Byte in trait TraversableOnce_J, tree.tpe=()Byte
  "cmp" // cmp: scala.math.Ordering[B], tree.tpe=scala.math.Ordering[B]
)

== Expanded type of tree ==

TypeParamTypeRef(TypeParam(B >: Asp))

uncaught exception during compilation: scala.reflect.internal.Types$TypeError
error: scala.reflect.internal.Types$TypeError: type arguments [B] do not conform to method max_J's type parameter bounds [B >: Long]
    at scala.tools.nsc.typechecker.Contexts$Context.issueCommon(Contexts.scala:397)
    at scala.tools.nsc.typechecker.Contexts$Context.issue(Contexts.scala:401)
    at scala.tools.nsc.typechecker.Infer$Inferencer.issue(Infer.scala:312)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$normalTypedApply$1$1.apply(Typers.scala:4608)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$normalTypedApply$1$1.apply(Typers.scala:4608)
    at scala.tools.nsc.typechecker.Typers$Typer.onError$3(Typers.scala:4566)
    at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4608)
    at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4620)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5525)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5665)
    at scala.tools.nsc.typechecker.Typers$Typer.typedPos(Typers.scala:5670)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.ltypedpos(MiniboxTreeTransformation.scala:621)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxing$plugin$MiniboxTreeTransformation$MiniboxTreeTransformer$$cast(MiniboxTreeTransformation.scala:632)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$18.apply(MiniboxTreeTransformation.scala:181)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$18.apply(MiniboxTreeTransformation.scala:181)
    at scala.reflect.internal.Trees$class.deriveDefDef(Trees.scala:1595)
    at scala.reflect.internal.SymbolTable.deriveDefDef(SymbolTable.scala:13)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:181)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:23)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:130)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:130)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:130)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:23)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:447)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:23)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:99)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:96)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:96)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:103)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:103)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxComponent$class.afterMinibox(Minibox.scala:28)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:103)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:96)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Exception in thread "main" scala.reflect.internal.Types$TypeError: type arguments [B] do not conform to method max_J's type parameter bounds [B >: Long]
    at scala.tools.nsc.typechecker.Contexts$Context.issueCommon(Contexts.scala:397)
    at scala.tools.nsc.typechecker.Contexts$Context.issue(Contexts.scala:401)
    at scala.tools.nsc.typechecker.Infer$Inferencer.issue(Infer.scala:312)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$normalTypedApply$1$1.apply(Typers.scala:4608)
    at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$normalTypedApply$1$1.apply(Typers.scala:4608)
    at scala.tools.nsc.typechecker.Typers$Typer.onError$3(Typers.scala:4566)
    at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4608)
    at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4620)
    at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5525)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5603)
    at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5665)
    at scala.tools.nsc.typechecker.Typers$Typer.typedPos(Typers.scala:5670)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.ltypedpos(MiniboxTreeTransformation.scala:621)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxing$plugin$MiniboxTreeTransformation$MiniboxTreeTransformer$$cast(MiniboxTreeTransformation.scala:632)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$18.apply(MiniboxTreeTransformation.scala:181)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$18.apply(MiniboxTreeTransformation.scala:181)
    at scala.reflect.internal.Trees$class.deriveDefDef(Trees.scala:1595)
    at scala.reflect.internal.SymbolTable.deriveDefDef(SymbolTable.scala:13)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:181)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:23)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:2900)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformTrees(Trees.scala:2900)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:130)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$9.apply(MiniboxTreeTransformation.scala:130)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:130)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:23)
    at scala.reflect.api.Trees$Transformer.transformTemplate(Trees.scala:2904)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1280)
    at scala.reflect.internal.Trees$$anonfun$itransform$4.apply(Trees.scala:1279)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:28)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:19)
    at scala.reflect.internal.Trees$class.itransform(Trees.scala:1278)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13)
    at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.transform(TypingTransformers.scala:48)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:447)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:23)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927)
    at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925)
    at scala.collection.immutable.List.loop$1(List.scala:170)
    at scala.collection.immutable.List.mapConserve(List.scala:186)
    at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:99)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer$$anonfun$miniboxTransform$2.apply(MiniboxTreeTransformation.scala:96)
    at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936)
    at scala.tools.nsc.transform.TypingTransformers$TypingTransformer.atOwner(TypingTransformers.scala:34)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.miniboxTransform(MiniboxTreeTransformation.scala:96)
    at miniboxing.plugin.MiniboxTreeTransformation$MiniboxTreeTransformer.transform(MiniboxTreeTransformation.scala:80)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:103)
    at miniboxing.plugin.Minibox$Component$$anon$1$$anonfun$1.apply(Minibox.scala:103)
    at scala.reflect.internal.SymbolTable.atPhase(SymbolTable.scala:207)
    at scala.reflect.internal.SymbolTable.afterPhase(SymbolTable.scala:216)
    at miniboxing.plugin.MiniboxComponent$class.afterMinibox(Minibox.scala:28)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:103)
    at miniboxing.plugin.Minibox$Component$$anon$1.transform(Minibox.scala:96)
    at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227)
    at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431)
    at scala.collection.Iterator$class.foreach(Iterator.scala:727)
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1662)
    at scala.tools.nsc.Driver.doCompile(Driver.scala:33)
    at scala.tools.nsc.Main$.doCompile(Main.scala:79)
    at scala.tools.nsc.Driver.process(Driver.scala:54)
    at scala.tools.nsc.Driver.main(Driver.scala:67)
    at scala.tools.nsc.Main.main(Main.scala)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.