Polymer / tools

Polymer Tools Monorepo
BSD 3-Clause "New" or "Revised" License
430 stars 200 forks source link

run test - polymer-analyser test broken on Windows #3372

Open AaronNGray opened 5 years ago

AaronNGray commented 5 years ago

polymer-analyser test broken on Windows

polymer-analyzer: > polymer-analyzer@3.2.2 test:unit C:\Users\aaron\GitHub\tools\packages\analyzer
polymer-analyzer: > mocha "lib/test/**/*_test.js"
polymer-analyzer:
polymer-analyzer:   generate-analysis
polymer-analyzer:     generateAnalysisMetadata
polymer-analyzer:       generates for Document array from fixtures
polymer-analyzer:         v produces a correct analysis.json for fixture dir `behaviors` (139ms)
polymer-analyzer:         - produces a correct analysis.json for fixture dir `bower_packages`
polymer-analyzer:         v produces a correct analysis.json for fixture dir `class`
polymer-analyzer:         v produces a correct analysis.json for fixture dir `demo`
polymer-analyzer: Expected contents of C:\Users\aaron\GitHub\tools\packages\analyzer\src\test\static\analysis\dom-module\analysis.json:
polymer-analyzer: {
polymer-analyzer:   "schema_version": "1.0.0",
polymer-analyzer:   "elements": [
polymer-analyzer:     {
polymer-analyzer:       "description": "This is a big comment on the element!",
polymer-analyzer:       "summary": "",
polymer-analyzer:       "path": "documented.html",
polymer-analyzer:       "properties": [],
polymer-analyzer:       "methods": [],
polymer-analyzer:       "staticMethods": [],
polymer-analyzer:       "demos": [],
polymer-analyzer:       "metadata": {},
polymer-analyzer:       "sourceRange": {
polymer-analyzer:         "start": {
polymer-analyzer:           "line": 12,
polymer-analyzer:           "column": 12
polymer-analyzer:         },
polymer-analyzer:         "end": {
polymer-analyzer:           "line": 14,
polymer-analyzer:           "column": 5
polymer-analyzer:         }
polymer-analyzer:       },
polymer-analyzer:       "privacy": "public",
polymer-analyzer:       "superclass": "HTMLElement",
polymer-analyzer:       "attributes": [],
polymer-analyzer:       "events": [],
polymer-analyzer:       "styling": {
polymer-analyzer:         "cssVariables": [],
polymer-analyzer:         "selectors": []
polymer-analyzer:       },
polymer-analyzer:       "slots": [
polymer-analyzer:         {
polymer-analyzer:           "description": "",
polymer-analyzer:           "name": "slot1",
polymer-analyzer:           "range": {
polymer-analyzer:             "start": {
polymer-analyzer:               "line": 7,
polymer-analyzer:               "column": 4
polymer-analyzer:             },
polymer-analyzer:             "end": {
polymer-analyzer:               "line": 7,
polymer-analyzer:               "column": 30
polymer-analyzer:             }
polymer-analyzer:           }
polymer-analyzer:         },
polymer-analyzer:         {
polymer-analyzer:           "description": "",
polymer-analyzer:           "name": "slot2",
polymer-analyzer:           "range": {
polymer-analyzer:             "start": {
polymer-analyzer:               "line": 8,
polymer-analyzer:               "column": 4
polymer-analyzer:             },
polymer-analyzer:             "end": {
polymer-analyzer:               "line": 8,
polymer-analyzer:               "column": 30
polymer-analyzer:             }
polymer-analyzer:           }
polymer-analyzer:         },
polymer-analyzer:         {
polymer-analyzer:           "description": "",
polymer-analyzer:           "name": "",
polymer-analyzer:           "range": {
polymer-analyzer:             "start": {
polymer-analyzer:               "line": 9,
polymer-analyzer:               "column": 4
polymer-analyzer:             },
polymer-analyzer:             "end": {
polymer-analyzer:               "line": 9,
polymer-analyzer:               "column": 17
polymer-analyzer:             }
polymer-analyzer:           }
polymer-analyzer:         }
polymer-analyzer:       ],
polymer-analyzer:       "tagname": "my-element"
polymer-analyzer:     }
polymer-analyzer:   ]
polymer-analyzer: }
polymer-analyzer:         1) produces a correct analysis.json for fixture dir `dom-module`
polymer-analyzer:         v produces a correct analysis.json for fixture dir `mixins`
polymer-analyzer:         v produces a correct analysis.json for fixture dir `mixins-old-jsdoc`
polymer-analyzer:         v produces a correct analysis.json for fixture dir `namespaces`
polymer-analyzer:         - produces a correct analysis.json for fixture dir `nested-packages`
polymer-analyzer:         v produces a correct analysis.json for fixture dir `no-package`
polymer-analyzer:         v produces a correct analysis.json for fixture dir `separate-js`
polymer-analyzer:         v produces a correct analysis.json for fixture dir `simple`
polymer-analyzer:         v produces a correct analysis.json for fixture dir `weird-property-names`
polymer-analyzer:       generates from package
polymer-analyzer:         v does not include external features
polymer-analyzer:         v includes package features
polymer-analyzer:     validateAnalysis
polymer-analyzer:       v throws when validating valid analysis.json
polymer-analyzer:       v doesn't throw when validating a valid analysis.json
polymer-analyzer:       v doesn't throw when validating a version from the future
polymer-analyzer:       v throws when validating a bad version
polymer-analyzer:   AnalysisCache
polymer-analyzer:     v it can be constructed
polymer-analyzer:     v it invalidates a path when asked to
polymer-analyzer:     v it invalidates the dependants of a path when asked to
polymer-analyzer:   Analyzer
polymer-analyzer:     v canLoad delegates to the urlLoader canLoad method
polymer-analyzer:     v analyzes a document with a namespace
polymer-analyzer:     - creates warnings when duplicate namespaces are analyzed
polymer-analyzer:     2) treats module script tags as normal imports
polymer-analyzer:     analyze()
polymer-analyzer:       v analyzes a document with an inline Polymer element feature
polymer-analyzer:       v analyzes a document with an external Polymer element feature
polymer-analyzer:       3) gets source ranges of documents correct
polymer-analyzer:       4) analyzes inline scripts correctly
polymer-analyzer:       5) analyzes inline styles correctly
polymer-analyzer:       v analyzes a document with an import
polymer-analyzer:       v gives a useful warning when analyzing a nonexistant file
polymer-analyzer:       v creates "missing behavior" warnings on imported documents without elements
polymer-analyzer:       v an inline document can find features from its container document
polymer-analyzer:       v an inline script can find features from its container document
polymer-analyzer:       v an inline feature can narrow down its containing document
polymer-analyzer:       v a feature in the top level document narrows down to the full document
polymer-analyzer:       v an external script can find features from its container document
polymer-analyzer:       v an inline document can find behaviors from its container document
polymer-analyzer:       v returns a Document with warnings for malformed files
polymer-analyzer:       v analyzes transitive dependencies
polymer-analyzer:       v warns for files that don't exist
polymer-analyzer:       v handles documents from multiple calls to analyze()
polymer-analyzer:       v handles mutually recursive documents
polymer-analyzer:       v handles parallel analyses of mutually recursive documents
polymer-analyzer:       v handles a document importing itself
polymer-analyzer:       handles documents with spaces in filename
polymer-analyzer:         v given a url with unencoded spaces to analyze
polymer-analyzer:         v given a url with encoded spaces to analyze
polymer-analyzer:         v gracefully handles a scanner that throws
polymer-analyzer:     _parse()
polymer-analyzer:       v loads and parses an HTML document
polymer-analyzer:       v loads and parses a JavaScript document
polymer-analyzer:       v returns a Promise of a Warning for non-existant files
polymer-analyzer:     _getScannedFeatures()
polymer-analyzer:       v default import scanners
polymer-analyzer:       v polymer css import scanner
polymer-analyzer:       v HTML inline document scanners
polymer-analyzer:       v HTML inline documents can be cloned, modified, and stringified
polymer-analyzer:     documentation extraction
polymer-analyzer:       v we get the wrong description for paper-input
polymer-analyzer:     analyzePackage
polymer-analyzer:       v produces a package with the right documents
polymer-analyzer:       v can get warnings from within and without the package
polymer-analyzer:     _fork
polymer-analyzer:       v returns an independent copy of Analyzer
polymer-analyzer:       v supports overriding of urlLoader
polymer-analyzer:     race conditions and caching
polymer-analyzer:       v maintain caches across multiple edits
polymer-analyzer:       v editor simulator of imports that import a common dep (110ms)
polymer-analyzer:       - somewhat more reproducable editor simulator
polymer-analyzer:       deterministic tests
polymer-analyzer:         v two edits of the same file back to back
polymer-analyzer:         v handles a shared dependency
polymer-analyzer:         v all files in a cycle wait for the whole cycle
polymer-analyzer:         v analyzes multiple imports of the same behavior
polymer-analyzer:         v analyzes multiple imports of the same behavior simultaneously
polymer-analyzer:   AsyncWorkCache
polymer-analyzer:     v it works for the simple happy case
polymer-analyzer:     v it handles parallel calls
polymer-analyzer:     v it handles a cancellation followed by a new request
polymer-analyzer:     v many parallel calls to getOrCompute, some that cancel, some that don't
polymer-analyzer:   cancelling analysis midway through
polymer-analyzer:     v analyze() does not complete when cancelled
polymer-analyzer:     v we can handle parallel requests, one canceled one not
polymer-analyzer:   DependencyGraph
polymer-analyzer:     v can calculate dependants
polymer-analyzer:     as used in the Analyzer
polymer-analyzer:       v works with a basic document with no dependencies
polymer-analyzer:       v works with a simple tree of dependencies
polymer-analyzer:     whenReady
polymer-analyzer:       v resolves for a single added document
polymer-analyzer:       v resolves for a single rejected document
polymer-analyzer:       v resolves for a document with an added dependency
polymer-analyzer:       v resolves for a document with a rejected dependency
polymer-analyzer:       v resolves for a simple cycle
polymer-analyzer:       v does not resolve early for a cycle with a leg
polymer-analyzer:   parseUrl
polymer-analyzer:     v parses urls that are absolute paths
polymer-analyzer:     v parses urls without protocol
polymer-analyzer:     v parses urls that have protocols
polymer-analyzer:   Deferred
polymer-analyzer:     v resolves
polymer-analyzer:     v rejects
polymer-analyzer:     v resolves only once
polymer-analyzer:     v rejects
polymer-analyzer:   CssCustomPropertyScanner
polymer-analyzer:     6) finds custom property assignments
polymer-analyzer:     7) finds custom property uses
polymer-analyzer:   CssParser
polymer-analyzer:     parse()
polymer-analyzer:       v parses css
polymer-analyzer:       8) stringifies css
polymer-analyzer:   ParsedHtmlDocument
polymer-analyzer:     sourceRangeForNode()
polymer-analyzer:       9) works for comments
polymer-analyzer:       10) works for elements
polymer-analyzer:       v works for unclosed tags with attributes and no text content
polymer-analyzer:       11) works for void elements
polymer-analyzer:       12) works for text nodes
polymer-analyzer:     sourceRangeForStartTag
polymer-analyzer:       13) it works for tags with no attributes
polymer-analyzer:       14) it works for void tags with no attributes
polymer-analyzer:       15) it works for void tags with attributes
polymer-analyzer:       16) it works for normal elements with attributes
polymer-analyzer:     sourceRangeForEndTag
polymer-analyzer:       17) it works for normal elements
polymer-analyzer:     sourceRangeForAttribute
polymer-analyzer:       18) works for boolean attributes
polymer-analyzer:       19) works for one line string attributes
polymer-analyzer:       20) works for multiline string attributes
polymer-analyzer:       21) works for attributes with whitespace around the equals sign
polymer-analyzer:       for a void element
polymer-analyzer:         22) works for a string attribute
polymer-analyzer:     sourceRangeForAttributeName
polymer-analyzer:       23) works for boolean attributes
polymer-analyzer:       24) works for one line string attributes
polymer-analyzer:       25) works for multiline string attributes
polymer-analyzer:       26) works for attributes with whitespace around the equals sign
polymer-analyzer:       for a void element
polymer-analyzer:         27) works for a string attribute
polymer-analyzer:     sourceRangeForAttributeValue
polymer-analyzer:       v returns undefined for boolean attributes
polymer-analyzer:       28) works for one line string attributes
polymer-analyzer:       29) works for multiline string attributes
polymer-analyzer:       30) works for attributes with whitespace around the equals sign
polymer-analyzer:       for a void element
polymer-analyzer:         31) works for a string attribute
polymer-analyzer:   HtmlElementReferenceScanner
polymer-analyzer:     v finds element references
polymer-analyzer:   HtmlCustomElementReferenceScanner
polymer-analyzer:     v finds custom element references
polymer-analyzer:   HtmlImportScanner
polymer-analyzer:     v finds HTML Imports
polymer-analyzer:     v resolves HTML Import URLs relative to baseUrl
polymer-analyzer:     v finds lazy HTML Imports
polymer-analyzer:     scan() with lazy import map
polymer-analyzer:       v injects synthetic lazy html imports
polymer-analyzer:   HtmlParser
polymer-analyzer:     parse()
polymer-analyzer:       v can properly determine the base url of a document
polymer-analyzer:       on a well-formed document
polymer-analyzer:         v parses a well-formed document
polymer-analyzer:         32) can stringify back a well-formed document
polymer-analyzer:   HtmlScriptScanner
polymer-analyzer:     v finds external and inline scripts
polymer-analyzer:     v finds external scripts relative to baseUrl
polymer-analyzer:     v could-not-load vs not-loadable warnings
polymer-analyzer:     modules
polymer-analyzer:       v finds external module scripts
polymer-analyzer:       v finds inline module scripts
polymer-analyzer:       33) follows import statements in modules
polymer-analyzer:       v query for modules imported in specific inline scripts
polymer-analyzer:       v finds imports, honoring base href
polymer-analyzer:   HtmlStyleScanner
polymer-analyzer:     v finds external and inline styles
polymer-analyzer:     v finds external styles relative to baseUrl
polymer-analyzer:   Class
polymer-analyzer:     scanning
polymer-analyzer:       v finds classes and their names and comment blocks
polymer-analyzer:       v finds properties
polymer-analyzer:       v finds methods
polymer-analyzer:       v deals with super classes correctly
polymer-analyzer:       v does not produce duplicate classes for elements or mixins
polymer-analyzer:     resolving
polymer-analyzer:       v finds classes and their names and descriptions
polymer-analyzer:       v finds methods
polymer-analyzer:       v deals with super classes correctly
polymer-analyzer:       v does not produce duplicate classes for elements or mixins
polymer-analyzer:       v recognizes class and constructor annotations
polymer-analyzer:       v we index classes by their canonical statements
polymer-analyzer:       v we resolve superclasses by scope when possible
polymer-analyzer:       v we resolve imported super classes
polymer-analyzer:   getEventComments
polymer-analyzer:     v returns events from a comment
polymer-analyzer:   objectKeyToString
polymer-analyzer:     v produces expected names
polymer-analyzer:   FunctionScanner
polymer-analyzer:     34) recognizies functions
polymer-analyzer:     v handles @global, @memberof, @function annotations
polymer-analyzer:     v handles @template annotation
polymer-analyzer:     v does return void inference
polymer-analyzer:   HtmlTemplateLiteralScanner
polymer-analyzer:     v works in a super simple case
polymer-analyzer:     v can get source ranges for tags in the inline document
polymer-analyzer:     v can handle nesting of inline documents with html at the root
polymer-analyzer:     v can handle nesting of inline documents with js at the root
polymer-analyzer:     - can handle escape characters properly
polymer-analyzer:   JavaScriptExportScanner
polymer-analyzer:     v identifies the names of exports
polymer-analyzer:     v re-exports across multiple files correctly
polymer-analyzer:   JavaScriptImportScanner
polymer-analyzer:     v finds imports
polymer-analyzer:     v finds dynamic imports
polymer-analyzer:     v resolves bare specifiers
polymer-analyzer:     v warns for non-resolvable bare specifiers (42ms)
polymer-analyzer:     v handles URL specifiers
polymer-analyzer:     v recognizes reexports as imports
polymer-analyzer:   JavaScriptParser
polymer-analyzer:     parse()
polymer-analyzer:       v parses classes
polymer-analyzer:       v parses import.meta
polymer-analyzer:       v parses async await
polymer-analyzer:       v throws syntax errors
polymer-analyzer:       v attaches comments
polymer-analyzer:       v parses an ES module
polymer-analyzer:     stringify()
polymer-analyzer:       v pretty prints output
polymer-analyzer:   JavaScriptModuleParser
polymer-analyzer:     parse()
polymer-analyzer:       v parses an ES6 module
polymer-analyzer:   JavaScriptScriptParser
polymer-analyzer:     v throws a syntax error when parsing es6 module
polymer-analyzer:   jsdoc
polymer-analyzer:     parseJsdoc
polymer-analyzer:       v parses single-line
polymer-analyzer:       v parses CRLF comments
polymer-analyzer:       v parses body-only
polymer-analyzer:       v parses tag-only
polymer-analyzer:       v parses tag-name
polymer-analyzer:       v parses tag-desc
polymer-analyzer:       v parses param type
polymer-analyzer:       v preserves indentation for the body
polymer-analyzer:       v handles empty lines
polymer-analyzer:     getPrivacy
polymer-analyzer:       v returns undefined for undefined annotation
polymer-analyzer:       v returns undefined for empty tags
polymer-analyzer:       v returns public for @public
polymer-analyzer:       v returns protected for @protected
polymer-analyzer:       v returns private for @private
polymer-analyzer:     isAnnotationEmpty
polymer-analyzer:       v returns true for undefined
polymer-analyzer:       v returns true for no tags, no description
polymer-analyzer:       v returns false for a description
polymer-analyzer:   NamespaceScanner
polymer-analyzer:     35) scans named namespaces
polymer-analyzer:     36) scans unnamed namespaces
polymer-analyzer:     37) scans named, dynamic namespaces
polymer-analyzer:     38) scans unnamed, dynamic namespaces
polymer-analyzer:     v scans properties
polymer-analyzer:   resolve
polymer-analyzer:     v non-component root to path
polymer-analyzer:     v non-component root to shallow dep
polymer-analyzer:     v non-component root to scoped dep
polymer-analyzer:     v non-component bower dependency
polymer-analyzer:     v shallow dep to scoped dep
polymer-analyzer:     v scoped dep to shallow dep
polymer-analyzer:     v component-root to path
polymer-analyzer:     v component-root to shallow dep
polymer-analyzer:     v component-root to scoped dep
polymer-analyzer:     v scoped-component-root to shallow dep
polymer-analyzer:     v scoped-component-root to scoped dep
polymer-analyzer:   correctSourceRange
polymer-analyzer:     v handles undefined gracefully
polymer-analyzer:     v handles source locations on the first line
polymer-analyzer:     v does not change column offsets for source locations after the first
polymer-analyzer:     v does not modify its input
polymer-analyzer:   ScannedReference
polymer-analyzer:     v resolves exports
polymer-analyzer:   applyEdits
polymer-analyzer:     v works in the trivial case
polymer-analyzer:     v can apply a simple single edit
polymer-analyzer:     v can apply two compatible edits
polymer-analyzer:     v does not apply an internally inconsistent edit
polymer-analyzer:     v takes edits in order, rejecting those incompatible with the accepted ones so far
polymer-analyzer:     v can deal with inserting, replacing and removing characters (265ms)
polymer-analyzer:     v can do two inserts into the same location without conflict
polymer-analyzer:   ParsedDocument
polymer-analyzer:     v offsetsToSourceRange is the inverse of sourceRangeToOffsets for in-bounds ranges
polymer-analyzer:     v sourcePositionToOffsets clamps out of bounds values
polymer-analyzer:     v sourceRangeToOffsets works for simple cases
polymer-analyzer:     v sourceRangeToOffsets fails gracefully
polymer-analyzer:   BehaviorScanner
polymer-analyzer:     v Finds behavior object assignments
polymer-analyzer:     v Supports behaviors at local assignments
polymer-analyzer:     v Supports behaviors with renamed paths
polymer-analyzer:     v Supports behaviors On.Property.Paths
polymer-analyzer:     v Supports property array on behaviors
polymer-analyzer:     v Supports chained behaviors
polymer-analyzer:     v Does not count methods as properties
polymer-analyzer:     v Correctly transforms property types
polymer-analyzer:     v Supports behaviors that are just arrays of other behaviors
polymer-analyzer:   CssImportScanner
polymer-analyzer:     v finds CSS Imports
polymer-analyzer:     v adjusts CSS Import urls relative to baseUrl
polymer-analyzer:   DomModuleScanner
polymer-analyzer:     v finds local IDs
polymer-analyzer:     v finds databinding expressions IDs
polymer-analyzer:   ExpressionScanner
polymer-analyzer:     scanning html for expressions
polymer-analyzer:       v finds whole-attribute expressions
polymer-analyzer:       v finds interpolated attribute expressions
polymer-analyzer:       v finds expressions in text nodes
polymer-analyzer:       v gives accurate locations for parse errors
polymer-analyzer:     parsing expressions from javascript string literals
polymer-analyzer:       v it succeeds and fails properly
polymer-analyzer:   PolymerCoreFeatureScanner
polymer-analyzer:     v scans _addFeature calls and the Polymer.Base assignment
polymer-analyzer:     v resolves the Polymer.Base class (88ms)
polymer-analyzer:   PolymerElement
polymer-analyzer:     v Scans and resolves base and sub-class
polymer-analyzer:     v Computes correct property information
polymer-analyzer:     v Handles inner classes properly
polymer-analyzer:     v Elements inherit from mixins and base classes
polymer-analyzer:     multiple-doc-comments
polymer-analyzer:       v Elements with only one doc comment have no warning
polymer-analyzer:       v Elements with more than one doc comment have warning
polymer-analyzer:   PolymerElement with old jsdoc annotations
polymer-analyzer:     v Scans and resolves base and sub-class
polymer-analyzer:     v Elements inherit from mixins and base classes
polymer-analyzer:   PolymerElementScanner
polymer-analyzer:     v finds polymer elements
polymer-analyzer:     v finds declared and assigned call expressions
polymer-analyzer:     v Produces correct warnings for bad observers and computed properties
polymer-analyzer:     v Polymer 2 class observers crash
polymer-analyzer:   Polymer2ElementScanner
polymer-analyzer:     39) Finds two basic elements
polymer-analyzer:     v uses @customElement jsdoc tag for tagName
polymer-analyzer:     v Uses static is getter for tagName
polymer-analyzer:     v Finds vanilla elements
polymer-analyzer:     v Observed attributes override induced attributes
polymer-analyzer:     v properly sets className for elements with the memberof tag
polymer-analyzer:     v Read @appliesMixin annotations
polymer-analyzer:     v Reads just @appliesMixin annotation
polymer-analyzer:     v properly reads properties and methods of elements and element classes
polymer-analyzer:     40) warns for bad observers and computed properties
polymer-analyzer:     v can identify elements registered with ClassName.is
polymer-analyzer:     v can infer properties assigned to in the constructor
polymer-analyzer:     v finds multiline observers
polymer-analyzer:   Polymer2ElementScanner - Vanilla Element Scanning
polymer-analyzer:     v Finds elements
polymer-analyzer:     v Extracts attributes from observedAttributes
polymer-analyzer:     v Extracts description from jsdoc
polymer-analyzer:   Polymer2ElementScanner with old jsdoc annotations
polymer-analyzer:     41) Finds two basic elements
polymer-analyzer:     v Uses static is getter for tagName
polymer-analyzer:     v Finds vanilla elements
polymer-analyzer:     v Observed attributes override induced attributes
polymer-analyzer:     v properly sets className for elements with the memberof tag
polymer-analyzer:     v Read @appliesMixin annotations
polymer-analyzer:     v Reads just @appliesMixin annotation
polymer-analyzer:     v properly reads properties and methods of elements and element classes
polymer-analyzer:     42) warns for bad observers and computed properties
polymer-analyzer:     v can identify elements registered with ClassName.is
polymer-analyzer:   Polymer2MixinScanner
polymer-analyzer:     43) finds mixin function declarations
polymer-analyzer:     44) finds mixin arrow function expressions
polymer-analyzer:     45) finds mixin function expressions
polymer-analyzer:     46) finds mixin variable declaration with only name, does not use trailing function
polymer-analyzer:     v what to do on a class marked @mixinFunction?
polymer-analyzer:     47) finds mixin function declaration with only name
polymer-analyzer:     48) finds mixin assigned to a namespace
polymer-analyzer:     v properly analyzes nested mixin assignments with memberof tags
polymer-analyzer:     v properly analyzes mixin instance and class methods
polymer-analyzer:     49) applies mixins to mixins
polymer-analyzer:     v infers properties from the constructor
polymer-analyzer:     50) finds exported mixin functions
polymer-analyzer:   Polymer2MixinScanner with old jsdoc annotations
polymer-analyzer:     51) finds mixin function declarations
polymer-analyzer:     52) finds mixin arrow function expressions
polymer-analyzer:     53) finds mixin function expressions
polymer-analyzer:     54) finds mixin variable declaration with only name, does not use trailing function
polymer-analyzer:     v what to do on a class marked @mixinFunction?
polymer-analyzer:     55) finds mixin function declaration with only name
polymer-analyzer:     56) finds mixin assigned to a namespace
polymer-analyzer:     v properly analyzes nested mixin assignments with memberof tags
polymer-analyzer:     v properly analyzes mixin instance and class methods
polymer-analyzer:     57) applies mixins to mixins
polymer-analyzer:   PseudoElementScanner
polymer-analyzer:     v finds pseudo elements in html comments
polymer-analyzer:   scan()
polymer-analyzer:     v calls Scanner.scan
polymer-analyzer:     v supports multiple and async calls to visit()
polymer-analyzer:     v propagates exceptions in scanners
polymer-analyzer:     v propagates exceptions in visitors
polymer-analyzer:   TypeScriptParser
polymer-analyzer:     parse()
polymer-analyzer:       v parses classes (405ms)
polymer-analyzer:   TypeScriptImportScanner
polymer-analyzer: unknown node type: [object Object]
polymer-analyzer:     v finds no imports
polymer-analyzer: unknown node type: [object Object]
polymer-analyzer:     v finds multiple import
polymer-analyzer:   TypeScriptParser
polymer-analyzer:     parse()
polymer-analyzer:       v parses classes
polymer-analyzer:       v throws a WarningCarryingException for parse errors
polymer-analyzer:       stringify()
polymer-analyzer:         - pretty prints output
polymer-analyzer:   FsUrlLoader
polymer-analyzer:     canLoad
polymer-analyzer:       v canLoad is true for a local file URL inside root
polymer-analyzer:       v canLoad is false for a local file URL outside root
polymer-analyzer:       v canLoad is false for a file url with a host
polymer-analyzer:       v canLoad is false for a relative path URL
polymer-analyzer:       v canLoad is false for an http URL
polymer-analyzer:   IndirectUrlResolver
polymer-analyzer:     v resolve
polymer-analyzer:     v relative
polymer-analyzer:     integration
polymer-analyzer:       v handles resolving urls with a full mapping from deep subdirs into a flatter runtime url space
polymer-analyzer:   MultiUrlLoader
polymer-analyzer:     canLoad
polymer-analyzer:       v canLoad is true if the first loader is true
polymer-analyzer:       v canLoad is true if the last loader is true
polymer-analyzer:       v canLoad is true if all loaders are true
polymer-analyzer:       v canLoad is false if all loaders are false
polymer-analyzer:     load
polymer-analyzer:       v returns only the first loaded file
polymer-analyzer:       v returns the file from first loader that can load
polymer-analyzer:       v throws an error if no loader can be found to load
polymer-analyzer:   MultiUrlResolver
polymer-analyzer:     resolve
polymer-analyzer:       v only the first resolution is returned
polymer-analyzer:       v keeps trying until it finds a good resolver
polymer-analyzer:       v returns undefined if no resolver works
polymer-analyzer:     relative
polymer-analyzer:       v delegate the relative function based on resolve
polymer-analyzer:   PackageUrlResolver
polymer-analyzer:     resolve
polymer-analyzer:       v resolves file:// urls to themselves
polymer-analyzer:       v resolves an in-package URL
polymer-analyzer:       v resolves sibling URLs to the component dir
polymer-analyzer:       v resolves sibling with matching name prefix to component dir
polymer-analyzer:       v resolves cousin URLs as normal
polymer-analyzer:       v passes URLs with unknown hostnames through untouched
polymer-analyzer:       v resolves protocol-relative URLs using default protocol
polymer-analyzer:       v resolves protocol-relative URLs using provided protocol
polymer-analyzer:       v resolves a URL with the right hostname
polymer-analyzer:       v resolves a URL with spaces
polymer-analyzer:       v resolves an undecodable URL to undefined
polymer-analyzer:       v resolves a relative URL containing querystring and fragment
polymer-analyzer:       v resolves a URL with no pathname
polymer-analyzer:     relative
polymer-analyzer:       v can get relative urls between urls
polymer-analyzer:       v will keep absolute urls absolute
polymer-analyzer:       v sibling urls work properly
polymer-analyzer:   PrefixedUrlLoader
polymer-analyzer:     canLoad
polymer-analyzer:       v canLoad is true if the url starts with prefix
polymer-analyzer:       v canLoad is false if the url does not start with prefix
polymer-analyzer:       v canLoad is false if the delgate loader says it is
polymer-analyzer:     load
polymer-analyzer:       v load returns content if url starts with prefix
polymer-analyzer:       v load throws error if url does not start with prefix
polymer-analyzer:       v load passes on delegate error if url starts with prefix
polymer-analyzer:   RedirectResolver
polymer-analyzer:     resolve
polymer-analyzer:       v if prefix matches, url is rewritten
polymer-analyzer:       v if prefix doesn't match, returns undefined
polymer-analyzer:       v if url matches redirection target, returns url
polymer-analyzer:     relative
polymer-analyzer:       v if `to` is not in redirect-to, return as-is
polymer-analyzer:       v if `from` is not in redirect-to, un-redirect the `to`
polymer-analyzer:   UrlResolver
polymer-analyzer:     resolve
polymer-analyzer:       v can resolve a url when relative url contains no pathname
polymer-analyzer:     relative
polymer-analyzer:       v can get relative urls between urls
polymer-analyzer:       v preserves target url querystrings and fragments
polymer-analyzer:       v will keep absolute urls absolute
polymer-analyzer:       v sibling urls work properly
polymer-analyzer:   WarningPrinter
polymer-analyzer:     v can handle printing no warnings
polymer-analyzer:     58) can format and print a basic warning
polymer-analyzer:     v can format and print one-line warnings
polymer-analyzer:     59) it adds color if configured to do so
polymer-analyzer:     60) it can print a multiline range
polymer-analyzer:   311 passing (3s)
polymer-analyzer:   6 pending
polymer-analyzer:   60 failing
polymer-analyzer:   1) generate-analysis
polymer-analyzer:        generateAnalysisMetadata
polymer-analyzer:          generates for Document array from fixtures
polymer-analyzer:            produces a correct analysis.json for fixture dir `dom-module`:
polymer-analyzer:       Generated form of analysis\dom-module\analysis.json differs from the golden at that path
polymer-analyzer:       + expected - actual
polymer-analyzer:                  "name": "slot1"
polymer-analyzer:                  "range": {
polymer-analyzer:                    "end": {
polymer-analyzer:                      "column": 30
polymer-analyzer:       -              "line": 7
polymer-analyzer:       +              "line": 6
polymer-analyzer:                    }
polymer-analyzer:                    "start": {
polymer-analyzer:                      "column": 4
polymer-analyzer:       -              "line": 7
polymer-analyzer:       +              "line": 6
polymer-analyzer:                    }
polymer-analyzer:                  }
polymer-analyzer:                }
polymer-analyzer:                {
polymer-analyzer: --
polymer-analyzer:                  "name": "slot2"
polymer-analyzer:                  "range": {
polymer-analyzer:                    "end": {
polymer-analyzer:                      "column": 30
polymer-analyzer:       -              "line": 8
polymer-analyzer:       +              "line": 7
polymer-analyzer:                    }
polymer-analyzer:                    "start": {
polymer-analyzer:                      "column": 4
polymer-analyzer:       -              "line": 8
polymer-analyzer:       +              "line": 7
polymer-analyzer:                    }
polymer-analyzer:                  }
polymer-analyzer:                }
polymer-analyzer:                {
polymer-analyzer: --
polymer-analyzer:                  "name": ""
polymer-analyzer:                  "range": {
polymer-analyzer:                    "end": {
polymer-analyzer:                      "column": 17
polymer-analyzer:       -              "line": 9
polymer-analyzer:       +              "line": 8
polymer-analyzer:                    }
polymer-analyzer:                    "start": {
polymer-analyzer:                      "column": 4
polymer-analyzer:       -              "line": 9
polymer-analyzer:       +              "line": 8
polymer-analyzer:                    }
polymer-analyzer:                  }
polymer-analyzer:                }
polymer-analyzer:              ]
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\analysis-format\generate-analysis_test.ts:75:22)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\analysis-format\generate-analysis_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   2) Analyzer
polymer-analyzer:        treats module script tags as normal imports:
polymer-analyzer:       AssertionError: expected [ Array(1) ] to deeply equal [ Array(1) ]
polymer-analyzer:       + expected - actual
polymer-analyzer:        [
polymer-analyzer:       -  "\nclass Bar extends Foo {\r\n                  ~~~"
polymer-analyzer:       +  "\nclass Bar extends Foo {\n                  ~~~"
polymer-analyzer:        ]
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\core\analyzer_test.ts:830:12)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\core\analyzer_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   3) Analyzer
polymer-analyzer:        analyze()
polymer-analyzer:          gets source ranges of documents correct:
polymer-analyzer:       AssertionError: expected '\n<link rel="import" href="inline-only.html">\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n<link rel="import" href="leaf.html">\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n<link rel="import" href="inline-and-imports.html">\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n<link rel="import" href="subfolder/in-folder.html">\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n<link rel="lazy-import" href="lazy.html">\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n' to deeply equal '\n<link rel="import" href="inline-only.html">\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n<link rel="import" href="leaf.html">\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n<link rel="import" href="inline-and-imports.html">\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n<link rel="import" href="subfolder/in-folder.html">\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n<link rel="lazy-import" href="lazy.html">\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -<link rel="import" href="inline-only.html">
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -<link rel="import" href="leaf.html">
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -<link rel="import" href="inline-and-imports.html">
polymer-analyzer:
polymer-analyzer:       +<link rel="import" href="inline-only.html">
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +<link rel="import" href="leaf.html">
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +<link rel="import" href="inline-and-imports.html">
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +<link rel="import" href="subfolder/in-folder.html">
polymer-analyzer:        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -<link rel="import" href="subfolder/in-folder.html">
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -<link rel="lazy-import" href="lazy.html">
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +<link rel="lazy-import" href="lazy.html">
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\core\analyzer_test.ts:113:14)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\core\analyzer_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   4) Analyzer
polymer-analyzer:        analyze()
polymer-analyzer:          analyzes inline scripts correctly:
polymer-analyzer:       AssertionError: expected '\n  <script>\r\n          ~\n    console.log(\'hi\');\r\n~~~~~~~~~~~~~~~~~~~~~~~\n  </script>\r\n~~' to deeply equal '\n  <script>\n          ~\n    console.log(\'hi\');\n~~~~~~~~~~~~~~~~~~~~~~\n  </script>\n~~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -  <script>
polymer-analyzer:
polymer-analyzer:       +  <script>
polymer-analyzer:                  ~
polymer-analyzer:       -    console.log('hi');
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -  </script>
polymer-analyzer:
polymer-analyzer:       +    console.log('hi');
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +  </script>
polymer-analyzer:        ~~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\core\analyzer_test.ts:141:14)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\core\analyzer_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   5) Analyzer
polymer-analyzer:        analyze()
polymer-analyzer:          analyzes inline styles correctly:
polymer-analyzer:       AssertionError: expected '\n  <style>\r\n         ~\n    body {\r\n~~~~~~~~~~~\n      color: red;\r\n~~~~~~~~~~~~~~~~~~\n    }\r\n~~~~~~\n  </style>\r\n~~' to deeply equal '\n  <style>\n         ~\n    body {\n~~~~~~~~~~\n      color: red;\n~~~~~~~~~~~~~~~~~\n    }\n~~~~~\n  </style>\n~~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -  <style>
polymer-analyzer:
polymer-analyzer:       +  <style>
polymer-analyzer:                 ~
polymer-analyzer:       -    body {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~
polymer-analyzer:       -      color: red;
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -    }
polymer-analyzer:
polymer-analyzer:       -~~~~~~
polymer-analyzer:       -  </style>
polymer-analyzer:
polymer-analyzer:       +    body {
polymer-analyzer:       +~~~~~~~~~~
polymer-analyzer:       +      color: red;
polymer-analyzer:       +~~~~~~~~~~~~~~~~~
polymer-analyzer:       +    }
polymer-analyzer:       +~~~~~
polymer-analyzer:       +  </style>
polymer-analyzer:        ~~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\core\analyzer_test.ts:162:14)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\core\analyzer_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   6) CssCustomPropertyScanner
polymer-analyzer:        finds custom property assignments:
polymer-analyzer:       AssertionError: expected [ Array(3) ] to deeply equal [ Array(3) ]
polymer-analyzer:       + expected - actual
polymer-analyzer:        [
polymer-analyzer:       -  "\n      --primary-text-color: var(--light-theme-text-color);\r\n      ~~~~~~~~~~~~~~~~~~~~"
polymer-analyzer:       -  "\n      --primary-background-color: var(--light-theme-background-color, --orange);\r\n      ~~~~~~~~~~~~~~~~~~~~~~~~~~"
polymer-analyzer:       -  "\n      --light-theme-background-color: #ffffff;\r\n      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
polymer-analyzer:       +  "\n      --primary-text-color: var(--light-theme-text-color);\n      ~~~~~~~~~~~~~~~~~~~~"
polymer-analyzer:       +  "\n      --primary-background-color: var(--light-theme-background-color, --orange);\n      ~~~~~~~~~~~~~~~~~~~~~~~~~~"
polymer-analyzer:       +  "\n      --light-theme-background-color: #ffffff;\n      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
polymer-analyzer:        ]
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\css\css-custom-property-scanner_test.ts:31:12)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\css\css-custom-property-scanner_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   7) CssCustomPropertyScanner
polymer-analyzer:        finds custom property uses:
polymer-analyzer:       AssertionError: expected [ Array(5) ] to deeply equal [ Array(5) ]
polymer-analyzer:       + expected - actual
polymer-analyzer:        [
polymer-analyzer:       -  "\n        @apply(--layout-inline);\r\n               ~~~~~~~~~~~~~~~"
polymer-analyzer:       -  "\n        @apply --layout-center-center;\r\n               ~~~~~~~~~~~~~~~~~~~~~~"
polymer-analyzer:       -  "\n      --primary-text-color: var(--light-theme-text-color);\r\n                                ~~~~~~~~~~~~~~~~~~~~~~~~"
polymer-analyzer:       -  "\n      --primary-background-color: var(--light-theme-background-color, --orange);\r\n                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
polymer-analyzer:       -  "\n      --primary-background-color: var(--light-theme-background-color, --orange);\r\n                                                                      ~~~~~~~~"
polymer-analyzer:       +  "\n        @apply(--layout-inline);\n               ~~~~~~~~~~~~~~~"
polymer-analyzer:       +  "\n        @apply --layout-center-center;\n               ~~~~~~~~~~~~~~~~~~~~~~"
polymer-analyzer:       +  "\n      --primary-text-color: var(--light-theme-text-color);\n                                ~~~~~~~~~~~~~~~~~~~~~~~~"
polymer-analyzer:       +  "\n      --primary-background-color: var(--light-theme-background-color, --orange);\n                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
polymer-analyzer:       +  "\n      --primary-background-color: var(--light-theme-background-color, --orange);\n                                                                      ~~~~~~~~"
polymer-analyzer:        ]
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\css\css-custom-property-scanner_test.ts:57:12)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\css\css-custom-property-scanner_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   8) CssParser
polymer-analyzer:        parse()
polymer-analyzer:          stringifies css:
polymer-analyzer:       AssertionError: expected ':host {\n  background-color: blue;\n}\n' to deeply equal ':host {\r\n  background-color: blue;\r\n}\r\n'
polymer-analyzer:       + expected - actual
polymer-analyzer:       -:host {
polymer-analyzer:       -  background-color: blue;
polymer-analyzer:       -}
polymer-analyzer:       +:host {
polymer-analyzer:
polymer-analyzer:       +  background-color: blue;
polymer-analyzer:
polymer-analyzer:       +}
polymer-analyzer:
polymer-analyzer:
polymer-analyzer:       at Context.test (src\test\css\css-parser_test.ts:50:14)
polymer-analyzer:
polymer-analyzer:   9) ParsedHtmlDocument
polymer-analyzer:        sourceRangeForNode()
polymer-analyzer:          works for comments:
polymer-analyzer:       AssertionError: expected '\n    <!-- Single Line Comment -->\r\n    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~' to deeply equal '\n    <!-- Single Line Comment -->\n    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -    <!-- Single Line Comment -->
polymer-analyzer:
polymer-analyzer:       +    <!-- Single Line Comment -->
polymer-analyzer:            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\html\html-document_test.ts:49:14)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\html\html-document_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   10) ParsedHtmlDocument
polymer-analyzer:        sourceRangeForNode()
polymer-analyzer:          works for elements:
polymer-analyzer:       AssertionError: expected '\n        <li>1\r\n        ~~~~~~\n        <li>2</li>\r\n~~~~~~~~' to deeply equal '\n        <li>1\n        ~~~~~\n        <li>2</li>\n~~~~~~~~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -        <li>1
polymer-analyzer:
polymer-analyzer:       -        ~~~~~~
polymer-analyzer:       -        <li>2</li>
polymer-analyzer:
polymer-analyzer:       +        <li>1
polymer-analyzer:       +        ~~~~~
polymer-analyzer:       +        <li>2</li>
polymer-analyzer:        ~~~~~~~~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\html\html-document_test.ts:72:14)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\html\html-document_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   11) ParsedHtmlDocument
polymer-analyzer:        sourceRangeForNode()
polymer-analyzer:          works for void elements:
polymer-analyzer:       AssertionError: expected '\n    <link rel="has attributes">\r\n    ~~~~~~~~~~~~~~~~~~~~~~~~~~~' to deeply equal '\n    <link rel="has attributes">\n    ~~~~~~~~~~~~~~~~~~~~~~~~~~~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -    <link rel="has attributes">
polymer-analyzer:
polymer-analyzer:       +    <link rel="has attributes">
polymer-analyzer:            ~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\html\html-document_test.ts:138:14)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\html\html-document_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   12) ParsedHtmlDocument
polymer-analyzer:        sourceRangeForNode()
polymer-analyzer:          works for text nodes:
polymer-analyzer:       AssertionError: expected '\n    <title>\r\n           ~\n      This title is a little\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n      complicated.\r\n~~~~~~~~~~~~~~~~~~~\n        </title>\r\n~~~~~~~~' to deeply equal '\n    <title>\n           ~\n      This title is a little\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n      complicated.\n~~~~~~~~~~~~~~~~~~\n        </title>\n~~~~~~~~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -    <title>
polymer-analyzer:
polymer-analyzer:       +    <title>
polymer-analyzer:                   ~
polymer-analyzer:       -      This title is a little
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -      complicated.
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -        </title>
polymer-analyzer:
polymer-analyzer:       +      This title is a little
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +      complicated.
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +        </title>
polymer-analyzer:        ~~~~~~~~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\html\html-document_test.ts:157:14)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\html\html-document_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   13) ParsedHtmlDocument
polymer-analyzer:        sourceRangeForStartTag
polymer-analyzer:          it works for tags with no attributes:
polymer-analyzer:       AssertionError: expected '\n        <li>1\r\n        ~~~~' to deeply equal '\n        <li>1\n        ~~~~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -        <li>1
polymer-analyzer:
polymer-analyzer:       +        <li>1
polymer-analyzer:                ~~~~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\html\html-document_test.ts:199:14)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\html\html-document_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   14) ParsedHtmlDocument
polymer-analyzer:        sourceRangeForStartTag
polymer-analyzer:          it works for void tags with no attributes:
polymer-analyzer:       AssertionError: expected '\n    <br>\r\n    ~~~~' to deeply equal '\n    <br>\n    ~~~~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -    <br>
polymer-analyzer:
polymer-analyzer:       +    <br>
polymer-analyzer:            ~~~~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\html\html-document_test.ts:233:14)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\html\html-document_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   15) ParsedHtmlDocument
polymer-analyzer:        sourceRangeForStartTag
polymer-analyzer:          it works for void tags with attributes:
polymer-analyzer:       AssertionError: expected '\n    <link rel="has attributes">\r\n    ~~~~~~~~~~~~~~~~~~~~~~~~~~~' to deeply equal '\n    <link rel="has attributes">\n    ~~~~~~~~~~~~~~~~~~~~~~~~~~~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -    <link rel="has attributes">
polymer-analyzer:
polymer-analyzer:       +    <link rel="has attributes">
polymer-analyzer:            ~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\html\html-document_test.ts:246:14)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\html\html-document_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   16) ParsedHtmlDocument
polymer-analyzer:        sourceRangeForStartTag
polymer-analyzer:          it works for normal elements with attributes:
polymer-analyzer:       AssertionError: expected '\n    <h1 class="foo" id="bar">\r\n    ~~~~~~~~~~~~~~~~~~~~~~~~~' to deeply equal '\n    <h1 class="foo" id="bar">\n    ~~~~~~~~~~~~~~~~~~~~~~~~~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -    <h1 class="foo" id="bar">
polymer-analyzer:
polymer-analyzer:       +    <h1 class="foo" id="bar">
polymer-analyzer:            ~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\html\html-document_test.ts:268:14)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\html\html-document_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   17) ParsedHtmlDocument
polymer-analyzer:        sourceRangeForEndTag
polymer-analyzer:          it works for normal elements:
polymer-analyzer:       AssertionError: expected '\n    </h1>\r\n    ~~~~~' to deeply equal '\n    </h1>\n    ~~~~~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -    </h1>
polymer-analyzer:
polymer-analyzer:       +    </h1>
polymer-analyzer:            ~~~~~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\html\html-document_test.ts:309:14)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\html\html-document_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   18) ParsedHtmlDocument
polymer-analyzer:        sourceRangeForAttribute
polymer-analyzer:          works for boolean attributes:
polymer-analyzer:       AssertionError: expected '\n    <complex-tag boolean-attr\r\n                 ~~~~~~~~~~~~' to deeply equal '\n    <complex-tag boolean-attr\n                 ~~~~~~~~~~~~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -    <complex-tag boolean-attr
polymer-analyzer:
polymer-analyzer:       +    <complex-tag boolean-attr
polymer-analyzer:                         ~~~~~~~~~~~~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\html\html-document_test.ts:340:14)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\html\html-document_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   19) ParsedHtmlDocument
polymer-analyzer:        sourceRangeForAttribute
polymer-analyzer:          works for one line string attributes:
polymer-analyzer:       AssertionError: expected '\n                 string-attr="like this"\r\n                 ~~~~~~~~~~~~~~~~~~~~~~~' to deeply equal '\n                 string-attr="like this"\n                 ~~~~~~~~~~~~~~~~~~~~~~~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -                 string-attr="like this"
polymer-analyzer:
polymer-analyzer:       +                 string-attr="like this"
polymer-analyzer:                         ~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\html\html-document_test.ts:349:14)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\html\html-document_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   20) ParsedHtmlDocument
polymer-analyzer:        sourceRangeForAttribute
polymer-analyzer:          works for multiline string attributes:
polymer-analyzer:       AssertionError: expected '\n                 multi-line-attr="\r\n                 ~~~~~~~~~~~~~~~~~~\n                    can go on\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n                    for multiple lines\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n                "\r\n~~~~~~~~~~~~~~~~~' to deeply equal '\n                 multi-line-attr="\n                 ~~~~~~~~~~~~~~~~~\n                    can go on\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n                    for multiple lines\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n                "\n~~~~~~~~~~~~~~~~~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -                 multi-line-attr="
polymer-analyzer:
polymer-analyzer:       -                 ~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -                    can go on
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -                    for multiple lines
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -                "
polymer-analyzer:
polymer-analyzer:       +                 multi-line-attr="
polymer-analyzer:       +                 ~~~~~~~~~~~~~~~~~
polymer-analyzer:       +                    can go on
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +                    for multiple lines
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +                "
polymer-analyzer:        ~~~~~~~~~~~~~~~~~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\html\html-document_test.ts:358:14)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\html\html-document_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   21) ParsedHtmlDocument
polymer-analyzer:        sourceRangeForAttribute
polymer-analyzer:          works for attributes with whitespace around the equals sign:
polymer-analyzer:       AssertionError: expected '\n                whitespace-around-equals\r\n                ~~~~~~~~~~~~~~~~~~~~~~~~~\n                =\r\n~~~~~~~~~~~~~~~~~~\n                "yes this is legal">\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' to deeply equal '\n                whitespace-around-equals\n                ~~~~~~~~~~~~~~~~~~~~~~~~\n                =\n~~~~~~~~~~~~~~~~~\n                "yes this is legal">\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -                whitespace-around-equals
polymer-analyzer:
polymer-analyzer:       -                ~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -                =
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -                "yes this is legal">
polymer-analyzer:
polymer-analyzer:       +                whitespace-around-equals
polymer-analyzer:       +                ~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +                =
polymer-analyzer:       +~~~~~~~~~~~~~~~~~
polymer-analyzer:       +                "yes this is legal">
polymer-analyzer:        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\html\html-document_test.ts:375:18)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\html\html-document_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   22) ParsedHtmlDocument
polymer-analyzer:        sourceRangeForAttribute
polymer-analyzer:          for a void element
polymer-analyzer:            works for a string attribute:
polymer-analyzer:       AssertionError: expected '\n    <link rel="has attributes">\r\n          ~~~~~~~~~~~~~~~~~~~~' to deeply equal '\n    <link rel="has attributes">\n          ~~~~~~~~~~~~~~~~~~~~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -    <link rel="has attributes">
polymer-analyzer:
polymer-analyzer:       +    <link rel="has attributes">
polymer-analyzer:                  ~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\html\html-document_test.ts:393:16)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\html\html-document_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   23) ParsedHtmlDocument
polymer-analyzer:        sourceRangeForAttributeName
polymer-analyzer:          works for boolean attributes:
polymer-analyzer:       AssertionError: expected '\n    <complex-tag boolean-attr\r\n                 ~~~~~~~~~~~~' to deeply equal '\n    <complex-tag boolean-attr\n                 ~~~~~~~~~~~~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -    <complex-tag boolean-attr
polymer-analyzer:
polymer-analyzer:       +    <complex-tag boolean-attr
polymer-analyzer:                         ~~~~~~~~~~~~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\html\html-document_test.ts:420:14)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\html\html-document_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   24) ParsedHtmlDocument
polymer-analyzer:        sourceRangeForAttributeName
polymer-analyzer:          works for one line string attributes:
polymer-analyzer:       AssertionError: expected '\n                 string-attr="like this"\r\n                 ~~~~~~~~~~~' to deeply equal '\n                 string-attr="like this"\n                 ~~~~~~~~~~~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -                 string-attr="like this"
polymer-analyzer:
polymer-analyzer:       +                 string-attr="like this"
polymer-analyzer:                         ~~~~~~~~~~~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\html\html-document_test.ts:429:14)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\html\html-document_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   25) ParsedHtmlDocument
polymer-analyzer:        sourceRangeForAttributeName
polymer-analyzer:          works for multiline string attributes:
polymer-analyzer:       AssertionError: expected '\n                 multi-line-attr="\r\n                 ~~~~~~~~~~~~~~~' to deeply equal '\n                 multi-line-attr="\n                 ~~~~~~~~~~~~~~~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -                 multi-line-attr="
polymer-analyzer:
polymer-analyzer:       +                 multi-line-attr="
polymer-analyzer:                         ~~~~~~~~~~~~~~~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\html\html-document_test.ts:438:14)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\html\html-document_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   26) ParsedHtmlDocument
polymer-analyzer:        sourceRangeForAttributeName
polymer-analyzer:          works for attributes with whitespace around the equals sign:
polymer-analyzer:       AssertionError: expected '\n                whitespace-around-equals\r\n                ~~~~~~~~~~~~~~~~~~~~~~~~' to deeply equal '\n                whitespace-around-equals\n                ~~~~~~~~~~~~~~~~~~~~~~~~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -                whitespace-around-equals
polymer-analyzer:
polymer-analyzer:       +                whitespace-around-equals
polymer-analyzer:                        ~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\html\html-document_test.ts:448:18)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\html\html-document_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   27) ParsedHtmlDocument
polymer-analyzer:        sourceRangeForAttributeName
polymer-analyzer:          for a void element
polymer-analyzer:            works for a string attribute:
polymer-analyzer:       AssertionError: expected '\n    <link rel="has attributes">\r\n          ~~~' to deeply equal '\n    <link rel="has attributes">\n          ~~~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -    <link rel="has attributes">
polymer-analyzer:
polymer-analyzer:       +    <link rel="has attributes">
polymer-analyzer:                  ~~~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\html\html-document_test.ts:462:16)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\html\html-document_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   28) ParsedHtmlDocument
polymer-analyzer:        sourceRangeForAttributeValue
polymer-analyzer:          works for one line string attributes:
polymer-analyzer:       AssertionError: expected '\n                 string-attr="like this"\r\n                             ~~~~~~~~~~~' to deeply equal '\n                 string-attr="like this"\n                             ~~~~~~~~~~~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -                 string-attr="like this"
polymer-analyzer:
polymer-analyzer:       +                 string-attr="like this"
polymer-analyzer:                                     ~~~~~~~~~~~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\html\html-document_test.ts:496:14)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\html\html-document_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   29) ParsedHtmlDocument
polymer-analyzer:        sourceRangeForAttributeValue
polymer-analyzer:          works for multiline string attributes:
polymer-analyzer:       AssertionError: expected '\n                 multi-line-attr="\r\n                                 ~~\n                    can go on\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n                    for multiple lines\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n                "\r\n~~~~~~~~~~~~~~~~~' to deeply equal '\n                 multi-line-attr="\n                                 ~\n                    can go on\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n                    for multiple lines\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n                "\n~~~~~~~~~~~~~~~~~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -                 multi-line-attr="
polymer-analyzer:
polymer-analyzer:       -                                 ~~
polymer-analyzer:       -                    can go on
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -                    for multiple lines
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -                "
polymer-analyzer:
polymer-analyzer:       +                 multi-line-attr="
polymer-analyzer:       +                                 ~
polymer-analyzer:       +                    can go on
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +                    for multiple lines
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +                "
polymer-analyzer:        ~~~~~~~~~~~~~~~~~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\html\html-document_test.ts:505:14)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\html\html-document_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   30) ParsedHtmlDocument
polymer-analyzer:        sourceRangeForAttributeValue
polymer-analyzer:          works for attributes with whitespace around the equals sign:
polymer-analyzer:       AssertionError: expected '\n                "yes this is legal">\r\n                ~~~~~~~~~~~~~~~~~~~' to deeply equal '\n                "yes this is legal">\n                ~~~~~~~~~~~~~~~~~~~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -                "yes this is legal">
polymer-analyzer:
polymer-analyzer:       +                "yes this is legal">
polymer-analyzer:                        ~~~~~~~~~~~~~~~~~~~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\html\html-document_test.ts:522:18)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\html\html-document_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   31) ParsedHtmlDocument
polymer-analyzer:        sourceRangeForAttributeValue
polymer-analyzer:          for a void element
polymer-analyzer:            works for a string attribute:
polymer-analyzer:       AssertionError: expected '\n    <link rel="has attributes">\r\n              ~~~~~~~~~~~~~~~~' to deeply equal '\n    <link rel="has attributes">\n              ~~~~~~~~~~~~~~~~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -    <link rel="has attributes">
polymer-analyzer:
polymer-analyzer:       +    <link rel="has attributes">
polymer-analyzer:                      ~~~~~~~~~~~~~~~~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\html\html-document_test.ts:536:16)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\html\html-document_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   32) HtmlParser
polymer-analyzer:        parse()
polymer-analyzer:          on a well-formed document
polymer-analyzer:            can stringify back a well-formed document:
polymer-analyzer:       AssertionError: expected '<link rel="import" href="xhr-document.html">\n<template id="findme">\n  <div>Fooa</div>\n  <div>Barr</div>\n  <div>Bazz</div>\n</template>\n<template id="noelement">\n  <div>Foooo</div>\n  <div>Barrr</div>\n  <div>Bazzz</div>\n</template>\n<template id="test-element">\n  <div>Foo</div>\n  <div>Bar</div>\n  <div>Baz</div>\n</template>\n<link rel="import" type="css" href="stylesheet.css">\n<link rel="stylesheet" href="stylesheet.css">\n<style>\n  :host {\n    color: black;\n  }\n</style>\n<script>\nPolymer({\n\n  is: \'test-element\',\n\n  /**\n   * Fired when properties on `data` are added, removed, or modified.\n   *\n   * @event data-change\n   */\n\n  /**\n   * Fired when an error occurs on an interaction with Firebase.  The\n   * `details.error` property contains the `Error` object provided by\n   * the Firebase API.\n   *\n   * @event error\n   */\n\n  published: {\n    /**\n     * I am a string!\n     */\n    stringProp: String,\n    /**\n     * I am a number!\n     */\n    numProp: Number,\n    /**\n     * I am an object!\n     */\n    objectProp: Object,\n    /**\n     * I am an object with explicit type!\n     * @type HTMLElement\n     */\n    elementProp: Object,\n    /**\n     * I am an object with notify=true!\n     */\n    objectNotify: {\n      type: Object,\n      notify: true\n    },\n    /**\n     * I am a boolean property!\n     */\n    boolProp: Boolean\n  },\n\n  bind: {\n    numProp: \'numChanged\',\n    elementProp: \'elemChanged\'\n  },\n\n  numChanged: function() {\n\n  },\n\n  elemChanged: function() {\n\n  }\n\n\n});\n\n</script>\n<!--\nCopyright (c) 2014 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n-->\n\n<!--\n * @group Polymer Mixins\n-->\n\n<script>\n\n/**\n* A module with no dependencies\n* and some newlines\n* in\n* its\n* docstring.\n*/\n  modulate(\'bare-module\', function() {\n    return {\n\n      /**\n       * User must call from `attached` callback\n       *\n       * @method resizableAttached\n       */\n      resizableAttached: function(cb) {\n        cb = cb || this._notifyResizeSelf;\n        this.async(function() {\n          var detail = {callback: cb, hasParentResizer: false};\n          this.fire(\'x-request-resize\', detail);\n          if (!detail.hasParentResizer) {\n            this._boundWindowResizeHandler = cb.bind(this);\n            // log(\'adding window resize handler\', null, this);\n            window.addEventListener(\'resize\', this._boundWindowResizeHandler);\n          }\n        }.bind(this));\n      },\n\n      /**\n       * User must call from `detached` callback\n       *\n       * @method resizableDetached\n       */\n      resizableDetached: function() {\n        this.fire(\'x-request-resize-cancel\', null, this, false);\n        if (this._boundWindowResizeHandler) {\n          window.removeEventListener(this._boundResizeHandler);\n        }\n      },\n\n      // Private: fire non-bubbling resize event to self; returns whether\n      // preventDefault was called, indicating that children should not\n      // be resized\n      _notifyResizeSelf: function() {\n        return this.fire(\'x-resize\', null, this, false).defaultPrevented;\n      }\n\n    };\n  });\n\n/**\n * A module that depends on bare-module.\n */\n  modulate(\'module-depends\', [\'bare-module\'], function(bare) {\n    return {\n\n      /**\n       * User must call from `attached` callback\n       *\n       * @method resizerAttached\n       */\n      resizerAttached: function() {\n        this.resizableAttached(this.notifyResize);\n        this._boundResizeRequested = this._boundResizeRequested || this._handleResizeRequested.bind(this);\n        var target = this.resizerIsPeer ? this.parentElement : this;\n        target.addEventListener(\'x-request-resize\', this._boundResizeRequested);\n      },\n\n      /**\n       * User must call from `detached` callback\n       *\n       * @method resizerDetached\n       */\n      resizerDetached: function() {\n        this.resizableDetached();\n        var target = this.resizerIsPeer ? this.parentElement : this;\n        target.removeEventListener(\'x-request-resize\', this._boundResizeRequested);\n      },\n\n      /**\n       * User should call when resizing or un-hiding children\n       *\n       * @method notifyResize\n       */\n      notifyResize: function() {\n        // Notify self\n        if (!this._notifyResizeSelf()) {\n          // Notify requestors if default was not prevented\n          var r = this.resizeRequestors;\n          if (r) {\n            for (var i=0; i<r.length; i++) {\n              var ri = r[i];\n              if (!this.resizerShouldNotify || this.resizerShouldNotify(ri.target)) {\n                // log(\'notifying resize\', null, ri.target, true);\n                ri.callback.apply(ri.target);\n                // logEnd();\n              }\n            }\n          }\n        }\n      },\n\n      /**\n       * User should implement to introduce filtering when notifying children.\n       * Generally, children that are hidden by the CoreResizer (e.g. non-active\n       * pages) need not be notified during resize, since they will be notified\n       * again when becoming un-hidden.\n       *\n       * Return `true` if CoreResizable passed as argument should be notified of\n       * resize.\n       *\n       * @method resizeerShouldNotify\n       * @param {Element} el\n       */\n       // resizeerShouldNotify: function(el) { }  // User to implement if needed\n      /**\n       * Set to `true` if the resizer is actually a peer to the elements it\n       * resizes (e.g. splitter); in this case it will listen for resize requests\n       * events from its peers on its parent.\n       *\n       * @property resizerIsPeer\n       * @type Boolean\n       * @default false\n       */\n      // Private: Handle requests for resize\n      _handleResizeRequested: function(e) {\n        if (e.target == this) {\n          return;\n        }\n        // log(\'resize requested\', e.target, this);\n        if (!this.resizeRequestors) {\n          this.resizeRequestors = [];\n        }\n        this.resizeRequestors.push({target: e.target, callback: e.detail.callback});\n        e.target.addEventListener(\'x-request-resize-cancel\', this._cancelResizeRequested.bind(this));\n        e.detail.hasParentResizer = true;\n        e.stopPropagation();\n      },\n\n      // Private: Handle cancellation requests for resize\n      _cancelResizeRequested: function(e) {\n        // Exit early if we\'re already out of the DOM (resizeRequestors will already be null)\n        if (this.resizeRequestors) {\n          for (var i=0; i<this.resizeRequestors.length; i++) {\n            if (this.resizeRequestors[i].target == e.target) {\n              // log(\'resizeCanceled\', e.target, this);\n              this.resizeRequestors.splice(i, 1);\n              break;\n            }\n          }\n        }\n      }\n\n    };\n  });\n\n//\n//  Toss some comments around for fun.\n//\n//\n</script>\n<script type="text/javascript"></script>\n<script type="application/javascript"></script>\n<script type="text/csv">\n  Foo,Bar,Baz\n</script>\n\n<!-- Don\'t blow up on empty script tags! -->\n<script></script>\n' to deeply equal '<link rel="import" href="xhr-document.html">\r\n<template id="findme">\r\n  <div>Fooa</div>\r\n  <div>Barr</div>\r\n  <div>Bazz</div>\r\n</template>\r\n<template id="noelement">\r\n  <div>Foooo</div>\r\n  <div>Barrr</div>\r\n  <div>Bazzz</div>\r\n</template>\r\n<template id="test-element">\r\n  <div>Foo</div>\r\n  <div>Bar</div>\r\n  <div>Baz</div>\r\n</template>\r\n<link rel="import" type="css" href="stylesheet.css">\r\n<link rel="stylesheet" href="stylesheet.css">\r\n<style>\r\n  :host {\r\n    color: black;\r\n  }\r\n</style>\r\n<script>\r\nPolymer({\r\n\r\n  is: \'test-element\',\r\n\r\n  /**\r\n   * Fired when properties on `data` are added, removed, or modified.\r\n   *\r\n   * @event data-change\r\n   */\r\n\r\n  /**\r\n   * Fired when an error occurs on an interaction with Firebase.  The\r\n   * `details.error` property contains the `Error` object provided by\r\n   * the Firebase API.\r\n   *\r\n   * @event error\r\n   */\r\n\r\n  published: {\r\n    /**\r\n     * I am a string!\r\n     */\r\n    stringProp: String,\r\n    /**\r\n     * I am a number!\r\n     */\r\n    numProp: Number,\r\n    /**\r\n     * I am an object!\r\n     */\r\n    objectProp: Object,\r\n    /**\r\n     * I am an object with explicit type!\r\n     * @type HTMLElement\r\n     */\r\n    elementProp: Object,\r\n    /**\r\n     * I am an object with notify=true!\r\n     */\r\n    objectNotify: {\r\n      type: Object,\r\n      notify: true\r\n    },\r\n    /**\r\n     * I am a boolean property!\r\n     */\r\n    boolProp: Boolean\r\n  },\r\n\r\n  bind: {\r\n    numProp: \'numChanged\',\r\n    elementProp: \'elemChanged\'\r\n  },\r\n\r\n  numChanged: function() {\r\n\r\n  },\r\n\r\n  elemChanged: function() {\r\n\r\n  }\r\n\r\n\r\n});\r\n\r\n</script>\r\n<!--\r\nCopyright (c) 2014 The Polymer Project Authors. All rights reserved.\r\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\r\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\r\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\r\nCode distributed by Google as part of the polymer project is also\r\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\r\n-->\r\n\r\n<!--\r\n * @group Polymer Mixins\r\n-->\r\n\r\n<script>\r\n\r\n/**\r\n* A module with no dependencies\r\n* and some newlines\r\n* in\r\n* its\r\n* docstring.\r\n*/\r\n  modulate(\'bare-module\', function() {\r\n    return {\r\n\r\n      /**\r\n       * User must call from `attached` callback\r\n       *\r\n       * @method resizableAttached\r\n       */\r\n      resizableAttached: function(cb) {\r\n        cb = cb || this._notifyResizeSelf;\r\n        this.async(function() {\r\n          var detail = {callback: cb, hasParentResizer: false};\r\n          this.fire(\'x-request-resize\', detail);\r\n          if (!detail.hasParentResizer) {\r\n            this._boundWindowResizeHandler = cb.bind(this);\r\n            // log(\'adding window resize handler\', null, this);\r\n            window.addEventListener(\'resize\', this._boundWindowResizeHandler);\r\n          }\r\n        }.bind(this));\r\n      },\r\n\r\n      /**\r\n       * User must call from `detached` callback\r\n       *\r\n       * @method resizableDetached\r\n       */\r\n      resizableDetached: function() {\r\n        this.fire(\'x-request-resize-cancel\', null, this, false);\r\n        if (this._boundWindowResizeHandler) {\r\n          window.removeEventListener(this._boundResizeHandler);\r\n        }\r\n      },\r\n\r\n      // Private: fire non-bubbling resize event to self; returns whether\r\n      // preventDefault was called, indicating that children should not\r\n      // be resized\r\n      _notifyResizeSelf: function() {\r\n        return this.fire(\'x-resize\', null, this, false).defaultPrevented;\r\n      }\r\n\r\n    };\r\n  });\r\n\r\n/**\r\n * A module that depends on bare-module.\r\n */\r\n  modulate(\'module-depends\', [\'bare-module\'], function(bare) {\r\n    return {\r\n\r\n      /**\r\n       * User must call from `attached` callback\r\n       *\r\n       * @method resizerAttached\r\n       */\r\n      resizerAttached: function() {\r\n        this.resizableAttached(this.notifyResize);\r\n        this._boundResizeRequested = this._boundResizeRequested || this._handleResizeRequested.bind(this);\r\n        var target = this.resizerIsPeer ? this.parentElement : this;\r\n        target.addEventListener(\'x-request-resize\', this._boundResizeRequested);\r\n      },\r\n\r\n      /**\r\n       * User must call from `detached` callback\r\n       *\r\n       * @method resizerDetached\r\n       */\r\n      resizerDetached: function() {\r\n        this.resizableDetached();\r\n        var target = this.resizerIsPeer ? this.parentElement : this;\r\n        target.removeEventListener(\'x-request-resize\', this._boundResizeRequested);\r\n      },\r\n\r\n      /**\r\n       * User should call when resizing or un-hiding children\r\n       *\r\n       * @method notifyResize\r\n       */\r\n      notifyResize: function() {\r\n        // Notify self\r\n        if (!this._notifyResizeSelf()) {\r\n          // Notify requestors if default was not prevented\r\n          var r = this.resizeRequestors;\r\n          if (r) {\r\n            for (var i=0; i<r.length; i++) {\r\n              var ri = r[i];\r\n              if (!this.resizerShouldNotify || this.resizerShouldNotify(ri.target)) {\r\n                // log(\'notifying resize\', null, ri.target, true);\r\n                ri.callback.apply(ri.target);\r\n                // logEnd();\r\n              }\r\n            }\r\n          }\r\n        }\r\n      },\r\n\r\n      /**\r\n       * User should implement to introduce filtering when notifying children.\r\n       * Generally, children that are hidden by the CoreResizer (e.g. non-active\r\n       * pages) need not be notified during resize, since they will be notified\r\n       * again when becoming un-hidden.\r\n       *\r\n       * Return `true` if CoreResizable passed as argument should be notified of\r\n       * resize.\r\n       *\r\n       * @method resizeerShouldNotify\r\n       * @param {Element} el\r\n       */\r\n       // resizeerShouldNotify: function(el) { }  // User to implement if needed\r\n      /**\r\n       * Set to `true` if the resizer is actually a peer to the elements it\r\n       * resizes (e.g. splitter); in this case it will listen for resize requests\r\n       * events from its peers on its parent.\r\n       *\r\n       * @property resizerIsPeer\r\n       * @type Boolean\r\n       * @default false\r\n       */\r\n      // Private: Handle requests for resize\r\n      _handleResizeRequested: function(e) {\r\n        if (e.target == this) {\r\n          return;\r\n        }\r\n        // log(\'resize requested\', e.target, this);\r\n        if (!this.resizeRequestors) {\r\n          this.resizeRequestors = [];\r\n        }\r\n        this.resizeRequestors.push({target: e.target, callback: e.detail.callback});\r\n        e.target.addEventListener(\'x-request-resize-cancel\', this._cancelResizeRequested.bind(this));\r\n        e.detail.hasParentResizer = true;\r\n        e.stopPropagation();\r\n      },\r\n\r\n      // Private: Handle cancellation requests for resize\r\n      _cancelResizeRequested: function(e) {\r\n        // Exit early if we\'re already out of the DOM (resizeRequestors will already be null)\r\n        if (this.resizeRequestors) {\r\n          for (var i=0; i<this.resizeRequestors.length; i++) {\r\n            if (this.resizeRequestors[i].target == e.target) {\r\n              // log(\'resizeCanceled\', e.target, this);\r\n              this.resizeRequestors.splice(i, 1);\r\n              break;\r\n            }\r\n          }\r\n        }\r\n      }\r\n\r\n    };\r\n  });\r\n\r\n//\r\n//  Toss some comments around for fun.\r\n//\r\n//\r\n</script>\r\n<script type="text/javascript"></script>\r\n<script type="application/javascript"></script>\r\n<script type="text/csv">\r\n  Foo,Bar,Baz\r\n</script>\r\n\r\n<!-- Don\'t blow up on empty script tags! -->\r\n<script></script>\r\n'
polymer-analyzer:       + expected - actual
polymer-analyzer:       -<link rel="import" href="xhr-document.html">
polymer-analyzer:       -<template id="findme">
polymer-analyzer:       -  <div>Fooa</div>
polymer-analyzer:       -  <div>Barr</div>
polymer-analyzer:       -  <div>Bazz</div>
polymer-analyzer:       -</template>
polymer-analyzer:       -<template id="noelement">
polymer-analyzer:       -  <div>Foooo</div>
polymer-analyzer:       -  <div>Barrr</div>
polymer-analyzer:       -  <div>Bazzz</div>
polymer-analyzer:       -</template>
polymer-analyzer:       -<template id="test-element">
polymer-analyzer:       -  <div>Foo</div>
polymer-analyzer:       -  <div>Bar</div>
polymer-analyzer:       -  <div>Baz</div>
polymer-analyzer:       -</template>
polymer-analyzer:       -<link rel="import" type="css" href="stylesheet.css">
polymer-analyzer:       -<link rel="stylesheet" href="stylesheet.css">
polymer-analyzer:       -<style>
polymer-analyzer:       -  :host {
polymer-analyzer:       -    color: black;
polymer-analyzer:       -  }
polymer-analyzer:       -</style>
polymer-analyzer:       -<script>
polymer-analyzer:       -Polymer({
polymer-analyzer:       -
polymer-analyzer:       -  is: 'test-element',
polymer-analyzer:       -
polymer-analyzer:       -  /**
polymer-analyzer:       -   * Fired when properties on `data` are added, removed, or modified.
polymer-analyzer:       -   *
polymer-analyzer:       -   * @event data-change
polymer-analyzer:       -   */
polymer-analyzer:       -
polymer-analyzer:       -  /**
polymer-analyzer:       -   * Fired when an error occurs on an interaction with Firebase.  The
polymer-analyzer:       -   * `details.error` property contains the `Error` object provided by
polymer-analyzer:       -   * the Firebase API.
polymer-analyzer:       -   *
polymer-analyzer:       -   * @event error
polymer-analyzer:       -   */
polymer-analyzer:       -
polymer-analyzer:       -  published: {
polymer-analyzer:       -    /**
polymer-analyzer:       -     * I am a string!
polymer-analyzer:       -     */
polymer-analyzer:       -    stringProp: String,
polymer-analyzer:       -    /**
polymer-analyzer:       -     * I am a number!
polymer-analyzer:       -     */
polymer-analyzer:       -    numProp: Number,
polymer-analyzer:       -    /**
polymer-analyzer:       -     * I am an object!
polymer-analyzer:       -     */
polymer-analyzer:       -    objectProp: Object,
polymer-analyzer:       -    /**
polymer-analyzer:       -     * I am an object with explicit type!
polymer-analyzer:       -     * @type HTMLElement
polymer-analyzer:       -     */
polymer-analyzer:       -    elementProp: Object,
polymer-analyzer:       -    /**
polymer-analyzer:       -     * I am an object with notify=true!
polymer-analyzer:       -     */
polymer-analyzer:       -    objectNotify: {
polymer-analyzer:       -      type: Object,
polymer-analyzer:       -      notify: true
polymer-analyzer:       -    },
polymer-analyzer:       -    /**
polymer-analyzer:       -     * I am a boolean property!
polymer-analyzer:       -     */
polymer-analyzer:       -    boolProp: Boolean
polymer-analyzer:       -  },
polymer-analyzer:       -
polymer-analyzer:       -  bind: {
polymer-analyzer:       -    numProp: 'numChanged',
polymer-analyzer:       -    elementProp: 'elemChanged'
polymer-analyzer:       -  },
polymer-analyzer:       -
polymer-analyzer:       -  numChanged: function() {
polymer-analyzer:       -
polymer-analyzer:       -  },
polymer-analyzer:       -
polymer-analyzer:       -  elemChanged: function() {
polymer-analyzer:       -
polymer-analyzer:       -  }
polymer-analyzer:       -
polymer-analyzer:       -
polymer-analyzer:       -});
polymer-analyzer:       -
polymer-analyzer:       -</script>
polymer-analyzer:       -<!--
polymer-analyzer:       -Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
polymer-analyzer:       -This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
polymer-analyzer:       -The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
polymer-analyzer:       -The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
polymer-analyzer:       -Code distributed by Google as part of the polymer project is also
polymer-analyzer:       -subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
polymer-analyzer:       --->
polymer-analyzer:       -
polymer-analyzer:       -<!--
polymer-analyzer:       - * @group Polymer Mixins
polymer-analyzer:       --->
polymer-analyzer:       -
polymer-analyzer:       -<script>
polymer-analyzer:       -
polymer-analyzer:       -/**
polymer-analyzer:       -* A module with no dependencies
polymer-analyzer:       -* and some newlines
polymer-analyzer:       -* in
polymer-analyzer:       -* its
polymer-analyzer:       -* docstring.
polymer-analyzer:       -*/
polymer-analyzer:       -  modulate('bare-module', function() {
polymer-analyzer:       -    return {
polymer-analyzer:       -
polymer-analyzer:       -      /**
polymer-analyzer:       -       * User must call from `attached` callback
polymer-analyzer:       -       *
polymer-analyzer:       -       * @method resizableAttached
polymer-analyzer:       -       */
polymer-analyzer:       -      resizableAttached: function(cb) {
polymer-analyzer:       -        cb = cb || this._notifyResizeSelf;
polymer-analyzer:       -        this.async(function() {
polymer-analyzer:       -          var detail = {callback: cb, hasParentResizer: false};
polymer-analyzer:       -          this.fire('x-request-resize', detail);
polymer-analyzer:       -          if (!detail.hasParentResizer) {
polymer-analyzer:       -            this._boundWindowResizeHandler = cb.bind(this);
polymer-analyzer:       -            // log('adding window resize handler', null, this);
polymer-analyzer:       -            window.addEventListener('resize', this._boundWindowResizeHandler);
polymer-analyzer:       -          }
polymer-analyzer:       -        }.bind(this));
polymer-analyzer:       -      },
polymer-analyzer:       -
polymer-analyzer:       -      /**
polymer-analyzer:       -       * User must call from `detached` callback
polymer-analyzer:       -       *
polymer-analyzer:       -       * @method resizableDetached
polymer-analyzer:       -       */
polymer-analyzer:       -      resizableDetached: function() {
polymer-analyzer:       -        this.fire('x-request-resize-cancel', null, this, false);
polymer-analyzer:       -        if (this._boundWindowResizeHandler) {
polymer-analyzer:       -          window.removeEventListener(this._boundResizeHandler);
polymer-analyzer:       -        }
polymer-analyzer:       -      },
polymer-analyzer:       -
polymer-analyzer:       -      // Private: fire non-bubbling resize event to self; returns whether
polymer-analyzer:       -      // preventDefault was called, indicating that children should not
polymer-analyzer:       -      // be resized
polymer-analyzer:       -      _notifyResizeSelf: function() {
polymer-analyzer:       -        return this.fire('x-resize', null, this, false).defaultPrevented;
polymer-analyzer:       -      }
polymer-analyzer:       -
polymer-analyzer:       -    };
polymer-analyzer:       -  });
polymer-analyzer:       -
polymer-analyzer:       -/**
polymer-analyzer:       - * A module that depends on bare-module.
polymer-analyzer:       - */
polymer-analyzer:       -  modulate('module-depends', ['bare-module'], function(bare) {
polymer-analyzer:       -    return {
polymer-analyzer:       -
polymer-analyzer:       -      /**
polymer-analyzer:       -       * User must call from `attached` callback
polymer-analyzer:       -       *
polymer-analyzer:       -       * @method resizerAttached
polymer-analyzer:       -       */
polymer-analyzer:       -      resizerAttached: function() {
polymer-analyzer:       -        this.resizableAttached(this.notifyResize);
polymer-analyzer:       -        this._boundResizeRequested = this._boundResizeRequested || this._handleResizeRequested.bind(this);
polymer-analyzer:       -        var target = this.resizerIsPeer ? this.parentElement : this;
polymer-analyzer:       -        target.addEventListener('x-request-resize', this._boundResizeRequested);
polymer-analyzer:       -      },
polymer-analyzer:       -
polymer-analyzer:       -      /**
polymer-analyzer:       -       * User must call from `detached` callback
polymer-analyzer:       -       *
polymer-analyzer:       -       * @method resizerDetached
polymer-analyzer:       -       */
polymer-analyzer:       -      resizerDetached: function() {
polymer-analyzer:       -        this.resizableDetached();
polymer-analyzer:       -        var target = this.resizerIsPeer ? this.parentElement : this;
polymer-analyzer:       -        target.removeEventListener('x-request-resize', this._boundResizeRequested);
polymer-analyzer:       -      },
polymer-analyzer:       -
polymer-analyzer:       -      /**
polymer-analyzer:       -       * User should call when resizing or un-hiding children
polymer-analyzer:       -       *
polymer-analyzer:       -       * @method notifyResize
polymer-analyzer:       -       */
polymer-analyzer:       -      notifyResize: function() {
polymer-analyzer:       -        // Notify self
polymer-analyzer:       -        if (!this._notifyResizeSelf()) {
polymer-analyzer:       -          // Notify requestors if default was not prevented
polymer-analyzer:       -          var r = this.resizeRequestors;
polymer-analyzer:       -          if (r) {
polymer-analyzer:       -            for (var i=0; i<r.length; i++) {
polymer-analyzer:       -              var ri = r[i];
polymer-analyzer:       -              if (!this.resizerShouldNotify || this.resizerShouldNotify(ri.target)) {
polymer-analyzer:       -                // log('notifying resize', null, ri.target, true);
polymer-analyzer:       -                ri.callback.apply(ri.target);
polymer-analyzer:       -                // logEnd();
polymer-analyzer:       -              }
polymer-analyzer:       -            }
polymer-analyzer:       -          }
polymer-analyzer:       -        }
polymer-analyzer:       -      },
polymer-analyzer:       -
polymer-analyzer:       -      /**
polymer-analyzer:       -       * User should implement to introduce filtering when notifying children.
polymer-analyzer:       -       * Generally, children that are hidden by the CoreResizer (e.g. non-active
polymer-analyzer:       -       * pages) need not be notified during resize, since they will be notified
polymer-analyzer:       -       * again when becoming un-hidden.
polymer-analyzer:       -       *
polymer-analyzer:       -       * Return `true` if CoreResizable passed as argument should be notified of
polymer-analyzer:       -       * resize.
polymer-analyzer:       -       *
polymer-analyzer:       -       * @method resizeerShouldNotify
polymer-analyzer:       -       * @param {Element} el
polymer-analyzer:       -       */
polymer-analyzer:       -       // resizeerShouldNotify: function(el) { }  // User to implement if needed
polymer-analyzer:       -      /**
polymer-analyzer:       -       * Set to `true` if the resizer is actually a peer to the elements it
polymer-analyzer:       -       * resizes (e.g. splitter); in this case it will listen for resize requests
polymer-analyzer:       -       * events from its peers on its parent.
polymer-analyzer:       -       *
polymer-analyzer:       -       * @property resizerIsPeer
polymer-analyzer:       -       * @type Boolean
polymer-analyzer:       -       * @default false
polymer-analyzer:       -       */
polymer-analyzer:       -      // Private: Handle requests for resize
polymer-analyzer:       -      _handleResizeRequested: function(e) {
polymer-analyzer:       -        if (e.target == this) {
polymer-analyzer:       -          return;
polymer-analyzer:       -        }
polymer-analyzer:       -        // log('resize requested', e.target, this);
polymer-analyzer:       -        if (!this.resizeRequestors) {
polymer-analyzer:       -          this.resizeRequestors = [];
polymer-analyzer:       -        }
polymer-analyzer:       -        this.resizeRequestors.push({target: e.target, callback: e.detail.callback});
polymer-analyzer:       -        e.target.addEventListener('x-request-resize-cancel', this._cancelResizeRequested.bind(this));
polymer-analyzer:       -        e.detail.hasParentResizer = true;
polymer-analyzer:       -        e.stopPropagation();
polymer-analyzer:       -      },
polymer-analyzer:       -
polymer-analyzer:       -      // Private: Handle cancellation requests for resize
polymer-analyzer:       -      _cancelResizeRequested: function(e) {
polymer-analyzer:       -        // Exit early if we're already out of the DOM (resizeRequestors will already be null)
polymer-analyzer:       -        if (this.resizeRequestors) {
polymer-analyzer:       -          for (var i=0; i<this.resizeRequestors.length; i++) {
polymer-analyzer:       -            if (this.resizeRequestors[i].target == e.target) {
polymer-analyzer:       -              // log('resizeCanceled', e.target, this);
polymer-analyzer:       -              this.resizeRequestors.splice(i, 1);
polymer-analyzer:       -              break;
polymer-analyzer:       -            }
polymer-analyzer:       -          }
polymer-analyzer:       -        }
polymer-analyzer:       -      }
polymer-analyzer:       -
polymer-analyzer:       -    };
polymer-analyzer:       -  });
polymer-analyzer:       -
polymer-analyzer:       -//
polymer-analyzer:       -//  Toss some comments around for fun.
polymer-analyzer:       -//
polymer-analyzer:       -//
polymer-analyzer:       -</script>
polymer-analyzer:       -<script type="text/javascript"></script>
polymer-analyzer:       -<script type="application/javascript"></script>
polymer-analyzer:       -<script type="text/csv">
polymer-analyzer:       -  Foo,Bar,Baz
polymer-analyzer:       -</script>
polymer-analyzer:       -
polymer-analyzer:       -<!-- Don't blow up on empty script tags! -->
polymer-analyzer:       -<script></script>
polymer-analyzer:       +<link rel="import" href="xhr-document.html">
polymer-analyzer:
polymer-analyzer:       +<template id="findme">
polymer-analyzer:
polymer-analyzer:       +  <div>Fooa</div>
polymer-analyzer:
polymer-analyzer:       +  <div>Barr</div>
polymer-analyzer:
polymer-analyzer:       +  <div>Bazz</div>
polymer-analyzer:
polymer-analyzer:       +</template>
polymer-analyzer:
polymer-analyzer:       +<template id="noelement">
polymer-analyzer:
polymer-analyzer:       +  <div>Foooo</div>
polymer-analyzer:
polymer-analyzer:       +  <div>Barrr</div>
polymer-analyzer:
polymer-analyzer:       +  <div>Bazzz</div>
polymer-analyzer:
polymer-analyzer:       +</template>
polymer-analyzer:
polymer-analyzer:       +<template id="test-element">
polymer-analyzer:
polymer-analyzer:       +  <div>Foo</div>
polymer-analyzer:
polymer-analyzer:       +  <div>Bar</div>
polymer-analyzer:
polymer-analyzer:       +  <div>Baz</div>
polymer-analyzer:
polymer-analyzer:       +</template>
polymer-analyzer:
polymer-analyzer:       +<link rel="import" type="css" href="stylesheet.css">
polymer-analyzer:
polymer-analyzer:       +<link rel="stylesheet" href="stylesheet.css">
polymer-analyzer:
polymer-analyzer:       +<style>
polymer-analyzer:
polymer-analyzer:       +  :host {
polymer-analyzer:
polymer-analyzer:       +    color: black;
polymer-analyzer:
polymer-analyzer:       +  }
polymer-analyzer:
polymer-analyzer:       +</style>
polymer-analyzer:
polymer-analyzer:       +<script>
polymer-analyzer:
polymer-analyzer:       +Polymer({
polymer-analyzer:
polymer-analyzer:       +
polymer-analyzer:
polymer-analyzer:       +  is: 'test-element',
polymer-analyzer:
polymer-analyzer:       +
polymer-analyzer:
polymer-analyzer:       +  /**
polymer-analyzer:
polymer-analyzer:       +   * Fired when properties on `data` are added, removed, or modified.
polymer-analyzer:
polymer-analyzer:       +   *
polymer-analyzer:
polymer-analyzer:       +   * @event data-change
polymer-analyzer:
polymer-analyzer:       +   */
polymer-analyzer:
polymer-analyzer:       +
polymer-analyzer:
polymer-analyzer:       +  /**
polymer-analyzer:
polymer-analyzer:       +   * Fired when an error occurs on an interaction with Firebase.  The
polymer-analyzer:
polymer-analyzer:       +   * `details.error` property contains the `Error` object provided by
polymer-analyzer:
polymer-analyzer:       +   * the Firebase API.
polymer-analyzer:
polymer-analyzer:       +   *
polymer-analyzer:
polymer-analyzer:       +   * @event error
polymer-analyzer:
polymer-analyzer:       +   */
polymer-analyzer:
polymer-analyzer:       +
polymer-analyzer:
polymer-analyzer:       +  published: {
polymer-analyzer:
polymer-analyzer:       +    /**
polymer-analyzer:
polymer-analyzer:       +     * I am a string!
polymer-analyzer:
polymer-analyzer:       +     */
polymer-analyzer:
polymer-analyzer:       +    stringProp: String,
polymer-analyzer:
polymer-analyzer:       +    /**
polymer-analyzer:
polymer-analyzer:       +     * I am a number!
polymer-analyzer:
polymer-analyzer:       +     */
polymer-analyzer:
polymer-analyzer:       +    numProp: Number,
polymer-analyzer:
polymer-analyzer:       +    /**
polymer-analyzer:
polymer-analyzer:       +     * I am an object!
polymer-analyzer:
polymer-analyzer:       +     */
polymer-analyzer:
polymer-analyzer:       +    objectProp: Object,
polymer-analyzer:
polymer-analyzer:       +    /**
polymer-analyzer:
polymer-analyzer:       +     * I am an object with explicit type!
polymer-analyzer:
polymer-analyzer:       +     * @type HTMLElement
polymer-analyzer:
polymer-analyzer:       +     */
polymer-analyzer:
polymer-analyzer:       +    elementProp: Object,
polymer-analyzer:
polymer-analyzer:       +    /**
polymer-analyzer:
polymer-analyzer:       +     * I am an object with notify=true!
polymer-analyzer:
polymer-analyzer:       +     */
polymer-analyzer:
polymer-analyzer:       +    objectNotify: {
polymer-analyzer:
polymer-analyzer:       +      type: Object,
polymer-analyzer:
polymer-analyzer:       +      notify: true
polymer-analyzer:
polymer-analyzer:       +    },
polymer-analyzer:
polymer-analyzer:       +    /**
polymer-analyzer:
polymer-analyzer:       +     * I am a boolean property!
polymer-analyzer:
polymer-analyzer:       +     */
polymer-analyzer:
polymer-analyzer:       +    boolProp: Boolean
polymer-analyzer:
polymer-analyzer:       +  },
polymer-analyzer:
polymer-analyzer:       +
polymer-analyzer:
polymer-analyzer:       +  bind: {
polymer-analyzer:
polymer-analyzer:       +    numProp: 'numChanged',
polymer-analyzer:
polymer-analyzer:       +    elementProp: 'elemChanged'
polymer-analyzer:
polymer-analyzer:       +  },
polymer-analyzer:
polymer-analyzer:       +
polymer-analyzer:
polymer-analyzer:       +  numChanged: function() {
polymer-analyzer:
polymer-analyzer:       +
polymer-analyzer:
polymer-analyzer:       +  },
polymer-analyzer:
polymer-analyzer:       +
polymer-analyzer:
polymer-analyzer:       +  elemChanged: function() {
polymer-analyzer:
polymer-analyzer:       +
polymer-analyzer:
polymer-analyzer:       +  }
polymer-analyzer:
polymer-analyzer:       +
polymer-analyzer:
polymer-analyzer:       +
polymer-analyzer:
polymer-analyzer:       +});
polymer-analyzer:
polymer-analyzer:       +
polymer-analyzer:
polymer-analyzer:       +</script>
polymer-analyzer:
polymer-analyzer:       +<!--
polymer-analyzer:
polymer-analyzer:       +Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
polymer-analyzer:
polymer-analyzer:       +This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
polymer-analyzer:
polymer-analyzer:       +The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
polymer-analyzer:
polymer-analyzer:       +The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
polymer-analyzer:
polymer-analyzer:       +Code distributed by Google as part of the polymer project is also
polymer-analyzer:
polymer-analyzer:       +subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
polymer-analyzer:
polymer-analyzer:       +-->
polymer-analyzer:
polymer-analyzer:       +
polymer-analyzer:
polymer-analyzer:       +<!--
polymer-analyzer:
polymer-analyzer:       + * @group Polymer Mixins
polymer-analyzer:
polymer-analyzer:       +-->
polymer-analyzer:
polymer-analyzer:       +
polymer-analyzer:
polymer-analyzer:       +<script>
polymer-analyzer:
polymer-analyzer:       +
polymer-analyzer:
polymer-analyzer:       +/**
polymer-analyzer:
polymer-analyzer:       +* A module with no dependencies
polymer-analyzer:
polymer-analyzer:       +* and some newlines
polymer-analyzer:
polymer-analyzer:       +* in
polymer-analyzer:
polymer-analyzer:       +* its
polymer-analyzer:
polymer-analyzer:       +* docstring.
polymer-analyzer:
polymer-analyzer:       +*/
polymer-analyzer:
polymer-analyzer:       +  modulate('bare-module', function() {
polymer-analyzer:
polymer-analyzer:       +    return {
polymer-analyzer:
polymer-analyzer:       +
polymer-analyzer:
polymer-analyzer:       +      /**
polymer-analyzer:
polymer-analyzer:       +       * User must call from `attached` callback
polymer-analyzer:
polymer-analyzer:       +       *
polymer-analyzer:
polymer-analyzer:       +       * @method resizableAttached
polymer-analyzer:
polymer-analyzer:       +       */
polymer-analyzer:
polymer-analyzer:       +      resizableAttached: function(cb) {
polymer-analyzer:
polymer-analyzer:       +        cb = cb || this._notifyResizeSelf;
polymer-analyzer:
polymer-analyzer:       +        this.async(function() {
polymer-analyzer:
polymer-analyzer:       +          var detail = {callback: cb, hasParentResizer: false};
polymer-analyzer:
polymer-analyzer:       +          this.fire('x-request-resize', detail);
polymer-analyzer:
polymer-analyzer:       +          if (!detail.hasParentResizer) {
polymer-analyzer:
polymer-analyzer:       +            this._boundWindowResizeHandler = cb.bind(this);
polymer-analyzer:
polymer-analyzer:       +            // log('adding window resize handler', null, this);
polymer-analyzer:
polymer-analyzer:       +            window.addEventListener('resize', this._boundWindowResizeHandler);
polymer-analyzer:
polymer-analyzer:       +          }
polymer-analyzer:
polymer-analyzer:       +        }.bind(this));
polymer-analyzer:
polymer-analyzer:       +      },
polymer-analyzer:
polymer-analyzer:       +
polymer-analyzer:
polymer-analyzer:       +      /**
polymer-analyzer:
polymer-analyzer:       +       * User must call from `detached` callback
polymer-analyzer:
polymer-analyzer:       +       *
polymer-analyzer:
polymer-analyzer:       +       * @method resizableDetached
polymer-analyzer:
polymer-analyzer:       +       */
polymer-analyzer:
polymer-analyzer:       +      resizableDetached: function() {
polymer-analyzer:
polymer-analyzer:       +        this.fire('x-request-resize-cancel', null, this, false);
polymer-analyzer:
polymer-analyzer:       +        if (this._boundWindowResizeHandler) {
polymer-analyzer:
polymer-analyzer:       +          window.removeEventListener(this._boundResizeHandler);
polymer-analyzer:
polymer-analyzer:       +        }
polymer-analyzer:
polymer-analyzer:       +      },
polymer-analyzer:
polymer-analyzer:       +
polymer-analyzer:
polymer-analyzer:       +      // Private: fire non-bubbling resize event to self; returns whether
polymer-analyzer:
polymer-analyzer:       +      // preventDefault was called, indicating that children should not
polymer-analyzer:
polymer-analyzer:       +      // be resized
polymer-analyzer:
polymer-analyzer:       +      _notifyResizeSelf: function() {
polymer-analyzer:
polymer-analyzer:       +        return this.fire('x-resize', null, this, false).defaultPrevented;
polymer-analyzer:
polymer-analyzer:       +      }
polymer-analyzer:
polymer-analyzer:       +
polymer-analyzer:
polymer-analyzer:       +    };
polymer-analyzer:
polymer-analyzer:       +  });
polymer-analyzer:
polymer-analyzer:       +
polymer-analyzer:
polymer-analyzer:       +/**
polymer-analyzer:
polymer-analyzer:       + * A module that depends on bare-module.
polymer-analyzer:
polymer-analyzer:       + */
polymer-analyzer:
polymer-analyzer:       +  modulate('module-depends', ['bare-module'], function(bare) {
polymer-analyzer:
polymer-analyzer:       +    return {
polymer-analyzer:
polymer-analyzer:       +
polymer-analyzer:
polymer-analyzer:       +      /**
polymer-analyzer:
polymer-analyzer:       +       * User must call from `attached` callback
polymer-analyzer:
polymer-analyzer:       +       *
polymer-analyzer:
polymer-analyzer:       +       * @method resizerAttached
polymer-analyzer:
polymer-analyzer:       +       */
polymer-analyzer:
polymer-analyzer:       +      resizerAttached: function() {
polymer-analyzer:
polymer-analyzer:       +        this.resizableAttached(this.notifyResize);
polymer-analyzer:
polymer-analyzer:       +        this._boundResizeRequested = this._boundResizeRequested || this._handleResizeRequested.bind(this);
polymer-analyzer:
polymer-analyzer:       +        var target = this.resizerIsPeer ? this.parentElement : this;
polymer-analyzer:
polymer-analyzer:       +        target.addEventListener('x-request-resize', this._boundResizeRequested);
polymer-analyzer:
polymer-analyzer:       +      },
polymer-analyzer:
polymer-analyzer:       +
polymer-analyzer:
polymer-analyzer:       +      /**
polymer-analyzer:
polymer-analyzer:       +       * User must call from `detached` callback
polymer-analyzer:
polymer-analyzer:       +       *
polymer-analyzer:
polymer-analyzer:       +       * @method resizerDetached
polymer-analyzer:
polymer-analyzer:       +       */
polymer-analyzer:
polymer-analyzer:       +      resizerDetached: function() {
polymer-analyzer:
polymer-analyzer:       +        this.resizableDetached();
polymer-analyzer:
polymer-analyzer:       +        var target = this.resizerIsPeer ? this.parentElement : this;
polymer-analyzer:
polymer-analyzer:       +        target.removeEventListener('x-request-resize', this._boundResizeRequested);
polymer-analyzer:
polymer-analyzer:       +      },
polymer-analyzer:
polymer-analyzer:       +
polymer-analyzer:
polymer-analyzer:       +      /**
polymer-analyzer:
polymer-analyzer:       +       * User should call when resizing or un-hiding children
polymer-analyzer:
polymer-analyzer:       +       *
polymer-analyzer:
polymer-analyzer:       +       * @method notifyResize
polymer-analyzer:
polymer-analyzer:       +       */
polymer-analyzer:
polymer-analyzer:       +      notifyResize: function() {
polymer-analyzer:
polymer-analyzer:       +        // Notify self
polymer-analyzer:
polymer-analyzer:       +        if (!this._notifyResizeSelf()) {
polymer-analyzer:
polymer-analyzer:       +          // Notify requestors if default was not prevented
polymer-analyzer:
polymer-analyzer:       +          var r = this.resizeRequestors;
polymer-analyzer:
polymer-analyzer:       +          if (r) {
polymer-analyzer:
polymer-analyzer:       +            for (var i=0; i<r.length; i++) {
polymer-analyzer:
polymer-analyzer:       +              var ri = r[i];
polymer-analyzer:
polymer-analyzer:       +              if (!this.resizerShouldNotify || this.resizerShouldNotify(ri.target)) {
polymer-analyzer:
polymer-analyzer:       +                // log('notifying resize', null, ri.target, true);
polymer-analyzer:
polymer-analyzer:       +                ri.callback.apply(ri.target);
polymer-analyzer:
polymer-analyzer:       +                // logEnd();
polymer-analyzer:
polymer-analyzer:       +              }
polymer-analyzer:
polymer-analyzer:       +            }
polymer-analyzer:
polymer-analyzer:       +          }
polymer-analyzer:
polymer-analyzer:       +        }
polymer-analyzer:
polymer-analyzer:       +      },
polymer-analyzer:
polymer-analyzer:       +
polymer-analyzer:
polymer-analyzer:       +      /**
polymer-analyzer:
polymer-analyzer:       +       * User should implement to introduce filtering when notifying children.
polymer-analyzer:
polymer-analyzer:       +       * Generally, children that are hidden by the CoreResizer (e.g. non-active
polymer-analyzer:
polymer-analyzer:       +       * pages) need not be notified during resize, since they will be notified
polymer-analyzer:
polymer-analyzer:       +       * again when becoming un-hidden.
polymer-analyzer:
polymer-analyzer:       +       *
polymer-analyzer:
polymer-analyzer:       +       * Return `true` if CoreResizable passed as argument should be notified of
polymer-analyzer:
polymer-analyzer:       +       * resize.
polymer-analyzer:
polymer-analyzer:       +       *
polymer-analyzer:
polymer-analyzer:       +       * @method resizeerShouldNotify
polymer-analyzer:
polymer-analyzer:       +       * @param {Element} el
polymer-analyzer:
polymer-analyzer:       +       */
polymer-analyzer:
polymer-analyzer:       +       // resizeerShouldNotify: function(el) { }  // User to implement if needed
polymer-analyzer:
polymer-analyzer:       +      /**
polymer-analyzer:
polymer-analyzer:       +       * Set to `true` if the resizer is actually a peer to the elements it
polymer-analyzer:
polymer-analyzer:       +       * resizes (e.g. splitter); in this case it will listen for resize requests
polymer-analyzer:
polymer-analyzer:       +       * events from its peers on its parent.
polymer-analyzer:
polymer-analyzer:       +       *
polymer-analyzer:
polymer-analyzer:       +       * @property resizerIsPeer
polymer-analyzer:
polymer-analyzer:       +       * @type Boolean
polymer-analyzer:
polymer-analyzer:       +       * @default false
polymer-analyzer:
polymer-analyzer:       +       */
polymer-analyzer:
polymer-analyzer:       +      // Private: Handle requests for resize
polymer-analyzer:
polymer-analyzer:       +      _handleResizeRequested: function(e) {
polymer-analyzer:
polymer-analyzer:       +        if (e.target == this) {
polymer-analyzer:
polymer-analyzer:       +          return;
polymer-analyzer:
polymer-analyzer:       +        }
polymer-analyzer:
polymer-analyzer:       +        // log('resize requested', e.target, this);
polymer-analyzer:
polymer-analyzer:       +        if (!this.resizeRequestors) {
polymer-analyzer:
polymer-analyzer:       +          this.resizeRequestors = [];
polymer-analyzer:
polymer-analyzer:       +        }
polymer-analyzer:
polymer-analyzer:       +        this.resizeRequestors.push({target: e.target, callback: e.detail.callback});
polymer-analyzer:
polymer-analyzer:       +        e.target.addEventListener('x-request-resize-cancel', this._cancelResizeRequested.bind(this));
polymer-analyzer:
polymer-analyzer:       +        e.detail.hasParentResizer = true;
polymer-analyzer:
polymer-analyzer:       +        e.stopPropagation();
polymer-analyzer:
polymer-analyzer:       +      },
polymer-analyzer:
polymer-analyzer:       +
polymer-analyzer:
polymer-analyzer:       +      // Private: Handle cancellation requests for resize
polymer-analyzer:
polymer-analyzer:       +      _cancelResizeRequested: function(e) {
polymer-analyzer:
polymer-analyzer:       +        // Exit early if we're already out of the DOM (resizeRequestors will already be null)
polymer-analyzer:
polymer-analyzer:       +        if (this.resizeRequestors) {
polymer-analyzer:
polymer-analyzer:       +          for (var i=0; i<this.resizeRequestors.length; i++) {
polymer-analyzer:
polymer-analyzer:       +            if (this.resizeRequestors[i].target == e.target) {
polymer-analyzer:
polymer-analyzer:       +              // log('resizeCanceled', e.target, this);
polymer-analyzer:
polymer-analyzer:       +              this.resizeRequestors.splice(i, 1);
polymer-analyzer:
polymer-analyzer:       +              break;
polymer-analyzer:
polymer-analyzer:       +            }
polymer-analyzer:
polymer-analyzer:       +          }
polymer-analyzer:
polymer-analyzer:       +        }
polymer-analyzer:
polymer-analyzer:       +      }
polymer-analyzer:
polymer-analyzer:       +
polymer-analyzer:
polymer-analyzer:       +    };
polymer-analyzer:
polymer-analyzer:       +  });
polymer-analyzer:
polymer-analyzer:       +
polymer-analyzer:
polymer-analyzer:       +//
polymer-analyzer:
polymer-analyzer:       +//  Toss some comments around for fun.
polymer-analyzer:
polymer-analyzer:       +//
polymer-analyzer:
polymer-analyzer:       +//
polymer-analyzer:
polymer-analyzer:       +</script>
polymer-analyzer:
polymer-analyzer:       +<script type="text/javascript"></script>
polymer-analyzer:
polymer-analyzer:       +<script type="application/javascript"></script>
polymer-analyzer:
polymer-analyzer:       +<script type="text/csv">
polymer-analyzer:
polymer-analyzer:       +  Foo,Bar,Baz
polymer-analyzer:
polymer-analyzer:       +</script>
polymer-analyzer:
polymer-analyzer:       +
polymer-analyzer:
polymer-analyzer:       +<!-- Don't blow up on empty script tags! -->
polymer-analyzer:
polymer-analyzer:       +<script></script>
polymer-analyzer:
polymer-analyzer:
polymer-analyzer:       at Context.test (src\test\html\html-parser_test.ts:48:16)
polymer-analyzer:
polymer-analyzer:   33) HtmlScriptScanner
polymer-analyzer:        modules
polymer-analyzer:          follows import statements in modules:
polymer-analyzer:       AssertionError: expected 'import { subThing } from \'./submodule.js\';\r\nexport const otherValue = subThing;' to equal 'import { subThing } from \'./submodule.js\';\nexport const otherValue = subThing;'
polymer-analyzer:       + expected - actual
polymer-analyzer:       -import { subThing } from './submodule.js';
polymer-analyzer:
polymer-analyzer:       +import { subThing } from './submodule.js';
polymer-analyzer:        export const otherValue = subThing;
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\html\html-script-scanner_test.ts:157:14)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at C:\Users\aaron\GitHub\tools\packages\analyzer\lib\test\html\html-script-scanner_test.js:20:71
polymer-analyzer:       at new Promise (<anonymous>)
polymer-analyzer:       at __awaiter (lib\test\html\html-script-scanner_test.js:16:12)
polymer-analyzer:       at Context.test (src\test\html\html-script-scanner_test.ts:128:61)
polymer-analyzer:
polymer-analyzer:   34) FunctionScanner
polymer-analyzer:        recognizies functions:
polymer-analyzer:       AssertionError: expected [ Array(11) ] to deeply equal [ Array(11) ]
polymer-analyzer:       + expected - actual
polymer-analyzer:        [
polymer-analyzer:          {
polymer-analyzer:       -    "codeSnippet": "\nfunction aaa(a) {\r\n~~~~~~~~~~~~~~~~~~\n  return a;\r\n~~~~~~~~~~~~\n}\r\n~"
polymer-analyzer:       +    "codeSnippet": "\nfunction aaa(a) {\n~~~~~~~~~~~~~~~~~\n  return a;\n~~~~~~~~~~~\n}\n~"
polymer-analyzer:            "description": "aaa"
polymer-analyzer:            "name": "Polymer.aaa"
polymer-analyzer:            "params": [
polymer-analyzer:              {
polymer-analyzer: --
polymer-analyzer:            "summary": ""
polymer-analyzer:            "warnings": []
polymer-analyzer:          }
polymer-analyzer:          {
polymer-analyzer:       -    "codeSnippet": "\nPolymer.bbb = function bbb() {\r\n              ~~~~~~~~~~~~~~~~~\n\r\n~\n};\r\n~"
polymer-analyzer:       +    "codeSnippet": "\nPolymer.bbb = function bbb() {\n              ~~~~~~~~~~~~~~~~\n\n\n};\n~"
polymer-analyzer:            "description": "bbb"
polymer-analyzer:            "name": "Polymer.bbb"
polymer-analyzer:            "params": []
polymer-analyzer:            "privacy": "public"
polymer-analyzer: --
polymer-analyzer:            "summary": ""
polymer-analyzer:            "warnings": []
polymer-analyzer:          }
polymer-analyzer:          {
polymer-analyzer:       -    "codeSnippet": "\n  function ccc() {\r\n  ~~~~~~~~~~~~~~~~~\n  }\r\n~~~"
polymer-analyzer:       +    "codeSnippet": "\n  function ccc() {\n  ~~~~~~~~~~~~~~~~\n  }\n~~~"
polymer-analyzer:            "description": "ccc"
polymer-analyzer:            "name": "Polymer.ccc"
polymer-analyzer:            "params": []
polymer-analyzer:            "privacy": "protected"
polymer-analyzer: --
polymer-analyzer:            "summary": ""
polymer-analyzer:            "warnings": []
polymer-analyzer:          }
polymer-analyzer:          {
polymer-analyzer:       -    "codeSnippet": "\n  _ddd: function() {\r\n        ~~~~~~~~~~~~~\n\r\n~\n  },\r\n~~~"
polymer-analyzer:       +    "codeSnippet": "\n  _ddd: function() {\n        ~~~~~~~~~~~~\n\n\n  },\n~~~"
polymer-analyzer:            "description": "ddd"
polymer-analyzer:            "name": "Polymer._ddd"
polymer-analyzer:            "params": []
polymer-analyzer:            "privacy": "protected"
polymer-analyzer: --
polymer-analyzer:            "summary": ""
polymer-analyzer:            "warnings": []
polymer-analyzer:          }
polymer-analyzer:          {
polymer-analyzer:       -    "codeSnippet": "\n  eee: () => {},\r\n       ~~~~~~~~"
polymer-analyzer:       +    "codeSnippet": "\n  eee: () => {},\n       ~~~~~~~~"
polymer-analyzer:            "description": "eee"
polymer-analyzer:            "name": "Polymer.eee"
polymer-analyzer:            "params": []
polymer-analyzer:            "privacy": "private"
polymer-analyzer: --
polymer-analyzer:            "summary": ""
polymer-analyzer:            "warnings": []
polymer-analyzer:          }
polymer-analyzer:          {
polymer-analyzer:       -    "codeSnippet": "\n  fff() {\r\n  ~~~~~~~~\n\r\n~\n  },\r\n~~~"
polymer-analyzer:       +    "codeSnippet": "\n  fff() {\n  ~~~~~~~\n\n\n  },\n~~~"
polymer-analyzer:            "description": "fff"
polymer-analyzer:            "name": "Polymer.fff"
polymer-analyzer:            "params": []
polymer-analyzer:            "privacy": "public"
polymer-analyzer: --
polymer-analyzer:            "summary": ""
polymer-analyzer:            "warnings": []
polymer-analyzer:          }
polymer-analyzer:          {
polymer-analyzer:       -    "codeSnippet": "\n  ggg: someFunction,\r\n  ~~~~~~~~~~~~~~~~~"
polymer-analyzer:       +    "codeSnippet": "\n  ggg: someFunction,\n  ~~~~~~~~~~~~~~~~~"
polymer-analyzer:            "description": "ggg"
polymer-analyzer:            "name": "Polymer.ggg"
polymer-analyzer:            "params": []
polymer-analyzer:            "privacy": "public"
polymer-analyzer: --
polymer-analyzer:            "summary": ""
polymer-analyzer:            "warnings": []
polymer-analyzer:          }
polymer-analyzer:          {
polymer-analyzer:       -    "codeSnippet": "\n  hhh_: someOtherFunc,\r\n  ~~~~~~~~~~~~~~~~~~~"
polymer-analyzer:       +    "codeSnippet": "\n  hhh_: someOtherFunc,\n  ~~~~~~~~~~~~~~~~~~~"
polymer-analyzer:            "description": "hhh_ should be private"
polymer-analyzer:            "name": "Polymer.hhh_"
polymer-analyzer:            "params": []
polymer-analyzer:            "privacy": "private"
polymer-analyzer: --
polymer-analyzer:            "summary": ""
polymer-analyzer:            "warnings": []
polymer-analyzer:          }
polymer-analyzer:          {
polymer-analyzer:       -    "codeSnippet": "\n  __iii() { },\r\n  ~~~~~~~~~~~"
polymer-analyzer:       +    "codeSnippet": "\n  __iii() { },\n  ~~~~~~~~~~~"
polymer-analyzer:            "description": "__iii should be private too"
polymer-analyzer:            "name": "Polymer.__iii"
polymer-analyzer:            "params": []
polymer-analyzer:            "privacy": "private"
polymer-analyzer: --
polymer-analyzer:            "summary": ""
polymer-analyzer:            "warnings": []
polymer-analyzer:          }
polymer-analyzer:          {
polymer-analyzer:       -    "codeSnippet": "\nvar jjj = function() {\r\n          ~~~~~~~~~~~~~\n\r\n~\n};\r\n~"
polymer-analyzer:       +    "codeSnippet": "\nvar jjj = function() {\n          ~~~~~~~~~~~~\n\n\n};\n~"
polymer-analyzer:            "description": "jjj"
polymer-analyzer:            "name": "Polymer.jjj"
polymer-analyzer:            "params": []
polymer-analyzer:            "privacy": "public"
polymer-analyzer: --
polymer-analyzer:            "summary": ""
polymer-analyzer:            "warnings": []
polymer-analyzer:          }
polymer-analyzer:          {
polymer-analyzer:       -    "codeSnippet": "\nexport function lll() {\r\n       ~~~~~~~~~~~~~~~~~\n\r\n~\n};\r\n~"
polymer-analyzer:       +    "codeSnippet": "\nexport function lll() {\n       ~~~~~~~~~~~~~~~~\n\n\n};\n~"
polymer-analyzer:            "description": "lol\n "
polymer-analyzer:            "name": "lll"
polymer-analyzer:            "params": []
polymer-analyzer:            "privacy": "public"
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\javascript\function-scanner_test.ts:63:12)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\javascript\function-scanner_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   35) NamespaceScanner
polymer-analyzer:        scans named namespaces:
polymer-analyzer:       AssertionError: expected '\nvar ExplicitlyNamedNamespace = {};\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' to equal '\nvar ExplicitlyNamedNamespace = {};\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -var ExplicitlyNamedNamespace = {};
polymer-analyzer:
polymer-analyzer:       +var ExplicitlyNamedNamespace = {};
polymer-analyzer:        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\javascript\namespace-scanner_test.ts:66:12)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\javascript\namespace-scanner_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   36) NamespaceScanner
polymer-analyzer:        scans unnamed namespaces:
polymer-analyzer:       AssertionError: expected '\nvar ImplicitlyNamedNamespace = {};\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' to equal '\nvar ImplicitlyNamedNamespace = {};\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -var ImplicitlyNamedNamespace = {};
polymer-analyzer:
polymer-analyzer:       +var ImplicitlyNamedNamespace = {};
polymer-analyzer:        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\javascript\namespace-scanner_test.ts:99:12)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\javascript\namespace-scanner_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   37) NamespaceScanner
polymer-analyzer:        scans named, dynamic namespaces:
polymer-analyzer:       AssertionError: expected '\nDynamicNamespace[\'ComputedProperty\'] = {\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n  foo: \'bar\'\r\n~~~~~~~~~~~~~\n};\r\n~~' to equal '\nDynamicNamespace[\'ComputedProperty\'] = {\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n  foo: \'bar\'\n~~~~~~~~~~~~\n};\n~~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -DynamicNamespace['ComputedProperty'] = {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -  foo: 'bar'
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~
polymer-analyzer:       -};
polymer-analyzer:
polymer-analyzer:       +DynamicNamespace['ComputedProperty'] = {
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +  foo: 'bar'
polymer-analyzer:       +~~~~~~~~~~~~
polymer-analyzer:       +};
polymer-analyzer:        ~~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\javascript\namespace-scanner_test.ts:145:12)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\javascript\namespace-scanner_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   38) NamespaceScanner
polymer-analyzer:        scans unnamed, dynamic namespaces:
polymer-analyzer:       AssertionError: expected '\nDynamicNamespace[\'InferredComputedProperty\'] = {\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n  foo: \'bar\'\r\n~~~~~~~~~~~~~\n};\r\n~~' to equal '\nDynamicNamespace[\'InferredComputedProperty\'] = {\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n  foo: \'bar\'\n~~~~~~~~~~~~\n};\n~~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -DynamicNamespace['InferredComputedProperty'] = {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -  foo: 'bar'
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~
polymer-analyzer:       -};
polymer-analyzer:
polymer-analyzer:       +DynamicNamespace['InferredComputedProperty'] = {
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +  foo: 'bar'
polymer-analyzer:       +~~~~~~~~~~~~
polymer-analyzer:       +};
polymer-analyzer:        ~~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\javascript\namespace-scanner_test.ts:185:12)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\javascript\namespace-scanner_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   39) Polymer2ElementScanner
polymer-analyzer:        Finds two basic elements:
polymer-analyzer:       AssertionError: expected '\nclass TestElement extends Polymer.Element {\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n  static get properties() {\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n    return {\r\n~~~~~~~~~~~~~\n      /**\r\n~~~~~~~~~~\n       * The foo prop.\r\n~~~~~~~~~~~~~~~~~~~~~~~\n       * @public\r\n~~~~~~~~~~~~~~~~~\n       * @type {m-test|function}\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n       */\r\n~~~~~~~~~~\n      foo: {\r\n~~~~~~~~~~~~~\n        notify: true,\r\n~~~~~~~~~~~~~~~~~~~~~~\n        type: String,\r\n~~~~~~~~~~~~~~~~~~~~~~\n      }\r\n~~~~~~~~\n    }\r\n~~~~~~\n  }\r\n~~~~\n}\r\n~' to equal '\nclass TestElement extends Polymer.Element {\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n  static get properties() {\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n    return {\n~~~~~~~~~~~~\n      /**\n~~~~~~~~~\n       * The foo prop.\n~~~~~~~~~~~~~~~~~~~~~~\n       * @public\n~~~~~~~~~~~~~~~~\n       * @type {m-test|function}\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n       */\n~~~~~~~~~\n      foo: {\n~~~~~~~~~~~~\n        notify: true,\n~~~~~~~~~~~~~~~~~~~~~\n        type: String,\n~~~~~~~~~~~~~~~~~~~~~\n      }\n~~~~~~~\n    }\n~~~~~\n  }\n~~~\n}\n~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -class TestElement extends Polymer.Element {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -  static get properties() {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -    return {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~
polymer-analyzer:       -      /**
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~
polymer-analyzer:       -       * The foo prop.
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -       * @public
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~
polymer-analyzer:       -       * @type {m-test|function}
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -       */
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~
polymer-analyzer:       -      foo: {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~
polymer-analyzer:       -        notify: true,
polymer-analyzer:
polymer-analyzer:       +class TestElement extends Polymer.Element {
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +  static get properties() {
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +    return {
polymer-analyzer:       +~~~~~~~~~~~~
polymer-analyzer:       +      /**
polymer-analyzer:       +~~~~~~~~~
polymer-analyzer:       +       * The foo prop.
polymer-analyzer:        ~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -        type: String,
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -      }
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~
polymer-analyzer:       -    }
polymer-analyzer:
polymer-analyzer:       -~~~~~~
polymer-analyzer:       -  }
polymer-analyzer:
polymer-analyzer:       -~~~~
polymer-analyzer:       -}
polymer-analyzer:
polymer-analyzer:       +       * @public
polymer-analyzer:       +~~~~~~~~~~~~~~~~
polymer-analyzer:       +       * @type {m-test|function}
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +       */
polymer-analyzer:       +~~~~~~~~~
polymer-analyzer:       +      foo: {
polymer-analyzer:       +~~~~~~~~~~~~
polymer-analyzer:       +        notify: true,
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +        type: String,
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +      }
polymer-analyzer:       +~~~~~~~
polymer-analyzer:       +    }
polymer-analyzer:       +~~~~~
polymer-analyzer:       +  }
polymer-analyzer:       +~~~
polymer-analyzer:       +}
polymer-analyzer:        ~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\polymer\polymer2-element-scanner_test.ts:138:12)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\polymer\polymer2-element-scanner_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   40) Polymer2ElementScanner
polymer-analyzer:        warns for bad observers and computed properties:
polymer-analyzer:       AssertionError: expected [ Array(1) ] to deeply equal [ Array(1) ]
polymer-analyzer:       + expected - actual
polymer-analyzer:                "description": ""
polymer-analyzer:                "name": "parseError"
polymer-analyzer:                "type": "string | null | undefined"
polymer-analyzer:                "warningUnderlines": [
polymer-analyzer:       -          "\n        computed: 'let let let',\r\n                       ~"
polymer-analyzer:       -          "\n        observer: 'let let let',\r\n                       ~"
polymer-analyzer:       +          "\n        computed: 'let let let',\n                       ~"
polymer-analyzer:       +          "\n        observer: 'let let let',\n                       ~"
polymer-analyzer:                ]
polymer-analyzer:              }
polymer-analyzer:              {
polymer-analyzer:                "description": ""
polymer-analyzer: --
polymer-analyzer:                  "baz"
polymer-analyzer:                ]
polymer-analyzer:                "type": "string | null | undefined"
polymer-analyzer:                "warningUnderlines": [
polymer-analyzer:       -          "\n        computed: 'foo',\r\n                   ~~~"
polymer-analyzer:       -          "\n        observer: 'foo(bar, baz)'\r\n                   ~~~~~~~~~~~~~"
polymer-analyzer:       +          "\n        computed: 'foo',\n                   ~~~"
polymer-analyzer:       +          "\n        observer: 'foo(bar, baz)'\n                   ~~~~~~~~~~~~~"
polymer-analyzer:                ]
polymer-analyzer:              }
polymer-analyzer:            ]
polymer-analyzer:            "summary": ""
polymer-analyzer:            "superClass": "Polymer.Element"
polymer-analyzer:            "tagName": "test-element"
polymer-analyzer:            "warningUnderlines": [
polymer-analyzer:       -      "\n      'let let let parseError',\r\n           ~"
polymer-analyzer:       -      "\n      'foo',\r\n       ~~~"
polymer-analyzer:       +      "\n      'let let let parseError',\n           ~"
polymer-analyzer:       +      "\n      'foo',\n       ~~~"
polymer-analyzer:            ]
polymer-analyzer:          }
polymer-analyzer:        ]
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\polymer\polymer2-element-scanner_test.ts:524:12)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\polymer\polymer2-element-scanner_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   41) Polymer2ElementScanner with old jsdoc annotations
polymer-analyzer:        Finds two basic elements:
polymer-analyzer:       AssertionError: expected '\nclass TestElement extends Polymer.Element {\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n  static get properties() {\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n    return {\r\n~~~~~~~~~~~~~\n      /**\r\n~~~~~~~~~~\n       * The foo prop.\r\n~~~~~~~~~~~~~~~~~~~~~~~\n       * @public\r\n~~~~~~~~~~~~~~~~~\n       * @type {m-test|function}\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n       */\r\n~~~~~~~~~~\n      foo: {\r\n~~~~~~~~~~~~~\n        notify: true,\r\n~~~~~~~~~~~~~~~~~~~~~~\n        type: String,\r\n~~~~~~~~~~~~~~~~~~~~~~\n      }\r\n~~~~~~~~\n    }\r\n~~~~~~\n  }\r\n~~~~\n}\r\n~' to equal '\nclass TestElement extends Polymer.Element {\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n  static get properties() {\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n    return {\n~~~~~~~~~~~~\n      /**\n~~~~~~~~~\n       * The foo prop.\n~~~~~~~~~~~~~~~~~~~~~~\n       * @public\n~~~~~~~~~~~~~~~~\n       * @type {m-test|function}\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n       */\n~~~~~~~~~\n      foo: {\n~~~~~~~~~~~~\n        notify: true,\n~~~~~~~~~~~~~~~~~~~~~\n        type: String,\n~~~~~~~~~~~~~~~~~~~~~\n      }\n~~~~~~~\n    }\n~~~~~\n  }\n~~~\n}\n~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -class TestElement extends Polymer.Element {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -  static get properties() {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -    return {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~
polymer-analyzer:       -      /**
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~
polymer-analyzer:       -       * The foo prop.
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -       * @public
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~
polymer-analyzer:       -       * @type {m-test|function}
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -       */
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~
polymer-analyzer:       -      foo: {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~
polymer-analyzer:       -        notify: true,
polymer-analyzer:
polymer-analyzer:       +class TestElement extends Polymer.Element {
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +  static get properties() {
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +    return {
polymer-analyzer:       +~~~~~~~~~~~~
polymer-analyzer:       +      /**
polymer-analyzer:       +~~~~~~~~~
polymer-analyzer:       +       * The foo prop.
polymer-analyzer:        ~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -        type: String,
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -      }
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~
polymer-analyzer:       -    }
polymer-analyzer:
polymer-analyzer:       -~~~~~~
polymer-analyzer:       -  }
polymer-analyzer:
polymer-analyzer:       -~~~~
polymer-analyzer:       -}
polymer-analyzer:
polymer-analyzer:       +       * @public
polymer-analyzer:       +~~~~~~~~~~~~~~~~
polymer-analyzer:       +       * @type {m-test|function}
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +       */
polymer-analyzer:       +~~~~~~~~~
polymer-analyzer:       +      foo: {
polymer-analyzer:       +~~~~~~~~~~~~
polymer-analyzer:       +        notify: true,
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +        type: String,
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +      }
polymer-analyzer:       +~~~~~~~
polymer-analyzer:       +    }
polymer-analyzer:       +~~~~~
polymer-analyzer:       +  }
polymer-analyzer:       +~~~
polymer-analyzer:       +}
polymer-analyzer:        ~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\polymer\polymer2-element-scanner-old-jsdoc_test.ts:137:12)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\polymer\polymer2-element-scanner-old-jsdoc_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   42) Polymer2ElementScanner with old jsdoc annotations
polymer-analyzer:        warns for bad observers and computed properties:
polymer-analyzer:       AssertionError: expected [ Array(1) ] to deeply equal [ Array(1) ]
polymer-analyzer:       + expected - actual
polymer-analyzer:                "description": ""
polymer-analyzer:                "name": "parseError"
polymer-analyzer:                "type": "string | null | undefined"
polymer-analyzer:                "warningUnderlines": [
polymer-analyzer:       -          "\n        computed: 'let let let',\r\n                       ~"
polymer-analyzer:       -          "\n        observer: 'let let let',\r\n                       ~"
polymer-analyzer:       +          "\n        computed: 'let let let',\n                       ~"
polymer-analyzer:       +          "\n        observer: 'let let let',\n                       ~"
polymer-analyzer:                ]
polymer-analyzer:              }
polymer-analyzer:              {
polymer-analyzer:                "description": ""
polymer-analyzer: --
polymer-analyzer:                  "baz"
polymer-analyzer:                ]
polymer-analyzer:                "type": "string | null | undefined"
polymer-analyzer:                "warningUnderlines": [
polymer-analyzer:       -          "\n        computed: 'foo',\r\n                   ~~~"
polymer-analyzer:       -          "\n        observer: 'foo(bar, baz)'\r\n                   ~~~~~~~~~~~~~"
polymer-analyzer:       +          "\n        computed: 'foo',\n                   ~~~"
polymer-analyzer:       +          "\n        observer: 'foo(bar, baz)'\n                   ~~~~~~~~~~~~~"
polymer-analyzer:                ]
polymer-analyzer:              }
polymer-analyzer:            ]
polymer-analyzer:            "summary": ""
polymer-analyzer:            "superClass": "Polymer.Element"
polymer-analyzer:            "tagName": "test-element"
polymer-analyzer:            "warningUnderlines": [
polymer-analyzer:       -      "\n      'let let let parseError',\r\n           ~"
polymer-analyzer:       -      "\n      'foo',\r\n       ~~~"
polymer-analyzer:       +      "\n      'let let let parseError',\n           ~"
polymer-analyzer:       +      "\n      'foo',\n       ~~~"
polymer-analyzer:            ]
polymer-analyzer:          }
polymer-analyzer:        ]
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\polymer\polymer2-element-scanner-old-jsdoc_test.ts:505:12)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\polymer\polymer2-element-scanner-old-jsdoc_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   43) Polymer2MixinScanner
polymer-analyzer:        finds mixin function declarations:
polymer-analyzer:       AssertionError: expected '\nfunction TestMixin(superclass) {\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n  return class extends superclass {\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n    static get properties() {\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n      return {\r\n~~~~~~~~~~~~~~~\n        foo: {\r\n~~~~~~~~~~~~~~~\n          notify: true,\r\n~~~~~~~~~~~~~~~~~~~~~~~~\n          type: String,\r\n~~~~~~~~~~~~~~~~~~~~~~~~\n        },\r\n~~~~~~~~~~~\n      };\r\n~~~~~~~~~\n    }\r\n~~~~~~\n  }\r\n~~~~\n}\r\n~' to deeply equal '\nfunction TestMixin(superclass) {\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n  return class extends superclass {\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n    static get properties() {\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n      return {\n~~~~~~~~~~~~~~\n        foo: {\n~~~~~~~~~~~~~~\n          notify: true,\n~~~~~~~~~~~~~~~~~~~~~~~\n          type: String,\n~~~~~~~~~~~~~~~~~~~~~~~\n        },\n~~~~~~~~~~\n      };\n~~~~~~~~\n    }\n~~~~~\n  }\n~~~\n}\n~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -function TestMixin(superclass) {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -  return class extends superclass {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -    static get properties() {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -      return {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~
polymer-analyzer:       -        foo: {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~
polymer-analyzer:       -          notify: true,
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -          type: String,
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -        },
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~
polymer-analyzer:       -      };
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~
polymer-analyzer:       -    }
polymer-analyzer:
polymer-analyzer:       -~~~~~~
polymer-analyzer:       -  }
polymer-analyzer:
polymer-analyzer:       -~~~~
polymer-analyzer:       -}
polymer-analyzer:
polymer-analyzer:       +function TestMixin(superclass) {
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +  return class extends superclass {
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +    static get properties() {
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +      return {
polymer-analyzer:       +~~~~~~~~~~~~~~
polymer-analyzer:       +        foo: {
polymer-analyzer:       +~~~~~~~~~~~~~~
polymer-analyzer:       +          notify: true,
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +          type: String,
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +        },
polymer-analyzer:       +~~~~~~~~~~
polymer-analyzer:       +      };
polymer-analyzer:       +~~~~~~~~
polymer-analyzer:       +    }
polymer-analyzer:       +~~~~~
polymer-analyzer:       +  }
polymer-analyzer:       +~~~
polymer-analyzer:       +}
polymer-analyzer:        ~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\polymer\polymer2-mixin-scanner_test.ts:101:12)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\polymer\polymer2-mixin-scanner_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   44) Polymer2MixinScanner
polymer-analyzer:        finds mixin arrow function expressions:
polymer-analyzer:       AssertionError: expected '\nconst TestMixin = (superclass) => class extends superclass {\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n  static get properties() {\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n    return {\r\n~~~~~~~~~~~~~\n      foo: {\r\n~~~~~~~~~~~~~\n        notify: true,\r\n~~~~~~~~~~~~~~~~~~~~~~\n        type: String,\r\n~~~~~~~~~~~~~~~~~~~~~~\n      },\r\n~~~~~~~~~\n    };\r\n~~~~~~~\n  }\r\n~~~~\n}\r\n~' to deeply equal '\nconst TestMixin = (superclass) => class extends superclass {\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n  static get properties() {\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n    return {\n~~~~~~~~~~~~\n      foo: {\n~~~~~~~~~~~~\n        notify: true,\n~~~~~~~~~~~~~~~~~~~~~\n        type: String,\n~~~~~~~~~~~~~~~~~~~~~\n      },\n~~~~~~~~\n    };\n~~~~~~\n  }\n~~~\n}\n~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -const TestMixin = (superclass) => class extends superclass {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -  static get properties() {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -    return {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~
polymer-analyzer:       -      foo: {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~
polymer-analyzer:       -        notify: true,
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -        type: String,
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -      },
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~
polymer-analyzer:       -    };
polymer-analyzer:
polymer-analyzer:       -~~~~~~~
polymer-analyzer:       -  }
polymer-analyzer:
polymer-analyzer:       -~~~~
polymer-analyzer:       -}
polymer-analyzer:
polymer-analyzer:       +const TestMixin = (superclass) => class extends superclass {
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +  static get properties() {
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +    return {
polymer-analyzer:       +~~~~~~~~~~~~
polymer-analyzer:       +      foo: {
polymer-analyzer:       +~~~~~~~~~~~~
polymer-analyzer:       +        notify: true,
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +        type: String,
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +      },
polymer-analyzer:       +~~~~~~~~
polymer-analyzer:       +    };
polymer-analyzer:       +~~~~~~
polymer-analyzer:       +  }
polymer-analyzer:       +~~~
polymer-analyzer:       +}
polymer-analyzer:        ~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\polymer\polymer2-mixin-scanner_test.ts:145:12)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\polymer\polymer2-mixin-scanner_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   45) Polymer2MixinScanner
polymer-analyzer:        finds mixin function expressions:
polymer-analyzer:       AssertionError: expected '\nconst TestMixin = function(superclass) {\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n  return class extends superclass {\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n    static get properties() {\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n      return {\r\n~~~~~~~~~~~~~~~\n        foo: {\r\n~~~~~~~~~~~~~~~\n          notify: true,\r\n~~~~~~~~~~~~~~~~~~~~~~~~\n          type: String,\r\n~~~~~~~~~~~~~~~~~~~~~~~~\n        },\r\n~~~~~~~~~~~\n      };\r\n~~~~~~~~~\n    }\r\n~~~~~~\n  }\r\n~~~~\n}\r\n~' to deeply equal '\nconst TestMixin = function(superclass) {\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n  return class extends superclass {\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n    static get properties() {\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n      return {\n~~~~~~~~~~~~~~\n        foo: {\n~~~~~~~~~~~~~~\n          notify: true,\n~~~~~~~~~~~~~~~~~~~~~~~\n          type: String,\n~~~~~~~~~~~~~~~~~~~~~~~\n        },\n~~~~~~~~~~\n      };\n~~~~~~~~\n    }\n~~~~~\n  }\n~~~\n}\n~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -const TestMixin = function(superclass) {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -  return class extends superclass {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -    static get properties() {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -      return {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~
polymer-analyzer:       -        foo: {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~
polymer-analyzer:       -          notify: true,
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -          type: String,
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -        },
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~
polymer-analyzer:       -      };
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~
polymer-analyzer:       -    }
polymer-analyzer:
polymer-analyzer:       -~~~~~~
polymer-analyzer:       -  }
polymer-analyzer:
polymer-analyzer:       -~~~~
polymer-analyzer:       -}
polymer-analyzer:
polymer-analyzer:       +const TestMixin = function(superclass) {
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +  return class extends superclass {
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +    static get properties() {
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +      return {
polymer-analyzer:       +~~~~~~~~~~~~~~
polymer-analyzer:       +        foo: {
polymer-analyzer:       +~~~~~~~~~~~~~~
polymer-analyzer:       +          notify: true,
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +          type: String,
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +        },
polymer-analyzer:       +~~~~~~~~~~
polymer-analyzer:       +      };
polymer-analyzer:       +~~~~~~~~
polymer-analyzer:       +    }
polymer-analyzer:       +~~~~~
polymer-analyzer:       +  }
polymer-analyzer:       +~~~
polymer-analyzer:       +}
polymer-analyzer:        ~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\polymer\polymer2-mixin-scanner_test.ts:185:12)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\polymer\polymer2-mixin-scanner_test.js:17:58)
polymer-analyzer:
polymer-analyzer: npm ERR! code ELIFECYCLE
polymer-analyzer: npm ERR! errno 60
polymer-analyzer: npm ERR! polymer-analyzer@3.2.2 test:unit: `mocha "lib/test/**/*_test.js"`
polymer-analyzer: npm ERR! Exit status 60
polymer-analyzer: npm ERR!
polymer-analyzer: npm ERR! Failed at the polymer-analyzer@3.2.2 test:unit script.
polymer-analyzer: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
polymer-analyzer: npm ERR! A complete log of this run can be found in:
polymer-analyzer: npm ERR!     C:\Users\aaron\AppData\Roaming\npm-cache\_logs\2019-03-04T14_48_29_183Z-debug.log
polymer-analyzer:   46) Polymer2MixinScanner
polymer-analyzer:        finds mixin variable declaration with only name, does not use trailing function:
polymer-analyzer:       AssertionError: expected '\nlet TestMixin;\r\n~~~~~~~~~~~~~~' to deeply equal '\nlet TestMixin;\n~~~~~~~~~~~~~~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -let TestMixin;
polymer-analyzer:
polymer-analyzer:       +let TestMixin;
polymer-analyzer:        ~~~~~~~~~~~~~~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\polymer\polymer2-mixin-scanner_test.ts:228:16)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\polymer\polymer2-mixin-scanner_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   47) Polymer2MixinScanner
polymer-analyzer:        finds mixin function declaration with only name:
polymer-analyzer:       AssertionError: expected '\nfunction TestMixin() {\r\n~~~~~~~~~~~~~~~~~~~~~~~\n}\r\n~' to deeply equal '\nfunction TestMixin() {\n~~~~~~~~~~~~~~~~~~~~~~\n}\n~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -function TestMixin() {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -}
polymer-analyzer:
polymer-analyzer:       +function TestMixin() {
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +}
polymer-analyzer:        ~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\polymer\polymer2-mixin-scanner_test.ts:252:12)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\polymer\polymer2-mixin-scanner_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   48) Polymer2MixinScanner
polymer-analyzer:        finds mixin assigned to a namespace:
polymer-analyzer:       AssertionError: expected '\nPolymer.TestMixin = Polymer.woohoo(function TestMixin(base) {\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n  /**\r\n~~~~~~\n   * @mixinClass\r\n~~~~~~~~~~~~~~~~~\n   * @polymer\r\n~~~~~~~~~~~~~~\n   */\r\n~~~~~~\n  class TestMixin extends base {\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n    static get properties() {\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n      return {\r\n~~~~~~~~~~~~~~~\n        foo: {\r\n~~~~~~~~~~~~~~~\n          notify: true,\r\n~~~~~~~~~~~~~~~~~~~~~~~~\n          type: String,\r\n~~~~~~~~~~~~~~~~~~~~~~~~\n        },\r\n~~~~~~~~~~~\n      };\r\n~~~~~~~~~\n    };\r\n~~~~~~~\n  };\r\n~~~~~\n  return TestMixin;\r\n~~~~~~~~~~~~~~~~~~~~\n});\r\n~~' to deeply equal '\nPolymer.TestMixin = Polymer.woohoo(function TestMixin(base) {\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n  /**\n~~~~~\n   * @mixinClass\n~~~~~~~~~~~~~~~~\n   * @polymer\n~~~~~~~~~~~~~\n   */\n~~~~~\n  class TestMixin extends base {\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n    static get properties() {\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n      return {\n~~~~~~~~~~~~~~\n        foo: {\n~~~~~~~~~~~~~~\n          notify: true,\n~~~~~~~~~~~~~~~~~~~~~~~\n          type: String,\n~~~~~~~~~~~~~~~~~~~~~~~\n        },\n~~~~~~~~~~\n      };\n~~~~~~~~\n    };\n~~~~~~\n  };\n~~~~\n  return TestMixin;\n~~~~~~~~~~~~~~~~~~~\n});\n~~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -Polymer.TestMixin = Polymer.woohoo(function TestMixin(base) {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -  /**
polymer-analyzer:
polymer-analyzer:       -~~~~~~
polymer-analyzer:       -   * @mixinClass
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~
polymer-analyzer:       -   * @polymer
polymer-analyzer:
polymer-analyzer:       +Polymer.TestMixin = Polymer.woohoo(function TestMixin(base) {
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +  /**
polymer-analyzer:       +~~~~~
polymer-analyzer:       +   * @mixinClass
polymer-analyzer:       +~~~~~~~~~~~~~~~~
polymer-analyzer:       +   * @polymer
polymer-analyzer:       +~~~~~~~~~~~~~
polymer-analyzer:       +   */
polymer-analyzer:       +~~~~~
polymer-analyzer:       +  class TestMixin extends base {
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +    static get properties() {
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +      return {
polymer-analyzer:        ~~~~~~~~~~~~~~
polymer-analyzer:       -   */
polymer-analyzer:
polymer-analyzer:       +        foo: {
polymer-analyzer:       +~~~~~~~~~~~~~~
polymer-analyzer:       +          notify: true,
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +          type: String,
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +        },
polymer-analyzer:       +~~~~~~~~~~
polymer-analyzer:       +      };
polymer-analyzer:       +~~~~~~~~
polymer-analyzer:       +    };
polymer-analyzer:        ~~~~~~
polymer-analyzer:       -  class TestMixin extends base {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -    static get properties() {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -      return {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~
polymer-analyzer:       -        foo: {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~
polymer-analyzer:       -          notify: true,
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -          type: String,
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -        },
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~
polymer-analyzer:       -      };
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~
polymer-analyzer:       -    };
polymer-analyzer:
polymer-analyzer:       -~~~~~~~
polymer-analyzer:       -  };
polymer-analyzer:
polymer-analyzer:       -~~~~~
polymer-analyzer:       -  return TestMixin;
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -});
polymer-analyzer:
polymer-analyzer:       +  };
polymer-analyzer:       +~~~~
polymer-analyzer:       +  return TestMixin;
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +});
polymer-analyzer:        ~~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\polymer\polymer2-mixin-scanner_test.ts:276:12)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\polymer\polymer2-mixin-scanner_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   49) Polymer2MixinScanner
polymer-analyzer:        applies mixins to mixins:
polymer-analyzer:       AssertionError: expected [ Array(2) ] to deeply equal [ Array(2) ]
polymer-analyzer:       + expected - actual
polymer-analyzer:              }
polymer-analyzer:            ]
polymer-analyzer:            "summary": ""
polymer-analyzer:            "underlinedWarnings": [
polymer-analyzer:       -      "\n    privateOverriddenMethod() { }\r\n    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
polymer-analyzer:       +      "\n    privateOverriddenMethod() { }\n    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
polymer-analyzer:            ]
polymer-analyzer:          }
polymer-analyzer:        ]
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\polymer\polymer2-mixin-scanner_test.ts:396:12)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\polymer\polymer2-mixin-scanner_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   50) Polymer2MixinScanner
polymer-analyzer:        finds exported mixin functions:
polymer-analyzer:       AssertionError: expected '\nexport function TestMixin(superclass) {\r\n       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n  return class extends superclass {\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n    static get properties() {\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n      return {\r\n~~~~~~~~~~~~~~~\n        foo: {\r\n~~~~~~~~~~~~~~~\n          notify: true,\r\n~~~~~~~~~~~~~~~~~~~~~~~~\n          type: String,\r\n~~~~~~~~~~~~~~~~~~~~~~~~\n        },\r\n~~~~~~~~~~~\n      };\r\n~~~~~~~~~\n    }\r\n~~~~~~\n  }\r\n~~~~\n}\r\n~' to deeply equal '\nexport function TestMixin(superclass) {\n       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n  return class extends superclass {\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n    static get properties() {\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n      return {\n~~~~~~~~~~~~~~\n        foo: {\n~~~~~~~~~~~~~~\n          notify: true,\n~~~~~~~~~~~~~~~~~~~~~~~\n          type: String,\n~~~~~~~~~~~~~~~~~~~~~~~\n        },\n~~~~~~~~~~\n      };\n~~~~~~~~\n    }\n~~~~~\n  }\n~~~\n}\n~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -export function TestMixin(superclass) {
polymer-analyzer:
polymer-analyzer:       -       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -  return class extends superclass {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -    static get properties() {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -      return {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~
polymer-analyzer:       -        foo: {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~
polymer-analyzer:       -          notify: true,
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -          type: String,
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -        },
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~
polymer-analyzer:       -      };
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~
polymer-analyzer:       -    }
polymer-analyzer:
polymer-analyzer:       -~~~~~~
polymer-analyzer:       -  }
polymer-analyzer:
polymer-analyzer:       -~~~~
polymer-analyzer:       -}
polymer-analyzer:
polymer-analyzer:       +export function TestMixin(superclass) {
polymer-analyzer:       +       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +  return class extends superclass {
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +    static get properties() {
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +      return {
polymer-analyzer:       +~~~~~~~~~~~~~~
polymer-analyzer:       +        foo: {
polymer-analyzer:       +~~~~~~~~~~~~~~
polymer-analyzer:       +          notify: true,
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +          type: String,
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +        },
polymer-analyzer:       +~~~~~~~~~~
polymer-analyzer:       +      };
polymer-analyzer:       +~~~~~~~~
polymer-analyzer:       +    }
polymer-analyzer:       +~~~~~
polymer-analyzer:       +  }
polymer-analyzer:       +~~~
polymer-analyzer:       +}
polymer-analyzer:        ~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\polymer\polymer2-mixin-scanner_test.ts:504:12)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\polymer\polymer2-mixin-scanner_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   51) Polymer2MixinScanner with old jsdoc annotations
polymer-analyzer:        finds mixin function declarations:
polymer-analyzer:       AssertionError: expected '\nfunction TestMixin(superclass) {\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n  return class extends superclass {\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n    static get properties() {\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n      return {\r\n~~~~~~~~~~~~~~~\n        foo: {\r\n~~~~~~~~~~~~~~~\n          notify: true,\r\n~~~~~~~~~~~~~~~~~~~~~~~~\n          type: String,\r\n~~~~~~~~~~~~~~~~~~~~~~~~\n        },\r\n~~~~~~~~~~~\n      };\r\n~~~~~~~~~\n    }\r\n~~~~~~\n  }\r\n~~~~\n}\r\n~' to deeply equal '\nfunction TestMixin(superclass) {\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n  return class extends superclass {\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n    static get properties() {\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n      return {\n~~~~~~~~~~~~~~\n        foo: {\n~~~~~~~~~~~~~~\n          notify: true,\n~~~~~~~~~~~~~~~~~~~~~~~\n          type: String,\n~~~~~~~~~~~~~~~~~~~~~~~\n        },\n~~~~~~~~~~\n      };\n~~~~~~~~\n    }\n~~~~~\n  }\n~~~\n}\n~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -function TestMixin(superclass) {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -  return class extends superclass {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -    static get properties() {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -      return {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~
polymer-analyzer:       -        foo: {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~
polymer-analyzer:       -          notify: true,
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -          type: String,
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -        },
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~
polymer-analyzer:       -      };
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~
polymer-analyzer:       -    }
polymer-analyzer:
polymer-analyzer:       -~~~~~~
polymer-analyzer:       -  }
polymer-analyzer:
polymer-analyzer:       -~~~~
polymer-analyzer:       -}
polymer-analyzer:
polymer-analyzer:       +function TestMixin(superclass) {
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +  return class extends superclass {
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +    static get properties() {
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +      return {
polymer-analyzer:       +~~~~~~~~~~~~~~
polymer-analyzer:       +        foo: {
polymer-analyzer:       +~~~~~~~~~~~~~~
polymer-analyzer:       +          notify: true,
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +          type: String,
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +        },
polymer-analyzer:       +~~~~~~~~~~
polymer-analyzer:       +      };
polymer-analyzer:       +~~~~~~~~
polymer-analyzer:       +    }
polymer-analyzer:       +~~~~~
polymer-analyzer:       +  }
polymer-analyzer:       +~~~
polymer-analyzer:       +}
polymer-analyzer:        ~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\polymer\polymer2-mixin-scanner-old-jsdoc_test.ts:100:12)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\polymer\polymer2-mixin-scanner-old-jsdoc_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   52) Polymer2MixinScanner with old jsdoc annotations
polymer-analyzer:        finds mixin arrow function expressions:
polymer-analyzer:       AssertionError: expected '\nconst TestMixin = (superclass) => class extends superclass {\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n  static get properties() {\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n    return {\r\n~~~~~~~~~~~~~\n      foo: {\r\n~~~~~~~~~~~~~\n        notify: true,\r\n~~~~~~~~~~~~~~~~~~~~~~\n        type: String,\r\n~~~~~~~~~~~~~~~~~~~~~~\n      },\r\n~~~~~~~~~\n    };\r\n~~~~~~~\n  }\r\n~~~~\n}\r\n~' to deeply equal '\nconst TestMixin = (superclass) => class extends superclass {\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n  static get properties() {\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n    return {\n~~~~~~~~~~~~\n      foo: {\n~~~~~~~~~~~~\n        notify: true,\n~~~~~~~~~~~~~~~~~~~~~\n        type: String,\n~~~~~~~~~~~~~~~~~~~~~\n      },\n~~~~~~~~\n    };\n~~~~~~\n  }\n~~~\n}\n~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -const TestMixin = (superclass) => class extends superclass {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -  static get properties() {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -    return {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~
polymer-analyzer:       -      foo: {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~
polymer-analyzer:       -        notify: true,
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -        type: String,
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -      },
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~
polymer-analyzer:       -    };
polymer-analyzer:
polymer-analyzer:       -~~~~~~~
polymer-analyzer:       -  }
polymer-analyzer:
polymer-analyzer:       -~~~~
polymer-analyzer:       -}
polymer-analyzer:
polymer-analyzer:       +const TestMixin = (superclass) => class extends superclass {
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +  static get properties() {
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +    return {
polymer-analyzer:       +~~~~~~~~~~~~
polymer-analyzer:       +      foo: {
polymer-analyzer:       +~~~~~~~~~~~~
polymer-analyzer:       +        notify: true,
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +        type: String,
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +      },
polymer-analyzer:       +~~~~~~~~
polymer-analyzer:       +    };
polymer-analyzer:       +~~~~~~
polymer-analyzer:       +  }
polymer-analyzer:       +~~~
polymer-analyzer:       +}
polymer-analyzer:        ~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\polymer\polymer2-mixin-scanner-old-jsdoc_test.ts:144:12)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\polymer\polymer2-mixin-scanner-old-jsdoc_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   53) Polymer2MixinScanner with old jsdoc annotations
polymer-analyzer:        finds mixin function expressions:
polymer-analyzer:       AssertionError: expected '\nconst TestMixin = function(superclass) {\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n  return class extends superclass {\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n    static get properties() {\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n      return {\r\n~~~~~~~~~~~~~~~\n        foo: {\r\n~~~~~~~~~~~~~~~\n          notify: true,\r\n~~~~~~~~~~~~~~~~~~~~~~~~\n          type: String,\r\n~~~~~~~~~~~~~~~~~~~~~~~~\n        },\r\n~~~~~~~~~~~\n      };\r\n~~~~~~~~~\n    }\r\n~~~~~~\n  }\r\n~~~~\n}\r\n~' to deeply equal '\nconst TestMixin = function(superclass) {\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n  return class extends superclass {\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n    static get properties() {\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n      return {\n~~~~~~~~~~~~~~\n        foo: {\n~~~~~~~~~~~~~~\n          notify: true,\n~~~~~~~~~~~~~~~~~~~~~~~\n          type: String,\n~~~~~~~~~~~~~~~~~~~~~~~\n        },\n~~~~~~~~~~\n      };\n~~~~~~~~\n    }\n~~~~~\n  }\n~~~\n}\n~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -const TestMixin = function(superclass) {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -  return class extends superclass {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -    static get properties() {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -      return {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~
polymer-analyzer:       -        foo: {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~
polymer-analyzer:       -          notify: true,
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -          type: String,
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -        },
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~
polymer-analyzer:       -      };
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~
polymer-analyzer:       -    }
polymer-analyzer:
polymer-analyzer:       -~~~~~~
polymer-analyzer:       -  }
polymer-analyzer:
polymer-analyzer:       -~~~~
polymer-analyzer:       -}
polymer-analyzer:
polymer-analyzer:       +const TestMixin = function(superclass) {
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +  return class extends superclass {
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +    static get properties() {
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +      return {
polymer-analyzer:       +~~~~~~~~~~~~~~
polymer-analyzer:       +        foo: {
polymer-analyzer:       +~~~~~~~~~~~~~~
polymer-analyzer:       +          notify: true,
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +          type: String,
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +        },
polymer-analyzer:       +~~~~~~~~~~
polymer-analyzer:       +      };
polymer-analyzer:       +~~~~~~~~
polymer-analyzer:       +    }
polymer-analyzer:       +~~~~~
polymer-analyzer:       +  }
polymer-analyzer:       +~~~
polymer-analyzer:       +}
polymer-analyzer:        ~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\polymer\polymer2-mixin-scanner-old-jsdoc_test.ts:184:12)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\polymer\polymer2-mixin-scanner-old-jsdoc_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   54) Polymer2MixinScanner with old jsdoc annotations
polymer-analyzer:        finds mixin variable declaration with only name, does not use trailing function:
polymer-analyzer:       AssertionError: expected '\nlet TestMixin;\r\n~~~~~~~~~~~~~~' to deeply equal '\nlet TestMixin;\n~~~~~~~~~~~~~~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -let TestMixin;
polymer-analyzer:
polymer-analyzer:       +let TestMixin;
polymer-analyzer:        ~~~~~~~~~~~~~~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\polymer\polymer2-mixin-scanner-old-jsdoc_test.ts:227:16)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\polymer\polymer2-mixin-scanner-old-jsdoc_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   55) Polymer2MixinScanner with old jsdoc annotations
polymer-analyzer:        finds mixin function declaration with only name:
polymer-analyzer:       AssertionError: expected '\nfunction TestMixin() {\r\n~~~~~~~~~~~~~~~~~~~~~~~\n}\r\n~' to deeply equal '\nfunction TestMixin() {\n~~~~~~~~~~~~~~~~~~~~~~\n}\n~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -function TestMixin() {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -}
polymer-analyzer:
polymer-analyzer:       +function TestMixin() {
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +}
polymer-analyzer:        ~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\polymer\polymer2-mixin-scanner-old-jsdoc_test.ts:251:12)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\polymer\polymer2-mixin-scanner-old-jsdoc_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   56) Polymer2MixinScanner with old jsdoc annotations
polymer-analyzer:        finds mixin assigned to a namespace:
polymer-analyzer:       AssertionError: expected '\nPolymer.TestMixin = Polymer.woohoo(function TestMixin(base) {\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n  /**\r\n~~~~~~\n   * @polymerMixinClass\r\n~~~~~~~~~~~~~~~~~~~~~~~~\n   */\r\n~~~~~~\n  class TestMixin extends base {\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n    static get properties() {\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n      return {\r\n~~~~~~~~~~~~~~~\n        foo: {\r\n~~~~~~~~~~~~~~~\n          notify: true,\r\n~~~~~~~~~~~~~~~~~~~~~~~~\n          type: String,\r\n~~~~~~~~~~~~~~~~~~~~~~~~\n        },\r\n~~~~~~~~~~~\n      };\r\n~~~~~~~~~\n    };\r\n~~~~~~~\n  };\r\n~~~~~\n  return TestMixin;\r\n~~~~~~~~~~~~~~~~~~~~\n});\r\n~~' to deeply equal '\nPolymer.TestMixin = Polymer.woohoo(function TestMixin(base) {\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n  /**\n~~~~~\n   * @polymerMixinClass\n~~~~~~~~~~~~~~~~~~~~~~~\n   */\n~~~~~\n  class TestMixin extends base {\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n    static get properties() {\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n      return {\n~~~~~~~~~~~~~~\n        foo: {\n~~~~~~~~~~~~~~\n          notify: true,\n~~~~~~~~~~~~~~~~~~~~~~~\n          type: String,\n~~~~~~~~~~~~~~~~~~~~~~~\n        },\n~~~~~~~~~~\n      };\n~~~~~~~~\n    };\n~~~~~~\n  };\n~~~~\n  return TestMixin;\n~~~~~~~~~~~~~~~~~~~\n});\n~~'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:       -Polymer.TestMixin = Polymer.woohoo(function TestMixin(base) {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -  /**
polymer-analyzer:
polymer-analyzer:       +Polymer.TestMixin = Polymer.woohoo(function TestMixin(base) {
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +  /**
polymer-analyzer:       +~~~~~
polymer-analyzer:       +   * @polymerMixinClass
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +   */
polymer-analyzer:       +~~~~~
polymer-analyzer:       +  class TestMixin extends base {
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +    static get properties() {
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +      return {
polymer-analyzer:       +~~~~~~~~~~~~~~
polymer-analyzer:       +        foo: {
polymer-analyzer:       +~~~~~~~~~~~~~~
polymer-analyzer:       +          notify: true,
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +          type: String,
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +        },
polymer-analyzer:       +~~~~~~~~~~
polymer-analyzer:       +      };
polymer-analyzer:       +~~~~~~~~
polymer-analyzer:       +    };
polymer-analyzer:        ~~~~~~
polymer-analyzer:       -   * @polymerMixinClass
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -   */
polymer-analyzer:
polymer-analyzer:       -~~~~~~
polymer-analyzer:       -  class TestMixin extends base {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -    static get properties() {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -      return {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~
polymer-analyzer:       -        foo: {
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~
polymer-analyzer:       -          notify: true,
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -          type: String,
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -        },
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~
polymer-analyzer:       -      };
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~
polymer-analyzer:       -    };
polymer-analyzer:
polymer-analyzer:       -~~~~~~~
polymer-analyzer:       -  };
polymer-analyzer:
polymer-analyzer:       -~~~~~
polymer-analyzer:       -  return TestMixin;
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -});
polymer-analyzer:
polymer-analyzer:       +  };
polymer-analyzer:       +~~~~
polymer-analyzer:       +  return TestMixin;
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +});
polymer-analyzer:        ~~
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\polymer\polymer2-mixin-scanner-old-jsdoc_test.ts:275:12)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\polymer\polymer2-mixin-scanner-old-jsdoc_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   57) Polymer2MixinScanner with old jsdoc annotations
polymer-analyzer:        applies mixins to mixins:
polymer-analyzer:       AssertionError: expected [ Array(2) ] to deeply equal [ Array(2) ]
polymer-analyzer:       + expected - actual
polymer-analyzer:              }
polymer-analyzer:            ]
polymer-analyzer:            "summary": ""
polymer-analyzer:            "underlinedWarnings": [
polymer-analyzer:       -      "\n    privateOverriddenMethod() { }\r\n    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
polymer-analyzer:       +      "\n    privateOverriddenMethod() { }\n    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
polymer-analyzer:            ]
polymer-analyzer:          }
polymer-analyzer:        ]
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\polymer\polymer2-mixin-scanner-old-jsdoc_test.ts:393:12)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\polymer\polymer2-mixin-scanner-old-jsdoc_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   58) WarningPrinter
polymer-analyzer:        can format and print a basic warning:
polymer-analyzer:       AssertionError: expected '\n\nclass ClassDeclaration extends HTMLElement {}\r\n      ~~~~~~~~~~~~~~~~\n\nvanilla-elements.js(1,7) warning [dumb-element-name] - This is a dumb name for an element.\n' to deeply equal '\n\nclass ClassDeclaration extends HTMLElement {}\n      ~~~~~~~~~~~~~~~~\n\nvanilla-elements.js(1,7) warning [dumb-element-name] - This is a dumb name for an element.\n'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:
polymer-analyzer:       -class ClassDeclaration extends HTMLElement {}
polymer-analyzer:
polymer-analyzer:       +class ClassDeclaration extends HTMLElement {}
polymer-analyzer:              ~~~~~~~~~~~~~~~~
polymer-analyzer:
polymer-analyzer:        vanilla-elements.js(1,7) warning [dumb-element-name] - This is a dumb name for an element.
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\warning\warning-printer_test.ts:85:12)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\warning\warning-printer_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   59) WarningPrinter
polymer-analyzer:        it adds color if configured to do so:
polymer-analyzer:       AssertionError: expected '\n\nclass ClassDeclaration extends HTMLElement {}\r\n\u001b[33m      ~~~~~~~~~~~~~~~~\u001b[39m\n\nvanilla-elements.js(1,7) \u001b[33mwarning\u001b[39m [dumb-element-name] - This is a dumb name for an element.\n' to deeply equal '\n\nclass ClassDeclaration extends HTMLElement {}\n\u001b[33m      ~~~~~~~~~~~~~~~~\u001b[39m\n\nvanilla-elements.js(1,7) \u001b[33mwarning\u001b[39m [dumb-element-name] - This is a dumb name for an element.\n'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:
polymer-analyzer:       -class ClassDeclaration extends HTMLElement {}
polymer-analyzer:
polymer-analyzer:       +class ClassDeclaration extends HTMLElement {}
polymer-analyzer:              ~~~~~~~~~~~~~~~~
polymer-analyzer:
polymer-analyzer:        vanilla-elements.js(1,7) warning [dumb-element-name] - This is a dumb name for an element.
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\warning\warning-printer_test.ts:108:12)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\warning\warning-printer_test.js:17:58)
polymer-analyzer:
polymer-analyzer:   60) WarningPrinter
polymer-analyzer:        it can print a multiline range:
polymer-analyzer:       AssertionError: expected '\n\n  static get observedAttributes() {\r\n  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n    return [\r\n~~~~~~~~~~~~~\n      /** @type {boolean} When given the element is totally inactive */\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n      \'disabled\',\r\n~~~~~~~~~~~~~~~~~~\n      /** @type {boolean} When given the element is expanded */\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n      \'open\', \'foo\', \'bar\'\r\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n    ];\r\n~~~~~~~\n  }\r\n~~~\n\nvanilla-elements.js(23,3) info [cool-observed-attributes] - Good job with this observedAttributes getter.\n' to deeply equal '\n\n  static get observedAttributes() {\n  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n    return [\n~~~~~~~~~~~~\n      /** @type {boolean} When given the element is totally inactive */\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n      \'disabled\',\n~~~~~~~~~~~~~~~~~\n      /** @type {boolean} When given the element is expanded */\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n      \'open\', \'foo\', \'bar\'\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n    ];\n~~~~~~\n  }\n~~~\n\nvanilla-elements.js(23,3) info [cool-observed-attributes] - Good job with this observedAttributes getter.\n'
polymer-analyzer:       + expected - actual
polymer-analyzer:
polymer-analyzer:
polymer-analyzer:       -  static get observedAttributes() {
polymer-analyzer:
polymer-analyzer:       -  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -    return [
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~
polymer-analyzer:       -      /** @type {boolean} When given the element is totally inactive */
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -      'disabled',
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -      /** @type {boolean} When given the element is expanded */
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -      'open', 'foo', 'bar'
polymer-analyzer:
polymer-analyzer:       -~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       -    ];
polymer-analyzer:
polymer-analyzer:       -~~~~~~~
polymer-analyzer:       -  }
polymer-analyzer:
polymer-analyzer:       +  static get observedAttributes() {
polymer-analyzer:       +  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +    return [
polymer-analyzer:       +~~~~~~~~~~~~
polymer-analyzer:       +      /** @type {boolean} When given the element is totally inactive */
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +      'disabled',
polymer-analyzer:       +~~~~~~~~~~~~~~~~~
polymer-analyzer:       +      /** @type {boolean} When given the element is expanded */
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +      'open', 'foo', 'bar'
polymer-analyzer:       +~~~~~~~~~~~~~~~~~~~~~~~~~~
polymer-analyzer:       +    ];
polymer-analyzer:       +~~~~~~
polymer-analyzer:       +  }
polymer-analyzer:        ~~~
polymer-analyzer:
polymer-analyzer:        vanilla-elements.js(23,3) info [cool-observed-attributes] - Good job with this observedAttributes getter.
polymer-analyzer:
polymer-analyzer:       at Object.<anonymous> (src\test\warning\warning-printer_test.ts:135:12)
polymer-analyzer:       at Generator.next (<anonymous>)
polymer-analyzer:       at fulfilled (lib\test\warning\warning-printer_test.js:17:58)
polymer-analyzer:
lerna ERR! npm run test:unit exited 60 in 'polymer-analyzer'
npm ERR! code ELIFECYCLE
npm ERR! errno 60
npm ERR! polymer-tools@ test:unit: `lerna run test:unit --stream --concurrency 1`
npm ERR! Exit status 60
npm ERR!
npm ERR! Failed at the polymer-tools@ test:unit script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\aaron\AppData\Roaming\npm-cache\_logs\2019-03-04T14_48_30_216Z-debug.log
npm ERR! code ELIFECYCLE
npm ERR! errno 60
npm ERR! polymer-tools@ test: `npm run build && npm run test:unit`
npm ERR! Exit status 60
npm ERR!
npm ERR! Failed at the polymer-tools@ test script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\aaron\AppData\Roaming\npm-cache\_logs\2019-03-04T14_48_30_243Z-debug.log

C:\Users\aaron\GitHub\tools>

2019-03-04T14_48_30_243Z-debug.log

AaronNGray commented 5 years ago

literally looks like it could be the different encoding of newlines on Windows.

stale[bot] commented 4 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.