It's need to add synthetic argument (of type that user can't use) to constructors with default arguments to avoid clashing with real user's constructor having the same set of parameters and additional int's arguments.