ASTNode (@NotNull ASTNode chameleon, @NotNull Language language, @NotNull Function<? super @NotNull CharSequence, ? extends @NotNull ASTNode> parser) { RangeCollectorImpl collector = chameleon.getUserData(RangeCollectorImpl.OUTER_ELEMENT_RANGES); return collector != null ? collector.applyRangeCollectorAndExpandChameleon(chameleon, language, parser) : parser.apply(chameleon.getChars()); }