All notable changes to this project will be documented in this file. This project does its best to adhere to Semantic Versioning.
0.23.2 - 2021-08-21
classSignature.commentsparsing and AST output added
0.23.1 - 2021-08-14
- Expanded C# and Java field parsing tests
0.23.0 - 2021-06-28
- Lots of additional unit tests
TypeExtractor.isSimpleLiteral()used to determine whether aFieldDef.initializershould be serialized as a literal value"initializer"or an"initializerExpression"
FieldExtractornow parses field default value assignments and returnsFieldDefinstead ofFieldSig(FieldDefcontainsinitializerfield)FieldExtractorconstructor requires a new 3rd parameter, anOperatorUtil<>ClassAstremoveT_ENUMtype parameter, enum members in a parsed enum will be represented byT_FIELDFieldDef.initializerToJson()signature changed significantly to support new multiple token initializer expressionsAccessModifierParserandAccessModifierEnumremovedparseFromSrc(), cleaned up code, added documentationAccessModifierParsertryParseFromSrc(String)anddefaultAccessModifier(String, ...)modified to takesList<String>for correctness and to simplify call sitesAstExtractor.createFieldParser()and implementations (CsBlockandJavaBlock) now returnAstParser<List<FieldDef>>instead of...FieldSigBlockUtilparseKeyword()andtryParseKeyword()replaced withtryToBlock()CsBlockParser._extractBlocksFromTree()renamedextractBlocksFromTree()(which was already public)AstParseraddedblockComplete()with empty default implementation, will be called byBlockExtractor
- Merged
FieldSigandFieldSigResolvedintoFieldDefandFieldDefResolved
- C# annotation parsing fixed to handle multiple annotations in the same block, i.e. '[Annotation(One), Annotation(Two), ...]'
- An issue with nested classes/interfaces getting assigned the incorrect access modifiers
- An issue with complex generic type parsing
0.22.0 - 2021-04-18
ProjectClassSetresolveSimpleName()in favor of moving the two lines of code to the single calling location
- C# full type name resolution fixed to resolve against the parent namespaces the class resides in (affects types in class signatures, method signatures, and fields)
- Java class signature parsing fixed to support both
extendsandimplementsin the same signature (can't believe I overlooked this and didn't have a unit test!)
0.21.0 - 2020-11-26
Parsing performance optimizations (~15-20%)
- Update dependencies
[email protected]and[email protected] ParserActionLoggerandParseTimesoptimizations and changes to work withjtext-tokenizernewTokenizationLoggerJavaFileTokenizer,CsFileTokenizer,CommentTokenizer,IdentifierTokenizer, andNumberTokenizerreusable/reusableCharParsersflag implementation to control whichCharParserMatchableFactoryimplementation is usedCodeTokenizer.tokenizeDocument()fragmentConstructorparameter optimization to skip creating fragment source string twice, major performance improvement ~5-10%- New aggregate performance logging output for text tokenization related counters
0.20.0 - 2020-11-22
Method generic type parameters parsing support (i.e. 'public T Create()' in C#).
- Method generic type parameters added -
MethodSigand sub-classes have a newtypeParametersfield. Note: if these 'types' contain lower/upper type bounds these are included in thetypeNameproperty in Java and are not yet included in C# parsing- Added basic unit tests for this new method generic type parameters parsing support
AstFragType.isBlock(CodeToken, char)overload for attempted performance optimization
- Renamed
DataTypeExtractor->TypeExtractor - Added
EnhancedListIteratoras a replacement forTokenListIterableto try and simplify fragment iteration since it is a fairly hot section of code in most parsing scenarios ParseTimes.TrackerActionenums renamed:LOAD->READPARSE->EXTRACT_AST
- Update dependency [email protected] and code to match
- Adjustments to
new CharParserMatchableFactory()andCharConditions.Identifier.newInstance()calls inIdentifierTokenizerandNumberTokenizer
- Adjustments to
- JSON output now excludes empty
annotationsarrays on fields, methods, and parameters - Additional performance log counters added to several methods and printed when performance info is enabled via
-debugCLI flag
AstFragType.isType()static method and overloads since they were unused- Unused
CommentTokenizer.createCommentTokenizerForJava()
- An exception being thrown when resolving class names if a file imported a namespace and also imported a child namespace of the first namespace
0.19.2 - 2020-05-23
Parameter varargs parsing support (i.e. 'int...' in Java).
- Update dependency
[email protected]and[email protected]- Classes combined, class names simplified, and unused classes and methods removed from libraries
- Code identifier parser now provided by
jtext-tokenizer - Several bug fixes around compound optional parser conditions
- Added
char[] src, int srcOff, int srcLenparameters toCodeTokenizer.tokenizeDocument() - Renamed
IdentifierTokenizernewIdentifierTokenizer()tocreateIdentifierTokenizer() - Improved unit tests
IdentifierTokenizer.createIdentifierTokenizer()
0.19.1 - 2020-04-20
- Finish
CommentAndWhitespaceExtractorand tests for it TextTokeninterface now includeshashCode()andequals(Object)TextFragmentRefTokennow implementshashCode()andequals(Object)
- Minor code cleanup, use
StringSplit.split()withcharinstead ofStringwhere possible
0.19.0 - 2019-07-04
IdentifierTokenizer.createIdentifierWithGenericTypeTokenizer()now takes one parameterint maxGenericTypeDepth- Changed
CsFileTokenizer.createFileParser()->createCsTokenizers()andJavaFileTokenizer.createFileParser()->createJavaTokenizers() - Added some private constructors that throw AssertionError to static classes
- Changed
GenericTypeTokenizer._createGenericTypeTokenizer()from public to private - Removed
IdentifierTokenizerfieldstatic int genericTypeDepthin favor of callers explicitly passing the argument tocreateIdentifierWithGenericTypeTokenizer()which now takes one parameterint maxGenericTypeDepth - Removed
CodeTokenizerBuilderin favor ofCodeTokenizerstatic methods- Manually build a tokenizer list of type
PairList<CharParserFactory, TextTransformer<CodeTokenType>> - Call
CodeTokenizer.createTokenizer()with the language you used to pass to theCodeTokenizerBuilderconstructor and the list of tokenizers you manually created
- Manually build a tokenizer list of type
AnnotationExtractorto handle all C# keyword-followed-by-a-block annotation arguments likedefault(T),nameof(T), andtypeof(T)
0.18.1 - 2019-07-02
AnnotationExtractorto handle C#typeof(T)annotation arguments
0.18.0 - 2019-03-30
- Added
-debugand-threads #command line arguments - More detailed debug and log file information
- Renamed
TokenizeStepLogger->ParserActionLogger ParseTimes.log()renamedsetActionTime()- Simplified and synchronized
PerformanceTrackersso instance can be shared across threads - Renamed node.js plugin file
plugins/node-js/jparser-tools-cli->plugins/node-js/jparse-code-cliand renamed associated test file
- Unused
ScopeTypeenum
- Fixed multi-threaded parsing! Handling of FileReadUtil, performance logs, and result lists are now synchronized in
ParserMisc.parseFileSet() - Update dependency [email protected] (fix for decoding empty streams/files)
0.17.0 - 2019-03-30
Performance refactor, several libraries updated: JArrays, JCollectionUtil, JFileIo, JTextParser, and JTextTokenizer
- Changed to new
FileReadUtil.readChars(InputStream)([email protected]) - Switched lombok
valusage to Java 9var - Added
HashMap<String, *Keyword> keywordSetfield toCsKeywordandJavaKeywordfor performance - Added some duplicate code in
IdentifierTokenizerto work with optimizedCharConditions.ContainsFirstSpecialconstructor
0.16.1 - 2019-03-17
- Accidentally deleted compiled *.jar files in 0.16.0 release
0.16.0 - 2019-03-17
- Class signature annotation parsing (in
BlockExtractor,CsBlockParser, andJavaBlockParser)
- Simplified
ProjectClassSet(removed two unnecessary generic parameters, renamed private fields):- Renamed
resolveSimpleNameToClass()->resolveClassNameAgainstNamespaces() - Renamed
resolveSimpleNameToClassSingleNamespace()->resolveClassNameAgainstNamespace()
- Renamed
- Performance improvements to collection allocations in
NameUtilandClassSigResolver - Renamed
AccessModifierinterface toKeyword PerformanceTrackers.getTopParseTimes()andgetTopParseStepDetails()switched first parameter fromjavax.swing.SortOrdertoboolean
- Unused
AstNodeConsumerandAstNodePredicateinterfaces - Removed lombok.val usage/dependency from several classes and packages in favor of Java 10
varor actual type.
- Bug in TokenizeStepLogger trying to
StringCase.toCamelCase()action names
0.15.7 - 2018-09-23
- Updated
CodeTokenizerBuilder.removeChildren()to useSimpleTreeImpl.removeChildRef()instead ofremoveChild()for improved performance - Updated dependencies:
0.15.6 - 2018-09-22
- Parameter default value parsing support added to
MethodParametersParser - Added
DataTypeExtractor.isDefaultValueLiteral()to check for field/parameter default values
- Renamed
CsKeyword.Inst->CsKeyword.CsKeywordUtil - Renamed
JavaKeyword.Inst->JavaKeyword.JavaKeywordUtil - Unit tests changed to use static imports of
TypeAssert.ary()instead ofnew Object[] {...}andTypeAssert.ls()instead ofArrays.asList()
0.15.5 - 2018-09-14
ParserWorkFlowreturns the-helpmessage if no arguments are given when run
bin/jparse_code.jarwasn't properly compiled as a runnable jar
0.15.4 - 2018-09-13
- Annotations to parameter signatures (with basic parameter annotation parsing added to
MethodParametersParser.extractParamsFromSignature()) - Documented DataTypeExtractor methods
- Added/Improved test cases for:
- Class signatures (generics, multiple extend/implement types)
- Generic types with multiple parameters
- Annotations on method parameters
- TODO: fix failing test for default parameters
- Old code from MainParser
CsBlockParser.readClassIdentifierAndExtends()was incorrectly trying to parsenew {object initializer blocks as class declarationsDataTypeExtractorwas reversing the parameter order of multi-paremeter generic types
0.15.3 - 2017-12-30
- Update dependency
[email protected]
0.15.2 - 2017-12-22
- Upgrade to Java 9
- Upgrade to JUnit 5
- Fix a minor compile issue found by Java 9 upgrade
0.15.1 - 2017-11-11
- Update dependency
[email protected] - Add some test cases
0.15.0 - 2017-10-15
Simplified class names and generic type signatures:
- Changed
AnnotationSig,BlockAst,MethodSig,CodeFileSrc, andCodeFileParsedto havepublic finalproperties and remove getters - CodeFileSrc
languageproperty type is nowCodeLanguage, not a generic type parameter - CodeFileSrc
docproperty renamedastTree CodeFileParsed,CodeTokenizerBuilder,CodeFileParsedandProjectClassSetaddedIntermediateimplementations to existingSimpleandResolvedimplementations with simplified generic type parameters- Split ClassSig
SimpleImplandResolvedImplinto separate files - Split MethodSig
SimpleImplandResolvedImplinto separateMethodSigSimpleandMethodSigResolvedfiles
0.14.5 - 2017-08-20
- Update dependencies:
[email protected](Predicates.Char->CharPredicate)[email protected](CharParserPredicateinterface instead ofBiPredicates.CharObject<TextParser>)
0.14.4 - 2017-06-25
- Two more JUnit tests, CsModelParseTest and JavaModelParseTest
- Added unit test helpers: test.twg2.parser.test.utils FieldAssert, MethodAssert, and TypeAssert
- Ensure output write order of parsed file definitions (sorted by fully qualifying name)
- Updated/refactored unit tests to use new unit test helpers
- Renamed unit test helper ParseAnnotationAssert -> AnnotationAssert
0.14.3 - 2017-02-06
- Forgot to remove test code from MainParser
0.14.2 - 2017-02-06
- Removed lombok.val usage/dependency from test classes.
- Fixed parsing C# classes that extend/implement multiple types, unrecognized types are assumed to possibly be interfaces.
- Fixed parsing Java classes that implement multiple types, unrecognized types are assumed to possibly be interfaces.
0.14.1 - 2016-12-03
- Updated dependencies:
- This includes a new parsing strategy which tries to parse non-compound tokens from start to finish using one parser at a time without passing the characters to compound parser, this improves performance and simplifies some of the compound parsers, but makes some compound parsers more difficult, such as ending conditions that try to keep track of characters between the start and end of the compound parser segment
GenericTypeTokenizerandIdentifierTokenizerchanges to properly parse nullable generic parameters
0.14.0 - 2016-10-30
Reduced library complexity/scope by moving twg2.parser.text conditions/tokenizers to separate jtext-tokenizer library
- Moved twg2.parser.text package to jtext-tokenizer library
- Moved twg2.parser.Inclusion to jtext-parser library
- Renamed classes *Fragment -> *Token:
- CodeFragment -> CodeToken
- CodeFragmentType -> CodeTokenType
- DocumentFragment -> TextToken and renamed methods:
- getTextFragment() -> getToken()
- getFragmentType() -> getTokenType()
- DocumentFragmentText -> TextFragmentRefToken
- CodeFragmentEnumSubSet -> CodeTokenEnumSubSet
- Renamed twg2.parser.codeParser.tools.performance -> twg2.parser.codeParser.analytics
- TokenizeStepDetails -> TokenizeStepLogger and now implements TypedLogger from jtext-tokenizer library
- Removed twg2.parser.text package (moved to jtext-tokenizer library)
0.13.0 - 2016-10-26
Parameter modifier parsing support (i.e. 'final' in Java or 'params' in C#):
- Added ParameterSig and ParameterSigResolved 'parameterModifiers' field
- Added KeywordUtil parameterModifiers() and isParameterModifier()
- MethodParametersParser.extractParamsFromSignature() to support parameter modifiers
- Renamed CodeTokenizerBuilder addConstParser() -> addParser()
- Added FieldDef.initializerToJson() 'preClosingComma' parameter
- Updated dependencies, specifically jfile-io to 0.7.0 which no longer contains JsonWrite, so added json-stringify library for new equivalent JsonStringify class and updated related code
- Updated toJson() methods to use JsonStringify.inst:
- FieldDef
- FieldDefResolved
- FieldSig
- FieldSigResolver
- MethodSig
- ParameterSig
- ParameterSigResolved
0.12.1 - 2016-10-02
- Updated dependencies, specifically jfile-io to 0.7.0 which no longer contains JsonWrite, so added json-stringify library for new equivalent JsonStringify class and updated related code
0.12.0 - 2016-09-13
- PerformanceTrackers, ParseTimes, TokenizeStepDetails in new twg2.parser.codeParser.tools.performance package - used for tracking performance
- biggest change is switching from jtext-parser's TextIteratorParser (previously: TextParserImpl) to TextCharsParser and files are read as char[] and stored in ParseInput and CodeFileSrc as char[] with offset and length, this will hopefully provide a small performance boost since each file's contents is copied one less time (no more new String(...) copy) and TextCharsParser is designed to take a char[] without any data copying
- second large change is moving the parsing process toward a clearly defined two step process, the first step is called 'tokenization' and the second is called 'parsing/extracting'
- file tokenization logic has been split up. Cs and Java FileTokenizer classes now return CodeTokenizerBuilder instances and CodeTokenizerBuilder contains all the generic logic for running the tokenization process
- updated to new latest dependencies, especially jtext-parser
- moved CodeFragment, DocumentFragment, and DocumentFragmentText from package twg2.parser.documentParser -> twg2.parser.fragment
- moved CodeFileParsed, CodeFileSource, ParseInput, and ParserWorkflow from package twg2.parser.codeParser -> twg2.parser.workflow
- moved/renamed twg2.parser.documentParser.DocumentParser -> twg2.parser.tokenizers.CodeTokenizerBuilder
- moved IsParentChild from package twg2.parser.documentParser -> twg2.parser.tokenizers
- CommentAndWhitespaceExtractor now drops the last trailing newlines from the comment strings
- updated a number of unit tests
0.11.0 - 2016-09-06
- basic C# and Java enum parsing
- Added twg2.ast.interm.field FieldDef and FieldDefResolved to represent enum members (TODO could use some clarification/refactoring)
- Added CsEnumMemberExtractor and JavaEnumMemberExtractor
- Moved duplicate code from class that implemented AstParser into new AstParserReusableBase and AstMemberInClassParserReusable abstract classes (I know the names are a little awkward, suggestions are welcome)
- Added C# and Java unit tests for enum parsing
- Moved duplicate source code parsing logic for tests into new CodeFileAndAst class
- moved and renamed several packages and class names
- twg2.parser.baseAst and sub-packages split and moved to twg2.parser.codeParser and sub-packages
- twg2.parser.baseAst.tools -> twg2.parser.fragment
- twg2.parser.baseAst.CompoundBlock -> twg2.parser.codeParser.BlockType
- CsClassParser -> CsClassTokenizer
- JavaClassParser -> JavaClassTokenizer
- twg2.parser.codeParser.parsers -> twg2.parser.tokenizers and *Parser class name prefix changed to *Tokenizer
- twg2.parser.baseAst and sub-packages split and moved to twg2.parser.codeParser and sub-packages
- AccessModifierExtractor renamed readAccessModifier() -> parseAccessModifier() and readAccessModifierFromIter() -> readAccessModifiers()
- CsBlock and JavaBlock renamed fromKeyword() -> parseKeyword() and tryFromKeyword() -> tryParseKeyword()
- TypeSig renamed nested classes:
- Simple -> TypeSigSimple
- SimpleBaseImpl -> TypeSigSimpleBase
- SimpleGenericImpl -> TypeSigSimpleGeneric
- ResolvedBaseImpl -> TypeSigResolvedBase
- ResolvedGenericImpl -> TypeSigResolvedGeneric
0.10.8 - 2016-09-02
- Updated dependency, switched jparser-data-type-like (now deprecated/removed) to jparse-primitive which is a separate project containing just the primitive parsing code from jparser-data-type-like
- Renamed project from JParserTools -> JParseCode
- Moved plugin-js/ -> plugin/node-js/
0.10.7 - 2016-08-28
- Added jdate-times dependency (since dependent date/time code was moved from jdata-util and jparser-data-type-like to jdate-times)
- Updated dependencies to latest version
0.10.6 - 2016-08-27
- Fixed version numbers and jackson-* dependency names in package-lib.json
0.10.5 - 2016-08-21
- Added JCollectionBuilders and JTuples dependencies
- Updated jcollection-util to latest 0.7.x version (removed twg2.collections.builder and twg2.collections.tuple)
0.10.4 - 2016-08-18
- Updated jdata-util to latest 0.3.x version (EnumUtil renamed ErrorUtil, TimeUnitUtil package name changed)
- Fixed compiled jar path and name
0.10.3 - 2016-08-07
- Updated jcollection-util to latest 0.5.x version
- Updated jfile-io to latest 0.6.x version (SourceInfo renamed to DirectorySearchInfo)
- Updated jtext-util to latest 0.10.x version (some classes moved to new twg2.text.stringSearch package)
- Added jcollection-interfaces dependency
0.10.2 - 2016-06-21
- plugin-js to help generate CLI strings from TypeScript/Javascript projects, with Node.js in mind
- Readme section about the CLI
0.10.1 - 2016-05-13
- Merged DocumentFragmentRef with DocumentFragmentText
- Added some documentation
- Fixed some code warnings
- Moved full class parsing tests to twg2.parser.codeParser.test
- Bug in annotation named parameter parsing when annotation only had one parameter
- Bug in C# property parsing not supporting field modifiers (i.e. 'private', 'protected', ...)
- DocumentFragmentRef (merged with DocumentFragmentText)
0.10.0 - 2016-04-12
- Added better annotation parsing, including support for negative numbers as arguments
- Added CodeFragment which extends 'DocumentFragmentText' so don't have to keep typing that every time, updated most of the code to use CodeFragment
- Added OperatorUtil and Operator (with C# and Java implementation enums) similar to the existing Keyword enums
- Refactored how we use EnumSubSet and enum sub-categorization
- Added CodeFragmentEnumSubSet with is() and parse() methods which accept CodeFragment nodes (we were starting to duplicate this parsing code in Keyword and the new Operator class, so moved it to a reusable class)
- Removed KeywordUtil isXyzKeyword() and parseXyzKeyword() methods in favor of methods that return CodeFragmentEnumSubSet instances for each of the keyword categories (i.e. 'blockModifiers()' or 'operators()')
- Moved twg2.parser.codeParser extractor classes (i.e. AccessModifierExtractor or BlockExtractor) to new twg2.parser.codeParser.extractors package
- ParserWorkflow now generates and groups all results by destination file before writing (previously a writer was opened in overwrite mode for each destination group, thereby overwriting data written to the same file by a previous destination group during the same program execution)
0.9.0 - 2016-03-20
- Added commented parsing for comments attached to methods and fields (future TODO: add comment parsing for comments attached to classes and namespaces)
- Renamed intermAst packages to 'twg2.ast.interm'
- Renamed most AST classes, removed 'interm' from the name
- Moved type resolution out of AST classes into new 'twg2.parser.resolver' classes (i.e. ClassSigResolver, FieldSigResolver, etc.)
- Created 'twg2.parser.language' package for code language management classes
0.8.0 - 2016-02-28
Move from assuming that conditions can list the initial chars that match them (CharParser.WithMarks.getMatchFirstChars()) to CharParserMatchable and new getFirstCharMatcher() method which allows for a flexible definition of matching first chars
- Moved/renamed ParserWorkFlow SourceInfo and LoadResult (renamed to SourceFiles) nested classes and ParserMain.getFilesByExtension() to [JFileIo] (https://github.com/TeamworkGuy2/JFileIo) library
- Moved twg2.parser.output JsonWrite and JsonWritable to JFileIO project's twg2.io.write package
- Renamed ParserMain -> ParserMisc
- Implemented new CharParserMatchable with getFirstCharMatcher() methods in place of old CharParser.WithMarks interface from JTextParser
- Updated to use latest version of JFileIo and JTextParser
0.7.0 - 2016-02-24
- Updated to latest version of JTextParser and JStreamish
- Switched from StringLineSupplier for reading lines from a source string to CharLineSupplier (slightly less garbage generated due to less conversion between strings and char arrays)
- By default, annotation arguments map is include in toJson() output even if empty
- ITrackSearchService.cs test file was using '\r' for newlines, replaced with '\n'
- Moved twg2.parser.test package to separate test directory
- Fixed toJson() not formatting generic types correctly
0.6.0 - 2016-02-21
- Added numeric literal parsing (i.e. '23' or '1.5f')
- Added field and method access modifier parsing (i.e. public, static, synchronized, volatile)
- Fields now write their annotations when toJson() is called
- Changed JsonWrite method names to help differentiate their purposes
- Update to use latest version of multiple libraries, including: JFileIo, JStreamish, JTextParser, and JParserDataTypeLike
0.5.0 - 2016-02-09
- Added array type parsing, (i.e. 'int[][]')
- Added some more tests
- Moved twg2.parser.codeParser.eclipseProject to another project
- Moved none JUnit experiment files to 'miscellaneous' package
0.4.0 - 2016-01-16
- Moved twg2.parser.condition.AstParser -> twg2.parser.baseAst.AstParser
- Modified CodeLanguageOptions, so implementation class is a sub-class and CodeLanguageOptions contains only static fields and methods
- Removed unused twg2.parser.documentParser.block package
- Fixed a regression in C# method signature parsing
0.3.0 - 2016-01-16
- Java parsing support and tests.
- Added Keyword interface for generic language keyword operations such as isKeyword(), isBlockModifierKeyword(), isDataTypeKeyword(), etc.
- Made interm parsing more generic, added a bunch of parser creator functions to AstExtractor. Converted some of the C# interm parsers into more generic parsers to be used by C# and Java (see BaseFieldExtractor, BaseMethodExtractor, BaseMethodParametersParser)
- Renamed getFullyQualifyingName() methods to getFullName(), (note: this may change again in future, possibly to getFqName())
- Moved and renamed ParserCondition, Precondition -> ParserFactory, TokenParserCondition -> TokenParser, CharParserCondition -> CharParser, and ParserStartChars to the [JTextParser] (https://github.com/TeamworkGuy2/JTextParser) project
- Simplified CharConditions and StringConditions sub-class names (i.e. StringConditions.StringStartFilter -> StringConditions.Start)
0.2.1 - 2016-01-13
- Simple C# parse example with resulting JSON. Added and refactored some test cases.
0.2.0 - 2016-01-12
- Finished command line interface (CLI) argument parsing for ['sources', 'destinations', 'log'] and ParserWorkflow.
- Simplified CodeFileSrc generic signature. Added interfaces and setup entire parsing process to be generic (added CodeLanguage.getExtractor() and AstExtractor interface).
- Refactored C# classes to support this more generic approach.
- Added Simple and Resolved sub-classes of ProjectClassSet. Renamed CsMain -> ParserMain.
- Added some additional EclipseClasspathFile/Utils methods for finding project dependencies.
- Removed IntermClass.getBlockTree(), it should be tracked higher up in the parsing process.