Slow code with Union and Box

hmm, we (as a community) have been here: Allocation and slow down when # of types involved increase (slower than C++ virtual methods) - #58 by peremato