import {publicApi} from 'ts-api-guardian';

// =================================================================================================
// =================================================================================================
// =========== S T O P   -  S T O P   -  S T O P   -  S T O P   -  S T O P   -  S T O P  ===========
// =================================================================================================
// =================================================================================================
//
// DO NOT EDIT THIS FILE UNLESS YOU GET IT CLEARED BY: mhevery, vsavkin, tbosch or iminar!!
//
// =================================================================================================
// =================================================================================================
/* clang-format off */
const CORE = [
  'AbstractProviderError',
  'AbstractProviderError.addKey(injector:ReflectiveInjector, key:ReflectiveKey):void',
  'AbstractProviderError.constructor(injector:ReflectiveInjector, key:ReflectiveKey, constructResolvingMessage:Function)',
  'AbstractProviderError.constructResolvingMessage:Function',
  'AbstractProviderError.context:any',
  'AbstractProviderError.injectors:ReflectiveInjector[]',
  'AbstractProviderError.keys:ReflectiveKey[]',
  'AbstractProviderError.message:string',
  'AfterContentChecked',
  'AfterContentChecked.ngAfterContentChecked():any',
  'AfterContentInit',
  'AfterContentInit.ngAfterContentInit():any',
  'AfterViewChecked',
  'AfterViewChecked.ngAfterViewChecked():any',
  'AfterViewInit',
  'AfterViewInit.ngAfterViewInit():any',
  'animate(timing:string|number, styles:AnimationStyleMetadata|AnimationKeyframesSequenceMetadata=null):AnimationAnimateMetadata',
  'AnimationAnimateMetadata',
  'AnimationAnimateMetadata.constructor(timings:string|number, styles:AnimationStyleMetadata|AnimationKeyframesSequenceMetadata)',
  'AnimationAnimateMetadata.styles:AnimationStyleMetadata|AnimationKeyframesSequenceMetadata',
  'AnimationAnimateMetadata.timings:string|number',
  'AnimationEntryMetadata',
  'AnimationEntryMetadata.constructor(name:string, definitions:AnimationStateMetadata[])',
  'AnimationEntryMetadata.definitions:AnimationStateMetadata[]',
  'AnimationEntryMetadata.name:string',
  'AnimationGroupMetadata',
  'AnimationGroupMetadata.constructor(_steps:AnimationMetadata[])',
  'AnimationGroupMetadata.steps:AnimationMetadata[]',
  'AnimationKeyframesSequenceMetadata',
  'AnimationKeyframesSequenceMetadata.constructor(steps:AnimationStyleMetadata[])',
  'AnimationKeyframesSequenceMetadata.steps:AnimationStyleMetadata[]',
  'AnimationMetadata',
  'AnimationPlayer',
  'AnimationPlayer.destroy():void',
  'AnimationPlayer.finish():void',
  'AnimationPlayer.getPosition():number',
  'AnimationPlayer.onDone(fn:Function):void',
  'AnimationPlayer.parentPlayer:AnimationPlayer',
  'AnimationPlayer.parentPlayer=(player:AnimationPlayer)',
  'AnimationPlayer.pause():void',
  'AnimationPlayer.play():void',
  'AnimationPlayer.reset():void',
  'AnimationPlayer.restart():void',
  'AnimationPlayer.setPosition(p:any):void',
  'AnimationSequenceMetadata',
  'AnimationSequenceMetadata.constructor(_steps:AnimationMetadata[])',
  'AnimationSequenceMetadata.steps:AnimationMetadata[]',
  'AnimationStateDeclarationMetadata',
  'AnimationStateDeclarationMetadata.constructor(stateNameExpr:string, styles:AnimationStyleMetadata)',
  'AnimationStateDeclarationMetadata.stateNameExpr:string',
  'AnimationStateDeclarationMetadata.styles:AnimationStyleMetadata',
  'AnimationStateMetadata',
  'AnimationStateTransitionMetadata',
  'AnimationStateTransitionMetadata.constructor(stateChangeExpr:string, steps:AnimationMetadata)',
  'AnimationStateTransitionMetadata.stateChangeExpr:string',
  'AnimationStateTransitionMetadata.steps:AnimationMetadata',
  'AnimationStyleMetadata',
  'AnimationStyleMetadata.constructor(styles:Array<string|{[key:string]:string|number}>, offset:number=null)',
  'AnimationStyleMetadata.offset:number=null',
  'AnimationStyleMetadata.styles:Array<string|{[key:string]:string|number}>',
  'AnimationWithStepsMetadata',
  'AnimationWithStepsMetadata.constructor()',
  'AnimationWithStepsMetadata.steps:AnimationMetadata[]',
  'ApplicationRef',
  'ApplicationRef.bootstrap(componentFactory:ComponentFactory<C>):ComponentRef<C>',
  'ApplicationRef.componentTypes:Type[]',
  'ApplicationRef.dispose():void',
  'ApplicationRef.injector:Injector',
  'ApplicationRef.registerBootstrapListener(listener:(ref: ComponentRef<any>) => void):void',
  'ApplicationRef.registerDisposeListener(dispose:() => void):void',
  'ApplicationRef.run(callback:Function):any',
  'ApplicationRef.tick():void',
  'ApplicationRef.waitForAsyncInitializers():Promise<any>',
  'ApplicationRef.zone:NgZone',
  'asNativeElements(debugEls:DebugElement[]):any',
  'assertPlatform(requiredToken:any):PlatformRef',
  'AttributeMetadata',
  'AttributeMetadata.attributeName:string',
  'AttributeMetadata.constructor(attributeName:string)',
  'AttributeMetadata.token:AttributeMetadata',
  'AttributeMetadata.toString():string',
  'AttributeMetadataFactory',
  'BaseException',
  'BaseException.constructor(message:string=\'--\')',
  'BaseException.message:string=\'--\'',
  'BaseException.stack:any',
  'BaseException.toString():string',
  'bind(token:any):ProviderBuilder',
  'Binding',
  'Binding.constructor(token:any, {toClass,toValue,toAlias,toFactory,deps,multi}:{toClass?:Type, toValue?:any, toAlias?:any, toFactory:Function, deps?:Object[], multi?:boolean})',
  'Binding.toAlias:any',
  'Binding.toClass:any',
  'Binding.toFactory:any',
  'Binding.toValue:any',
  'ChangeDetectionStrategy',
  'ChangeDetectionStrategy.CheckAlways',
  'ChangeDetectionStrategy.Checked',
  'ChangeDetectionStrategy.CheckOnce',
  'ChangeDetectionStrategy.Default',
  'ChangeDetectionStrategy.Detached',
  'ChangeDetectionStrategy.OnPush',
  'ChangeDetectorRef',
  'ChangeDetectorRef.checkNoChanges():void',
  'ChangeDetectorRef.detach():void',
  'ChangeDetectorRef.detectChanges():void',
  'ChangeDetectorRef.markForCheck():void',
  'ChangeDetectorRef.reattach():void',
  'Class(clsDef:ClassDefinition):ConcreteType',
  'ClassDefinition',
  'ClassDefinition.constructor:Function|any[]',
  'ClassDefinition.extends:Type',
  'CollectionChangeRecord',
  'CollectionChangeRecord.constructor(item:any, trackById:any)',
  'CollectionChangeRecord.currentIndex:number',
  'CollectionChangeRecord.item:any',
  'CollectionChangeRecord.previousIndex:number',
  'CollectionChangeRecord.toString():string',
  'CollectionChangeRecord.trackById:any',
  'ComponentDecorator',
  'ComponentDecorator.View(obj:{templateUrl?:string, template?:string, directives?:Array<Type|any[]>, pipes?:Array<Type|any[]>, renderer?:string, styles?:string[], styleUrls?:string[], animations?:AnimationEntryMetadata[], interpolation?:[string, string]}):ViewDecorator',
  'ComponentFactory.componentType:Type',
  'ComponentFactory.constructor(selector:string, _viewFactory:Function, _componentType:Type)',
  'ComponentFactory.create(injector:Injector, projectableNodes:any[][]=null, rootSelectorOrNode:string|any=null):ComponentRef<C>',
  'ComponentFactory.selector:string',
  'ComponentFactory<C>',
  'ComponentMetadata',
  'ComponentMetadata.animations:AnimationEntryMetadata[]',
  'ComponentMetadata.changeDetection:ChangeDetectionStrategy',
  'ComponentMetadata.constructor({selector,inputs,outputs,properties,events,host,exportAs,moduleId,providers,viewProviders,changeDetection=ChangeDetectionStrategy.Default,queries,templateUrl,template,styleUrls,styles,animations,directives,pipes,encapsulation,interpolation}:{selector?:string, inputs?:string[], outputs?:string[], properties?:string[], events?:string[], host?:{[key:string]:string}, providers?:any[], exportAs?:string, moduleId?:string, viewProviders?:any[], queries?:{[key:string]:any}, changeDetection?:ChangeDetectionStrategy, templateUrl?:string, template?:string, styleUrls?:string[], styles?:string[], animations?:AnimationEntryMetadata[], directives?:Array<Type|any[]>, pipes?:Array<Type|any[]>, encapsulation?:ViewEncapsulation, interpolation?:[string, string]}={})',
  'ComponentMetadata.directives:Array<Type|any[]>',
  'ComponentMetadata.encapsulation:ViewEncapsulation',
  'ComponentMetadata.interpolation:[string, string]',
  'ComponentMetadata.moduleId:string',
  'ComponentMetadata.pipes:Array<Type|any[]>',
  'ComponentMetadata.styles:string[]',
  'ComponentMetadata.styleUrls:string[]',
  'ComponentMetadata.template:string',
  'ComponentMetadata.templateUrl:string',
  'ComponentMetadata.viewProviders:any[]',
  'ComponentMetadataFactory',
  'ComponentRef.changeDetectorRef:ChangeDetectorRef',
  'ComponentRef.componentType:Type',
  'ComponentRef.destroy():void',
  'ComponentRef.hostView:ViewRef',
  'ComponentRef.injector:Injector',
  'ComponentRef.instance:C',
  'ComponentRef.location:ElementRef',
  'ComponentRef.onDestroy(callback:Function):void',
  'ComponentRef<C>',
  'ComponentResolver',
  'ComponentResolver.clearCache():void',
  'ComponentResolver.resolveComponent(component:Type|string):Promise<ComponentFactory<any>>',
  'const APP_ID:any',
  'const APP_INITIALIZER:any',
  'const APPLICATION_COMMON_PROVIDERS:Array<Type|{[k:string]:any}|any[]>',
  'const AUTO_STYLE:any',
  'const PACKAGE_ROOT_URL:any',
  'const PLATFORM_COMMON_PROVIDERS:Array<any|Type|Provider|any[]>',
  'const PLATFORM_DIRECTIVES:OpaqueToken',
  'const PLATFORM_INITIALIZER:any',
  'const PLATFORM_PIPES:OpaqueToken',
  'ContentChildMetadata',
  'ContentChildMetadata.constructor(_selector:Type|string, {read=null}:{read?:any}={})',
  'ContentChildMetadataFactory',
  'ContentChildrenMetadata',
  'ContentChildrenMetadata.constructor(_selector:Type|string, {descendants=false,read=null}:{descendants?:boolean, read?:any}={})',
  'ContentChildrenMetadataFactory',
  'coreBootstrap(componentFactory:ComponentFactory<C>, injector:Injector):ComponentRef<C>',
  'coreLoadAndBootstrap(componentType:Type, injector:Injector):Promise<ComponentRef<any>>',
  'createNgZone():NgZone',
  'createPlatform(injector:Injector):PlatformRef',
  'CyclicDependencyError',
  'CyclicDependencyError.constructor(injector:ReflectiveInjector, key:ReflectiveKey)',
  'DebugElement',
  'DebugElement.addChild(child:DebugNode):any',
  'DebugElement.attributes:{[key:string]:string}',
  'DebugElement.childNodes:DebugNode[]',
  'DebugElement.children:DebugElement[]',
  'DebugElement.classes:{[key:string]:boolean}',
  'DebugElement.constructor(nativeNode:any, parent:any, _debugInfo:RenderDebugInfo)',
  'DebugElement.insertChildrenAfter(child:DebugNode, newChildren:DebugNode[]):any',
  'DebugElement.name:string',
  'DebugElement.nativeElement:any',
  'DebugElement.properties:{[key:string]:any}',
  'DebugElement.query(predicate:Predicate<DebugElement>):DebugElement',
  'DebugElement.queryAll(predicate:Predicate<DebugElement>):DebugElement[]',
  'DebugElement.queryAllNodes(predicate:Predicate<DebugNode>):DebugNode[]',
  'DebugElement.removeChild(child:DebugNode):any',
  'DebugElement.styles:{[key:string]:string}',
  'DebugElement.triggerEventHandler(eventName:string, eventObj:any):any',
  'DebugNode',
  'DebugNode.componentInstance:any',
  'DebugNode.constructor(nativeNode:any, parent:DebugNode, _debugInfo:RenderDebugInfo)',
  'DebugNode.context:any',
  'DebugNode.inject(token:any):any',
  'DebugNode.injector:Injector',
  'DebugNode.listeners:EventListener[]',
  'DebugNode.nativeNode:any',
  'DebugNode.parent:DebugElement',
  'DebugNode.providerTokens:any[]',
  'DebugNode.references:{[key:string]:any}',
  'DebugNode.source:string',
  'DefaultIterableDiffer',
  'DefaultIterableDiffer.check(collection:any):boolean',
  'DefaultIterableDiffer.collection:any',
  'DefaultIterableDiffer.constructor(_trackByFn?:TrackByFn)',
  'DefaultIterableDiffer.diff(collection:any):DefaultIterableDiffer',
  'DefaultIterableDiffer.forEachAddedItem(fn:Function):any',
  'DefaultIterableDiffer.forEachIdentityChange(fn:Function):any',
  'DefaultIterableDiffer.forEachItem(fn:Function):any',
  'DefaultIterableDiffer.forEachMovedItem(fn:Function):any',
  'DefaultIterableDiffer.forEachPreviousItem(fn:Function):any',
  'DefaultIterableDiffer.forEachRemovedItem(fn:Function):any',
  'DefaultIterableDiffer.isDirty:boolean',
  'DefaultIterableDiffer.length:number',
  'DefaultIterableDiffer.onDestroy():any',
  'DefaultIterableDiffer.toString():string',
  'DirectiveDecorator',
  'DirectiveMetadata',
  'DirectiveMetadata.constructor({selector,inputs,outputs,properties,events,host,providers,exportAs,queries}:{selector?:string, inputs?:string[], outputs?:string[], properties?:string[], events?:string[], host?:{[key:string]:string}, providers?:any[], exportAs?:string, queries?:{[key:string]:any}}={})',
  'DirectiveMetadata.events:string[]',
  'DirectiveMetadata.exportAs:string',
  'DirectiveMetadata.host:{[key:string]:string}',
  'DirectiveMetadata.inputs:string[]',
  'DirectiveMetadata.outputs:string[]',
  'DirectiveMetadata.properties:string[]',
  'DirectiveMetadata.providers:any[]',
  'DirectiveMetadata.queries:{[key:string]:any}',
  'DirectiveMetadata.selector:string',
  'DirectiveMetadataFactory',
  'disposePlatform():void',
  'DoCheck',
  'DoCheck.ngDoCheck():any',
  'DynamicComponentLoader',
  'DynamicComponentLoader.loadAsRoot(type:Type, overrideSelectorOrNode:string|any, injector:Injector, onDispose?:() => void, projectableNodes?:any[][]):Promise<ComponentRef<any>>',
  'DynamicComponentLoader.loadNextToLocation(type:Type, location:ViewContainerRef, providers?:ResolvedReflectiveProvider[], projectableNodes?:any[][]):Promise<ComponentRef<any>>',
  'ElementRef',
  'ElementRef.constructor(nativeElement:any)',
  'ElementRef.nativeElement:any',
  'EmbeddedViewRef.context:C',
  'EmbeddedViewRef.destroy():any',
  'EmbeddedViewRef.rootNodes:any[]',
  'EmbeddedViewRef<C>',
  'enableProdMode():void',
  'EventEmitter.constructor(isAsync:boolean=false)',
  'EventEmitter.emit(value:T):any',
  'EventEmitter.next(value:any):any',
  'EventEmitter.subscribe(generatorOrNext?:any, error?:any, complete?:any):any',
  'EventEmitter<T>',
  'ExceptionHandler',
  'ExceptionHandler.call(exception:any, stackTrace:any=null, reason:string=null):void',
  'ExceptionHandler.constructor(_logger:any, _rethrowException:boolean=true)',
  'ExceptionHandler.exceptionToString(exception:any, stackTrace:any=null, reason:string=null):string',
  'ExpressionChangedAfterItHasBeenCheckedException',
  'ExpressionChangedAfterItHasBeenCheckedException.constructor(oldValue:any, currValue:any, context:any)',
  'forwardRef(forwardRefFn:ForwardRefFn):Type',
  'ForwardRefFn',
  'getDebugNode(nativeNode:any):DebugNode',
  'getPlatform():PlatformRef',
  'GetTestability',
  'GetTestability.addToWindow(registry:TestabilityRegistry):void',
  'GetTestability.findTestabilityInTree(registry:TestabilityRegistry, elem:any, findInAncestors:boolean):Testability',
  'group(steps:AnimationMetadata[]):AnimationGroupMetadata',
  'HostBindingMetadata',
  'HostBindingMetadata.constructor(hostPropertyName?:string)',
  'HostBindingMetadata.hostPropertyName?:string',
  'HostBindingMetadataFactory',
  'HostListenerMetadata',
  'HostListenerMetadata.args?:string[]',
  'HostListenerMetadata.constructor(eventName:string, args?:string[])',
  'HostListenerMetadata.eventName:string',
  'HostListenerMetadataFactory',
  'HostMetadata',
  'HostMetadata.toString():string',
  'HostMetadataFactory',
  'InjectableMetadata',
  'InjectableMetadata.constructor()',
  'InjectableMetadataFactory',
  'InjectMetadata',
  'InjectMetadata.constructor(token:any)',
  'InjectMetadata.token:any',
  'InjectMetadata.toString():string',
  'InjectMetadataFactory',
  'Injector',
  'Injector.get(token:any, notFoundValue?:any):any',
  'Injector.THROW_IF_NOT_FOUND:any',
  'InputMetadata',
  'InputMetadata.bindingPropertyName?:string',
  'InputMetadata.constructor(bindingPropertyName?:string)',
  'InputMetadataFactory',
  'InstantiationError',
  'InstantiationError.addKey(injector:ReflectiveInjector, key:ReflectiveKey):void',
  'InstantiationError.causeKey:ReflectiveKey',
  'InstantiationError.constructor(injector:ReflectiveInjector, originalException:any, originalStack:any, key:ReflectiveKey)',
  'InstantiationError.context:any',
  'InstantiationError.injectors:ReflectiveInjector[]',
  'InstantiationError.keys:ReflectiveKey[]',
  'InstantiationError.wrapperMessage:string',
  'InvalidProviderError',
  'InvalidProviderError.constructor(provider:any)',
  'isDevMode():boolean',
  'IterableDiffer',
  'IterableDiffer.diff(object:any):any',
  'IterableDiffer.onDestroy():any',
  'IterableDifferFactory',
  'IterableDifferFactory.create(cdRef:ChangeDetectorRef, trackByFn?:TrackByFn):IterableDiffer',
  'IterableDifferFactory.supports(objects:any):boolean',
  'IterableDiffers',
  'IterableDiffers.constructor(factories:IterableDifferFactory[])',
  'IterableDiffers.create(factories:IterableDifferFactory[], parent?:IterableDiffers):IterableDiffers',
  'IterableDiffers.extend(factories:IterableDifferFactory[]):Provider',
  'IterableDiffers.factories:IterableDifferFactory[]',
  'IterableDiffers.find(iterable:any):IterableDifferFactory',
  'keyframes(steps:AnimationStyleMetadata[]):AnimationKeyframesSequenceMetadata',
  'KeyValueChangeRecord',
  'KeyValueChangeRecord.constructor(key:any)',
  'KeyValueChangeRecord.currentValue:any',
  'KeyValueChangeRecord.key:any',
  'KeyValueChangeRecord.previousValue:any',
  'KeyValueChangeRecord.toString():string',
  'KeyValueDiffer',
  'KeyValueDiffer.diff(object:any):any',
  'KeyValueDiffer.onDestroy():any',
  'KeyValueDifferFactory',
  'KeyValueDifferFactory.create(cdRef:ChangeDetectorRef):KeyValueDiffer',
  'KeyValueDifferFactory.supports(objects:any):boolean',
  'KeyValueDiffers',
  'KeyValueDiffers.constructor(factories:KeyValueDifferFactory[])',
  'KeyValueDiffers.create(factories:KeyValueDifferFactory[], parent?:KeyValueDiffers):KeyValueDiffers',
  'KeyValueDiffers.extend(factories:KeyValueDifferFactory[]):Provider',
  'KeyValueDiffers.factories:KeyValueDifferFactory[]',
  'KeyValueDiffers.find(kv:Object):KeyValueDifferFactory',
  'lockRunMode():void',
  'NgZone',
  'NgZone.assertInAngularZone():void',
  'NgZone.assertNotInAngularZone():void',
  'NgZone.constructor({enableLongStackTrace=false}:any)',
  'NgZone.hasPendingMacrotasks:boolean',
  'NgZone.hasPendingMicrotasks:boolean',
  'NgZone.isInAngularZone():boolean',
  'NgZone.isStable:boolean',
  'NgZone.onError:EventEmitter<any>',
  'NgZone.onMicrotaskEmpty:EventEmitter<any>',
  'NgZone.onStable:EventEmitter<any>',
  'NgZone.onUnstable:EventEmitter<any>',
  'NgZone.run(fn:() => any):any',
  'NgZone.runGuarded(fn:() => any):any',
  'NgZone.runOutsideAngular(fn:() => any):any',
  'NgZoneError',
  'NgZoneError.constructor(error:any, stackTrace:any)',
  'NgZoneError.error:any',
  'NgZoneError.stackTrace:any',
  'NoAnnotationError',
  'NoAnnotationError.constructor(typeOrFunc:any, params:any[][])',
  'NoProviderError',
  'NoProviderError.constructor(injector:ReflectiveInjector, key:ReflectiveKey)',
  'OnChanges',
  'OnChanges.ngOnChanges(changes:SimpleChanges):any',
  'OnDestroy',
  'OnDestroy.ngOnDestroy():any',
  'OnInit',
  'OnInit.ngOnInit():any',
  'OpaqueToken',
  'OpaqueToken.constructor(_desc:string)',
  'OpaqueToken.toString():string',
  'OptionalMetadata',
  'OptionalMetadata.toString():string',
  'OptionalMetadataFactory',
  'OutOfBoundsError',
  'OutOfBoundsError.constructor(index:any)',
  'OutputMetadata',
  'OutputMetadata.bindingPropertyName?:string',
  'OutputMetadata.constructor(bindingPropertyName?:string)',
  'OutputMetadataFactory',
  'PipeMetadata',
  'PipeMetadata.constructor({name,pure}:{name:string, pure?:boolean})',
  'PipeMetadata.name:string',
  'PipeMetadata.pure:boolean',
  'PipeMetadataFactory',
  'PipeTransform',
  'PipeTransform.transform(value:any, args:any[]):any',
  'PlatformRef',
  'PlatformRef.dispose():void',
  'PlatformRef.disposed:boolean',
  'PlatformRef.injector:Injector',
  'PlatformRef.registerDisposeListener(dispose:() => void):void',
  'provide(token:any, {useClass,useValue,useExisting,useFactory,deps,multi}:{useClass?:Type, useValue?:any, useExisting?:any, useFactory?:Function, deps?:Object[], multi?:boolean}):Provider',
  'Provider',
  'Provider.constructor(token:any, {useClass,useValue,useExisting,useFactory,deps,multi}:{useClass?:Type, useValue?:any, useExisting?:any, useFactory?:Function, deps?:Object[], multi?:boolean})',
  'Provider.dependencies:Object[]',
  'Provider.multi:boolean',
  'Provider.token:any',
  'Provider.useClass:Type',
  'Provider.useExisting:any',
  'Provider.useFactory:Function',
  'Provider.useValue:any',
  'ProviderBuilder',
  'ProviderBuilder.constructor(token:any)',
  'ProviderBuilder.toAlias(aliasToken:any):Provider',
  'ProviderBuilder.toClass(type:Type):Provider',
  'ProviderBuilder.toFactory(factory:Function, dependencies?:any[]):Provider',
  'ProviderBuilder.token:any',
  'ProviderBuilder.toValue(value:any):Provider',
  'QueryList.changes:Observable<any>',
  'QueryList.dirty:any',
  'QueryList.filter(fn:(item: T, index?: number) => boolean):T[]',
  'QueryList.first:T',
  'QueryList.forEach(fn:(item: T, index?: number) => void):void',
  'QueryList.last:T',
  'QueryList.length:number',
  'QueryList.map(fn:(item: T, index?: number) => U):U[]',
  'QueryList.notifyOnChanges():void',
  'QueryList.reduce(fn:(acc: U, item: T, index?: number) => U, init:U):U',
  'QueryList.reset(res:Array<T|any[]>):void',
  'QueryList.setDirty():any',
  'QueryList.toArray():T[]',
  'QueryList.toString():string',
  'QueryList<T>',
  'QueryMetadata',
  'QueryMetadata.constructor(_selector:Type|string, {descendants=false,first=false,read=null}:{descendants?:boolean, first?:boolean, read?:any}={})',
  'QueryMetadata.descendants:boolean',
  'QueryMetadata.first:boolean',
  'QueryMetadata.isVarBindingQuery:boolean',
  'QueryMetadata.isViewQuery:boolean',
  'QueryMetadata.read:any',
  'QueryMetadata.selector:any',
  'QueryMetadata.toString():string',
  'QueryMetadata.varBindings:string[]',
  'QueryMetadataFactory',
  'ReflectiveInjector',
  'ReflectiveInjector.createChildFromResolved(providers:ResolvedReflectiveProvider[]):ReflectiveInjector',
  'ReflectiveInjector.debugContext():any',
  'ReflectiveInjector.fromResolvedBindings(providers:ResolvedReflectiveProvider[]):ReflectiveInjector',
  'ReflectiveInjector.fromResolvedProviders(providers:ResolvedReflectiveProvider[], parent:Injector=null):ReflectiveInjector',
  'ReflectiveInjector.get(token:any, notFoundValue?:any):any',
  'ReflectiveInjector.instantiateResolved(provider:ResolvedReflectiveProvider):any',
  'ReflectiveInjector.parent:Injector',
  'ReflectiveInjector.resolve(providers:Array<Type|Provider|{[k:string]:any}|any[]>):ResolvedReflectiveProvider[]',
  'ReflectiveInjector.resolveAndCreate(providers:Array<Type|Provider|{[k:string]:any}|any[]>, parent:Injector=null):ReflectiveInjector',
  'ReflectiveInjector.resolveAndCreateChild(providers:Array<Type|Provider|{[k:string]:any}|any[]>):ReflectiveInjector',
  'ReflectiveInjector.resolveAndInstantiate(provider:Type|Provider):any',
  'ReflectiveKey',
  'ReflectiveKey.constructor(token:Object, id:number)',
  'ReflectiveKey.displayName:string',
  'ReflectiveKey.get(token:Object):ReflectiveKey',
  'ReflectiveKey.id:number',
  'ReflectiveKey.numberOfKeys:number',
  'ReflectiveKey.token:Object',
  'RenderComponentType',
  'RenderComponentType.constructor(id:string, templateUrl:string, slotCount:number, encapsulation:ViewEncapsulation, styles:Array<string|any[]>)',
  'RenderComponentType.encapsulation:ViewEncapsulation',
  'RenderComponentType.id:string',
  'RenderComponentType.slotCount:number',
  'RenderComponentType.styles:Array<string|any[]>',
  'RenderComponentType.templateUrl:string',
  'Renderer',
  'Renderer.animate(element:any, startingStyles:AnimationStyles, keyframes:AnimationKeyframe[], duration:number, delay:number, easing:string):AnimationPlayer',
  'Renderer.attachViewAfter(node:any, viewRootNodes:any[]):void',
  'Renderer.createElement(parentElement:any, name:string, debugInfo?:RenderDebugInfo):any',
  'Renderer.createTemplateAnchor(parentElement:any, debugInfo?:RenderDebugInfo):any',
  'Renderer.createText(parentElement:any, value:string, debugInfo?:RenderDebugInfo):any',
  'Renderer.createViewRoot(hostElement:any):any',
  'Renderer.destroyView(hostElement:any, viewAllNodes:any[]):void',
  'Renderer.detachView(viewRootNodes:any[]):void',
  'Renderer.invokeElementMethod(renderElement:any, methodName:string, args?:any[]):any',
  'Renderer.listen(renderElement:any, name:string, callback:Function):Function',
  'Renderer.listenGlobal(target:string, name:string, callback:Function):Function',
  'Renderer.projectNodes(parentElement:any, nodes:any[]):void',
  'Renderer.selectRootElement(selectorOrNode:string|any, debugInfo?:RenderDebugInfo):any',
  'Renderer.setBindingDebugInfo(renderElement:any, propertyName:string, propertyValue:string):void',
  'Renderer.setElementAttribute(renderElement:any, attributeName:string, attributeValue:string):void',
  'Renderer.setElementClass(renderElement:any, className:string, isAdd:boolean):any',
  'Renderer.setElementProperty(renderElement:any, propertyName:string, propertyValue:any):void',
  'Renderer.setElementStyle(renderElement:any, styleName:string, styleValue:string):any',
  'Renderer.setText(renderNode:any, text:string):any',
  'ResolvedReflectiveBinding',
  'ResolvedReflectiveFactory',
  'ResolvedReflectiveFactory.constructor(factory:Function, dependencies:ReflectiveDependency[])',
  'ResolvedReflectiveFactory.dependencies:ReflectiveDependency[]',
  'ResolvedReflectiveFactory.factory:Function',
  'ResolvedReflectiveProvider',
  'ResolvedReflectiveProvider.key:ReflectiveKey',
  'ResolvedReflectiveProvider.multiProvider:boolean',
  'ResolvedReflectiveProvider.resolvedFactories:ResolvedReflectiveFactory[]',
  'resolveForwardRef(type:any):any',
  'RootRenderer',
  'RootRenderer.renderComponent(componentType:RenderComponentType):Renderer',
  'SelfMetadata',
  'SelfMetadata.toString():string',
  'SelfMetadataFactory',
  'sequence(steps:AnimationMetadata[]):AnimationSequenceMetadata',
  'setTestabilityGetter(getter:GetTestability):void',
  'SimpleChange',
  'SimpleChange.constructor(previousValue:any, currentValue:any)',
  'SimpleChange.currentValue:any',
  'SimpleChange.isFirstChange():boolean',
  'SimpleChange.previousValue:any',
  'SimpleChanges',
  'SkipSelfMetadata',
  'SkipSelfMetadata.toString():string',
  'SkipSelfMetadataFactory',
  'state(stateNameExpr:string, styles:AnimationStyleMetadata):AnimationStateDeclarationMetadata',
  'style(tokens:string|{[key:string]:string|number}|Array<string|{[key:string]:string|number}>):AnimationStyleMetadata',
  'SystemJsCmpFactoryResolver',
  'SystemJsCmpFactoryResolver.clearCache():void',
  'SystemJsCmpFactoryResolver.resolveComponent(componentType:string|Type):Promise<ComponentFactory<any>>',
  'SystemJsComponentResolver',
  'SystemJsComponentResolver.clearCache():void',
  'SystemJsComponentResolver.constructor(_resolver:ComponentResolver)',
  'SystemJsComponentResolver.resolveComponent(componentType:string|Type):Promise<ComponentFactory<any>>',
  'TemplateRef.createEmbeddedView(context:C):EmbeddedViewRef<C>',
  'TemplateRef.elementRef:ElementRef',
  'TemplateRef<C>',
  'Testability',
  'Testability.constructor(_ngZone:NgZone)',
  'Testability.decreasePendingRequestCount():number',
  'Testability.findBindings(using:any, provider:string, exactMatch:boolean):any[]',
  'Testability.findProviders(using:any, provider:string, exactMatch:boolean):any[]',
  'Testability.getPendingRequestCount():number',
  'Testability.increasePendingRequestCount():number',
  'Testability.isStable():boolean',
  'Testability.whenStable(callback:Function):void',
  'TestabilityRegistry',
  'TestabilityRegistry.constructor()',
  'TestabilityRegistry.findTestabilityInTree(elem:Node, findInAncestors:boolean=true):Testability',
  'TestabilityRegistry.getAllRootElements():any[]',
  'TestabilityRegistry.getAllTestabilities():Testability[]',
  'TestabilityRegistry.getTestability(elem:any):Testability',
  'TestabilityRegistry.registerApplication(token:any, testability:Testability):any',
  'TrackByFn',
  'transition(stateChangeExpr:string, steps:AnimationMetadata|AnimationMetadata[]):AnimationStateTransitionMetadata',
  'trigger(name:string, animation:AnimationMetadata[]):AnimationEntryMetadata',
  'TypeDecorator',
  'TypeDecorator.annotations:any[]',
  'TypeDecorator.Class(obj:ClassDefinition):ConcreteType',
  'var __core_private__:any',
  'var Attribute:AttributeMetadataFactory',
  'var Component:ComponentMetadataFactory',
  'var ContentChild:ContentChildMetadataFactory',
  'var ContentChildren:ContentChildrenMetadataFactory',
  'var Directive:DirectiveMetadataFactory',
  'var Host:HostMetadataFactory',
  'var HostBinding:HostBindingMetadataFactory',
  'var HostListener:HostListenerMetadataFactory',
  'var Inject:InjectMetadataFactory',
  'var Injectable:InjectableMetadataFactory',
  'var Input:InputMetadataFactory',
  'var Optional:OptionalMetadataFactory',
  'var Output:OutputMetadataFactory',
  'var Pipe:PipeMetadataFactory',
  'var Query:QueryMetadataFactory',
  'var Self:SelfMetadataFactory',
  'var SkipSelf:SkipSelfMetadataFactory',
  'var Type:any',
  'var ViewChild:ViewChildMetadataFactory',
  'var ViewChildren:ViewChildrenMetadataFactory',
  'var ViewQuery:QueryMetadataFactory',
  'var wtfCreateScope:(signature: string, flags?: any) => impl.WtfScopeFn',
  'var wtfEndTimeRange:(range: any) => void',
  'var wtfLeave:<T>(scope: any, returnValue?: T) => T',
  'var wtfStartTimeRange:(rangeType: string, action: string) => any',
  'ViewChildMetadata',
  'ViewChildMetadata.constructor(_selector:Type|string, {read=null}:{read?:any}={})',
  'ViewChildMetadataFactory',
  'ViewChildrenMetadata',
  'ViewChildrenMetadata.constructor(_selector:Type|string, {read=null}:{read?:any}={})',
  'ViewChildrenMetadataFactory',
  'ViewContainerRef',
  'ViewContainerRef.clear():void',
  'ViewContainerRef.createComponent(componentFactory:ComponentFactory<C>, index?:number, injector?:Injector, projectableNodes?:any[][]):ComponentRef<C>',
  'ViewContainerRef.createEmbeddedView(templateRef:TemplateRef<C>, context?:C, index?:number):EmbeddedViewRef<C>',
  'ViewContainerRef.detach(index?:number):ViewRef',
  'ViewContainerRef.element:ElementRef',
  'ViewContainerRef.get(index:number):ViewRef',
  'ViewContainerRef.indexOf(viewRef:ViewRef):number',
  'ViewContainerRef.injector:Injector',
  'ViewContainerRef.insert(viewRef:ViewRef, index?:number):ViewRef',
  'ViewContainerRef.length:number',
  'ViewContainerRef.parentInjector:Injector',
  'ViewContainerRef.remove(index?:number):void',
  'ViewDecorator',
  'ViewDecorator.View(obj:{templateUrl?:string, template?:string, directives?:Array<Type|any[]>, pipes?:Array<Type|any[]>, renderer?:string, styles?:string[], styleUrls?:string[], animations?:AnimationEntryMetadata[], interpolation?:[string, string]}):ViewDecorator',
  'ViewEncapsulation',
  'ViewEncapsulation.Emulated',
  'ViewEncapsulation.Native',
  'ViewEncapsulation.None',
  'ViewMetadata',
  'ViewMetadata.animations:AnimationEntryMetadata[]',
  'ViewMetadata.constructor({templateUrl,template,directives,pipes,encapsulation,styles,styleUrls,animations,interpolation}:{templateUrl?:string, template?:string, directives?:Array<Type|any[]>, pipes?:Array<Type|any[]>, encapsulation?:ViewEncapsulation, styles?:string[], styleUrls?:string[], animations?:AnimationEntryMetadata[], interpolation?:[string, string]}={})',
  'ViewMetadata.directives:Array<Type|any[]>',
  'ViewMetadata.encapsulation:ViewEncapsulation',
  'ViewMetadata.interpolation:[string, string]',
  'ViewMetadata.pipes:Array<Type|any[]>',
  'ViewMetadata.styles:string[]',
  'ViewMetadata.styleUrls:string[]',
  'ViewMetadata.template:string',
  'ViewMetadata.templateUrl:string',
  'ViewMetadataFactory',
  'ViewQueryMetadata',
  'ViewQueryMetadata.constructor(_selector:Type|string, {descendants=false,first=false,read=null}:{descendants?:boolean, first?:boolean, read?:any}={})',
  'ViewQueryMetadata.isViewQuery:any',
  'ViewQueryMetadata.toString():string',
  'ViewRef',
  'ViewRef.destroyed:boolean',
  'ViewRef.onDestroy(callback:Function):any',
  'WrappedException',
  'WrappedException.constructor(_wrapperMessage:string, _originalException:any, _originalStack?:any, _context?:any)',
  'WrappedException.context:any',
  'WrappedException.message:string',
  'WrappedException.originalException:any',
  'WrappedException.originalStack:any',
  'WrappedException.toString():string',
  'WrappedException.wrapperMessage:string',
  'WrappedException.wrapperStack:any',
  'WrappedValue',
  'WrappedValue.constructor(wrapped:any)',
  'WrappedValue.wrap(value:any):WrappedValue',
  'WrappedValue.wrapped:any',
  'WtfScopeFn',
];

