import * as Specification from "../../specification" ; export abstract class Optimizer { public abstract optimize ( mark ) ; } export class OptimizerList extends Optimizer { private _optimizers : Optimizer [ ] ; constructor ( ... args ) { super ( ) ; this . _optimizers = args ; } public optimize ( mark ) { let s = mark ; for ( let optimizer of this . _optimizers ) { s = optimizer . optimize ( s ) ; } return s ; } } export function CreateDefaultOptimizer ( ) { return new OptimizerList ( ) ; }