In the context of object-oriented programming, many solutions have been proposed to the problem of type inference [17,16,1,21,6,20,12], but the increasing interest in dynamic object-oriented languages is asking for ever more precise and efficient type inference algorithms [3,12]. Two important features which should be supported by type inference are parametric and data polymorphism [1]; the former allows invocation of a method on arguments of unrelated types, the latter allows assignment of valu