const CORE_TESTING = [
  'async(fn:Function):Function',
  'beforeEach(fn:Function):void',
  'beforeEachProviders(fn:() => Array<any>):void',
  'clearPendingTimers():void',
  'discardPeriodicTasks():void',
  'fakeAsync(fn:Function):Function',
  'fit(name:string, fn:Function, timeOut:number=null):void',
  'flushMicrotasks():void',
  'getTestInjector():any',
  'getTypeOf(instance:any):any',
  'iit(name:string, fn:Function, timeOut:number=null):void',
  'inject(tokens:any[], fn:Function):Function',
  'injectAsync(tokens:any[], fn:Function):Function',
  'InjectSetupWrapper',
  'InjectSetupWrapper.constructor(_providers:() => any)',
  'InjectSetupWrapper.inject(tokens:any[], fn:Function):Function',
  'InjectSetupWrapper.injectAsync(tokens:any[], fn:Function):Function',
  'instantiateType(type:Function, params:any[]=[]):any',
  'it(name:string, fn:Function, timeOut:number=null):void',
  'Log',
  'Log.add(value:any):void',
  'Log.clear():void',
  'Log.constructor()',
  'Log.fn(value:any):any',
  'Log.logItems:any[]',
  'Log.result():string',
  'MockApplicationRef',
  'MockApplicationRef.bootstrap(componentFactory:ComponentFactory<C>):ComponentRef<C>',
  'MockApplicationRef.componentTypes:Type[]',
  'MockApplicationRef.dispose():void',
  'MockApplicationRef.injector:Injector',
  'MockApplicationRef.registerBootstrapListener(listener:(ref: ComponentRef<any>) => void):void',
  'MockApplicationRef.registerDisposeListener(dispose:() => void):void',
  'MockApplicationRef.run(callback:Function):any',
  'MockApplicationRef.tick():void',
  'MockApplicationRef.waitForAsyncInitializers():Promise<any>',
  'MockApplicationRef.zone:NgZone',
  'MockNgZone',
  'MockNgZone.constructor()',
  'MockNgZone.onStable:any',
  'MockNgZone.run(fn:Function):any',
  'MockNgZone.runOutsideAngular(fn:Function):any',
  'MockNgZone.simulateZoneExit():void',
  'resetBaseTestProviders():any',
  'setBaseTestProviders(platformProviders:Array<Type|Provider|any[]>, applicationProviders:Array<Type|Provider|any[]>):any',
  'TestInjector',
  'TestInjector.addProviders(providers:Array<Type|Provider|any[]|any>):any',
  'TestInjector.applicationProviders:Array<Type|Provider|any[]|any>',
  'TestInjector.createInjector():any',
  'TestInjector.execute(tokens:any[], fn:Function):any',
  'TestInjector.get(token:any):any',
  'TestInjector.platformProviders:Array<Type|Provider|any[]|any>',
  'TestInjector.reset():any',
  'tick(millis:number=0):void',
  'var afterEach:Function',
  'var ddescribe:Function',
  'var describe:Function',
  'var expect:Function',
  'var fdescribe:Function',
  'var xdescribe:Function',
  'withProviders(providers:() => any):any',
  'xit(name:string, fn:Function, timeOut:number=null):void',
];

