Added Requirements trait, which does similar thing like Assertions but throw IllegalArgumentException when the requirement is not met.