support upper bounds on arrays and string, support default values for primitive types