const COMMON = [
  'AbstractControl',
  'AbstractControl.asyncValidator:AsyncValidatorFn',
  'AbstractControl.constructor(validator:ValidatorFn, asyncValidator:AsyncValidatorFn)',
  'AbstractControl.dirty:boolean',
  'AbstractControl.errors:{[key:string]:any}',
  'AbstractControl.find(path:Array<string|number>|string):AbstractControl',
  'AbstractControl.getError(errorCode:string, path:string[]=null):any',
  'AbstractControl.hasError(errorCode:string, path:string[]=null):boolean',
  'AbstractControl.markAsDirty({onlySelf}:{onlySelf?:boolean}={}):void',
  'AbstractControl.markAsPending({onlySelf}:{onlySelf?:boolean}={}):void',
  'AbstractControl.markAsTouched():void',
  'AbstractControl.pending:boolean',
  'AbstractControl.pristine:boolean',
  'AbstractControl.root:AbstractControl',
  'AbstractControl.setErrors(errors:{[key:string]:any}, {emitEvent}:{emitEvent?:boolean}={}):void',
  'AbstractControl.setParent(parent:ControlGroup|ControlArray):void',
  'AbstractControl.status:string',
  'AbstractControl.statusChanges:Observable<any>',
  'AbstractControl.touched:boolean',
  'AbstractControl.untouched:boolean',
  'AbstractControl.updateValueAndValidity({onlySelf,emitEvent}:{onlySelf?:boolean, emitEvent?:boolean}={}):void',
  'AbstractControl.valid:boolean',
  'AbstractControl.validator:ValidatorFn',
  'AbstractControl.value:any',
  'AbstractControl.valueChanges:Observable<any>',
  'AbstractControlDirective',
  'AbstractControlDirective.control:AbstractControl',
  'AbstractControlDirective.dirty:boolean',
  'AbstractControlDirective.errors:{[key:string]:any}',
  'AbstractControlDirective.path:string[]',
  'AbstractControlDirective.pristine:boolean',
  'AbstractControlDirective.touched:boolean',
  'AbstractControlDirective.untouched:boolean',
  'AbstractControlDirective.valid:boolean',
  'AbstractControlDirective.value:any',
  'AsyncPipe',
  'AsyncPipe.constructor(_ref:ChangeDetectorRef)',
  'AsyncPipe.ngOnDestroy():void',
  'AsyncPipe.transform(obj:Observable<any>|Promise<any>|EventEmitter<any>):any',
  'CheckboxControlValueAccessor',
  'CheckboxControlValueAccessor.constructor(_renderer:Renderer, _elementRef:ElementRef)',
  'CheckboxControlValueAccessor.onChange:any',
  'CheckboxControlValueAccessor.onTouched:any',
  'CheckboxControlValueAccessor.registerOnChange(fn:(_: any) => {}):void',
  'CheckboxControlValueAccessor.registerOnTouched(fn:() => {}):void',
  'CheckboxControlValueAccessor.writeValue(value:any):void',
  'const APP_BASE_HREF:OpaqueToken',
  'const COMMON_DIRECTIVES:Type[][]',
  'const COMMON_PIPES:any',
  'const CORE_DIRECTIVES:Type[]',
  'const FORM_DIRECTIVES:Type[]',
  'const FORM_PROVIDERS:Type[]',
  'const NG_ASYNC_VALIDATORS:OpaqueToken',
  'const NG_VALIDATORS:OpaqueToken',
  'const NG_VALUE_ACCESSOR:OpaqueToken',
  'Control',
  'Control.constructor(value:any=null, validator:ValidatorFn=null, asyncValidator:AsyncValidatorFn=null)',
  'Control.registerOnChange(fn:Function):void',
  'Control.updateValue(value:any, {onlySelf,emitEvent,emitModelToViewChange}:{onlySelf?:boolean, emitEvent?:boolean, emitModelToViewChange?:boolean}={}):void',
  'ControlArray',
  'ControlArray.at(index:number):AbstractControl',
  'ControlArray.constructor(controls:AbstractControl[], validator:ValidatorFn=null, asyncValidator:AsyncValidatorFn=null)',
  'ControlArray.controls:AbstractControl[]',
  'ControlArray.insert(index:number, control:AbstractControl):void',
  'ControlArray.length:number',
  'ControlArray.push(control:AbstractControl):void',
  'ControlArray.removeAt(index:number):void',
  'ControlContainer',
  'ControlContainer.formDirective:Form',
  'ControlContainer.name:string',
  'ControlContainer.path:string[]',
  'ControlGroup',
  'ControlGroup.addControl(name:string, control:AbstractControl):void',
  'ControlGroup.constructor(controls:{[key:string]:AbstractControl}, optionals:{[key:string]:boolean}=null, validator:ValidatorFn=null, asyncValidator:AsyncValidatorFn=null)',
  'ControlGroup.contains(controlName:string):boolean',
  'ControlGroup.controls:{[key:string]:AbstractControl}',
  'ControlGroup.exclude(controlName:string):void',
  'ControlGroup.include(controlName:string):void',
  'ControlGroup.registerControl(name:string, control:AbstractControl):void',
  'ControlGroup.removeControl(name:string):void',
  'ControlValueAccessor',
  'ControlValueAccessor.registerOnChange(fn:any):void',
  'ControlValueAccessor.registerOnTouched(fn:any):void',
  'ControlValueAccessor.writeValue(obj:any):void',
  'CurrencyPipe',
  'CurrencyPipe.transform(value:any, currencyCode:string=\'USD\', symbolDisplay:boolean=false, digits:string=null):string',
  'DatePipe',
  'DatePipe.transform(value:any, pattern:string=\'mediumDate\'):string',
  'DecimalPipe',
  'DecimalPipe.transform(value:any, digits:string=null):string',
  'DefaultValueAccessor',
  'DefaultValueAccessor.constructor(_renderer:Renderer, _elementRef:ElementRef)',
  'DefaultValueAccessor.onChange:any',
  'DefaultValueAccessor.onTouched:any',
  'DefaultValueAccessor.registerOnChange(fn:(_: any) => void):void',
  'DefaultValueAccessor.registerOnTouched(fn:() => void):void',
  'DefaultValueAccessor.writeValue(value:any):void',
  'Form',
  'Form.addControl(dir:NgControl):void',
  'Form.addControlGroup(dir:NgControlGroup):void',
  'Form.getControl(dir:NgControl):Control',
  'Form.getControlGroup(dir:NgControlGroup):ControlGroup',
  'Form.removeControl(dir:NgControl):void',
  'Form.removeControlGroup(dir:NgControlGroup):void',
  'Form.updateModel(dir:NgControl, value:any):void',
  'FormBuilder',
  'FormBuilder.array(controlsConfig:any[], validator:ValidatorFn=null, asyncValidator:AsyncValidatorFn=null):ControlArray',
  'FormBuilder.control(value:Object, validator:ValidatorFn=null, asyncValidator:AsyncValidatorFn=null):Control',
  'FormBuilder.group(controlsConfig:{[key:string]:any}, extra:{[key:string]:any}=null):ControlGroup',
  'HashLocationStrategy',
  'HashLocationStrategy.back():void',
  'HashLocationStrategy.constructor(_platformLocation:PlatformLocation, _baseHref?:string)',
  'HashLocationStrategy.forward():void',
  'HashLocationStrategy.getBaseHref():string',
  'HashLocationStrategy.onPopState(fn:UrlChangeListener):void',
  'HashLocationStrategy.path():string',
  'HashLocationStrategy.prepareExternalUrl(internal:string):string',
  'HashLocationStrategy.pushState(state:any, title:string, path:string, queryParams:string):any',
  'HashLocationStrategy.replaceState(state:any, title:string, path:string, queryParams:string):any',
  'I18nPluralPipe',
  'I18nPluralPipe.transform(value:number, pluralMap:{[count:string]:string}):string',
  'I18nSelectPipe',
  'I18nSelectPipe.transform(value:string, mapping:{[key:string]:string}):string',
  'JsonPipe',
  'JsonPipe.transform(value:any):string',
  'Location',
  'Location.back():void',
  'Location.constructor(platformStrategy:LocationStrategy)',
  'Location.forward():void',
  'Location.go(path:string, query:string=\'\'):void',
  'Location.isCurrentPathEqualTo(path:string, query:string=\'\'):boolean',
  'Location.joinWithSlash(start:string, end:string):string',
  'Location.normalize(url:string):string',
  'Location.normalizeQueryParams(params:string):string',
  'Location.path():string',
  'Location.prepareExternalUrl(url:string):string',
  'Location.replaceState(path:string, query:string=\'\'):void',
  'Location.stripTrailingSlash(url:string):string',
  'Location.subscribe(onNext:(value: any) => void, onThrow:(exception: any) => void=null, onReturn:() => void=null):Object',
  'LocationStrategy',
  'LocationStrategy.back():void',
  'LocationStrategy.forward():void',
  'LocationStrategy.getBaseHref():string',
  'LocationStrategy.onPopState(fn:UrlChangeListener):void',
  'LocationStrategy.path():string',
  'LocationStrategy.prepareExternalUrl(internal:string):string',
  'LocationStrategy.pushState(state:any, title:string, url:string, queryParams:string):void',
  'LocationStrategy.replaceState(state:any, title:string, url:string, queryParams:string):void',
  'LowerCasePipe',
  'LowerCasePipe.transform(value:string):string',
  'MaxLengthValidator',
  'MaxLengthValidator.constructor(maxLength:string)',
  'MaxLengthValidator.validate(c:AbstractControl):{[key:string]:any}',
  'MinLengthValidator',
  'MinLengthValidator.constructor(minLength:string)',
  'MinLengthValidator.validate(c:AbstractControl):{[key:string]:any}',
  'NgClass',
  'NgClass.constructor(_iterableDiffers:IterableDiffers, _keyValueDiffers:KeyValueDiffers, _ngEl:ElementRef, _renderer:Renderer)',
  'NgClass.initialClasses=(v:string)',
  'NgClass.ngDoCheck():void',
  'NgClass.ngOnDestroy():void',
  'NgClass.rawClass=(v:string|string[]|Set<string>|{[key:string]:any})',
  'NgControl',
  'NgControl.asyncValidator:AsyncValidatorFn',
  'NgControl.name:string',
  'NgControl.validator:ValidatorFn',
  'NgControl.valueAccessor:ControlValueAccessor',
  'NgControl.viewToModelUpdate(newValue:any):void',
  'NgControlGroup',
  'NgControlGroup.asyncValidator:AsyncValidatorFn',
  'NgControlGroup.constructor(parent:ControlContainer, _validators:any[], _asyncValidators:any[])',
  'NgControlGroup.control:ControlGroup',
  'NgControlGroup.formDirective:Form',
  'NgControlGroup.ngOnDestroy():void',
  'NgControlGroup.ngOnInit():void',
  'NgControlGroup.path:string[]',
  'NgControlGroup.validator:ValidatorFn',
  'NgControlName',
  'NgControlName.asyncValidator:AsyncValidatorFn',
  'NgControlName.constructor(_parent:ControlContainer, _validators:any[], _asyncValidators:any[], valueAccessors:ControlValueAccessor[])',
  'NgControlName.control:Control',
  'NgControlName.formDirective:any',
  'NgControlName.model:any',
  'NgControlName.ngOnChanges(changes:SimpleChanges):any',
  'NgControlName.ngOnDestroy():void',
  'NgControlName.path:string[]',
  'NgControlName.update:any',
  'NgControlName.validator:ValidatorFn',
  'NgControlName.viewModel:any',
  'NgControlName.viewToModelUpdate(newValue:any):void',
  'NgControlStatus',
  'NgControlStatus.constructor(cd:NgControl)',
  'NgControlStatus.ngClassDirty:boolean',
  'NgControlStatus.ngClassInvalid:boolean',
  'NgControlStatus.ngClassPristine:boolean',
  'NgControlStatus.ngClassTouched:boolean',
  'NgControlStatus.ngClassUntouched:boolean',
  'NgControlStatus.ngClassValid:boolean',
  'NgFor',
  'NgFor.constructor(_viewContainer:ViewContainerRef, _templateRef:TemplateRef<NgForRow>, _iterableDiffers:IterableDiffers, _cdr:ChangeDetectorRef)',
  'NgFor.ngDoCheck():any',
  'NgFor.ngForOf=(value:any)',
  'NgFor.ngForTemplate=(value:TemplateRef<NgForRow>)',
  'NgFor.ngForTrackBy=(value:TrackByFn)',
  'NgForm',
  'NgForm.addControl(dir:NgControl):void',
  'NgForm.addControlGroup(dir:NgControlGroup):void',
  'NgForm.constructor(validators:any[], asyncValidators:any[])',
  'NgForm.control:ControlGroup',
  'NgForm.controls:{[key:string]:AbstractControl}',
  'NgForm.form:ControlGroup',
  'NgForm.formDirective:Form',
  'NgForm.getControl(dir:NgControl):Control',
  'NgForm.getControlGroup(dir:NgControlGroup):ControlGroup',
  'NgForm.ngSubmit:any',
  'NgForm.onSubmit():boolean',
  'NgForm.path:string[]',
  'NgForm.removeControl(dir:NgControl):void',
  'NgForm.removeControlGroup(dir:NgControlGroup):void',
  'NgForm.submitted:boolean',
  'NgForm.updateModel(dir:NgControl, value:any):void',
  'NgFormControl',
  'NgFormControl.asyncValidator:AsyncValidatorFn',
  'NgFormControl.constructor(_validators:any[], _asyncValidators:any[], valueAccessors:ControlValueAccessor[])',
  'NgFormControl.control:Control',
  'NgFormControl.form:Control',
  'NgFormControl.model:any',
  'NgFormControl.ngOnChanges(changes:SimpleChanges):void',
  'NgFormControl.path:string[]',
  'NgFormControl.update:any',
  'NgFormControl.validator:ValidatorFn',
  'NgFormControl.viewModel:any',
  'NgFormControl.viewToModelUpdate(newValue:any):void',
  'NgFormModel',
  'NgFormModel.addControl(dir:NgControl):void',
  'NgFormModel.addControlGroup(dir:NgControlGroup):any',
  'NgFormModel.constructor(_validators:any[], _asyncValidators:any[])',
  'NgFormModel.control:ControlGroup',
  'NgFormModel.directives:NgControl[]',
  'NgFormModel.form:ControlGroup',
  'NgFormModel.formDirective:Form',
  'NgFormModel.getControl(dir:NgControl):Control',
  'NgFormModel.getControlGroup(dir:NgControlGroup):ControlGroup',
  'NgFormModel.ngOnChanges(changes:SimpleChanges):void',
  'NgFormModel.ngSubmit:any',
  'NgFormModel.onSubmit():boolean',
  'NgFormModel.path:string[]',
  'NgFormModel.removeControl(dir:NgControl):void',
  'NgFormModel.removeControlGroup(dir:NgControlGroup):any',
  'NgFormModel.submitted:boolean',
  'NgFormModel.updateModel(dir:NgControl, value:any):void',
  'NgIf',
  'NgIf.constructor(_viewContainer:ViewContainerRef, _templateRef:TemplateRef<Object>)',
  'NgIf.ngIf=(newCondition:any)',
  'NgLocalization',
  'NgLocalization.getPluralCategory(value:any):string',
  'NgModel',
  'NgModel.asyncValidator:AsyncValidatorFn',
  'NgModel.constructor(_validators:any[], _asyncValidators:any[], valueAccessors:ControlValueAccessor[])',
  'NgModel.control:Control',
  'NgModel.model:any',
  'NgModel.ngOnChanges(changes:SimpleChanges):any',
  'NgModel.path:string[]',
  'NgModel.update:any',
  'NgModel.validator:ValidatorFn',
  'NgModel.viewModel:any',
  'NgModel.viewToModelUpdate(newValue:any):void',
  'NgPlural',
  'NgPlural.cases:QueryList<NgPluralCase>',
  'NgPlural.constructor(_localization:NgLocalization)',
  'NgPlural.ngAfterContentInit():any',
  'NgPlural.ngPlural=(value:number)',
  'NgPluralCase',
  'NgPluralCase.constructor(value:string, template:TemplateRef<Object>, viewContainer:ViewContainerRef)',
  'NgPluralCase.value:string',
  'NgSelectOption',
  'NgSelectOption.constructor(_element:ElementRef, _renderer:Renderer, _select:SelectControlValueAccessor)',
  'NgSelectOption.id:string',
  'NgSelectOption.ngOnDestroy():any',
  'NgSelectOption.ngValue=(value:any)',
  'NgSelectOption.value=(value:any)',
  'NgStyle',
  'NgStyle.constructor(_differs:KeyValueDiffers, _ngEl:ElementRef, _renderer:Renderer)',
  'NgStyle.ngDoCheck():any',
  'NgStyle.rawStyle=(v:{[key:string]:string})',
  'NgSwitch',
  'NgSwitch.ngSwitch=(value:any)',
  'NgSwitchCase',
  'NgSwitchCase.constructor(viewContainer:ViewContainerRef, templateRef:TemplateRef<Object>, ngSwitch:NgSwitch)',
  'NgSwitchCase.ngSwitchCase=(value:any)',
  'NgSwitchCase.ngSwitchWhen=(value:any)',
  'NgSwitchDefault',
  'NgSwitchDefault.constructor(viewContainer:ViewContainerRef, templateRef:TemplateRef<Object>, sswitch:NgSwitch)',
  'NgTemplateOutlet',
  'NgTemplateOutlet.constructor(_viewContainerRef:ViewContainerRef)',
  'NgTemplateOutlet.ngOutletContext=(context:Object)',
  'NgTemplateOutlet.ngTemplateOutlet=(templateRef:TemplateRef<Object>)',
  'PathLocationStrategy',
  'PathLocationStrategy.back():void',
  'PathLocationStrategy.constructor(_platformLocation:PlatformLocation, href?:string)',
  'PathLocationStrategy.forward():void',
  'PathLocationStrategy.getBaseHref():string',
  'PathLocationStrategy.onPopState(fn:UrlChangeListener):void',
  'PathLocationStrategy.path():string',
  'PathLocationStrategy.prepareExternalUrl(internal:string):string',
  'PathLocationStrategy.pushState(state:any, title:string, url:string, queryParams:string):any',
  'PathLocationStrategy.replaceState(state:any, title:string, url:string, queryParams:string):any',
  'PatternValidator',
  'PatternValidator.constructor(pattern:string)',
  'PatternValidator.validate(c:AbstractControl):{[key:string]:any}',
  'PercentPipe',
  'PercentPipe.transform(value:any, digits:string=null):string',
  'PlatformLocation',
  'PlatformLocation.back():void',
  'PlatformLocation.forward():void',
  'PlatformLocation.getBaseHrefFromDOM():string',
  'PlatformLocation.hash:string',
  'PlatformLocation.onHashChange(fn:UrlChangeListener):void',
  'PlatformLocation.onPopState(fn:UrlChangeListener):void',
  'PlatformLocation.pathname:string',
  'PlatformLocation.pushState(state:any, title:string, url:string):void',
  'PlatformLocation.replaceState(state:any, title:string, url:string):void',
  'PlatformLocation.search:string',
  'RadioButtonState',
  'RadioButtonState.checked:boolean',
  'RadioButtonState.constructor(checked:boolean, value:string)',
  'RadioButtonState.value:string',
  'ReplacePipe',
  'ReplacePipe.transform(value:any, pattern:string|RegExp, replacement:Function|string):any',
  'RequiredValidator',
  'SelectControlValueAccessor',
  'SelectControlValueAccessor.constructor(_renderer:Renderer, _elementRef:ElementRef)',
  'SelectControlValueAccessor.onChange:any',
  'SelectControlValueAccessor.onTouched:any',
  'SelectControlValueAccessor.registerOnChange(fn:(value: any) => any):void',
  'SelectControlValueAccessor.registerOnTouched(fn:() => any):void',
  'SelectControlValueAccessor.value:any',
  'SelectControlValueAccessor.writeValue(value:any):void',
  'SlicePipe',
  'SlicePipe.transform(value:any, start:number, end:number=null):any',
  'UpperCasePipe',
  'UpperCasePipe.transform(value:string):string',
  'UrlChangeEvent',
  'UrlChangeEvent.type:string',
  'UrlChangeListener',
  'Validator',
  'Validator.validate(c:AbstractControl):{[key:string]:any}',
  'Validators',
  'Validators.compose(validators:ValidatorFn[]):ValidatorFn',
  'Validators.composeAsync(validators:AsyncValidatorFn[]):AsyncValidatorFn',
  'Validators.maxLength(maxLength:number):ValidatorFn',
  'Validators.minLength(minLength:number):ValidatorFn',
  'Validators.nullValidator(c:AbstractControl):{[key:string]:boolean}',
  'Validators.pattern(pattern:string):ValidatorFn',
  'Validators.required(control:AbstractControl):{[key:string]:boolean}',
];

