Constructor.
public function __construct() {
  $this->mergePass = new MergeExtensionConfigurationPass();
  $this->afterRemovingPasses = array();
  $this->beforeOptimizationPasses = array();
  $this->beforeRemovingPasses = array();
  $this->optimizationPasses = array(
    new ResolveDefinitionTemplatesPass(),
    new ResolveParameterPlaceHoldersPass(),
    new CheckDefinitionValidityPass(),
    new ResolveReferencesToAliasesPass(),
    new ResolveInvalidReferencesPass(),
    new AnalyzeServiceReferencesPass(true),
    new CheckCircularReferencesPass(),
    new CheckReferenceValidityPass(),
  );
  $this->removingPasses = array(
    new RemovePrivateAliasesPass(),
    new RemoveAbstractDefinitionsPass(),
    new ReplaceAliasByActualDefinitionPass(),
    new RepeatedPass(array(
      new AnalyzeServiceReferencesPass(),
      new InlineServiceDefinitionsPass(),
      new AnalyzeServiceReferencesPass(),
      new RemoveUnusedDefinitionsPass(),
    )),
    new CheckExceptionOnInvalidReferenceBehaviorPass(),
  );
}