An implementation of statically typed structures and CL-like generic methods in javascript