struct cat {
  name: ~str,
  #[cat_dropper]
  /**
     Actually, cats don't always land on their feet when you drop them.
  */
  drop { error!("%s landed on hir feet", self.name); }
}

#[cat_maker]
/**
Maybe it should technically be a kitten_maker.
*/
fn cat(name: ~str) -> cat {
    cat {
        name: name
    }
}

fn main() {
  let _kitty = cat(~"Spotty");
}
