RobotsURIBuilder { @Nonnull public RobotsURIBuilder withUserInfo(@Nonnull String userInfo) { checkNotNull(userInfo, "userInfo is null"); checkArgument(!userInfo.isEmpty(), "empty userInfo"); this.userInfo = Optional.of(userInfo); return this; }  @Nonnull RobotsURIBuilder withScheme(@Nonnull String scheme); @Nonnull RobotsURIBuilder withUserInfo(@Nonnull String userInfo); @Nonnull RobotsURIBuilder withHost(@Nonnull String host); @Nonnull RobotsURIBuilder withPort(int port); @Nonnull RobotsURIBuilder fromUriString(@Nonnull String uriString); @Nonnull RobotsURIBuilder fromUri(@Nonnull URI uri); @Nonnull RobotsURIBuilder fromURL(@Nonnull URL url); @Nonnull URI build();  }
@Test(expected = NullPointerException.class) public void givenNullUserInfo_whenWithUserInfo_thenThrowsNPE() { builder.withUserInfo(null); }
@Test(expected = IllegalArgumentException.class) public void givenEmptyUserInfo_whenWithUserInfo_thenThrowsIAE() { builder.withUserInfo(""); }