@Xanderhall Default arguments would drastically reduce the amount of boilerplate for functions.. in one case where I had to "support" registering a Block (yep, Minecraft modding) with a *required* block, an *optional* ItemBlock, an *optional* name, an *optional* metadata, and an *optional* model name. Each of them can be either taken from a default or calculated based upon the others.
Ended up with 18 methods.