generate java class wrapper which is immutable and utilize builder pattern