Type-check elimination: two object-oriented reengineering patterns | IEEE Conference Publication | IEEE Xplore