compiles on current rustc