Any way to use a better ownership model (owning smart pointer or something) to avoid this special case? I'll look at the code more closely than just the diff hunk tomorrow http://llvm-reviews.chandlerc.com/D2472