See https://github.com/laravel/framework/blob/5.0/src/Illuminate/Foundation/Console/ClearCompiledCommand.php#L28
Illuminate\Foundation\Console\ClearCompiledCommand::fire() uses two methods that are actually not part of the Illuminate\Contracts\Foundation\Application interface:
$compiledPath = $this->laravel->getCachedCompilePath(); $servicesPath = $this->laravel->getCachedServicesPath();
As the command objects depend on the Application contract / interface only (https://github.com/laravel/framework/blob/5.0/src/Illuminate/Console/Command.php#L382), not the Illuminate\Foundation\Application implementation, should any commands rely on methods not available in the interface?
The ClearCompiledCommand::fire() seems to be tightly-coupled to the implementation class, not the interface.