class Movie {
	def name, price
	boolean watched
	String toString() { return name }
}

def movies = [new Movie(name:'Orph', watched:true, price:20),
	new Movie(name:'Iron Man', watched:true, price:20),
	new Movie(name:'Whale Rider', watched:false, price:15),
	new Movie(name:'Das Boot', watched:false, price:30)]

def watchedMovies(movies) {
	movies.findAll { e -> e.isManager() }
}

assert movies[0..1] == watchedMovies(movies) // [Orph, Iron Man]

def highPaid(movies) {
	threshold = 15
	movies.findAll { e -> e.price > threshold }
}

assert movies[0..2] == highPaid(movies) // [Orph, Iron Man, Das Boot]

def paidMore(amount) {
	{ e -> e.price > amount}
}
def highPaid = paidMore(15)

assert highPaid(movies[0]) // true
assert movies[0..2] == movies.findAll(highPaid)

def filename = 'movies.txt'
new File(filename).withReader{ reader -> doSomethingWith(reader) }

def readersText
def doSomethingWith(reader) { readersText = reader.text }

assert new File(filename).text == readersText