const COMMON_TESTING = [
  'MockLocationStrategy',
  'MockLocationStrategy.back():void',
  'MockLocationStrategy.constructor()',
  'MockLocationStrategy.forward():void',
  'MockLocationStrategy.getBaseHref():string',
  'MockLocationStrategy.internalBaseHref:string',
  'MockLocationStrategy.internalPath:string',
  'MockLocationStrategy.internalTitle:string',
  'MockLocationStrategy.onPopState(fn:(value: any) => void):void',
  'MockLocationStrategy.path():string',
  'MockLocationStrategy.prepareExternalUrl(internal:string):string',
  'MockLocationStrategy.pushState(ctx:any, title:string, path:string, query:string):void',
  'MockLocationStrategy.replaceState(ctx:any, title:string, path:string, query:string):void',
  'MockLocationStrategy.simulatePopState(url:string):void',
  'MockLocationStrategy.urlChanges:string[]',
  'SpyLocation',
  'SpyLocation.back():any',
  'SpyLocation.forward():any',
  'SpyLocation.go(path:string, query:string=\'\'):any',
  'SpyLocation.isCurrentPathEqualTo(path:string, query:string=\'\'):boolean',
  'SpyLocation.normalize(url:string):string',
  'SpyLocation.path():string',
  'SpyLocation.prepareExternalUrl(url:string):string',
  'SpyLocation.replaceState(path:string, query:string=\'\'):any',
  'SpyLocation.setBaseHref(url:string):any',
  'SpyLocation.setInitialPath(url:string):any',
  'SpyLocation.simulateHashChange(pathname:string):any',
  'SpyLocation.simulateUrlPop(pathname:string):any',
  'SpyLocation.subscribe(onNext:(value: any) => void, onThrow:(error: any) => void=null, onReturn:() => void=null):Object',
  'SpyLocation.urlChanges:string[]',
];

