### Question:
SimpleNameImpl extends ModelRoot implements SimpleName { public void setToken(String token) { Util.notNull(token, "token"); if (token.isEmpty()) { throw new IllegalArgumentException("token must not be null"); } if (Character.isJavaIdentifierStart(token.charAt(0)) == false) { throw new IllegalArgumentException(MessageFormat.format( "string must be a valid Java identifier ({0} has invalid start)", LiteralAnalyzer.stringLiteralOf(token))); } for (int i = 1, n = token.length(); i < n; i++) { if (Character.isJavaIdentifierPart(token.charAt(i)) == false) { throw new IllegalArgumentException(MessageFormat.format( "string must be a valid Java identifier ({0} has invalid part)", LiteralAnalyzer.stringLiteralOf(token))); } } if (RESERVED.contains(token)) { throw new IllegalArgumentException(MessageFormat.format( "string must be a valid Java identifier ({0} is a reserved word)", LiteralAnalyzer.stringLiteralOf(token))); } this.token = token; }  @Override String getToken(); void setToken(String token); @Override SimpleName getLastSegment(); @Override List<SimpleName> toNameList(); @Override String toNameString(); @Override ModelKind getModelKind(); @Override R accept(Visitor<R, C, E> visitor, C context);  }### Answer:
@Test public void camel() { SimpleNameImpl name = new SimpleNameImpl(); name.setToken("simpleNameImpl"); }
@Test public void singleChar() { SimpleNameImpl name = new SimpleNameImpl(); name.setToken("a"); }
@Test public void trailingNumbers() { SimpleNameImpl name = new SimpleNameImpl(); name.setToken("a1"); }
@Test public void dollar() { SimpleNameImpl name = new SimpleNameImpl(); name.setToken("$"); }
@Test(expected = IllegalArgumentException.class) public void empty() { SimpleNameImpl name = new SimpleNameImpl(); name.setToken(""); }
@Test(expected = IllegalArgumentException.class) public void isNumber() { SimpleNameImpl name = new SimpleNameImpl(); name.setToken("125"); }
@Test(expected = IllegalArgumentException.class) public void hasInvalid() { SimpleNameImpl name = new SimpleNameImpl(); name.setToken("a-"); }
@Test(expected = IllegalArgumentException.class) public void keyword() { SimpleNameImpl name = new SimpleNameImpl(); name.setToken("void"); }
@Test(expected = IllegalArgumentException.class) public void booleanLiteralTrue() { SimpleNameImpl name = new SimpleNameImpl(); name.setToken("true"); }
@Test(expected = IllegalArgumentException.class) public void booleanLiteralFalse() { SimpleNameImpl name = new SimpleNameImpl(); name.setToken("false"); }
@Test(expected = IllegalArgumentException.class) public void nullLiteral() { SimpleNameImpl name = new SimpleNameImpl(); name.setToken("null"); }