Most of the code is from Katayama Hirofumi MZ, the placement new / delete is written by me, based on a hint from Giannis. svn path=/trunk/; revision=72688