const COMPILER = [
  'AttrAst',
  'AttrAst.constructor(name:string, value:string, sourceSpan:ParseSourceSpan)',
  'AttrAst.name:string',
  'AttrAst.sourceSpan:ParseSourceSpan',
  'AttrAst.value:string',
  'AttrAst.visit(visitor:TemplateAstVisitor, context:any):any',
  'BoundDirectivePropertyAst',
  'BoundDirectivePropertyAst.constructor(directiveName:string, templateName:string, value:AST, sourceSpan:ParseSourceSpan)',
  'BoundDirectivePropertyAst.directiveName:string',
  'BoundDirectivePropertyAst.sourceSpan:ParseSourceSpan',
  'BoundDirectivePropertyAst.templateName:string',
  'BoundDirectivePropertyAst.value:AST',
  'BoundDirectivePropertyAst.visit(visitor:TemplateAstVisitor, context:any):any',
  'BoundElementPropertyAst',
  'BoundElementPropertyAst.constructor(name:string, type:PropertyBindingType, securityContext:SecurityContext, value:AST, unit:string, sourceSpan:ParseSourceSpan)',
  'BoundElementPropertyAst.name:string',
  'BoundElementPropertyAst.securityContext:SecurityContext',
  'BoundElementPropertyAst.sourceSpan:ParseSourceSpan',
  'BoundElementPropertyAst.type:PropertyBindingType',
  'BoundElementPropertyAst.unit:string',
  'BoundElementPropertyAst.value:AST',
  'BoundElementPropertyAst.visit(visitor:TemplateAstVisitor, context:any):any',
  'BoundEventAst',
  'BoundEventAst.constructor(name:string, target:string, handler:AST, sourceSpan:ParseSourceSpan)',
  'BoundEventAst.fullName:any',
  'BoundEventAst.handler:AST',
  'BoundEventAst.name:string',
  'BoundEventAst.sourceSpan:ParseSourceSpan',
  'BoundEventAst.target:string',
  'BoundEventAst.visit(visitor:TemplateAstVisitor, context:any):any',
  'BoundTextAst',
  'BoundTextAst.constructor(value:AST, ngContentIndex:number, sourceSpan:ParseSourceSpan)',
  'BoundTextAst.ngContentIndex:number',
  'BoundTextAst.sourceSpan:ParseSourceSpan',
  'BoundTextAst.value:AST',
  'BoundTextAst.visit(visitor:TemplateAstVisitor, context:any):any',
  'CompileDiDependencyMetadata',
  'CompileDiDependencyMetadata.constructor({isAttribute,isSelf,isHost,isSkipSelf,isOptional,isValue,query,viewQuery,token,value}:{isAttribute?:boolean, isSelf?:boolean, isHost?:boolean, isSkipSelf?:boolean, isOptional?:boolean, isValue?:boolean, query?:CompileQueryMetadata, viewQuery?:CompileQueryMetadata, token?:CompileTokenMetadata, value?:any}={})',
  'CompileDiDependencyMetadata.fromJson(data:{[key:string]:any}):CompileDiDependencyMetadata',
  'CompileDiDependencyMetadata.isAttribute:boolean',
  'CompileDiDependencyMetadata.isHost:boolean',
  'CompileDiDependencyMetadata.isOptional:boolean',
  'CompileDiDependencyMetadata.isSelf:boolean',
  'CompileDiDependencyMetadata.isSkipSelf:boolean',
  'CompileDiDependencyMetadata.isValue:boolean',
  'CompileDiDependencyMetadata.query:CompileQueryMetadata',
  'CompileDiDependencyMetadata.toJson():{[key:string]:any}',
  'CompileDiDependencyMetadata.token:CompileTokenMetadata',
  'CompileDiDependencyMetadata.value:any',
  'CompileDiDependencyMetadata.viewQuery:CompileQueryMetadata',
  'CompileDirectiveMetadata',
  'CompileDirectiveMetadata.changeDetection:ChangeDetectionStrategy',
  'CompileDirectiveMetadata.constructor({type,isComponent,selector,exportAs,changeDetection,inputs,outputs,hostListeners,hostProperties,hostAttributes,lifecycleHooks,providers,viewProviders,queries,viewQueries,template}:{type?:CompileTypeMetadata, isComponent?:boolean, selector?:string, exportAs?:string, changeDetection?:ChangeDetectionStrategy, inputs?:{[key:string]:string}, outputs?:{[key:string]:string}, hostListeners?:{[key:string]:string}, hostProperties?:{[key:string]:string}, hostAttributes?:{[key:string]:string}, lifecycleHooks?:LifecycleHooks[], providers?:Array<CompileProviderMetadata|CompileTypeMetadata|CompileIdentifierMetadata|any[]>, viewProviders?:Array<CompileProviderMetadata|CompileTypeMetadata|CompileIdentifierMetadata|any[]>, queries?:CompileQueryMetadata[], viewQueries?:CompileQueryMetadata[], template?:CompileTemplateMetadata}={})',
  'CompileDirectiveMetadata.create({type,isComponent,selector,exportAs,changeDetection,inputs,outputs,host,lifecycleHooks,providers,viewProviders,queries,viewQueries,template}:{type?:CompileTypeMetadata, isComponent?:boolean, selector?:string, exportAs?:string, changeDetection?:ChangeDetectionStrategy, inputs?:string[], outputs?:string[], host?:{[key:string]:string}, lifecycleHooks?:LifecycleHooks[], providers?:Array<CompileProviderMetadata|CompileTypeMetadata|CompileIdentifierMetadata|any[]>, viewProviders?:Array<CompileProviderMetadata|CompileTypeMetadata|CompileIdentifierMetadata|any[]>, queries?:CompileQueryMetadata[], viewQueries?:CompileQueryMetadata[], template?:CompileTemplateMetadata}={}):CompileDirectiveMetadata',
  'CompileDirectiveMetadata.exportAs:string',
  'CompileDirectiveMetadata.fromJson(data:{[key:string]:any}):CompileDirectiveMetadata',
  'CompileDirectiveMetadata.hostAttributes:{[key:string]:string}',
  'CompileDirectiveMetadata.hostListeners:{[key:string]:string}',
  'CompileDirectiveMetadata.hostProperties:{[key:string]:string}',
  'CompileDirectiveMetadata.identifier:CompileIdentifierMetadata',
  'CompileDirectiveMetadata.inputs:{[key:string]:string}',
  'CompileDirectiveMetadata.isComponent:boolean',
  'CompileDirectiveMetadata.lifecycleHooks:LifecycleHooks[]',
  'CompileDirectiveMetadata.outputs:{[key:string]:string}',
  'CompileDirectiveMetadata.providers:CompileProviderMetadata[]',
  'CompileDirectiveMetadata.queries:CompileQueryMetadata[]',
  'CompileDirectiveMetadata.selector:string',
  'CompileDirectiveMetadata.template:CompileTemplateMetadata',
  'CompileDirectiveMetadata.toJson():{[key:string]:any}',
  'CompileDirectiveMetadata.type:CompileTypeMetadata',
  'CompileDirectiveMetadata.viewProviders:CompileProviderMetadata[]',
  'CompileDirectiveMetadata.viewQueries:CompileQueryMetadata[]',
  'CompileFactoryMetadata',
  'CompileFactoryMetadata.constructor({runtime,name,moduleUrl,prefix,diDeps,value}:{runtime?:Function, name?:string, prefix?:string, moduleUrl?:string, value?:boolean, diDeps?:CompileDiDependencyMetadata[]})',
  'CompileFactoryMetadata.diDeps:CompileDiDependencyMetadata[]',
  'CompileFactoryMetadata.fromJson(data:{[key:string]:any}):CompileFactoryMetadata',
  'CompileFactoryMetadata.identifier:CompileIdentifierMetadata',
  'CompileFactoryMetadata.moduleUrl:string',
  'CompileFactoryMetadata.name:string',
  'CompileFactoryMetadata.prefix:string',
  'CompileFactoryMetadata.runtime:Function',
  'CompileFactoryMetadata.toJson():{[key:string]:any}',
  'CompileFactoryMetadata.value:any',
  'CompileIdentifierMetadata',
  'CompileIdentifierMetadata.constructor({runtime,name,moduleUrl,prefix,value}:{runtime?:any, name?:string, moduleUrl?:string, prefix?:string, value?:any}={})',
  'CompileIdentifierMetadata.fromJson(data:{[key:string]:any}):CompileIdentifierMetadata',
  'CompileIdentifierMetadata.identifier:CompileIdentifierMetadata',
  'CompileIdentifierMetadata.moduleUrl:string',
  'CompileIdentifierMetadata.name:string',
  'CompileIdentifierMetadata.prefix:string',
  'CompileIdentifierMetadata.runtime:any',
  'CompileIdentifierMetadata.toJson():{[key:string]:any}',
  'CompileIdentifierMetadata.value:any',
  'CompileMetadataWithIdentifier',
  'CompileMetadataWithIdentifier.identifier:CompileIdentifierMetadata',
  'CompileMetadataWithIdentifier.toJson():{[key:string]:any}',
  'CompileMetadataWithType',
  'CompileMetadataWithType.identifier:CompileIdentifierMetadata',
  'CompileMetadataWithType.toJson():{[key:string]:any}',
  'CompileMetadataWithType.type:CompileTypeMetadata',
  'CompilePipeMetadata',
  'CompilePipeMetadata.constructor({type,name,pure,lifecycleHooks}:{type?:CompileTypeMetadata, name?:string, pure?:boolean, lifecycleHooks?:LifecycleHooks[]}={})',
  'CompilePipeMetadata.fromJson(data:{[key:string]:any}):CompilePipeMetadata',
  'CompilePipeMetadata.identifier:CompileIdentifierMetadata',
  'CompilePipeMetadata.lifecycleHooks:LifecycleHooks[]',
  'CompilePipeMetadata.name:string',
  'CompilePipeMetadata.pure:boolean',
  'CompilePipeMetadata.toJson():{[key:string]:any}',
  'CompilePipeMetadata.type:CompileTypeMetadata',
  'CompileProviderMetadata',
  'CompileProviderMetadata.constructor({token,useClass,useValue,useExisting,useFactory,deps,multi}:{token?:CompileTokenMetadata, useClass?:CompileTypeMetadata, useValue?:any, useExisting?:CompileTokenMetadata, useFactory?:CompileFactoryMetadata, deps?:CompileDiDependencyMetadata[], multi?:boolean})',
  'CompileProviderMetadata.deps:CompileDiDependencyMetadata[]',
  'CompileProviderMetadata.fromJson(data:{[key:string]:any}):CompileProviderMetadata',
  'CompileProviderMetadata.multi:boolean',
  'CompileProviderMetadata.toJson():{[key:string]:any}',
  'CompileProviderMetadata.token:CompileTokenMetadata',
  'CompileProviderMetadata.useClass:CompileTypeMetadata',
  'CompileProviderMetadata.useExisting:CompileTokenMetadata',
  'CompileProviderMetadata.useFactory:CompileFactoryMetadata',
  'CompileProviderMetadata.useValue:any',
  'CompileQueryMetadata',
  'CompileQueryMetadata.constructor({selectors,descendants,first,propertyName,read}:{selectors?:Array<CompileTokenMetadata>, descendants?:boolean, first?:boolean, propertyName?:string, read?:CompileTokenMetadata}={})',
  'CompileQueryMetadata.descendants:boolean',
  'CompileQueryMetadata.first:boolean',
  'CompileQueryMetadata.fromJson(data:{[key:string]:any}):CompileQueryMetadata',
  'CompileQueryMetadata.propertyName:string',
  'CompileQueryMetadata.read:CompileTokenMetadata',
  'CompileQueryMetadata.selectors:Array<CompileTokenMetadata>',
  'CompileQueryMetadata.toJson():{[key:string]:any}',
  'CompilerConfig',
  'CompilerConfig.constructor({renderTypes=newDefaultRenderTypes(),defaultEncapsulation=ViewEncapsulation.Emulated,genDebugInfo,logBindingUpdate,useJit=true,platformDirectives=[],platformPipes=[]}:{renderTypes?:RenderTypes, defaultEncapsulation?:ViewEncapsulation, genDebugInfo?:boolean, logBindingUpdate?:boolean, useJit?:boolean, platformDirectives?:any[], platformPipes?:any[]}={})',
  'CompilerConfig.defaultEncapsulation:ViewEncapsulation',
  'CompilerConfig.genDebugInfo:boolean',
  'CompilerConfig.logBindingUpdate:boolean',
  'CompilerConfig.platformDirectives:any[]',
  'CompilerConfig.platformPipes:any[]',
  'CompilerConfig.renderTypes:RenderTypes',
  'CompilerConfig.useJit:boolean',
  'CompileTemplateMetadata',
  'CompileTemplateMetadata.animations:CompileAnimationEntryMetadata[]',
  'CompileTemplateMetadata.constructor({encapsulation,template,templateUrl,styles,styleUrls,animations,ngContentSelectors,interpolation}:{encapsulation?:ViewEncapsulation, template?:string, templateUrl?:string, styles?:string[], styleUrls?:string[], ngContentSelectors?:string[], animations?:CompileAnimationEntryMetadata[], interpolation?:[string, string]}={})',
  'CompileTemplateMetadata.encapsulation:ViewEncapsulation',
  'CompileTemplateMetadata.fromJson(data:{[key:string]:any}):CompileTemplateMetadata',
  'CompileTemplateMetadata.interpolation:[string, string]',
  'CompileTemplateMetadata.ngContentSelectors:string[]',
  'CompileTemplateMetadata.styles:string[]',
  'CompileTemplateMetadata.styleUrls:string[]',
  'CompileTemplateMetadata.template:string',
  'CompileTemplateMetadata.templateUrl:string',
  'CompileTemplateMetadata.toJson():{[key:string]:any}',
  'CompileTokenMetadata',
  'CompileTokenMetadata.assetCacheKey:any',
  'CompileTokenMetadata.constructor({value,identifier,identifierIsInstance}:{value?:any, identifier?:CompileIdentifierMetadata, identifierIsInstance?:boolean})',
  'CompileTokenMetadata.equalsTo(token2:CompileTokenMetadata):boolean',
  'CompileTokenMetadata.fromJson(data:{[key:string]:any}):CompileTokenMetadata',
  'CompileTokenMetadata.identifier:CompileIdentifierMetadata',
  'CompileTokenMetadata.identifierIsInstance:boolean',
  'CompileTokenMetadata.name:string',
  'CompileTokenMetadata.runtimeCacheKey:any',
  'CompileTokenMetadata.toJson():{[key:string]:any}',
  'CompileTokenMetadata.value:any',
  'CompileTypeMetadata',
  'CompileTypeMetadata.constructor({runtime,name,moduleUrl,prefix,isHost,value,diDeps}:{runtime?:Type, name?:string, moduleUrl?:string, prefix?:string, isHost?:boolean, value?:any, diDeps?:CompileDiDependencyMetadata[]}={})',
  'CompileTypeMetadata.diDeps:CompileDiDependencyMetadata[]',
  'CompileTypeMetadata.fromJson(data:{[key:string]:any}):CompileTypeMetadata',
  'CompileTypeMetadata.identifier:CompileIdentifierMetadata',
  'CompileTypeMetadata.isHost:boolean',
  'CompileTypeMetadata.moduleUrl:string',
  'CompileTypeMetadata.name:string',
  'CompileTypeMetadata.prefix:string',
  'CompileTypeMetadata.runtime:Type',
  'CompileTypeMetadata.toJson():{[key:string]:any}',
  'CompileTypeMetadata.type:CompileTypeMetadata',
  'CompileTypeMetadata.value:any',
  'const COMPILER_PROVIDERS:Array<any|Type|{[k:string]:any}|any[]>',
  'const TEMPLATE_TRANSFORMS:any',
  'createOfflineCompileUrlResolver():UrlResolver',
  'DirectiveAst',
  'DirectiveAst.constructor(directive:CompileDirectiveMetadata, inputs:BoundDirectivePropertyAst[], hostProperties:BoundElementPropertyAst[], hostEvents:BoundEventAst[], sourceSpan:ParseSourceSpan)',
  'DirectiveAst.directive:CompileDirectiveMetadata',
  'DirectiveAst.hostEvents:BoundEventAst[]',
  'DirectiveAst.hostProperties:BoundElementPropertyAst[]',
  'DirectiveAst.inputs:BoundDirectivePropertyAst[]',
  'DirectiveAst.sourceSpan:ParseSourceSpan',
  'DirectiveAst.visit(visitor:TemplateAstVisitor, context:any):any',
  'DirectiveResolver',
  'DirectiveResolver.constructor(_reflector:ReflectorReader=reflector)',
  'DirectiveResolver.resolve(type:Type):DirectiveMetadata',
  'ElementAst',
  'ElementAst.attrs:AttrAst[]',
  'ElementAst.children:TemplateAst[]',
  'ElementAst.constructor(name:string, attrs:AttrAst[], inputs:BoundElementPropertyAst[], outputs:BoundEventAst[], references:ReferenceAst[], directives:DirectiveAst[], providers:ProviderAst[], hasViewContainer:boolean, children:TemplateAst[], ngContentIndex:number, sourceSpan:ParseSourceSpan)',
  'ElementAst.directives:DirectiveAst[]',
  'ElementAst.hasViewContainer:boolean',
  'ElementAst.inputs:BoundElementPropertyAst[]',
  'ElementAst.name:string',
  'ElementAst.ngContentIndex:number',
  'ElementAst.outputs:BoundEventAst[]',
  'ElementAst.providers:ProviderAst[]',
  'ElementAst.references:ReferenceAst[]',
  'ElementAst.sourceSpan:ParseSourceSpan',
  'ElementAst.visit(visitor:TemplateAstVisitor, context:any):any',
  'ElementSchemaRegistry',
  'ElementSchemaRegistry.getMappedPropName(propName:string):string',
  'ElementSchemaRegistry.hasProperty(tagName:string, propName:string):boolean',
  'ElementSchemaRegistry.securityContext(tagName:string, propName:string):any',
  'EmbeddedTemplateAst',
  'EmbeddedTemplateAst.attrs:AttrAst[]',
  'EmbeddedTemplateAst.children:TemplateAst[]',
  'EmbeddedTemplateAst.constructor(attrs:AttrAst[], outputs:BoundEventAst[], references:ReferenceAst[], variables:VariableAst[], directives:DirectiveAst[], providers:ProviderAst[], hasViewContainer:boolean, children:TemplateAst[], ngContentIndex:number, sourceSpan:ParseSourceSpan)',
  'EmbeddedTemplateAst.directives:DirectiveAst[]',
  'EmbeddedTemplateAst.hasViewContainer:boolean',
  'EmbeddedTemplateAst.ngContentIndex:number',
  'EmbeddedTemplateAst.outputs:BoundEventAst[]',
  'EmbeddedTemplateAst.providers:ProviderAst[]',
  'EmbeddedTemplateAst.references:ReferenceAst[]',
  'EmbeddedTemplateAst.sourceSpan:ParseSourceSpan',
  'EmbeddedTemplateAst.variables:VariableAst[]',
  'EmbeddedTemplateAst.visit(visitor:TemplateAstVisitor, context:any):any',
  'NgContentAst',
  'NgContentAst.constructor(index:number, ngContentIndex:number, sourceSpan:ParseSourceSpan)',
  'NgContentAst.index:number',
  'NgContentAst.ngContentIndex:number',
  'NgContentAst.sourceSpan:ParseSourceSpan',
  'NgContentAst.visit(visitor:TemplateAstVisitor, context:any):any',
  'NormalizedComponentWithViewDirectives',
  'NormalizedComponentWithViewDirectives.component:CompileDirectiveMetadata',
  'NormalizedComponentWithViewDirectives.constructor(component:CompileDirectiveMetadata, directives:CompileDirectiveMetadata[], pipes:CompilePipeMetadata[])',
  'NormalizedComponentWithViewDirectives.directives:CompileDirectiveMetadata[]',
  'NormalizedComponentWithViewDirectives.pipes:CompilePipeMetadata[]',
  'OfflineCompiler',
  'OfflineCompiler.compileTemplates(components:NormalizedComponentWithViewDirectives[]):SourceModule',
  'OfflineCompiler.constructor(_directiveNormalizer:DirectiveNormalizer, _templateParser:TemplateParser, _styleCompiler:StyleCompiler, _viewCompiler:ViewCompiler, _outputEmitter:OutputEmitter, _xhr:XHR)',
  'OfflineCompiler.loadAndCompileStylesheet(stylesheetUrl:string, shim:boolean, suffix:string):Promise<StyleSheetSourceWithImports>',
  'OfflineCompiler.normalizeDirectiveMetadata(directive:CompileDirectiveMetadata):Promise<CompileDirectiveMetadata>',
  'PipeResolver',
  'PipeResolver.constructor(_reflector:ReflectorReader=reflector)',
  'PipeResolver.resolve(type:Type):PipeMetadata',
  'PropertyBindingType',
  'PropertyBindingType.Animation',
  'PropertyBindingType.Attribute',
  'PropertyBindingType.Class',
  'PropertyBindingType.Property',
  'PropertyBindingType.Style',
  'ProviderAst',
  'ProviderAst.constructor(token:CompileTokenMetadata, multiProvider:boolean, eager:boolean, providers:CompileProviderMetadata[], providerType:ProviderAstType, sourceSpan:ParseSourceSpan)',
  'ProviderAst.eager:boolean',
  'ProviderAst.multiProvider:boolean',
  'ProviderAst.providers:CompileProviderMetadata[]',
  'ProviderAst.providerType:ProviderAstType',
  'ProviderAst.sourceSpan:ParseSourceSpan',
  'ProviderAst.token:CompileTokenMetadata',
  'ProviderAst.visit(visitor:TemplateAstVisitor, context:any):any',
  'ProviderAstType',
  'ProviderAstType.Builtin',
  'ProviderAstType.Component',
  'ProviderAstType.Directive',
  'ProviderAstType.PrivateService',
  'ProviderAstType.PublicService',
  'ReferenceAst',
  'ReferenceAst.constructor(name:string, value:CompileTokenMetadata, sourceSpan:ParseSourceSpan)',
  'ReferenceAst.name:string',
  'ReferenceAst.sourceSpan:ParseSourceSpan',
  'ReferenceAst.value:CompileTokenMetadata',
  'ReferenceAst.visit(visitor:TemplateAstVisitor, context:any):any',
  'RenderTypes',
  'RenderTypes.renderComment:CompileIdentifierMetadata',
  'RenderTypes.renderElement:CompileIdentifierMetadata',
  'RenderTypes.renderer:CompileIdentifierMetadata',
  'RenderTypes.renderEvent:CompileIdentifierMetadata',
  'RenderTypes.renderNode:CompileIdentifierMetadata',
  'RenderTypes.renderText:CompileIdentifierMetadata',
  'RuntimeCompiler',
  'RuntimeCompiler.clearCache():void',
  'RuntimeCompiler.constructor(_metadataResolver:CompileMetadataResolver, _templateNormalizer:DirectiveNormalizer, _templateParser:TemplateParser, _styleCompiler:StyleCompiler, _viewCompiler:ViewCompiler, _xhr:XHR, _genConfig:CompilerConfig)',
  'RuntimeCompiler.resolveComponent(component:Type|string):Promise<ComponentFactory<any>>',
  'SourceModule',
  'SourceModule.constructor(moduleUrl:string, source:string)',
  'SourceModule.moduleUrl:string',
  'SourceModule.source:string',
  'TemplateAst',
  'TemplateAst.sourceSpan:ParseSourceSpan',
  'TemplateAst.visit(visitor:TemplateAstVisitor, context:any):any',
  'TemplateAstVisitor',
  'TemplateAstVisitor.visitAttr(ast:AttrAst, context:any):any',
  'TemplateAstVisitor.visitBoundText(ast:BoundTextAst, context:any):any',
  'TemplateAstVisitor.visitDirective(ast:DirectiveAst, context:any):any',
  'TemplateAstVisitor.visitDirectiveProperty(ast:BoundDirectivePropertyAst, context:any):any',
  'TemplateAstVisitor.visitElement(ast:ElementAst, context:any):any',
  'TemplateAstVisitor.visitElementProperty(ast:BoundElementPropertyAst, context:any):any',
  'TemplateAstVisitor.visitEmbeddedTemplate(ast:EmbeddedTemplateAst, context:any):any',
  'TemplateAstVisitor.visitEvent(ast:BoundEventAst, context:any):any',
  'TemplateAstVisitor.visitNgContent(ast:NgContentAst, context:any):any',
  'TemplateAstVisitor.visitReference(ast:ReferenceAst, context:any):any',
  'TemplateAstVisitor.visitText(ast:TextAst, context:any):any',
  'TemplateAstVisitor.visitVariable(ast:VariableAst, context:any):any',
  'templateVisitAll(visitor:TemplateAstVisitor, asts:TemplateAst[], context:any=null):any[]',
  'TextAst',
  'TextAst.constructor(value:string, ngContentIndex:number, sourceSpan:ParseSourceSpan)',
  'TextAst.ngContentIndex:number',
  'TextAst.sourceSpan:ParseSourceSpan',
  'TextAst.value:string',
  'TextAst.visit(visitor:TemplateAstVisitor, context:any):any',
  'UrlResolver',
  'UrlResolver.constructor(_packagePrefix:string=null)',
  'UrlResolver.resolve(baseUrl:string, url:string):string',
  'var DEFAULT_PACKAGE_URL_PROVIDER:any',
  'VariableAst',
  'VariableAst.constructor(name:string, value:string, sourceSpan:ParseSourceSpan)',
  'VariableAst.name:string',
  'VariableAst.sourceSpan:ParseSourceSpan',
  'VariableAst.value:string',
  'VariableAst.visit(visitor:TemplateAstVisitor, context:any):any',
  'ViewResolver',
  'ViewResolver.constructor(_reflector:ReflectorReader=reflector)',
  'ViewResolver.resolve(component:Type):ViewMetadata',
  'XHR',
  'XHR.get(url:string):Promise<string>',
];

