Not a blocker on this pull, but we'll want some nicer error presentation for bad arguments than just letting Precondition throws bubble up from the helper methods.