_(this explanation is for everyone)_

`loadCollection "projects", include: ["tasks": ["time_entries"]]`

translates to 2 individual loads:

  1. load projects
  	- include: tasks
    
  2. load tasks
    - include: time_entries
    - only: [ids returned from first load]

So you could respond to this specific example in two ways via expectations:

1. **recursive** (would behave more like the real world does and makes two requests):

  + Create a stub for the first level load (projects) and return projects + tasks

	    projectExpectation = manager.stub "projects", include: ["tasks": ["time_entries"]], response: (stub) ->
	      stub.results = [project]
	      stub.associated.tasks = [task1, task2]
	      stub.recursive = true
    
  + Create a stub for the second level load (tasks) and return tasks + time_entries
  
	    tasksExpectation = manager.stub "tasks", include: ["time_entries"], only: [task1.id, task2.id], response: (stub) ->
	      stub.results = [task1, task2]
	      stub.associated.time_entries = [te1, te2]

2. **non recursive**

  + Create a stub for the main load and return everything (project, tasks, time_entries):
  
	    projectExpectation = manager.stub "projects", include: ["tasks": ["time_entries"]], response: (stub) ->
	      stub.results = [project]
	      stub.associated.tasks = [task1, task2]
	      stub.associated.time_entries = [te1, te2]