const COMPILER_TESTING = [
  'ComponentFixture.autoDetectChanges(autoDetect:boolean=true):any',
  'ComponentFixture.changeDetectorRef:ChangeDetectorRef',
  'ComponentFixture.checkNoChanges():void',
  'ComponentFixture.componentInstance:any',
  'ComponentFixture.componentRef:ComponentRef<T>',
  'ComponentFixture.constructor(componentRef:ComponentRef<T>, ngZone:NgZone, autoDetect:boolean)',
  'ComponentFixture.debugElement:DebugElement',
  'ComponentFixture.destroy():void',
  'ComponentFixture.detectChanges(checkNoChanges:boolean=true):void',
  'ComponentFixture.elementRef:ElementRef',
  'ComponentFixture.isStable():boolean',
  'ComponentFixture.nativeElement:any',
  'ComponentFixture.ngZone:NgZone',
  'ComponentFixture.whenStable():Promise<any>',
  'ComponentFixture<T>',
  'MockDirectiveResolver',
  'MockDirectiveResolver.resolve(type:Type):DirectiveMetadata',
  'MockDirectiveResolver.setProvidersOverride(type:Type, providers:any[]):void',
  'MockDirectiveResolver.setViewProvidersOverride(type:Type, viewProviders:any[]):void',
  'MockSchemaRegistry',
  'MockSchemaRegistry.attrPropMapping:{[key:string]:string}',
  'MockSchemaRegistry.constructor(existingProperties:{[key:string]:boolean}, attrPropMapping:{[key:string]:string})',
  'MockSchemaRegistry.existingProperties:{[key:string]:boolean}',
  'MockSchemaRegistry.getMappedPropName(attrName:string):string',
  'MockSchemaRegistry.hasProperty(tagName:string, property:string):boolean',
  'MockSchemaRegistry.securityContext(tagName:string, property:string):SecurityContext',
  'MockViewResolver',
  'MockViewResolver.constructor()',
  'MockViewResolver.overrideViewDirective(component:Type, from:Type, to:Type):void',
  'MockViewResolver.resolve(component:Type):ViewMetadata',
  'MockViewResolver.setAnimations(component:Type, animations:AnimationEntryMetadata[]):void',
  'MockViewResolver.setInlineTemplate(component:Type, template:string):void',
  'MockViewResolver.setView(component:Type, view:ViewMetadata):void',
  'MockXHR',
  'MockXHR.expect(url:string, response:string):any',
  'MockXHR.flush():any',
  'MockXHR.get(url:string):Promise<string>',
  'MockXHR.verifyNoOutstandingExpectations():any',
  'MockXHR.when(url:string, response:string):any',
  'TestComponentBuilder',
  'TestComponentBuilder.constructor(_injector:Injector)',
  'TestComponentBuilder.createAsync(rootComponentType:Type):Promise<ComponentFixture<any>>',
  'TestComponentBuilder.createFakeAsync(rootComponentType:Type):ComponentFixture<any>',
  'TestComponentBuilder.createSync(componentFactory:ComponentFactory<C>):ComponentFixture<C>',
  'TestComponentBuilder.overrideAnimations(componentType:Type, animations:AnimationEntryMetadata[]):TestComponentBuilder',
  'TestComponentBuilder.overrideBindings(type:Type, providers:any[]):TestComponentBuilder',
  'TestComponentBuilder.overrideDirective(componentType:Type, from:Type, to:Type):TestComponentBuilder',
  'TestComponentBuilder.overrideProviders(type:Type, providers:any[]):TestComponentBuilder',
  'TestComponentBuilder.overrideTemplate(componentType:Type, template:string):TestComponentBuilder',
  'TestComponentBuilder.overrideView(componentType:Type, view:ViewMetadata):TestComponentBuilder',
  'TestComponentBuilder.overrideViewBindings(type:Type, providers:any[]):TestComponentBuilder',
  'TestComponentBuilder.overrideViewProviders(type:Type, providers:any[]):TestComponentBuilder',
  'TestComponentRenderer',
  'TestComponentRenderer.insertRootElement(rootElementId:string):any',
  'var ComponentFixtureAutoDetect:any',
  'var ComponentFixtureNoNgZone:any',
];

