Describir: Interface -oriented programming and representation inference