invert at ground level arguments of constructors when constructor type is more general than eliminated one