javadoc convention:
    `@throws NullPointerException if there is none`
    `@throws IllegalArgumentException if it is not of the indicated type`