public class ConstructorExample<T> {
	private int x, y;
	@NonNull private T description;
	
	private ConstructorExample(T description) {
		if (description == null) throw new NullPointerException("description");
		this.description = description;
	}
	
	public static <T> ConstructorExample<T> of(T description) {
		return new ConstructorExample<T>(description);
	}
	
	@java.beans.ConstructorProperties({"x", "y", "description"})
	protected ConstructorExample(int x, int y, T description) {
		if (description == null) throw new NullPointerException("description");
		this.x = x;
		this.y = y;
		this.description = description;
	}
	
	public static class NoArgsExample {
		@NonNull private String field;
		
		public NoArgsExample() {
		}
	}
}