I don't think this is a big problem. It can be tackled with a combination of the following:
1. Use a descriptive name, instead of:
o.add( 12, 47, true )
Try:
o.addValueAtLocationWithOverwite( 12, 47, true )
2. Use an enum instead of boolean, e.g.:
o.addValueAtLocation( 12, 47, Overwrite.YES )
3. Use classes instead of primitives (in general - not just boolean), e.g.:
o.add( new Value( 12 ), new Location( 47 ), Overwrite.YES )
4. add comments, e.g.:
o.add( /*value*/12, /*location*/47, /*Overwrite*/true )
5. split the call, e.g.:
o = new OType( o ).overwrite( true ).location( 47 ).value( 12 )
In summary, there are so many call options already in Java it doesn't seem worth adding another to me. However if another call option were to be added then I would favour mimicing the annotations syntax, e.g.:
o.add( value=12, location=47, overwrite=true )
and allowing default values, e.g.:
public void o.add( final int value default 0, final int location default 0, final boolean overwrite default false ) {
...
}