const UPGRADE = [
  'UpgradeAdapter',
  'UpgradeAdapter.addProvider(provider:Type|Provider|any[]|any):void',
  'UpgradeAdapter.bootstrap(element:Element, modules?:any[], config?:IAngularBootstrapConfig):UpgradeAdapterRef',
  'UpgradeAdapter.downgradeNg2Component(type:Type):Function',
  'UpgradeAdapter.downgradeNg2Provider(token:any):Function',
  'UpgradeAdapter.upgradeNg1Component(name:string):Type',
  'UpgradeAdapter.upgradeNg1Provider(name:string, options?:{asToken:any}):any',
  'UpgradeAdapterRef',
  'UpgradeAdapterRef.dispose():any',
  'UpgradeAdapterRef.ng1Injector:IInjectorService',
  'UpgradeAdapterRef.ng1RootScope:IRootScopeService',
  'UpgradeAdapterRef.ng2ApplicationRef:ApplicationRef',
  'UpgradeAdapterRef.ng2Injector:Injector',
  'UpgradeAdapterRef.ready(fn:(upgradeAdapterRef?: UpgradeAdapterRef) => void):any',
];

const PLATFORM_BROWSER = [
  'browserPlatform():PlatformRef',
  'BrowserPlatformLocation',
  'BrowserPlatformLocation.back():void',
  'BrowserPlatformLocation.constructor()',
  'BrowserPlatformLocation.forward():void',
  'BrowserPlatformLocation.getBaseHrefFromDOM():string',
  'BrowserPlatformLocation.hash:string',
  'BrowserPlatformLocation.location:Location',
  'BrowserPlatformLocation.onHashChange(fn:UrlChangeListener):void',
  'BrowserPlatformLocation.onPopState(fn:UrlChangeListener):void',
  'BrowserPlatformLocation.pathname:string',
  'BrowserPlatformLocation.pathname=(newPath:string)',
  'BrowserPlatformLocation.pushState(state:any, title:string, url:string):void',
  'BrowserPlatformLocation.replaceState(state:any, title:string, url:string):void',
  'BrowserPlatformLocation.search:string',
  'By',
  'By.all():Predicate<DebugElement>',
  'By.css(selector:string):Predicate<DebugElement>',
  'By.directive(type:Type):Predicate<DebugElement>',
  'ClientMessageBroker',
  'ClientMessageBroker.runOnService(args:UiArguments, returnType:Type):Promise<any>',
  'ClientMessageBrokerFactory',
  'ClientMessageBrokerFactory.createMessageBroker(channel:string, runInZone?:boolean):ClientMessageBroker',
  'const BROWSER_APP_PROVIDERS:Array<any>',
  'const BROWSER_PLATFORM_PROVIDERS:Array<any>',
  'const BROWSER_PROVIDERS:any[]',
  'const BROWSER_SANITIZATION_PROVIDERS:Array<any>',
  'const DOCUMENT:OpaqueToken',
  'const ELEMENT_PROBE_PROVIDERS:any[]',
  'const EVENT_MANAGER_PLUGINS:OpaqueToken',
  'const HAMMER_GESTURE_CONFIG:OpaqueToken',
  'const PRIMITIVE:Type',
  'const WORKER_APP_APPLICATION_PROVIDERS:Array<any>',
  'const WORKER_APP_LOCATION_PROVIDERS:any',
  'const WORKER_APP_PLATFORM_PROVIDERS:Array<any>',
  'const WORKER_SCRIPT:OpaqueToken',
  'const WORKER_UI_APPLICATION_PROVIDERS:Array<any>',
  'const WORKER_UI_LOCATION_PROVIDERS:any',
  'const WORKER_UI_PLATFORM_PROVIDERS:Array<any>',
  'const WORKER_UI_STARTABLE_MESSAGING_SERVICE:any',
  'disableDebugTools():void',
  'DomEventsPlugin',
  'DomEventsPlugin.addEventListener(element:HTMLElement, eventName:string, handler:Function):Function',
  'DomEventsPlugin.addGlobalEventListener(target:string, eventName:string, handler:Function):Function',
  'DomEventsPlugin.supports(eventName:string):boolean',
  'DomSanitizationService',
  'DomSanitizationService.bypassSecurityTrustHtml(value:string):SafeHtml',
  'DomSanitizationService.bypassSecurityTrustResourceUrl(value:string):SafeResourceUrl',
  'DomSanitizationService.bypassSecurityTrustScript(value:string):SafeScript',
  'DomSanitizationService.bypassSecurityTrustStyle(value:string):SafeStyle',
  'DomSanitizationService.bypassSecurityTrustUrl(value:string):SafeUrl',
  'DomSanitizationService.sanitize(context:SecurityContext, value:any):string',
  'enableDebugTools(ref:ComponentRef<T>):ComponentRef<T>',
  'EventManager',
  'EventManager.addEventListener(element:HTMLElement, eventName:string, handler:Function):Function',
  'EventManager.addGlobalEventListener(target:string, eventName:string, handler:Function):Function',
  'EventManager.constructor(plugins:EventManagerPlugin[], _zone:NgZone)',
  'EventManager.getZone():NgZone',
  'FnArg',
  'FnArg.constructor(value:any, type:Type)',
  'FnArg.type:Type',
  'FnArg.value:any',
  'HammerGestureConfig',
  'HammerGestureConfig.buildHammer(element:HTMLElement):HammerInstance',
  'HammerGestureConfig.events:string[]',
  'HammerGestureConfig.overrides:{[key:string]:Object}',
  'KeyEventsPlugin',
  'KeyEventsPlugin.addEventListener(element:HTMLElement, eventName:string, handler:Function):Function',
  'KeyEventsPlugin.constructor()',
  'KeyEventsPlugin.eventCallback(element:HTMLElement, fullKey:any, handler:Function, zone:NgZone):Function',
  'KeyEventsPlugin.getEventFullKey(event:KeyboardEvent):string',
  'KeyEventsPlugin.parseEventName(eventName:string):{[key:string]:string}',
  'KeyEventsPlugin.supports(eventName:string):boolean',
  'MessageBus',
  'MessageBus.attachToZone(zone:NgZone):void',
  'MessageBus.from(channel:string):EventEmitter<any>',
  'MessageBus.initChannel(channel:string, runInZone?:boolean):void',
  'MessageBus.to(channel:string):EventEmitter<any>',
  'MessageBusSink',
  'MessageBusSink.attachToZone(zone:NgZone):void',
  'MessageBusSink.initChannel(channel:string, runInZone:boolean):void',
  'MessageBusSink.to(channel:string):EventEmitter<any>',
  'MessageBusSource',
  'MessageBusSource.attachToZone(zone:NgZone):void',
  'MessageBusSource.from(channel:string):EventEmitter<any>',
  'MessageBusSource.initChannel(channel:string, runInZone:boolean):void',
  'ReceivedMessage',
  'ReceivedMessage.args:any[]',
  'ReceivedMessage.constructor(data:{[key:string]:any})',
  'ReceivedMessage.id:string',
  'ReceivedMessage.method:string',
  'ReceivedMessage.type:string',
  'SafeHtml',
  'SafeResourceUrl',
  'SafeScript',
  'SafeStyle',
  'SafeUrl',
  'ServiceMessageBroker',
  'ServiceMessageBroker.registerMethod(methodName:string, signature:Type[], method:Function, returnType?:Type):void',
  'ServiceMessageBrokerFactory',
  'ServiceMessageBrokerFactory.createMessageBroker(channel:string, runInZone?:boolean):ServiceMessageBroker',
  'Title',
  'Title.getTitle():string',
  'Title.setTitle(newTitle:string):any',
  'UiArguments',
  'UiArguments.args?:FnArg[]',
  'UiArguments.constructor(method:string, args?:FnArg[])',
  'UiArguments.method:string',
  'var __platform_browser_private__:any',
  'var SecurityContext:unknown',
  'WebWorkerInstance',
  'WebWorkerInstance.bus:MessageBus',
  'WebWorkerInstance.init(worker:Worker, bus:MessageBus):any',
  'WebWorkerInstance.worker:Worker',
  'workerAppPlatform():PlatformRef',
  'workerUiPlatform():PlatformRef',
];

