«immutable»Interval-left : double {readOnly}-right : double {readOnly}-leftClosed : boolean {readOnly}-rightClosed : boolean {readOnly}+Interval(original : Interval)+Interval(leftSymbol : char, left : double, right : double, rightSymbol : char) {exceptions = IllegalArgumentException}+contains(value : double) : boolean+closestTo(value : double) : double+toString() : String+toString(formatString : String) : String«enumeration»Category-interval : Interval {readOnly}-description : String {readOnly}-symbol : String {readOnly}BARGAININEXPENSIVEMODERATEEXPENSIVEOUTRAGEOUS-Category(description : String, symbol : String, interval : Interval)+getCategoryFor(price : double) : Category+getDescription() : String+getSymbol() : String+toString() : String«utility»PlanUtilities+findBestPlan(plans : MoviePlan...) : MoviePlan