const PLATFORM_BROWSER_TESTING = [
  'BrowserDetection',
  'BrowserDetection.constructor(ua:string)',
  'BrowserDetection.isAndroid:boolean',
  'BrowserDetection.isChromeDesktop:boolean',
  'BrowserDetection.isEdge:boolean',
  'BrowserDetection.isFirefox:boolean',
  'BrowserDetection.isIE:boolean',
  'BrowserDetection.isIOS7:boolean',
  'BrowserDetection.isSlow:boolean',
  'BrowserDetection.isWebkit:boolean',
  'BrowserDetection.setup():any',
  'BrowserDetection.supportsIntlApi:boolean',
  'const TEST_BROWSER_APPLICATION_PROVIDERS:Array<any>',
  'const TEST_BROWSER_PLATFORM_PROVIDERS:Array<any>',
  'dispatchEvent(element:any, eventType:any):void',
  'el(html:string):HTMLElement',
  'NgMatchers',
  'NgMatchers.not:NgMatchers',
  'NgMatchers.toBeAnInstanceOf(expected:any):boolean',
  'NgMatchers.toBePromise():boolean',
  'NgMatchers.toContainError(expected:any):boolean',
  'NgMatchers.toHaveCssClass(expected:any):boolean',
  'NgMatchers.toHaveCssStyle(expected:any):boolean',
  'NgMatchers.toHaveText(expected:any):boolean',
  'NgMatchers.toImplement(expected:any):boolean',
  'NgMatchers.toMatchPattern(expectedMessage:any):boolean',
  'NgMatchers.toThrowErrorWith(expectedMessage:any):boolean',
  'normalizeCSS(css:string):string',
  'stringifyElement(el:any):string',
  'var browserDetection:BrowserDetection',
  'var expect:(actual: any) => NgMatchers',
];

const PLATFORM_BROWSER_TESTING_E2E = [
  'clickAll(buttonSelectors:any):any',
  'var $:cssSelectorHelper',
  'var browser:IBrowser',
  'verifyNoBrowserErrors():any',
];


const PLATFORM_BROWSER_DYNAMIC = [
  'bootstrap(appComponentType:Type, customProviders?:Array<any>):Promise<ComponentRef<any>>',
  'bootstrapWorkerApp(appComponentType:Type, customProviders?:Array<any>):Promise<ComponentRef<any>>',
  'bootstrapWorkerUi(workerScriptUri:string, customProviders?:Array<any>):Promise<ApplicationRef>',
  'const BROWSER_APP_COMPILER_PROVIDERS:Array<any>',
  'const CACHED_TEMPLATE_PROVIDER:Array<any>',
];


const PLATFORM_BROWSER_DYNAMIC_TESTING = [
  'const TEST_BROWSER_DYNAMIC_APPLICATION_PROVIDERS:Array<any>',
  'const TEST_BROWSER_DYNAMIC_PLATFORM_PROVIDERS:Array<any>',
  'var __platform_browser_dynamic_private__:any',
];



const PLATFORM_SERVER = [
  'const SERVER_PLATFORM_PROVIDERS:Array<any>',
  'serverBootstrap(appComponentType:Type, providers:Array<any>):Promise<ComponentRef<any>>',
  'serverPlatform():PlatformRef',
];

const PLATFORM_SERVER_TESTING = [
  'const TEST_SERVER_APPLICATION_PROVIDERS:Array<any>',
  'const TEST_SERVER_PLATFORM_PROVIDERS:Array<any>',
];

const HTTP = [
  'BaseRequestOptions',
  'BaseRequestOptions.constructor()',
  'BaseResponseOptions',
  'BaseResponseOptions.constructor()',
  'BrowserXhr',
  'BrowserXhr.build():any',
  'BrowserXhr.constructor()',
  'Connection',
  'Connection.readyState:ReadyState',
  'Connection.request:Request',
  'Connection.response:any',
  'ConnectionBackend',
  'ConnectionBackend.createConnection(request:any):Connection',
  'const HTTP_BINDINGS:any',
  'const HTTP_PROVIDERS:any[]',
  'const JSON_BINDINGS:any',
  'const JSONP_PROVIDERS:any[]',
  'CookieXSRFStrategy',
  'CookieXSRFStrategy.configureRequest(req:Request):any',
  'CookieXSRFStrategy.constructor(_cookieName:string=\'XSRF-TOKEN\', _headerName:string=\'X-XSRF-TOKEN\')',
  'Headers',
  'Headers.append(name:string, value:string):void',
  'Headers.constructor(headers?:Headers|{[key:string]:any})',
  'Headers.delete(name:string):void',
  'Headers.entries():any',
  'Headers.forEach(fn:(values: string[], name: string, headers: Map<string, string[]>) => void):void',
  'Headers.fromResponseHeaderString(headersString:string):Headers',
  'Headers.get(header:string):string',
  'Headers.getAll(header:string):string[]',
  'Headers.has(header:string):boolean',
  'Headers.keys():string[]',
  'Headers.set(header:string, value:string|string[]):void',
  'Headers.toJSON():{[key:string]:any}',
  'Headers.values():string[][]',
  'Http',
  'Http._backend:ConnectionBackend //protected',
  'Http._defaultOptions:RequestOptions //protected',
  'Http.constructor(_backend:ConnectionBackend, _defaultOptions:RequestOptions)',
  'Http.delete(url:string, options?:RequestOptionsArgs):Observable<Response>',
  'Http.get(url:string, options?:RequestOptionsArgs):Observable<Response>',
  'Http.head(url:string, options?:RequestOptionsArgs):Observable<Response>',
  'Http.patch(url:string, body:any, options?:RequestOptionsArgs):Observable<Response>',
  'Http.post(url:string, body:any, options?:RequestOptionsArgs):Observable<Response>',
  'Http.put(url:string, body:any, options?:RequestOptionsArgs):Observable<Response>',
  'Http.request(url:string|Request, options?:RequestOptionsArgs):Observable<Response>',
  'httpFactory(xhrBackend:XHRBackend, requestOptions:RequestOptions):Http',
  'Jsonp',
  'Jsonp.constructor(backend:ConnectionBackend, defaultOptions:RequestOptions)',
  'Jsonp.request(url:string|Request, options?:RequestOptionsArgs):Observable<Response>',
  'JSONPBackend',
  'JSONPConnection',
  'JSONPConnection.finished(data?:any):void',
  'JSONPConnection.readyState:ReadyState',
  'JSONPConnection.request:Request',
  'JSONPConnection.response:Observable<Response>',
  'ReadyState',
  'ReadyState.Cancelled',
  'ReadyState.Done',
  'ReadyState.HeadersReceived',
  'ReadyState.Loading',
  'ReadyState.Open',
  'ReadyState.Unsent',
  'Request',
  'Request.arrayBuffer():ArrayBuffer',
  'Request.blob():Blob',
  'Request.constructor(requestOptions:RequestArgs)',
  'Request.detectContentType():any',
  'Request.getBody():any',
  'Request.headers:Headers',
  'Request.json():string',
  'Request.method:RequestMethod',
  'Request.text():string',
  'Request.url:string',
  'Request.withCredentials:boolean',
  'RequestMethod',
  'RequestMethod.Delete',
  'RequestMethod.Get',
  'RequestMethod.Head',
  'RequestMethod.Options',
  'RequestMethod.Patch',
  'RequestMethod.Post',
  'RequestMethod.Put',
  'RequestOptions',
  'RequestOptions.body:any',
  'RequestOptions.constructor({method,headers,body,url,search,withCredentials}:RequestOptionsArgs={})',
  'RequestOptions.headers:Headers',
  'RequestOptions.merge(options?:RequestOptionsArgs):RequestOptions',
  'RequestOptions.method:RequestMethod|string',
  'RequestOptions.search:URLSearchParams',
  'RequestOptions.url:string',
  'RequestOptions.withCredentials:boolean',
  'RequestOptionsArgs',
  'RequestOptionsArgs.body:any',
  'RequestOptionsArgs.headers:Headers',
  'RequestOptionsArgs.method:string|RequestMethod',
  'RequestOptionsArgs.search:string|URLSearchParams',
  'RequestOptionsArgs.url:string',
  'RequestOptionsArgs.withCredentials:boolean',
  'Response',
  'Response.arrayBuffer():any',
  'Response.blob():any',
  'Response.bytesLoaded:number',
  'Response.constructor(responseOptions:ResponseOptions)',
  'Response.headers:Headers',
  'Response.json():any',
  'Response.ok:boolean',
  'Response.status:number',
  'Response.statusText:string',
  'Response.text():string',
  'Response.toString():string',
  'Response.totalBytes:number',
  'Response.type:ResponseType',
  'Response.url:string',
  'ResponseOptions',
  'ResponseOptions.body:string|Object',
  'ResponseOptions.constructor({body,status,headers,statusText,type,url}:ResponseOptionsArgs={})',
  'ResponseOptions.headers:Headers',
  'ResponseOptions.merge(options?:ResponseOptionsArgs):ResponseOptions',
  'ResponseOptions.status:number',
  'ResponseOptions.statusText:string',
  'ResponseOptions.type:ResponseType',
  'ResponseOptions.url:string',
  'ResponseType',
  'ResponseType.Basic',
  'ResponseType.Cors',
  'ResponseType.Default',
  'ResponseType.Error',
  'ResponseType.Opaque',
  'URLSearchParams',
  'URLSearchParams.append(param:string, val:string):void',
  'URLSearchParams.appendAll(searchParams:URLSearchParams):any',
  'URLSearchParams.clone():URLSearchParams',
  'URLSearchParams.constructor(rawParams:string=\'\')',
  'URLSearchParams.delete(param:string):void',
  'URLSearchParams.get(param:string):string',
  'URLSearchParams.getAll(param:string):string[]',
  'URLSearchParams.has(param:string):boolean',
  'URLSearchParams.paramsMap:Map<string, string[]>',
  'URLSearchParams.rawParams:string=\'\'',
  'URLSearchParams.replaceAll(searchParams:URLSearchParams):any',
  'URLSearchParams.set(param:string, val:string):any',
  'URLSearchParams.setAll(searchParams:URLSearchParams):any',
  'URLSearchParams.toString():string',
  'XHRBackend',
  'XHRBackend.constructor(_browserXHR:BrowserXhr, _baseResponseOptions:ResponseOptions, _xsrfStrategy:XSRFStrategy)',
  'XHRBackend.createConnection(request:Request):XHRConnection',
  'XHRConnection',
  'XHRConnection.constructor(req:Request, browserXHR:BrowserXhr, baseResponseOptions?:ResponseOptions)',
  'XHRConnection.readyState:ReadyState',
  'XHRConnection.request:Request',
  'XHRConnection.response:Observable<Response>',
  'XHRConnection.setDetectedContentType(req:any, _xhr:any):any',
  'XSRFStrategy',
  'XSRFStrategy.configureRequest(req:Request):void',
];

const HTTP_TESTING = [
  'MockBackend',
  'MockBackend.connections:any',
  'MockBackend.connectionsArray:MockConnection[]',
  'MockBackend.constructor()',
  'MockBackend.createConnection(req:Request):MockConnection',
  'MockBackend.pendingConnections:any',
  'MockBackend.resolveAllConnections():any',
  'MockBackend.verifyNoPendingRequests():any',
  'MockConnection',
  'MockConnection.constructor(req:Request)',
  'MockConnection.mockDownload(res:Response):any',
  'MockConnection.mockError(err?:Error):any',
  'MockConnection.mockRespond(res:Response):any',
  'MockConnection.mockRespond(res:Response):any',
  'MockConnection.readyState:ReadyState',
  'MockConnection.request:Request',
  'MockConnection.response:ReplaySubject<Response>',
];
/* clang-format on */

describe('public API', () => {
  check('@angular/core/index.ts', CORE);
  check('@angular/core/testing.ts', CORE_TESTING);
  check('@angular/common/index.ts', COMMON);
  check('@angular/common/testing.ts', COMMON_TESTING);
  check('@angular/compiler/index.ts', COMPILER);
  check('@angular/compiler/testing.ts', COMPILER_TESTING);
  check('@angular/upgrade/index.ts', UPGRADE);
  check('@angular/platform-browser/index.ts', PLATFORM_BROWSER);
  check('@angular/platform-browser/testing.ts', PLATFORM_BROWSER_TESTING);
  check('@angular/platform-browser/testing_e2e.ts', PLATFORM_BROWSER_TESTING_E2E);
  check('@angular/platform-browser-dynamic/index.ts', PLATFORM_BROWSER_DYNAMIC);
  check('@angular/platform-browser-dynamic/testing.ts', PLATFORM_BROWSER_DYNAMIC_TESTING);
  check('@angular/platform-server/index.ts', PLATFORM_SERVER);
  check('@angular/platform-server/testing.ts', PLATFORM_SERVER_TESTING);
  check('@angular/http/index.ts', HTTP);
  check('@angular/http/testing.ts', HTTP_TESTING);
});

function check(file: string, expected: string[]) {
  it('should check ' + file, () => checkPublicApi(file, expected));
}

function checkPublicApi(file: string, expected: string[]) {
  const sortedActual = publicApi('modules/' + file).sort();
  const sortedExpected = expected.slice().sort((a: string, b: string) => a.localeCompare(b));
  const unsorted = expected.find((element, index) => element !== sortedExpected[index]);
  const missing = sortedActual.filter((i) => sortedExpected.indexOf(i) < 0);
  const extra = sortedExpected.filter((i) => sortedActual.indexOf(i) < 0);

  // console.log(sortedActual.join('\',\n  \''));
  if (unsorted) {
    fail(
        `The array of expected APIs is incorrectly sorted starting at element:\n    ${unsorted}` +
        `\n\nexpected: ${sortedActual.join("\n")}`);
  }


  if (missing.length > 0) {
    console.log('=================================================================');
    console.log('=================================================================');
    console.log('=================================================================');
    console.log('=================================================================');
    console.log('Missing:');
    missing.forEach((m) => console.log(m));
  }

  if (extra.length > 0) {
    console.log('Extra:');
    extra.forEach((m) => console.log(m));
  }

  expect(missing.map(s => `+${s}`).concat(extra.map(s => `-${s}`))).toEqual([]);
}
