Mock Version: 3.5
Mock Version: 3.5
Mock Version: 3.5
ENTER ['do_with_status'](['bash', '--login', '-c', '/usr/bin/rpmbuild -bs --noclean --target noarch --nodeps /builddir/build/SPECS/parserng.spec'], chrootPath='/var/lib/mock/f38-build-side-42-init-devel-902322-28592/root'env={'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;<mock-chroot>\\007"', 'PS1': '<mock-chroot> \\s-\\v\\$ ', 'LANG': 'C.UTF-8'}shell=Falselogger=<mockbuild.trace_decorator.getLog object at 0xffffff9bf6b890>timeout=864000uid=996gid=135user='mockbuild'nspawn_args=[]unshare_net=TrueprintOutput=False)
Executing command: ['bash', '--login', '-c', '/usr/bin/rpmbuild -bs --noclean --target noarch --nodeps /builddir/build/SPECS/parserng.spec'] with env {'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;<mock-chroot>\\007"', 'PS1': '<mock-chroot> \\s-\\v\\$ ', 'LANG': 'C.UTF-8'} and shell False
Building target platforms: noarch
Building for target noarch
setting SOURCE_DATE_EPOCH=1674086400
Wrote: /builddir/build/SRPMS/parserng-0.1.9-2.fc38.src.rpm
Child return code was: 0
ENTER ['do_with_status'](['bash', '--login', '-c', '/usr/bin/rpmbuild -bb --noclean --target noarch --nodeps /builddir/build/SPECS/parserng.spec'], chrootPath='/var/lib/mock/f38-build-side-42-init-devel-902322-28592/root'env={'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;<mock-chroot>\\007"', 'PS1': '<mock-chroot> \\s-\\v\\$ ', 'LANG': 'C.UTF-8'}shell=Falselogger=<mockbuild.trace_decorator.getLog object at 0xffffff9bf6b890>timeout=864000uid=996gid=135user='mockbuild'nspawn_args=[]unshare_net=TrueprintOutput=False)
Executing command: ['bash', '--login', '-c', '/usr/bin/rpmbuild -bb --noclean --target noarch --nodeps /builddir/build/SPECS/parserng.spec'] with env {'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;<mock-chroot>\\007"', 'PS1': '<mock-chroot> \\s-\\v\\$ ', 'LANG': 'C.UTF-8'} and shell False
Building target platforms: noarch
Building for target noarch
setting SOURCE_DATE_EPOCH=1674086400
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.2ywLZE
+ umask 022
+ cd /builddir/build/BUILD
+ cd /builddir/build/BUILD
+ rm -rf parserng-0.1.9
+ /usr/bin/mkdir -p parserng-0.1.9
+ cd parserng-0.1.9
+ /usr/lib/rpm/rpmuncompress -x -v /builddir/build/SOURCES/parserng-0.1.9.tar.xz
/usr/bin/xz -dc  '/builddir/build/SOURCES/parserng-0.1.9.tar.xz' | /usr/bin/tar -xvvof -
-rw-r--r-- jvanek/jvanek  3357 2023-02-22 11:33 CODE_OF_CONDUCT.md
-rw-r--r-- jvanek/jvanek 11359 2023-02-22 11:33 LICENSE
-rw-r--r-- jvanek/jvanek  5798 2023-02-22 11:33 pom.xml
-rw-r--r-- jvanek/jvanek 33977 2023-02-22 11:33 README.md
drwxr-xr-x jvanek/jvanek     0 2023-02-22 11:33 src/
drwxr-xr-x jvanek/jvanek     0 2023-02-22 11:33 src/test/
drwxr-xr-x jvanek/jvanek     0 2023-02-22 11:33 src/test/java/
drwxr-xr-x jvanek/jvanek     0 2023-02-22 11:33 src/test/java/parser/
drwxr-xr-x jvanek/jvanek     0 2023-02-22 11:33 src/test/java/parser/methods/
drwxr-xr-x jvanek/jvanek     0 2023-02-22 11:33 src/test/java/parser/methods/ext/
-rw-r--r-- jvanek/jvanek 12037 2023-02-22 11:33 src/test/java/parser/methods/ext/UtilsTest.java
-rw-r--r-- jvanek/jvanek  1990 2023-02-22 11:33 src/test/java/parser/methods/ext/SumTest.java
-rw-r--r-- jvanek/jvanek  2070 2023-02-22 11:33 src/test/java/parser/methods/ext/SinTest.java
-rw-r--r-- jvanek/jvanek 11602 2023-02-22 11:33 src/test/java/parser/methods/ext/RoundingTests.java
-rw-r--r-- jvanek/jvanek  1312 2023-02-22 11:33 src/test/java/parser/methods/ext/LengthsTest.java
-rw-r--r-- jvanek/jvanek  2372 2023-02-22 11:33 src/test/java/parser/methods/ext/GsumAvgGeomCountTest.java
-rw-r--r-- jvanek/jvanek  2704 2023-02-22 11:33 src/test/java/parser/methods/ext/GeomNTest.java
-rw-r--r-- jvanek/jvanek 14828 2023-02-22 11:33 src/test/java/parser/methods/ext/FloorCeilTests.java
-rw-r--r-- jvanek/jvanek  3573 2023-02-22 11:33 src/test/java/parser/methods/ext/AvgNTest.java
-rw-r--r-- jvanek/jvanek   667 2023-02-22 11:33 src/test/java/parser/methods/ext/AbsTest.java
-rw-r--r-- jvanek/jvanek  2019 2023-02-22 11:33 src/test/java/parser/methods/ProdTest.java
-rw-r--r-- jvanek/jvanek  4563 2023-02-22 11:33 src/test/java/parser/methods/DeclarationsTest.java
drwxr-xr-x jvanek/jvanek     0 2023-02-22 11:33 src/test/java/parser/logical/
-rw-r--r-- jvanek/jvanek   272 2023-02-22 11:33 src/test/java/parser/logical/PrintingExpressionLogger.java
-rw-r--r-- jvanek/jvanek 15732 2023-02-22 11:33 src/test/java/parser/logical/LogicalExpressionParserTest.java
-rw-r--r-- jvanek/jvanek  9379 2023-02-22 11:33 src/test/java/parser/logical/LogicalExpressionFactoryTest.java
-rw-r--r-- jvanek/jvanek  3621 2023-02-22 11:33 src/test/java/parser/logical/ComparingExpressionParserTest.java
-rw-r--r-- jvanek/jvanek  1266 2023-02-22 11:33 src/test/java/parser/logical/AlgebraExpressionParserTest.java
drwxr-xr-x jvanek/jvanek     0 2023-02-22 11:33 src/test/java/parser/expanding/
-rw-r--r-- jvanek/jvanek  4290 2023-02-22 11:33 src/test/java/parser/expanding/ExpandingExpressionParserWithReplacableLogicTest.java
-rw-r--r-- jvanek/jvanek  8409 2023-02-22 11:33 src/test/java/parser/expanding/ExpandingExpressionParserTest.java
-rw-r--r-- jvanek/jvanek   644 2023-02-22 11:33 src/test/java/parser/SetTest.java
-rw-r--r-- jvanek/jvanek 14895 2023-02-22 11:33 src/test/java/parser/MathExpressionTest.java
-rw-r--r-- jvanek/jvanek  6687 2023-02-22 11:33 src/test/java/parser/LogicalExpressionTest.java
drwxr-xr-x jvanek/jvanek     0 2023-02-22 11:33 src/test/java/math/
-rw-r--r-- jvanek/jvanek   835 2023-02-22 11:33 src/test/java/math/MainTest.java
-rw-r--r-- jvanek/jvanek   962 2023-02-22 11:33 src/test/java/math/BigDecimalNthRootCalculationTest.java
drwxr-xr-x jvanek/jvanek     0 2023-02-22 11:33 src/main/
drwxr-xr-x jvanek/jvanek     0 2023-02-22 11:33 src/main/java/
drwxr-xr-x jvanek/jvanek     0 2023-02-22 11:33 src/main/java/util/
drwxr-xr-x jvanek/jvanek     0 2023-02-22 11:33 src/main/java/util/io/
-rw-r--r-- jvanek/jvanek  4152 2023-02-22 11:33 src/main/java/util/io/VariableBackup.java
-rw-r--r-- jvanek/jvanek  3105 2023-02-22 11:33 src/main/java/util/io/TextFileWriter.java
-rw-r--r-- jvanek/jvanek  1470 2023-02-22 11:33 src/main/java/util/io/TextFileReader.java
-rw-r--r-- jvanek/jvanek  3165 2023-02-22 11:33 src/main/java/util/io/FunctionsBackup.java
drwxr-xr-x jvanek/jvanek     0 2023-02-22 11:33 src/main/java/util/help/
-rw-r--r-- jvanek/jvanek   972 2023-02-22 11:33 src/main/java/util/help/Topic.java
-rw-r--r-- jvanek/jvanek 25684 2023-02-22 11:33 src/main/java/util/VariableManager.java
-rw-r--r-- jvanek/jvanek 10105 2023-02-22 11:33 src/main/java/util/VariableGenerator.java
-rw-r--r-- jvanek/jvanek  3602 2023-02-22 11:33 src/main/java/util/Utils.java
-rw-r--r-- jvanek/jvanek  9532 2023-02-22 11:33 src/main/java/util/Time.java
-rw-r--r-- jvanek/jvanek   420 2023-02-22 11:33 src/main/java/util/SimplePoint.java
-rw-r--r-- jvanek/jvanek  1689 2023-02-22 11:33 src/main/java/util/Settings.java
-rw-r--r-- jvanek/jvanek  5514 2023-02-22 11:33 src/main/java/util/Serializer.java
-rw-r--r-- jvanek/jvanek   343 2023-02-22 11:33 src/main/java/util/Mode.java
-rw-r--r-- jvanek/jvanek  4427 2023-02-22 11:33 src/main/java/util/MatrixFunctionManager.java
-rw-r--r-- jvanek/jvanek   701 2023-02-22 11:33 src/main/java/util/MatrixFormatException.java
-rw-r--r-- jvanek/jvanek 11062 2023-02-22 11:33 src/main/java/util/MathExpressionManager.java
-rw-r--r-- jvanek/jvanek   633 2023-02-22 11:33 src/main/java/util/Log.java
-rw-r--r-- jvanek/jvanek  1970 2023-02-22 11:33 src/main/java/util/HistoryManager.java
-rw-r--r-- jvanek/jvanek  2057 2023-02-22 11:33 src/main/java/util/GenerateCharString.java
-rw-r--r-- jvanek/jvanek  6928 2023-02-22 11:33 src/main/java/util/FunctionManager.java
-rw-r--r-- jvanek/jvanek  1979 2023-02-22 11:33 src/main/java/util/FormulaeManager.java
-rw-r--r-- jvanek/jvanek  3938 2023-02-22 11:33 src/main/java/util/Formulae.java
-rw-r--r-- jvanek/jvanek   601 2023-02-22 11:33 src/main/java/util/ErrorLog.java
-rw-r--r-- jvanek/jvanek   507 2023-02-22 11:33 src/main/java/util/Dimension.java
drwxr-xr-x jvanek/jvanek     0 2023-02-22 11:33 src/main/java/parser/
-rw-r--r-- jvanek/jvanek   124 2023-02-22 11:33 src/main/java/parser/package-info.java
drwxr-xr-x jvanek/jvanek     0 2023-02-22 11:33 src/main/java/parser/methods/
drwxr-xr-x jvanek/jvanek     0 2023-02-22 11:33 src/main/java/parser/methods/ext/
-rw-r--r-- jvanek/jvanek  6431 2023-02-22 11:33 src/main/java/parser/methods/ext/Utils.java
-rw-r--r-- jvanek/jvanek   866 2023-02-22 11:33 src/main/java/parser/methods/ext/Sum.java
-rw-r--r-- jvanek/jvanek  4878 2023-02-22 11:33 src/main/java/parser/methods/ext/Rounding.java
-rw-r--r-- jvanek/jvanek  2179 2023-02-22 11:33 src/main/java/parser/methods/ext/Lengths.java
-rw-r--r-- jvanek/jvanek   838 2023-02-22 11:33 src/main/java/parser/methods/ext/Gsum.java
-rw-r--r-- jvanek/jvanek  1592 2023-02-22 11:33 src/main/java/parser/methods/ext/GeomN.java
-rw-r--r-- jvanek/jvanek  1021 2023-02-22 11:33 src/main/java/parser/methods/ext/Geom.java
-rw-r--r-- jvanek/jvanek  3110 2023-02-22 11:33 src/main/java/parser/methods/ext/Echo.java
-rw-r--r-- jvanek/jvanek   757 2023-02-22 11:33 src/main/java/parser/methods/ext/Count.java
-rw-r--r-- jvanek/jvanek  4982 2023-02-22 11:33 src/main/java/parser/methods/ext/CeilFloor.java
-rw-r--r-- jvanek/jvanek  1666 2023-02-22 11:33 src/main/java/parser/methods/ext/AvgN.java
-rw-r--r-- jvanek/jvanek  1027 2023-02-22 11:33 src/main/java/parser/methods/ext/Avg.java
-rw-r--r-- jvanek/jvanek   713 2023-02-22 11:33 src/main/java/parser/methods/ext/Abs.java
-rw-r--r-- jvanek/jvanek 53115 2023-02-22 11:33 src/main/java/parser/methods/Method.java
-rw-r--r-- jvanek/jvanek  2205 2023-02-22 11:33 src/main/java/parser/methods/Help.java
-rw-r--r-- jvanek/jvanek 18336 2023-02-22 11:33 src/main/java/parser/methods/Declarations.java
-rw-r--r-- jvanek/jvanek   201 2023-02-22 11:33 src/main/java/parser/methods/BasicNumericalMethod.java
drwxr-xr-x jvanek/jvanek     0 2023-02-22 11:33 src/main/java/parser/logical/
-rw-r--r-- jvanek/jvanek  4295 2023-02-22 11:33 src/main/java/parser/logical/LogicalExpressionParser.java
-rw-r--r-- jvanek/jvanek  1111 2023-02-22 11:33 src/main/java/parser/logical/LogicalExpressionMemberFactory.java
-rw-r--r-- jvanek/jvanek   593 2023-02-22 11:33 src/main/java/parser/logical/ExpressionLogger.java
-rw-r--r-- jvanek/jvanek  4763 2023-02-22 11:33 src/main/java/parser/logical/ComparingExpressionParser.java
-rw-r--r-- jvanek/jvanek   648 2023-02-22 11:33 src/main/java/parser/logical/AlgebraExpressionParser.java
-rw-r--r-- jvanek/jvanek  6383 2023-02-22 11:33 src/main/java/parser/logical/AbstractSplittingParser.java
drwxr-xr-x jvanek/jvanek     0 2023-02-22 11:33 src/main/java/parser/expanding/
-rw-r--r-- jvanek/jvanek  8645 2023-02-22 11:33 src/main/java/parser/expanding/ExpandingExpressionParser.java
drwxr-xr-x jvanek/jvanek     0 2023-02-22 11:33 src/main/java/parser/cmd/
-rw-r--r-- jvanek/jvanek  2914 2023-02-22 11:33 src/main/java/parser/cmd/ParserCmd.java
-rw-r--r-- jvanek/jvanek 15852 2023-02-22 11:33 src/main/java/parser/Variable.java
-rw-r--r-- jvanek/jvanek   281 2023-02-22 11:33 src/main/java/parser/Validatable.java
-rw-r--r-- jvanek/jvanek  4160 2023-02-22 11:33 src/main/java/parser/UnaryPreOperator.java
-rw-r--r-- jvanek/jvanek  5584 2023-02-22 11:33 src/main/java/parser/UnaryPostOperator.java
-rw-r--r-- jvanek/jvanek   433 2023-02-22 11:33 src/main/java/parser/TYPE.java
-rw-r--r-- jvanek/jvanek   694 2023-02-22 11:33 src/main/java/parser/SubtractionOperator.java
-rw-r--r-- jvanek/jvanek 39028 2023-02-22 11:33 src/main/java/parser/Set.java
-rw-r--r-- jvanek/jvanek 47235 2023-02-22 11:33 src/main/java/parser/STRING.java
-rw-r--r-- jvanek/jvanek   649 2023-02-22 11:33 src/main/java/parser/RemainderOperator.java
-rw-r--r-- jvanek/jvanek   504 2023-02-22 11:33 src/main/java/parser/Precedence.java
-rw-r--r-- jvanek/jvanek  9858 2023-02-22 11:33 src/main/java/parser/PowerOperator.java
-rw-r--r-- jvanek/jvanek 25953 2023-02-22 11:33 src/main/java/parser/PolynomialExpression.java
-rw-r--r-- jvanek/jvanek   624 2023-02-22 11:33 src/main/java/parser/PermutationOperator.java
-rw-r--r-- jvanek/jvanek   148 2023-02-22 11:33 src/main/java/parser/Parser_Result.java
-rw-r--r-- jvanek/jvanek 11874 2023-02-22 11:33 src/main/java/parser/Operator.java
-rw-r--r-- jvanek/jvanek  4461 2023-02-22 11:33 src/main/java/parser/NumberReturningStatsOperator.java
-rw-r--r-- jvanek/jvanek  6153 2023-02-22 11:33 src/main/java/parser/Number.java
-rw-r--r-- jvanek/jvanek   621 2023-02-22 11:33 src/main/java/parser/MultiplicationOperator.java
-rw-r--r-- jvanek/jvanek 57739 2023-02-22 11:33 src/main/java/parser/MathScanner.java
-rw-r--r-- jvanek/jvanek 94892 2023-02-22 11:33 src/main/java/parser/MathExpression.java
-rw-r--r-- jvanek/jvanek  6480 2023-02-22 11:33 src/main/java/parser/LogicalExpression.java
-rw-r--r-- jvanek/jvanek  5635 2023-02-22 11:33 src/main/java/parser/LogicOperator.java
-rw-r--r-- jvanek/jvanek   293 2023-02-22 11:33 src/main/java/parser/Logic.java
-rw-r--r-- jvanek/jvanek   540 2023-02-22 11:33 src/main/java/parser/LogToAnyBase.java
-rw-r--r-- jvanek/jvanek  3270 2023-02-22 11:33 src/main/java/parser/LogOrAntiLogToAnyBase.java
-rw-r--r-- jvanek/jvanek 12445 2023-02-22 11:33 src/main/java/parser/ListReturningStatsOperator.java
-rw-r--r-- jvanek/jvanek 37150 2023-02-22 11:33 src/main/java/parser/LISTS.java
-rw-r--r-- jvanek/jvanek 21867 2023-02-22 11:33 src/main/java/parser/GenericBracket.java
-rw-r--r-- jvanek/jvanek 40194 2023-02-22 11:33 src/main/java/parser/Function.java
-rw-r--r-- jvanek/jvanek  6419 2023-02-22 11:33 src/main/java/parser/ExpandingExpression.java
-rw-r--r-- jvanek/jvanek   547 2023-02-22 11:33 src/main/java/parser/DivisionOperator.java
-rw-r--r-- jvanek/jvanek  9484 2023-02-22 11:33 src/main/java/parser/DataSetFormatter.java
-rw-r--r-- jvanek/jvanek  7987 2023-02-22 11:33 src/main/java/parser/CustomScanner.java
-rw-r--r-- jvanek/jvanek   618 2023-02-22 11:33 src/main/java/parser/CombinationOperator.java
-rw-r--r-- jvanek/jvanek 22090 2023-02-22 11:33 src/main/java/parser/Bracket.java
-rw-r--r-- jvanek/jvanek  6363 2023-02-22 11:33 src/main/java/parser/BinaryOperator.java
-rw-r--r-- jvanek/jvanek   185 2023-02-22 11:33 src/main/java/parser/AssignmentOperator.java
-rw-r--r-- jvanek/jvanek   577 2023-02-22 11:33 src/main/java/parser/AntiLogToAnyBase.java
-rw-r--r-- jvanek/jvanek   627 2023-02-22 11:33 src/main/java/parser/AdditionOperator.java
drwxr-xr-x jvanek/jvanek     0 2023-02-22 11:33 src/main/java/math/
drwxr-xr-x jvanek/jvanek     0 2023-02-22 11:33 src/main/java/math/tartaglia/
-rw-r--r-- jvanek/jvanek  1449 2023-02-22 11:33 src/main/java/math/tartaglia/Tartaglia_Equation.java
-rw-r--r-- jvanek/jvanek  1972 2023-02-22 11:33 src/main/java/math/tartaglia/TartagliaSolver.java
-rw-r--r-- jvanek/jvanek 24089 2023-02-22 11:33 src/main/java/math/tartaglia/TartagliaExpressionParser.java
drwxr-xr-x jvanek/jvanek     0 2023-02-22 11:33 src/main/java/math/quadratic/
-rw-r--r-- jvanek/jvanek  1460 2023-02-22 11:33 src/main/java/math/quadratic/Quadratic_Equation.java
-rw-r--r-- jvanek/jvanek  3014 2023-02-22 11:33 src/main/java/math/quadratic/QuadraticSolver.java
-rw-r--r-- jvanek/jvanek 25234 2023-02-22 11:33 src/main/java/math/quadratic/QuadraticExpressionParser.java
drwxr-xr-x jvanek/jvanek     0 2023-02-22 11:33 src/main/java/math/otherBaseParser/
-rw-r--r-- jvanek/jvanek  4397 2023-02-22 11:33 src/main/java/math/otherBaseParser/BaseNFunction.java
drwxr-xr-x jvanek/jvanek     0 2023-02-22 11:33 src/main/java/math/numericalmethods/
-rw-r--r-- jvanek/jvanek 22247 2023-02-22 11:33 src/main/java/math/numericalmethods/RootFinder.java
-rw-r--r-- jvanek/jvanek 34544 2023-02-22 11:33 src/main/java/math/numericalmethods/NumericalIntegral.java
-rw-r--r-- jvanek/jvanek 10311 2023-02-22 11:33 src/main/java/math/numericalmethods/NumericalDerivative.java
-rw-r--r-- jvanek/jvanek 20460 2023-02-22 11:33 src/main/java/math/numericalmethods/Integration.java
-rw-r--r-- jvanek/jvanek 18224 2023-02-22 11:33 src/main/java/math/numericalmethods/FunctionExpander.java
-rw-r--r-- jvanek/jvanek 100086 2023-02-22 11:33 src/main/java/math/numericalmethods/Fmath.java
drwxr-xr-x jvanek/jvanek      0 2023-02-22 11:33 src/main/java/math/matrix/
drwxr-xr-x jvanek/jvanek      0 2023-02-22 11:33 src/main/java/math/matrix/util/
-rw-r--r-- jvanek/jvanek   4434 2023-02-22 11:33 src/main/java/math/matrix/util/LinearSystemGenerator.java
drwxr-xr-x jvanek/jvanek      0 2023-02-22 11:33 src/main/java/math/matrix/expressParser/
-rw-r--r-- jvanek/jvanek  31356 2023-02-22 11:33 src/main/java/math/matrix/expressParser/PrecisionMatrix.java
-rw-r--r-- jvanek/jvanek    681 2023-02-22 11:33 src/main/java/math/matrix/expressParser/MmultiplicationOperator.java
-rw-r--r-- jvanek/jvanek  32195 2023-02-22 11:33 src/main/java/math/matrix/expressParser/MmathScanner.java
-rw-r--r-- jvanek/jvanek   3940 2023-02-22 11:33 src/main/java/math/matrix/expressParser/MatrixVariable.java
-rw-r--r-- jvanek/jvanek   8200 2023-02-22 11:33 src/main/java/math/matrix/expressParser/MatrixValueParser.java
-rw-r--r-- jvanek/jvanek   7320 2023-02-22 11:33 src/main/java/math/matrix/expressParser/MatrixOperator.java
-rw-r--r-- jvanek/jvanek    285 2023-02-22 11:33 src/main/java/math/matrix/expressParser/MatrixFunction.java
-rw-r--r-- jvanek/jvanek  33391 2023-02-22 11:33 src/main/java/math/matrix/expressParser/MatrixExpressionScanner.java
-rw-r--r-- jvanek/jvanek   6056 2023-02-22 11:33 src/main/java/math/matrix/expressParser/MatrixBinaryOperator.java
-rw-r--r-- jvanek/jvanek  66415 2023-02-22 11:33 src/main/java/math/matrix/expressParser/Matrix.java
-rw-r--r-- jvanek/jvanek   4771 2023-02-22 11:33 src/main/java/math/matrix/expressParser/MUnaryPostOperator.java
-rw-r--r-- jvanek/jvanek    663 2023-02-22 11:33 src/main/java/math/matrix/expressParser/MSubtractionOperator.java
-rw-r--r-- jvanek/jvanek  11190 2023-02-22 11:33 src/main/java/math/matrix/expressParser/MSet.java
-rw-r--r-- jvanek/jvanek   8891 2023-02-22 11:33 src/main/java/math/matrix/expressParser/MOperator.java
-rw-r--r-- jvanek/jvanek   7366 2023-02-22 11:33 src/main/java/math/matrix/expressParser/MNumber.java
-rw-r--r-- jvanek/jvanek    315 2023-02-22 11:33 src/main/java/math/matrix/expressParser/MLogic.java
-rw-r--r-- jvanek/jvanek   8340 2023-02-22 11:33 src/main/java/math/matrix/expressParser/MBracket.java
-rw-r--r-- jvanek/jvanek   5349 2023-02-22 11:33 src/main/java/math/matrix/expressParser/MBinaryOperator.java
-rw-r--r-- jvanek/jvanek    207 2023-02-22 11:33 src/main/java/math/matrix/expressParser/MAssignmentOperator.java
-rw-r--r-- jvanek/jvanek    606 2023-02-22 11:33 src/main/java/math/matrix/expressParser/MAdditionOperator.java
-rw-r--r-- jvanek/jvanek   2033 2023-02-22 11:33 src/main/java/math/matrix/expressParser/HalfDet.java
drwxr-xr-x jvanek/jvanek      0 2023-02-22 11:33 src/main/java/math/matrix/equationParser/
-rw-r--r-- jvanek/jvanek  19102 2023-02-22 11:33 src/main/java/math/matrix/equationParser/LinearSystemParser.java
-rw-r--r-- jvanek/jvanek   9288 2023-02-22 11:33 src/main/java/math/matrix/MatrixVariableManager.java
drwxr-xr-x jvanek/jvanek      0 2023-02-22 11:33 src/main/java/math/fractions/
-rw-r--r-- jvanek/jvanek   1260 2023-02-22 11:33 src/main/java/math/fractions/PrimeNumber.java
-rw-r--r-- jvanek/jvanek   2855 2023-02-22 11:33 src/main/java/math/fractions/FractionalNumber.java
drwxr-xr-x jvanek/jvanek      0 2023-02-22 11:33 src/main/java/math/differentialcalculus/
-rw-r--r-- jvanek/jvanek  20911 2023-02-22 11:33 src/main/java/math/differentialcalculus/Utilities.java
-rw-r--r-- jvanek/jvanek   1798 2023-02-22 11:33 src/main/java/math/differentialcalculus/Test.java
-rw-r--r-- jvanek/jvanek  14320 2023-02-22 11:33 src/main/java/math/differentialcalculus/SemanticAnalyzer.java
-rw-r--r-- jvanek/jvanek  11009 2023-02-22 11:33 src/main/java/math/differentialcalculus/Parser.java
-rw-r--r-- jvanek/jvanek   6366 2023-02-22 11:33 src/main/java/math/differentialcalculus/Methods.java
-rw-r--r-- jvanek/jvanek   7582 2023-02-22 11:33 src/main/java/math/differentialcalculus/FormulaManager.java
-rw-r--r-- jvanek/jvanek  47509 2023-02-22 11:33 src/main/java/math/differentialcalculus/Formula.java
-rw-r--r-- jvanek/jvanek  41227 2023-02-22 11:33 src/main/java/math/differentialcalculus/ExpressionSimplifier.java
-rw-r--r-- jvanek/jvanek   6540 2023-02-22 11:33 src/main/java/math/differentialcalculus/DifferentiableManager.java
-rw-r--r-- jvanek/jvanek  21585 2023-02-22 11:33 src/main/java/math/differentialcalculus/Differentiable.java
-rw-r--r-- jvanek/jvanek   7871 2023-02-22 11:33 src/main/java/math/differentialcalculus/DerivativeStructureBuilder.java
-rw-r--r-- jvanek/jvanek   9695 2023-02-22 11:33 src/main/java/math/differentialcalculus/DerivativeScanner.java
-rw-r--r-- jvanek/jvanek   9146 2023-02-22 11:33 src/main/java/math/differentialcalculus/Derivative.java
-rw-r--r-- jvanek/jvanek  32709 2023-02-22 11:33 src/main/java/math/differentialcalculus/CodeGenerator.java
drwxr-xr-x jvanek/jvanek      0 2023-02-22 11:33 src/main/java/math/complex/
-rw-r--r-- jvanek/jvanek    427 2023-02-22 11:33 src/main/java/math/complex/ComplexState.java
-rw-r--r-- jvanek/jvanek   9595 2023-02-22 11:33 src/main/java/math/complex/ComplexNumber.java
-rw-r--r-- jvanek/jvanek   3320 2023-02-22 11:33 src/main/java/math/Size.java
-rw-r--r-- jvanek/jvanek   4874 2023-02-22 11:33 src/main/java/math/Point.java
-rw-r--r-- jvanek/jvanek  55792 2023-02-22 11:33 src/main/java/math/Maths.java
-rw-r--r-- jvanek/jvanek  12100 2023-02-22 11:33 src/main/java/math/Main.java
-rw-r--r-- jvanek/jvanek   6033 2023-02-22 11:33 src/main/java/math/Line.java
-rw-r--r-- jvanek/jvanek   1466 2023-02-22 11:33 src/main/java/math/BigDecimalNthRootCalculation.java
drwxr-xr-x jvanek/jvanek      0 2023-02-22 11:33 src/main/java/logic/
-rw-r--r-- jvanek/jvanek     81 2023-02-22 11:33 src/main/java/logic/USE_MODE.java
-rw-r--r-- jvanek/jvanek    250 2023-02-22 11:33 src/main/java/logic/TRIG_MODE.java
-rw-r--r-- jvanek/jvanek     60 2023-02-22 11:33 src/main/java/logic/POWER_MODE.java
-rw-r--r-- jvanek/jvanek   1466 2023-02-22 11:33 src/main/java/logic/OperatingSystem.java
-rw-r--r-- jvanek/jvanek    133 2023-02-22 11:33 src/main/java/logic/DRG_MODE.java
-rw-r--r-- jvanek/jvanek   3705 2023-02-22 11:33 src/main/java/logic/CalcLogic.java
-rw-r--r-- jvanek/jvanek    484 2023-02-22 11:33 src/main/java/logic/BASE_MODE.java
drwxr-xr-x jvanek/jvanek      0 2023-02-22 11:33 src/main/java/interfaces/
-rw-r--r-- jvanek/jvanek     72 2023-02-22 11:33 src/main/java/interfaces/Solvable.java
-rw-r--r-- jvanek/jvanek    830 2023-02-22 11:33 src/main/java/interfaces/Savable.java
-rw-r--r-- jvanek/jvanek    171 2023-02-22 11:33 src/main/java/interfaces/PollCapable.java
-rw-r--r-- jvanek/jvanek    127 2023-02-22 11:33 src/main/java/interfaces/Encodeable.java
-rw-r--r-- jvanek/jvanek    125 2023-02-22 11:33 src/main/java/interfaces/Doable.java
-rw-r--r-- jvanek/jvanek    167 2023-02-22 11:33 src/main/java/interfaces/Decodeable.java
-rw-r--r-- jvanek/jvanek     57 2023-02-22 11:33 src/main/java/interfaces/Computable.java
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .
+ RPM_EC=0
++ jobs -p
+ exit 0
Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.gJvfs6
+ umask 022
+ cd /builddir/build/BUILD
+ CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -fasynchronous-unwind-tables -fstack-clash-protection -fno-omit-frame-pointer '
+ export CFLAGS
+ CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -fasynchronous-unwind-tables -fstack-clash-protection -fno-omit-frame-pointer '
+ export CXXFLAGS
+ FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -fasynchronous-unwind-tables -fstack-clash-protection -fno-omit-frame-pointer -I/usr/lib/gfortran/modules '
+ export FFLAGS
+ FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -fasynchronous-unwind-tables -fstack-clash-protection -fno-omit-frame-pointer -I/usr/lib/gfortran/modules '
+ export FCFLAGS
+ VALAFLAGS=-g
+ export VALAFLAGS
+ LDFLAGS='-Wl,-z,relro -Wl,--as-needed  -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -Wl,--build-id=sha1  '
+ export LDFLAGS
+ LT_SYS_LIBRARY_PATH=/usr/lib:
+ export LT_SYS_LIBRARY_PATH
+ CC=gcc
+ export CC
+ CXX=g++
+ export CXX
+ cd parserng-0.1.9
+ /usr/bin/python3 /usr/share/java-utils/pom_editor.py pom_remove_plugin :maven-jar-plugin
+ /usr/bin/python3 /usr/share/java-utils/pom_editor.py pom_remove_plugin :maven-source-plugin
+ /usr/bin/python3 /usr/share/java-utils/pom_editor.py pom_remove_plugin :maven-gpg-plugin
+ /usr/bin/python3 /usr/share/java-utils/pom_editor.py pom_remove_plugin :maven-javadoc-plugin
+ /usr/bin/python3 /usr/share/java-utils/mvn_build.py --xmvn-javadoc
Executing: xmvn --batch-mode --offline verify org.fedoraproject.xmvn:xmvn-mojo:install org.fedoraproject.xmvn:xmvn-mojo:javadoc org.fedoraproject.xmvn:xmvn-mojo:builddep
['xmvn', '--batch-mode', '--offline', 'verify', 'org.fedoraproject.xmvn:xmvn-mojo:install', 'org.fedoraproject.xmvn:xmvn-mojo:javadoc', 'org.fedoraproject.xmvn:xmvn-mojo:builddep']
[INFO] Scanning for projects...
[WARNING] 
[WARNING] Some problems were encountered while building the effective model for com.github.gbenroscience:parser-ng:jar:0.1.9
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing. @ line 79, column 21
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING] 
[INFO] 
[INFO] -----------------< com.github.gbenroscience:parser-ng >-----------------
[INFO] Building ParserNG 0.1.9
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:3.2.0:resources (default-resources) @ parser-ng ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Using 'UTF-8' encoding to copy filtered properties files.
[INFO] skip non existing resourceDirectory /builddir/build/BUILD/parserng-0.1.9/src/main/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.10.1:compile (default-compile) @ parser-ng ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 164 source files to /builddir/build/BUILD/parserng-0.1.9/target/classes
[INFO] /builddir/build/BUILD/parserng-0.1.9/src/main/java/math/numericalmethods/FunctionExpander.java: Some input files use or override a deprecated API that is marked for removal.
[INFO] /builddir/build/BUILD/parserng-0.1.9/src/main/java/math/numericalmethods/FunctionExpander.java: Recompile with -Xlint:removal for details.
[INFO] /builddir/build/BUILD/parserng-0.1.9/src/main/java/math/numericalmethods/RootFinder.java: Some input files use unchecked or unsafe operations.
[INFO] /builddir/build/BUILD/parserng-0.1.9/src/main/java/math/numericalmethods/RootFinder.java: Recompile with -Xlint:unchecked for details.
[INFO] 
[INFO] --- maven-resources-plugin:3.2.0:testResources (default-testResources) @ parser-ng ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Using 'UTF-8' encoding to copy filtered properties files.
[INFO] skip non existing resourceDirectory /builddir/build/BUILD/parserng-0.1.9/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.10.1:testCompile (default-testCompile) @ parser-ng ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 24 source files to /builddir/build/BUILD/parserng-0.1.9/target/test-classes
[INFO] /builddir/build/BUILD/parserng-0.1.9/src/test/java/parser/MathExpressionTest.java: /builddir/build/BUILD/parserng-0.1.9/src/test/java/parser/MathExpressionTest.java uses unchecked or unsafe operations.
[INFO] /builddir/build/BUILD/parserng-0.1.9/src/test/java/parser/MathExpressionTest.java: Recompile with -Xlint:unchecked for details.
[INFO] 
[INFO] --- maven-surefire-plugin:3.0.0-M6:test (default-test) @ parser-ng ---
[INFO] Using auto detected provider org.apache.maven.surefire.junitplatform.JUnitPlatformProvider
[INFO] 
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running math.BigDecimalNthRootCalculationTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.134 s - in math.BigDecimalNthRootCalculationTest
[INFO] Running math.MainTest
  ParserNG 0.1.9 math.Main
-h/-H/--help         this text; do not change for help (witout dashes), which lists functions
-v/-V/--verbose      output is reprinted to stderr with some inter-steps
-l/-L/--logic        will add logical expression wrapper around the expression
                     Logical expression parser is much less evolved and slow. Do not use it if you don't must
                     If you use logical parse, result is always true/false. If it is not understood, it reuslts to false
-e/-E/--expandable  Will add expandable parser around logical expression to allow you to work with sets and views on those sets
                     by VALUES_PNG/VALUES_IPNGvariables you can pass in the set of numbers
                     and access them by L0,L1,,, L1.. ..L2  L3,..L5 notations (set is space delimited)
                     you can calculate dynamic indexes by L{expression} and use MN variable which stores length of input set
                     Expandable parser is not natural by CLI usage. using directly parser.ExpandingExpression is better, but CLI is crucial for testing expressions
-t/-T/--trim         by default, each line is one expression,
                     however for better redability, sometimes it is worthy to
                     to split the expression to multiple lines. and evaluate as one.
-i/-I/--interactive  instead of evaluating any input, interactive prompt is opened
                     If you lunch interactive mode wit TRIM, the expression is
                     evaluated once you exit (done, quit, exit...)
                     it is the same as launching parser.cmd.ParserCmd main class
           To read stdin, you have to set INTERACTIVE mode on
           To list all known functions,  type `help` as MathExpression
  Without any parameter, input is considered as math expression and calculated
  without trim, it would be the same as launching parser.MathExpression main class
  run help in verbose mode (-h -v) to get examples
  Environment variables/java properties (so setup-able) in runtime):
        RADDEGDRAD_PNG - DEG/RAD/GRAD - allows to change units for trigonometric operations. Default is RAD. It is same as MathExpression().setDRG(...)
        VALUES_PNG/VALUES_IPNG - space separated numbers - allows to set numboers for parser.ExpandingExpression
Examples:
  java -jar parser-ng-0.1.9.jar -h
    this help
  java -jar parser-ng-0.1.9.jar 1+1
    2.0
  java -jar parser-ng-0.1.9.jar "1+1
                                 +2+2"
    2.0
    4.0
  java -jar parser-ng-0.1.9.jar -t "1+1
                                    +2+2"
    6.0
  java -jar parser-ng-0.1.9.jar -i  1+1
    nothing, will expect manual output, and calculate line by line
  java -jar parser-ng-0.1.9.jar -i -t  1+1
    nothing, will expect manual output and calcualte it all as one expression
  echo 2+2 | java -jar parser-ng-0.1.9.jar  1+1
    2.0
  echo "1+1 
        +2+2 | java -jar parser-ng-0.1.9.jar -i
    2.0
    4.0
  echo "1+1 
        +2+2 | java -jar parser-ng-0.1.9.jar -i -t
    6.0
  java -cp parser-ng-0.1.9.jar parser.cmd.ParserCmd "1+1
    will ask for manual imput en evaluate per line
  echo "1+1 
        +2+2 | java -cp parser-ng-0.1.9.jar parser.cmd.ParserCmd 2>/dev/null
    2.0
    4.0
  java -cp parser-ng-0.1.9.jar parser.MathExpression "1+1
                                                      +2+2"
    6.0
  java -cp parser-ng-0.1.9.jar parser.LogicalExpression "true or false"
    true
  Note, that parser.MathExpression nor parser.LogicalExpression classes do not take any parameters except expressions
  Note, that parser.cmd.ParserCmd class takes single parameter -l/-L/--logic to contorl its evaluation
Logical extension:
Comparing operators - allowed with spaces:!=, ==, >=, <=, <, >; not allowed with spaces:le, ge, lt, gt, 
Logical operators - allowed with spaces:, |, &; not allowed with spaces:impl, xor, imp, eq, or, and
As Mathematical parts are using () as brackets, Logical parts must be grouped by [] eg: 
1+1 < (2+0)*1 impl [ [5 == 6 || 33<(22-20)*2 ]xor [ [  5-3 < 2 or 7*(5+2)<=5 ] and 1+1 == 2]] eq [ true && false ]
Note, that logical parsser supports only dual operators, so where true|false|true is valid, 1<2<3  is invalid!
Thus:  [1<2]<3   is necessary and  even  [[true|false]|true]is recomeded to be used, For 1<2<3  exception is thrown. 
Single letter can logical operands can be used in row. So eg | have same meaning as ||. But also unluckily also eg < is same as <<
Negation can be done by single ! strictly close attached to [; eg ![true]  is ... false. Some spaces like ! [ are actually ok too
Note, that variables works, but must be included in first evaluated expression. Which is obvious for "r=3;r<r+1"
But much less for [r=3;r<r+1 || [r<5]]", which fails and must be declared as "[r<r+1 || [r=3;r<5]]" 
To avoid this, you can declare all in first dummy expression: "[r=3;r<1] || [r<r+1 || [r<5]]" which ensure theirs allocation ahead of time and do not affect the rest
If you modify the variables, in the subseqet calls, results maybe funny. Use verbose mode to debug order
Extandable extension:
This is abstraction which allows to set with slices, rows and subset of immutable known numbers.
Instead of numbers, you can use literalls L0, L1...L99, which you can then call by:
Ln - vlaue of Nth number, or in Slices
L2..L4 - will expand to values of L2,L3,L4 - order is hnoured
L2.. - will expand to values of L2,L3,..Ln-1,Ln
..L5 - will expand to values of  L0,L1...L4,L5
where ..L5 or L2.. are order sensitive, the L{MN}..L0 or L0..L{MN} is not. But requires dynamic index evaluation.
When used as standalone, VALUES_PNG xor VALUES_IPNG  are used to pass in the space separated numbers (the I is inverted order)
Assume VALUES_PNG='5 9 3 8', then it is the same as VALUES_IPNG='8 3 9 5'; BUt be aware, with I the L.. and ..L are a bit oposite then expected
L0 then expand to 8; L2.. expands to 9,3,8; ' ..L2 expands to 5,9 
L2..L4 expands to 9,5; L4..L2 expands to 5,9
There is a special element MN, which represents count of input points, so you do not need to call `count(..L0)` arround and arround. So...
Expression : avg(..L1)*1.1-MN <  L0 | L1*1.3 + MN<  L0 
Upon       : 60,20,80,70
As         : Ln...L1,L0
MN         = 4
Expanded as: avg(60,20,80)*1.1-4 <  70 | 80*1.3 + 4<  70
...indeed
Dynamic calculation of L's indexes:
Sometimes, Lx, as number is not enough, and you need to calcualte it dynamically. To do so, you can use L{}
Inisde {} can be mathematical formula (including Ls, MN. or even nested {}, which will evaluate itself as number, which will be used as Lx. Eg:
'avg(..L{MN/2}) < avg(L{MN/2}..)' will go to 'avg(..L1) < avg(L1..)' will go on 1 2 3 to 'avg(1,2 ) < avg(2,3) will go to 1.5<2.5 ... true'
For fun try eg: VALUES_PNG='1 2 3' on 'avg(..L{L{MN/2}}) < avg(L{L{MN/2}}..)'
This parser by default uses LogicalExpression interpreter, but should work directly on simple Logical or Math expressions. The LogicalExpression class canbe repalced if needed.
In verbose mode, the expanded expression is always printed
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.632 s - in math.MainTest
[INFO] Running parser.expanding.ExpandingExpressionParserTest
Expression : not important now
Upon       : 1,2,3
As         : Ln...L1,L0
MN         = 3
Expanded as: not important now
Expression : not important now
Upon       : 1,2,3
As         : Ln...L1,L0
MN         = 3
Expanded as: not important now
Expression : not important now
Upon       : 1,2,3
As         : Ln...L1,L0
MN         = 3
Expanded as: not important now
Expression : not important now
Upon       : 1,2,3
As         : Ln...L1,L0
MN         = 3
Expanded as: not important now
Expression : not important now
Upon       : 1,2,3
As         : Ln...L1,L0
MN         = 3
Expanded as: not important now
Expression : not important now
Upon       : 1,2,3
As         : Ln...L1,L0
MN         = 3
Expanded as: not important now
Expression : not important now
Upon       : 1,2,3
As         : Ln...L1,L0
MN         = 3
Expanded as: not important now
Expression : not important now
Upon       : 1,2,3
As         : Ln...L1,L0
MN         = 3
Expanded as: not important now
Expression : max(L0..) == 3
Upon       : 1,2,3
As         : Ln...L1,L0
MN         = 3
Expanded as: max(3) == 3
  brackets: max(3) == 3
      evaluating logical: max(3) == 3
        evaluating comparison: max(3) == 3
          evaluating math: max(3)
          is: 3.0
          evaluating math: 3
          is: 3
        ... 3.0 == 3
        is: true
      is: true
  true
is: true
Expression : min(L0..L3)<= 1
Upon       : 1,2,3
As         : Ln...L1,L0
MN         = 3
Expanded as: min(3,2,1)<= 1
  brackets: min(3,2,1)<= 1
      evaluating logical: min(3,2,1)<= 1
        evaluating comparison: min(3,2,1)<= 1
          evaluating math: min(3,2,1)
          is: 1.0
          evaluating math: 1
          is: 1
        ... 1.0 <= 1
        is: true
      is: true
  true
is: true
Expression : avg(..L1) <L2/2+1
Upon       : 1,2,3
As         : Ln...L1,L0
MN         = 3
Expanded as: avg(1,2) <  1/2+1
  brackets: avg(1,2) <  1/2+1
      evaluating logical: avg(1,2) <  1/2+1
        evaluating comparison: avg(1,2) <  1/2+1
          evaluating math: avg(1,2)
          is: 1.5
          evaluating math: 1/2+1
          is: 1.5
        ... 1.5 < 1.5
        is: false
      is: false
  false
is: false
Expression : sum(..L1) ==L2 | false 
Upon       : 1,2,3
As         : Ln...L1,L0
MN         = 3
Expanded as: sum(1,2) ==  1 | false 
  brackets: sum(1,2) ==  1 | false 
      evaluating logical: sum(1,2) ==  1 | false 
        evaluating comparison: sum(1,2) ==  1
          evaluating math: sum(1,2)
          is: 3
          evaluating math: 1
          is: 1
        ... 3 == 1
        is: false
        evaluating comparison: false 
        is: false
      ... false | false
      is: false
  false
is: false
Expression : sum(..L1) ==L2 & false 
Upon       : 1,2,3
As         : Ln...L1,L0
MN         = 3
Expanded as: sum(1,2) ==  1 & false 
  brackets: sum(1,2) ==  1 & false 
      evaluating logical: sum(1,2) ==  1 & false 
        evaluating comparison: sum(1,2) ==  1
          evaluating math: sum(1,2)
          is: 3
          evaluating math: 1
          is: 1
        ... 3 == 1
        is: false
        evaluating comparison: false 
        is: false
      ... false & false
      is: false
  false
is: false
Expression : avg(..L{MN/2}) < avg(L{MN/2}..)
Upon       : 2,4,6
As         : Ln...L1,L0
MN         = 3
  L indexes brackets: avg(..L{3/2}) < avg(L{3/2}..)
    Expression : 3/2
    Expanded as: 3/2
    is: 1.5
    3/2 = 1 (1.5)
  to: avg(..L 1 ) < avg(L{3/2}..)
    Expression : 3/2
    Expanded as: 3/2
    is: 1.5
    3/2 = 1 (1.5)
  to: avg(..L 1 ) < avg(L 1 ..)
Expanded as: avg(2,4 ) < avg(4,6)
  brackets: avg(2,4 ) < avg(4,6)
      evaluating logical: avg(2,4 ) < avg(4,6)
        evaluating comparison: avg(2,4 ) < avg(4,6)
          evaluating math: avg(2,4 )
          is: 3
          evaluating math: avg(4,6)
          is: 5
        ... 3 < 5
        is: true
      is: true
  true
is: true
Expression : L{1+L{1+0}}+L{-2+MN/0.8}
Upon       : 22,0,66
As         : Ln...L1,L0
MN         = 3
  L indexes brackets: L{1+L{1+0}}+L{-2+3/0.8}
    L indexes brackets: 1+L{1+0}
      Expression : 1+0
      Expanded as: 1+0
      is: 1.0
      1+0 = 1 (1.0)
    to: 1+L 1 
      Expression : 1+L1 
      Expanded as: 1+0 
      is: 1.0
      1+L 1  = 1 (1.0)
  to: L 1 +L{-2+3/0.8}
    Expression : -2+3/0.8
    Expanded as: -2+3/0.8
    is: 1.75
    -2+3/0.8 = 1 (1.75)
  to: L 1 +L 1 
Expanded as: 0 +0 
is: 0.0
Expression : L{{1}}
Upon       : 2,4,6
As         : Ln...L1,L0
MN         = 3
  L indexes brackets: L{{1}}
    L indexes brackets: {1}
      Expression : 1
      Expanded as: 1
      is: 1
      1 = 1 (1)
    to:  1 
      Expression :  1 
      Expanded as:  1 
      is: 1
       1  = 1 (1)
  to: L 1 
Expanded as: 4 
is: 4
Expression : L{{MN/2}}
Upon       : 2,4,6
As         : Ln...L1,L0
MN         = 3
  L indexes brackets: L{{3/2}}
    L indexes brackets: {3/2}
      Expression : 3/2
      Expanded as: 3/2
      is: 1.5
      3/2 = 1 (1.5)
    to:  1 
      Expression :  1 
      Expanded as:  1 
      is: 1
       1  = 1 (1)
  to: L 1 
Expanded as: 4 
is: 4
Expression : not important now
Upon       : 1,2,3
As         : Ln...L1,L0
MN         = 3
Expanded as: not important now
Expression : not important now
Upon       : 1,2,3
As         : Ln...L1,L0
MN         = 3
Expanded as: not important now
Expression : not important now
Upon       : 1,2,3
As         : Ln...L1,L0
MN         = 3
Expanded as: not important now
Expression : not important now
Upon       : 1,2,3
As         : Ln...L1,L0
MN         = 3
Expanded as: not important now
Expression : not important now
Upon       : 1,2,3
As         : Ln...L1,L0
MN         = 3
Expanded as: not important now
Expression : not important now
Upon       : 1,2,3
As         : Ln...L1,L0
MN         = 3
Expanded as: not important now
Expression : not important now
Upon       : 1,2,3
As         : Ln...L1,L0
MN         = 3
Expanded as: not important now
Expression : not important now
Upon       : 1,2,3
As         : Ln...L1,L0
MN         = 3
Expanded as: not important now
Expression : not important now
Upon       : 1,2,3
As         : Ln...L1,L0
MN         = 3
Expanded as: not important now
Expression : not important now
Upon       : 1,2,3
As         : Ln...L1,L0
MN         = 3
Expanded as: not important now
Expression : L1 <L0
Upon       : 628,453,545
As         : Ln...L1,L0
MN         = 3
Expanded as: 453 < 545
  brackets: 453 < 545
      evaluating logical: 453 < 545
        evaluating comparison: 453 < 545
          evaluating math: 453
          is: 453
          evaluating math: 545
          is: 545
        ... 453 < 545
        is: true
      is: true
  true
is: true
Expression : avg(..L1) <L0
Upon       : 5,628,453,545
As         : Ln...L1,L0
MN         = 4
Expanded as: avg(5,628,453) < 545
  brackets: avg(5,628,453) < 545
      evaluating logical: avg(5,628,453) < 545
        evaluating comparison: avg(5,628,453) < 545
          evaluating math: avg(5,628,453)
          is: 362
          evaluating math: 545
          is: 545
        ... 362 < 545
        is: true
      is: true
  true
is: true
Expression : max(..L1) <L0 || 500 <L0
Upon       : 5,628,453,545
As         : Ln...L1,L0
MN         = 4
Expanded as: max(5,628,453) < 545 || 500 < 545
  brackets: max(5,628,453) < 545 || 500 < 545
      evaluating logical: max(5,628,453) < 545 || 500 < 545
        evaluating comparison: max(5,628,453) < 545
          evaluating math: max(5,628,453)
          is: 628.0
          evaluating math: 545
          is: 545
        ... 628.0 < 545
        is: false
        evaluating comparison: 500 < 545
          evaluating math: 500
          is: 500
          evaluating math: 545
          is: 545
        ... 500 < 545
        is: true
      ... false | true
      is: true
  true
is: true
Expression : 500 <L0 && 600 >L0
Upon       : 5,628,453,545
As         : Ln...L1,L0
MN         = 4
Expanded as: 500 < 545 && 600 > 545
  brackets: 500 < 545 && 600 > 545
      evaluating logical: 500 < 545 && 600 > 545
        evaluating comparison: 500 < 545
          evaluating math: 500
          is: 500
          evaluating math: 545
          is: 545
        ... 500 < 545
        is: true
        evaluating comparison: 600 > 545
          evaluating math: 600
          is: 600
          evaluating math: 545
          is: 545
        ... 600 > 545
        is: true
      ... true & true
      is: true
  true
is: true
Expression : avg(..L1)*1.1 <L0 |L1*1.3 <L0 
Upon       : 60,20,45,70
As         : Ln...L1,L0
MN         = 4
Expanded as: avg(60,20,45)*1.1 <  70 | 45*1.3 <  70 
  brackets: avg(60,20,45)*1.1 <  70 | 45*1.3 <  70 
      evaluating logical: avg(60,20,45)*1.1 <  70 | 45*1.3 <  70 
        evaluating comparison: avg(60,20,45)*1.1 <  70
          evaluating math: avg(60,20,45)*1.1
          is: 45.833333337
          evaluating math: 70
          is: 70
        ... 45.833333337 < 70
        is: true
        evaluating comparison: 45*1.3 <  70 
          evaluating math: 45*1.3
          is: 58.5
          evaluating math: 70 
          is: 70
        ... 58.5 < 70
        is: true
      ... true | true
      is: true
  true
is: true
Expression : avg(..L1)*1.1-MN <L0 |L1*1.3 + MN<L0 
Upon       : 60,20,80,70
As         : Ln...L1,L0
MN         = 4
Expanded as: avg(60,20,80)*1.1-4 <  70 | 80*1.3 + 4<  70 
  brackets: avg(60,20,80)*1.1-4 <  70 | 80*1.3 + 4<  70 
      evaluating logical: avg(60,20,80)*1.1-4 <  70 | 80*1.3 + 4<  70 
        evaluating comparison: avg(60,20,80)*1.1-4 <  70
          evaluating math: avg(60,20,80)*1.1-4
          is: 54.66666666300001
          evaluating math: 70
          is: 70
        ... 54.66666666300001 < 70
        is: true
        evaluating comparison: 80*1.3 + 4<  70 
          evaluating math: 80*1.3 + 4
          is: 108.0
          evaluating math: 70 
          is: 70
        ... 108.0 < 70
        is: false
      ... true | false
      is: true
  true
is: true
Expression : avg(..L1)*1.1 <L0 |L1*1.3 <L0 
Upon       : 60,20,80,70
As         : Ln...L1,L0
MN         = 4
Expanded as: avg(60,20,80)*1.1 <  70 | 80*1.3 <  70 
  brackets: avg(60,20,80)*1.1 <  70 | 80*1.3 <  70 
      evaluating logical: avg(60,20,80)*1.1 <  70 | 80*1.3 <  70 
        evaluating comparison: avg(60,20,80)*1.1 <  70
          evaluating math: avg(60,20,80)*1.1
          is: 58.66666666300001
          evaluating math: 70
          is: 70
        ... 58.66666666300001 < 70
        is: true
        evaluating comparison: 80*1.3 <  70 
          evaluating math: 80*1.3
          is: 104.0
          evaluating math: 70 
          is: 70
        ... 104.0 < 70
        is: false
      ... true | false
      is: true
  true
is: true
Expression :  [[ avg(..L1)*1.1 <L0 ] || [L1*1.3 <L0 ]] || [ avgN(count(..L0)/4, ..L1)*1.1<L0 ] 
Upon       : 60,20,45,70
As         : Ln...L1,L0
MN         = 4
Expanded as:  [[ avg(60,20,45)*1.1 <  70 ] || [45*1.3 <  70 ]] || [ avgN(count(60,20,45,70)/4,60,20,45)*1.1<70 ] 
  brackets:  [[ avg(60,20,45)*1.1 <  70 ] || [45*1.3 <  70 ]] || [ avgN(count(60,20,45,70)/4,60,20,45)*1.1<70 ] 
    brackets: [ avg(60,20,45)*1.1 <  70 ] || [45*1.3 <  70 ]
        evaluating logical:  avg(60,20,45)*1.1 <  70 
          evaluating comparison:  avg(60,20,45)*1.1 <  70 
            evaluating math:  avg(60,20,45)*1.1
            is: 45.833333337
            evaluating math: 70 
            is: 70
          ... 45.833333337 < 70
          is: true
        is: true
    to:  true  || [45*1.3 <  70 ]
        evaluating logical: 45*1.3 <  70 
          evaluating comparison: 45*1.3 <  70 
            evaluating math: 45*1.3
            is: 58.5
            evaluating math: 70 
            is: 70
          ... 58.5 < 70
          is: true
        is: true
    to:  true  ||  true 
        evaluating logical:  true  ||  true 
          evaluating comparison:  true
          is: true
          evaluating comparison: true 
          is: true
        ... true | true
        is: true
    true
  to:   true  || [ avgN(count(60,20,45,70)/4,60,20,45)*1.1<70 ] 
      evaluating logical:  avgN(count(60,20,45,70)/4,60,20,45)*1.1<70 
        evaluating comparison:  avgN(count(60,20,45,70)/4,60,20,45)*1.1<70 
          evaluating math:  avgN(count(60,20,45,70)/4,60,20,45)*1.1
          is: 45.833333337
          evaluating math: 70 
          is: 70
        ... 45.833333337 < 70
        is: true
      is: true
  to:   true  ||  true  
      evaluating logical:   true  ||  true  
        evaluating comparison:   true
        is: true
        evaluating comparison: true  
        is: true
      ... true | true
      is: true
  true
is: true
[INFO] Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 23.107 s - in parser.expanding.ExpandingExpressionParserTest
[INFO] Running parser.expanding.ExpandingExpressionParserWithReplacableLogicTest
Expression : L0<L1 andL2<L3
Upon       : 2,-1,1,0
As         : Ln...L1,L0
MN         = 4
Expanded as: 0<1 and -1<2
  brackets: 0<1 and -1<2
      evaluating logical: 0<1 and -1<2
        evaluating comparison: 0<1
          evaluating math: 0
          is: 0
          evaluating math: 1
          is: 1
        ... 0 < 1
        is: true
        evaluating comparison: -1<2
          evaluating math: -1
          is: -1.0
          evaluating math: 2
          is: 2
        ... -1.0 < 2
        is: true
      ... true and true
      is: true
  true
is: true
Expression : L0>L1 andL2>L3
Upon       : 2,-1,1,0
As         : Ln...L1,L0
MN         = 4
Expanded as: 0>1 and -1>2
  brackets: 0>1 and -1>2
      evaluating logical: 0>1 and -1>2
        evaluating comparison: 0>1
          evaluating math: 0
          is: 0
          evaluating math: 1
          is: 1
        ... 0 > 1
        is: false
        evaluating comparison: -1>2
          evaluating math: -1
          is: -1.0
          evaluating math: 2
          is: 2
        ... -1.0 > 2
        is: false
      ... false and false
      is: false
  false
is: false
Expression : L0>L1 andL2>L3
Upon       : 2,-1,1,0
As         : Ln...L1,L0
MN         = 4
Expanded as: 0>1 and -1>2
  brackets: 0>1 and -1>2
      evaluating logical: 0>1 and -1>2
        evaluating hogwarts members
Expression : harry(L0..L2) and ron(L0..L2)
Upon       : 2,-1,1,0
As         : Ln...L1,L0
MN         = 4
Expanded as: harry(0,1,-1) and ron(0,1,-1)
  brackets: harry(0,1,-1) and ron(0,1,-1)
      evaluating logical: harry(0,1,-1) and ron(0,1,-1)
        evaluating hogwarts members
        evaluating hogwarts members
      ... true and true
      is: true
  true
is: true
Expression : tom(L0..L2) and ron(L0..L2)
Upon       : 2,-1,1,0
As         : Ln...L1,L0
MN         = 4
Expanded as: tom(0,1,-1) and ron(0,1,-1)
  brackets: tom(0,1,-1) and ron(0,1,-1)
      evaluating logical: tom(0,1,-1) and ron(0,1,-1)
        evaluating hogwarts members
        evaluating hogwarts members
      ... false and true
      is: false
  false
is: false
Expression : true and true
Upon       : 2,-1,1,0
As         : Ln...L1,L0
MN         = 4
Expanded as: true and true
  brackets: true and true
      evaluating logical: true and true
        evaluating comparison: true
        is: true
        evaluating comparison: true
        is: true
      ... true and true
      is: true
  true
is: true
Expression : false and true
Upon       : 2,-1,1,0
As         : Ln...L1,L0
MN         = 4
Expanded as: false and true
  brackets: false and true
      evaluating logical: false and true
        evaluating comparison: false
        is: false
        evaluating comparison: true
        is: true
      ... false and true
      is: false
  false
is: false
Expression : 1+1 < ((2+0)*1) impl  false  eq  false
Upon       : 1,2,3
As         : Ln...L1,L0
MN         = 3
Expanded as: 1+1 < ((2+0)*1) impl  false  eq  false
  brackets: 1+1 < ((2+0)*1) impl  false  eq  false
      evaluating logical: 1+1 < ((2+0)*1) impl  false  eq  false
        evaluating comparison: 1+1 < ((2+0)*1)
          evaluating math: 1+1
          is: 2.0
          evaluating math: ((2+0)*1)
          is: 2.0
        ... 2.0 < 2.0
        is: false
        evaluating comparison: false
        is: false
      ... false impl false
  true
is: true
Expression : L0<L1 andL2<L3
Upon       : 0,1,-1,2
As         : Ln...L1,L0
MN         = 4
Expanded as: 2<-1 and 1<0
  brackets: 2<-1 and 1<0
      evaluating logical: 2<-1 and 1<0
        evaluating comparison: 2<-1
          evaluating math: 2
          is: 2
          evaluating math: -1
          is: -1.0
        ... 2 < -1.0
        is: false
        evaluating comparison: 1<0
          evaluating math: 1
          is: 1
          evaluating math: 0
          is: 0
        ... 1 < 0
        is: false
      ... false and false
      is: false
  false
is: false
Expression : L0<L1 andL2<L3
Upon       : 2,-1,1,0
As         : Ln...L1,L0
MN         = 4
Expanded as: 0<1 and -1<2
  brackets: 0<1 and -1<2
      evaluating logical: 0<1 and -1<2
        evaluating comparison: 0<1
          evaluating math: 0
          is: 0
          evaluating math: 1
          is: 1
        ... 0 < 1
        is: true
        evaluating comparison: -1<2
          evaluating math: -1
          is: -1.0
          evaluating math: 2
          is: 2
        ... -1.0 < 2
        is: true
      ... true and true
      is: true
  true
is: true
Expression : [L0<L1 andL2<L3 ] or [L0<L1 andL2<L3 ] 
Upon       : 2,-1,1,0
As         : Ln...L1,L0
MN         = 4
Expanded as: [ 0<1 and -1<2 ] or [ 0<1 and -1<2 ] 
[ 0<1 and -1<2 ] or [ 0<1 and -1<2 ] 
  brackets: [ 0<1 and -1<2 ] or [ 0<1 and -1<2 ] 
      evaluating logical:  0<1 and -1<2 
        evaluating comparison:  0<1
          evaluating math:  0
          is: 0
          evaluating math: 1
          is: 1
        ... 0 < 1
        is: true
        evaluating comparison: -1<2 
          evaluating math: -1
          is: -1.0
          evaluating math: 2 
          is: 2
        ... -1.0 < 2
        is: true
      ... true and true
      is: true
  to:  true  or [ 0<1 and -1<2 ] 
      evaluating logical:  0<1 and -1<2 
        evaluating comparison:  0<1
          evaluating math:  0
          is: 0
          evaluating math: 1
          is: 1
        ... 0 < 1
        is: true
        evaluating comparison: -1<2 
          evaluating math: -1
          is: -1.0
          evaluating math: 2 
          is: 2
        ... -1.0 < 2
        is: true
      ... true and true
      is: true
  to:  true  or  true  
      evaluating logical:  true  or  true  
        evaluating comparison:  true
        is: true
        evaluating comparison: true  
        is: true
      ... true or true
      is: true
  true
is: true
Expression : [L0>L1 andL2<2L3] or [L0>L1 andL2<L3]
Upon       : 2,-1,1,0
As         : Ln...L1,L0
MN         = 4
Expanded as: [ 0>1 and -1<22] or [0>1 and -1<2]
[ 0>1 and -1<22] or [0>1 and -1<2]
  brackets: [ 0>1 and -1<22] or [0>1 and -1<2]
      evaluating logical:  0>1 and -1<22
        evaluating comparison:  0>1
          evaluating math:  0
          is: 0
          evaluating math: 1
          is: 1
        ... 0 > 1
        is: false
        evaluating comparison: -1<22
          evaluating math: -1
          is: -1.0
          evaluating math: 22
          is: 22
        ... -1.0 < 22
        is: true
      ... false and true
      is: false
  to:  false  or [0>1 and -1<2]
      evaluating logical: 0>1 and -1<2
        evaluating comparison: 0>1
          evaluating math: 0
          is: 0
          evaluating math: 1
          is: 1
        ... 0 > 1
        is: false
        evaluating comparison: -1<2
          evaluating math: -1
          is: -1.0
          evaluating math: 2
          is: 2
        ... -1.0 < 2
        is: true
      ... false and true
      is: false
  to:  false  or  false 
      evaluating logical:  false  or  false 
        evaluating comparison:  false
        is: false
        evaluating comparison: false 
        is: false
      ... false or false
      is: false
  false
is: false
Expression : [L0>L1 andL2<2L3] or [L0>L1 andL2<L3]
Upon       : 2,-1,1,0
As         : Ln...L1,L0
MN         = 4
Expanded as: [ 0>1 and -1<22] or [0>1 and -1<2]
[ 0>1 and -1<22] or [0>1 and -1<2]
  brackets: [ 0>1 and -1<22] or [0>1 and -1<2]
      evaluating logical:  0>1 and -1<22
        evaluating hogwarts members
Expression : [ harry(L3..L1) and ron(L3..L1)] or [ron(L3..L1) and tom(L3..L1)]
Upon       : 2,-1,1,0
As         : Ln...L1,L0
MN         = 4
Expanded as: [ harry(2,-1,1) and ron(2,-1,1)] or [ron(2,-1,1) and tom(2,-1,1)]
[ harry(2,-1,1) and ron(2,-1,1)] or [ron(2,-1,1) and tom(2,-1,1)]
  brackets: [ harry(2,-1,1) and ron(2,-1,1)] or [ron(2,-1,1) and tom(2,-1,1)]
      evaluating logical:  harry(2,-1,1) and ron(2,-1,1)
        evaluating hogwarts members
        evaluating hogwarts members
      ... true and true
      is: true
  to:  true  or [ron(2,-1,1) and tom(2,-1,1)]
      evaluating logical: ron(2,-1,1) and tom(2,-1,1)
        evaluating hogwarts members
        evaluating hogwarts members
      ... true and false
      is: false
  to:  true  or  false 
      evaluating logical:  true  or  false 
        evaluating hogwarts members
        evaluating hogwarts members
      ... true or false
      is: true
  true
is: true
Expression : [L0<L1 andL2<L3 ] or [L0<L1 andL2<L3 ] 
Upon       : 2,-1,1,0
As         : Ln...L1,L0
MN         = 4
Expanded as: [ 0<1 and -1<2 ] or [ 0<1 and -1<2 ] 
[ 0<1 and -1<2 ] or [ 0<1 and -1<2 ] 
  brackets: [ 0<1 and -1<2 ] or [ 0<1 and -1<2 ] 
      evaluating logical:  0<1 and -1<2 
        evaluating comparison:  0<1
          evaluating math:  0
          is: 0
          evaluating math: 1
          is: 1
        ... 0 < 1
        is: true
        evaluating comparison: -1<2 
          evaluating math: -1
          is: -1.0
          evaluating math: 2 
          is: 2
        ... -1.0 < 2
        is: true
      ... true and true
      is: true
  to:  true  or [ 0<1 and -1<2 ] 
      evaluating logical:  0<1 and -1<2 
        evaluating comparison:  0<1
          evaluating math:  0
          is: 0
          evaluating math: 1
          is: 1
        ... 0 < 1
        is: true
        evaluating comparison: -1<2 
          evaluating math: -1
          is: -1.0
          evaluating math: 2 
          is: 2
        ... -1.0 < 2
        is: true
      ... true and true
      is: true
  to:  true  or  true  
      evaluating logical:  true  or  true  
        evaluating comparison:  true
        is: true
        evaluating comparison: true  
        is: true
      ... true or true
      is: true
  true
is: true
Expression : [L0>L1 andL2<2L3] or [L0>L1 andL2<L3]
Upon       : 2,-1,1,0
As         : Ln...L1,L0
MN         = 4
Expanded as: [ 0>1 and -1<22] or [0>1 and -1<2]
[ 0>1 and -1<22] or [0>1 and -1<2]
  brackets: [ 0>1 and -1<22] or [0>1 and -1<2]
      evaluating logical:  0>1 and -1<22
        evaluating comparison:  0>1
          evaluating math:  0
          is: 0
          evaluating math: 1
          is: 1
        ... 0 > 1
        is: false
        evaluating comparison: -1<22
          evaluating math: -1
          is: -1.0
          evaluating math: 22
          is: 22
        ... -1.0 < 22
        is: true
      ... false and true
      is: false
  to:  false  or [0>1 and -1<2]
      evaluating logical: 0>1 and -1<2
        evaluating comparison: 0>1
          evaluating math: 0
          is: 0
          evaluating math: 1
          is: 1
        ... 0 > 1
        is: false
        evaluating comparison: -1<2
          evaluating math: -1
          is: -1.0
          evaluating math: 2
          is: 2
        ... -1.0 < 2
        is: true
      ... false and true
      is: false
  to:  false  or  false 
      evaluating logical:  false  or  false 
        evaluating comparison:  false
        is: false
        evaluating comparison: false 
        is: false
      ... false or false
      is: false
  false
is: false
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 10.186 s - in parser.expanding.ExpandingExpressionParserWithReplacableLogicTest
[INFO] Running parser.methods.ext.GeomNTest
[INFO] Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 17.197 s - in parser.methods.ext.GeomNTest
[INFO] Running parser.methods.ext.RoundingTests
[INFO] Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 153.782 s - in parser.methods.ext.RoundingTests
[INFO] Running parser.methods.ext.GsumAvgGeomCountTest
[INFO] Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 16.638 s - in parser.methods.ext.GsumAvgGeomCountTest
[INFO] Running parser.methods.ext.SinTest
[INFO] Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.776 s - in parser.methods.ext.SinTest
[INFO] Running parser.methods.ext.AvgNTest
[INFO] Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 26.324 s - in parser.methods.ext.AvgNTest
[INFO] Running parser.methods.ext.AbsTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.542 s - in parser.methods.ext.AbsTest
[INFO] Running parser.methods.ext.SumTest
[INFO] Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 10.356 s - in parser.methods.ext.SumTest
[INFO] Running parser.methods.ext.UtilsTest
[INFO] Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.873 s - in parser.methods.ext.UtilsTest
[INFO] Running parser.methods.ext.LengthsTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.665 s - in parser.methods.ext.LengthsTest
[INFO] Running parser.methods.ext.FloorCeilTests
[INFO] Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 113.698 s - in parser.methods.ext.FloorCeilTests
[INFO] Running parser.methods.ProdTest
[INFO] Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 10.433 s - in parser.methods.ProdTest
[INFO] Running parser.methods.DeclarationsTest
[INFO] Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 9.093 s - in parser.methods.DeclarationsTest
[INFO] Running parser.SetTest
[INFO] Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.258 s - in parser.SetTest
[INFO] Running parser.LogicalExpressionTest
brackets: ![true] || !    [false] 
    evaluating logical: true
      evaluating comparison: true
      is: true
    is: true
  !true
  ...false
to:  false  || !    [false] 
    evaluating logical: false
      evaluating comparison: false
      is: false
    is: false
  !false
  ...true
to:  false  ||  true  
    evaluating logical:  false  ||  true  
      evaluating comparison:  false
      is: false
      evaluating comparison: true  
      is: true
    ... false | true
    is: true
true
brackets:   !   [ true && false ]
    evaluating logical:  true && false 
      evaluating comparison:  true
      is: true
      evaluating comparison: false 
      is: false
    ... true & false
    is: false
  !false
  ...true
to:    true 
    evaluating logical:    true 
      evaluating comparison:    true 
      is: true
    is: true
true
brackets: ! [ ! [true] ||  ! [false] ]
  brackets:  ! [true] ||  ! [false] 
      evaluating logical: true
        evaluating comparison: true
        is: true
      is: true
    !true
    ...false
  to:   false  ||  ! [false] 
      evaluating logical: false
        evaluating comparison: false
        is: false
      is: false
    !false
    ...true
  to:   false  ||   true  
      evaluating logical:   false  ||   true  
        evaluating comparison:   false
        is: false
        evaluating comparison: true  
        is: true
      ... false | true
      is: true
  true
  !true
  ...false
to:  false 
    evaluating logical:  false 
      evaluating comparison:  false 
      is: false
    is: false
false
brackets: !   [![ true && false ]]
  brackets: ![ true && false ]
      evaluating logical:  true && false 
        evaluating comparison:  true
        is: true
        evaluating comparison: false 
        is: false
      ... true & false
      is: false
    !false
    ...true
  to:  true 
      evaluating logical:  true 
        evaluating comparison:  true 
        is: true
      is: true
  true
  !true
  ...false
to:  false 
    evaluating logical:  false 
      evaluating comparison:  false 
      is: false
    is: false
false
brackets:    ![true] ||   ! [false]  eq  ! [ true && false ]
    evaluating logical: true
      evaluating comparison: true
      is: true
    is: true
  !true
  ...false
to:     false  ||   ! [false]  eq  ! [ true && false ]
    evaluating logical: false
      evaluating comparison: false
      is: false
    is: false
  !false
  ...true
to:     false  ||    true   eq  ! [ true && false ]
    evaluating logical:  true && false 
      evaluating comparison:  true
      is: true
      evaluating comparison: false 
      is: false
    ... true & false
    is: false
  !false
  ...true
to:     false  ||    true   eq   true 
    evaluating logical:     false  ||    true   eq   true 
      evaluating comparison:     false
      is: false
      evaluating comparison: true
      is: true
    ... false | true
      evaluating comparison: true 
      is: true
    ... true eq true
    is: true
true
brackets: !   [ ! [true] || ![false]]  eq  !    [![ true && false ]]
  brackets:  ! [true] || ![false]
      evaluating logical: true
        evaluating comparison: true
        is: true
      is: true
    !true
    ...false
  to:   false  || ![false]
      evaluating logical: false
        evaluating comparison: false
        is: false
      is: false
    !false
    ...true
  to:   false  ||  true 
      evaluating logical:   false  ||  true 
        evaluating comparison:   false
        is: false
        evaluating comparison: true 
        is: true
      ... false | true
      is: true
  true
  !true
  ...false
to:  false   eq  !    [![ true && false ]]
  brackets: ![ true && false ]
      evaluating logical:  true && false 
        evaluating comparison:  true
        is: true
        evaluating comparison: false 
        is: false
      ... true & false
      is: false
    !false
    ...true
  to:  true 
      evaluating logical:  true 
        evaluating comparison:  true 
        is: true
      is: true
  true
  !true
  ...false
to:  false   eq   false 
    evaluating logical:  false   eq   false 
      evaluating comparison:  false
      is: false
      evaluating comparison: false 
      is: false
    ... false eq false
    is: true
true
brackets: ![ ! [! [true] || ![false]]  eq  ![  ! [ true && false ]]]
  brackets:  ! [! [true] || ![false]]  eq  ![  ! [ true && false ]]
    brackets: ! [true] || ![false]
        evaluating logical: true
          evaluating comparison: true
          is: true
        is: true
      !true
      ...false
    to:  false  || ![false]
        evaluating logical: false
          evaluating comparison: false
          is: false
        is: false
      !false
      ...true
    to:  false  ||  true 
        evaluating logical:  false  ||  true 
          evaluating comparison:  false
          is: false
          evaluating comparison: true 
          is: true
        ... false | true
        is: true
    true
    !true
    ...false
  to:   false   eq  ![  ! [ true && false ]]
    brackets:   ! [ true && false ]
        evaluating logical:  true && false 
          evaluating comparison:  true
          is: true
          evaluating comparison: false 
          is: false
        ... true & false
        is: false
      !false
      ...true
    to:    true 
        evaluating logical:    true 
          evaluating comparison:    true 
          is: true
        is: true
    true
    !true
    ...false
  to:   false   eq   false 
      evaluating logical:   false   eq   false 
        evaluating comparison:   false
        is: false
        evaluating comparison: false 
        is: false
      ... false eq false
      is: true
  true
  !true
  ...false
to:  false 
    evaluating logical:  false 
      evaluating comparison:  false 
      is: false
    is: false
false
brackets: 1+1 < (2+0)*1 impl [ [5 == 6 || 33<(22-20)*2 ] xor [ [  5-3 < 2 or 7*(5+2)<=5 ] and 1+1 == 2]] eq [ true && false ] 
  brackets:  [5 == 6 || 33<(22-20)*2 ] xor [ [  5-3 < 2 or 7*(5+2)<=5 ] and 1+1 == 2]
      evaluating logical: 5 == 6 || 33<(22-20)*2 
        evaluating comparison: 5 == 6
          evaluating math: 5
          is: 5
          evaluating math: 6
          is: 6
        ... 5 == 6
        is: false
        evaluating comparison: 33<(22-20)*2 
          evaluating math: 33
          is: 33
          evaluating math: (22-20)*2 
          is: 4.0
        ... 33 < 4.0
        is: false
      ... false | false
      is: false
  to:   false  xor [ [  5-3 < 2 or 7*(5+2)<=5 ] and 1+1 == 2]
    brackets:  [  5-3 < 2 or 7*(5+2)<=5 ] and 1+1 == 2
        evaluating logical:   5-3 < 2 or 7*(5+2)<=5 
          evaluating comparison:   5-3 < 2
            evaluating math:   5-3
            is: 2.0
            evaluating math: 2
            is: 2
          ... 2.0 < 2
          is: false
          evaluating comparison: 7*(5+2)<=5 
            evaluating math: 7*(5+2)
            is: 49.0
            evaluating math: 5 
            is: 5
          ... 49.0 <= 5
          is: false
        ... false or false
        is: false
    to:   false  and 1+1 == 2
        evaluating logical:   false  and 1+1 == 2
          evaluating comparison:   false
          is: false
          evaluating comparison: 1+1 == 2
            evaluating math: 1+1
            is: 2.0
            evaluating math: 2
            is: 2
          ... 2.0 == 2
          is: true
        ... false and true
        is: false
    false
  to:   false  xor  false 
      evaluating logical:   false  xor  false 
        evaluating comparison:   false
        is: false
        evaluating comparison: false 
        is: false
      ... false xor false
      is: false
  false
to: 1+1 < (2+0)*1 impl  false  eq [ true && false ] 
    evaluating logical:  true && false 
      evaluating comparison:  true
      is: true
      evaluating comparison: false 
      is: false
    ... true & false
    is: false
to: 1+1 < (2+0)*1 impl  false  eq  false  
    evaluating logical: 1+1 < (2+0)*1 impl  false  eq  false  
      evaluating comparison: 1+1 < (2+0)*1
        evaluating math: 1+1
        is: 2.0
        evaluating math: (2+0)*1
        is: 2.0
      ... 2.0 < 2.0
      is: false
      evaluating comparison: false
      is: false
    ... false impl false
true
brackets: 1+1 < (2+0)*1 impl   false
    evaluating logical: 1+1 < (2+0)*1 impl   false
      evaluating comparison: 1+1 < (2+0)*1
        evaluating math: 1+1
        is: 2.0
        evaluating math: (2+0)*1
        is: 2.0
      ... 2.0 < 2.0
      is: false
      evaluating comparison: false
      is: false
    ... false impl false
true
brackets: [1+1 < (2+0)*1 impl  false ]  eq  false
    evaluating logical: 1+1 < (2+0)*1 impl  false 
      evaluating comparison: 1+1 < (2+0)*1
        evaluating math: 1+1
        is: 2.0
        evaluating math: (2+0)*1
        is: 2.0
      ... 2.0 < 2.0
      is: false
      evaluating comparison: false 
      is: false
    ... false impl false
to:  true   eq  false
    evaluating logical:  true   eq  false
      evaluating comparison:  true
      is: true
      evaluating comparison: false
      is: false
    ... true eq false
    is: false
false
brackets: 1+1 < (2+0)*1 impl  [ false   eq  false]
    evaluating logical:  false   eq  false
      evaluating comparison:  false
      is: false
      evaluating comparison: false
      is: false
    ... false eq false
    is: true
to: 1+1 < (2+0)*1 impl   true 
    evaluating logical: 1+1 < (2+0)*1 impl   true 
      evaluating comparison: 1+1 < (2+0)*1
        evaluating math: 1+1
        is: 2.0
        evaluating math: (2+0)*1
        is: 2.0
      ... 2.0 < 2.0
      is: false
      evaluating comparison: true 
      is: true
    ... false impl true
true
brackets: q=3;q<q+1
    evaluating logical: q=3;q<q+1
      evaluating comparison: q=3;q<q+1
        evaluating math: q=3;q
        is: 3
        evaluating math: q+1
        is: 4.0
      ... 3 < 4.0
      is: true
    is: true
true
brackets: [q<q+1 || [q=3;q<5]]
  brackets: q<q+1 || [q=3;q<5]
      evaluating logical: q=3;q<5
        evaluating comparison: q=3;q<5
          evaluating math: q=3;q
          is: 3
          evaluating math: 5
          is: 5
        ... 3 < 5
        is: true
      is: true
  to: q<q+1 ||  true 
      evaluating logical: q<q+1 ||  true 
        evaluating comparison: q<q+1
          evaluating math: q
          is: 3
          evaluating math: q+1
          is: 4.0
        ... 3 < 4.0
        is: true
        evaluating comparison: true 
        is: true
      ... true | true
      is: true
  true
to:  true 
    evaluating logical:  true 
      evaluating comparison:  true 
      is: true
    is: true
true
brackets: [q=3;q<1] || [q<q+1 || [q<5]]
    evaluating logical: q=3;q<1
      evaluating comparison: q=3;q<1
        evaluating math: q=3;q
        is: 3
        evaluating math: 1
        is: 1
      ... 3 < 1
      is: false
    is: false
to:  false  || [q<q+1 || [q<5]]
  brackets: q<q+1 || [q<5]
      evaluating logical: q<5
        evaluating comparison: q<5
          evaluating math: q
          is: 3
          evaluating math: 5
          is: 5
        ... 3 < 5
        is: true
      is: true
  to: q<q+1 ||  true 
      evaluating logical: q<q+1 ||  true 
        evaluating comparison: q<q+1
          evaluating math: q
          is: 3
          evaluating math: q+1
          is: 4.0
        ... 3 < 4.0
        is: true
        evaluating comparison: true 
        is: true
      ... true | true
      is: true
  true
to:  false  ||  true 
    evaluating logical:  false  ||  true 
      evaluating comparison:  false
      is: false
      evaluating comparison: true 
      is: true
    ... false | true
    is: true
true
brackets: [true]
    evaluating logical: true
      evaluating comparison: true
      is: true
    is: true
to:  true 
    evaluating logical:  true 
      evaluating comparison:  true 
      is: true
    is: true
true
brackets: ![true]
    evaluating logical: true
      evaluating comparison: true
      is: true
    is: true
  !true
  ...false
to:  false 
    evaluating logical:  false 
      evaluating comparison:  false 
      is: false
    is: false
false
brackets: [false]
    evaluating logical: false
      evaluating comparison: false
      is: false
    is: false
to:  false 
    evaluating logical:  false 
      evaluating comparison:  false 
      is: false
    is: false
false
brackets: ![false]
    evaluating logical: false
      evaluating comparison: false
      is: false
    is: false
  !false
  ...true
to:  true 
    evaluating logical:  true 
      evaluating comparison:  true 
      is: true
    is: true
true
brackets:  1<2  && 1< 3
    evaluating logical:  1<2  && 1< 3
      evaluating comparison:  1<2
        evaluating math:  1
        is: 1
        evaluating math: 2
        is: 2
      ... 1 < 2
      is: true
      evaluating comparison: 1< 3
        evaluating math: 1
        is: 1
        evaluating math: 3
        is: 3
      ... 1 < 3
      is: true
    ... true & true
    is: true
true
brackets:  1<2  && 1<=0
    evaluating logical:  1<2  && 1<=0
      evaluating comparison:  1<2
        evaluating math:  1
        is: 1
        evaluating math: 2
        is: 2
      ... 1 < 2
      is: true
      evaluating comparison: 1<=0
        evaluating math: 1
        is: 1
        evaluating math: 0
        is: 0
      ... 1 <= 0
      is: false
    ... true & false
    is: false
false
brackets:  1<2  || 1<=0
    evaluating logical:  1<2  || 1<=0
      evaluating comparison:  1<2
        evaluating math:  1
        is: 1
        evaluating math: 2
        is: 2
      ... 1 < 2
      is: true
      evaluating comparison: 1<=0
        evaluating math: 1
        is: 1
        evaluating math: 0
        is: 0
      ... 1 <= 0
      is: false
    ... true | false
    is: true
true
brackets:  [  true  || false ] && [  true  && true ] 
    evaluating logical:   true  || false 
      evaluating comparison:   true
      is: true
      evaluating comparison: false 
      is: false
    ... true | false
    is: true
to:   true  && [  true  && true ] 
    evaluating logical:   true  && true 
      evaluating comparison:   true
      is: true
      evaluating comparison: true 
      is: true
    ... true & true
    is: true
to:   true  &&  true  
    evaluating logical:   true  &&  true  
      evaluating comparison:   true
      is: true
      evaluating comparison: true  
      is: true
    ... true & true
    is: true
true
brackets:  [  true  && false ] && [  true  && true ] 
    evaluating logical:   true  && false 
      evaluating comparison:   true
      is: true
      evaluating comparison: false 
      is: false
    ... true & false
    is: false
to:   false  && [  true  && true ] 
    evaluating logical:   true  && true 
      evaluating comparison:   true
      is: true
      evaluating comparison: true 
      is: true
    ... true & true
    is: true
to:   false  &&  true  
    evaluating logical:   false  &&  true  
      evaluating comparison:   false
      is: false
      evaluating comparison: true  
      is: true
    ... false & true
    is: false
false
brackets:  [  true  && false ] || [  true  && true ] 
    evaluating logical:   true  && false 
      evaluating comparison:   true
      is: true
      evaluating comparison: false 
      is: false
    ... true & false
    is: false
to:   false  || [  true  && true ] 
    evaluating logical:   true  && true 
      evaluating comparison:   true
      is: true
      evaluating comparison: true 
      is: true
    ... true & true
    is: true
to:   false  ||  true  
    evaluating logical:   false  ||  true  
      evaluating comparison:   false
      is: false
      evaluating comparison: true  
      is: true
    ... false | true
    is: true
true
brackets:  [  true  || false ] &&  true 
    evaluating logical:   true  || false 
      evaluating comparison:   true
      is: true
      evaluating comparison: false 
      is: false
    ... true | false
    is: true
to:   true  &&  true 
    evaluating logical:   true  &&  true 
      evaluating comparison:   true
      is: true
      evaluating comparison: true 
      is: true
    ... true & true
    is: true
true
brackets:    true  || [ false &&  true ]
    evaluating logical:  false &&  true 
      evaluating comparison:  false
      is: false
      evaluating comparison: true 
      is: true
    ... false & true
    is: false
to:    true  ||  false 
    evaluating logical:    true  ||  false 
      evaluating comparison:    true
      is: true
      evaluating comparison: false 
      is: false
    ... true | false
    is: true
true
brackets:  [  false  || true ] &&  false 
    evaluating logical:   false  || true 
      evaluating comparison:   false
      is: false
      evaluating comparison: true 
      is: true
    ... false | true
    is: true
to:   true  &&  false 
    evaluating logical:   true  &&  false 
      evaluating comparison:   true
      is: true
      evaluating comparison: false 
      is: false
    ... true & false
    is: false
false
brackets:    false  || [ true &&  false ]
    evaluating logical:  true &&  false 
      evaluating comparison:  true
      is: true
      evaluating comparison: false 
      is: false
    ... true & false
    is: false
to:    false  ||  false 
    evaluating logical:    false  ||  false 
      evaluating comparison:    false
      is: false
      evaluating comparison: false 
      is: false
    ... false | false
    is: false
false
brackets:  [  false  impl true ] impl  false 
    evaluating logical:   false  impl true 
      evaluating comparison:   false
      is: false
      evaluating comparison: true 
      is: true
    ... false impl true
to:   true  impl  false 
    evaluating logical:   true  impl  false 
      evaluating comparison:   true
      is: true
      evaluating comparison: false 
      is: false
    ... true impl false
false
brackets:     false  impl [ true impl  false ]
    evaluating logical:  true impl  false 
      evaluating comparison:  true
      is: true
      evaluating comparison: false 
      is: false
    ... true impl false
to:     false  impl  false 
    evaluating logical:     false  impl  false 
      evaluating comparison:     false
      is: false
      evaluating comparison: false 
      is: false
    ... false impl false
true
brackets: [ true]  
    evaluating logical:  true
      evaluating comparison:  true
      is: true
    is: true
to:  true   
    evaluating logical:  true   
      evaluating comparison:  true   
      is: true
    is: true
true
brackets:  ! [ true ]
    evaluating logical:  true 
      evaluating comparison:  true 
      is: true
    is: true
  !true
  ...false
to:   false 
    evaluating logical:   false 
      evaluating comparison:   false 
      is: false
    is: false
false
brackets: [false]
    evaluating logical: false
      evaluating comparison: false
      is: false
    is: false
to:  false 
    evaluating logical:  false 
      evaluating comparison:  false 
      is: false
    is: false
false
brackets:  !   [false]
    evaluating logical: false
      evaluating comparison: false
      is: false
    is: false
  !false
  ...true
to:   true 
    evaluating logical:   true 
      evaluating comparison:   true 
      is: true
    is: true
true
brackets: [False]
    evaluating logical: False
      evaluating comparison: False
      is: false
    is: false
to:  false 
    evaluating logical:  false 
      evaluating comparison:  false 
      is: false
    is: false
false
brackets: TRUE
    evaluating logical: TRUE
      evaluating comparison: TRUE
      is: true
    is: true
true
brackets: [s=3;s<s+1 || [s<5]]
  brackets: s=3;s<s+1 || [s<5]
      evaluating logical: s<5
        evaluating comparison: s<5
          evaluating math: s
java.lang.NumberFormatException: Character s is neither a decimal digit number, decimal point, nor "e" notation exponential mark.
	at java.base/java.math.BigDecimal.<init>(BigDecimal.java:586)
	at java.base/java.math.BigDecimal.<init>(BigDecimal.java:471)
	at java.base/java.math.BigDecimal.<init>(BigDecimal.java:900)
	at parser.logical.AlgebraExpressionParser.evaluate(AlgebraExpressionParser.java:21)
	at parser.logical.ComparingExpressionParser.evaluate(ComparingExpressionParser.java:75)
	at parser.logical.LogicalExpressionParser.evaluate(LogicalExpressionParser.java:82)
	at parser.LogicalExpression.evalDirect(LogicalExpression.java:114)
	at parser.LogicalExpression.evalBrackets(LogicalExpression.java:87)
	at parser.LogicalExpression.evalBrackets(LogicalExpression.java:85)
	at parser.LogicalExpression.solve(LogicalExpression.java:52)
	at parser.LogicalExpressionTest.variablesDoNotWorks(LogicalExpressionTest.java:128)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727)
	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:217)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:213)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:138)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:147)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:127)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:90)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:55)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:102)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:54)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
	at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
	at org.apache.maven.surefire.junitplatform.LazyLauncher.execute(LazyLauncher.java:56)
	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.execute(JUnitPlatformProvider.java:223)
	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(JUnitPlatformProvider.java:175)
	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:139)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:456)
	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:169)
	at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:595)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:581)
brackets: ![true] || ![false] 
    evaluating logical: true
      evaluating comparison: true
      is: true
    is: true
  !true
  ...false
to:  false  || ![false] 
    evaluating logical: false
      evaluating comparison: false
      is: false
    is: false
  !false
  ...true
to:  false  ||  true  
    evaluating logical:  false  ||  true  
      evaluating comparison:  false
      is: false
      evaluating comparison: true  
      is: true
    ... false | true
    is: true
true
brackets: ![ true && false ]
    evaluating logical:  true && false 
      evaluating comparison:  true
      is: true
      evaluating comparison: false 
      is: false
    ... true & false
    is: false
  !false
  ...true
to:  true 
    evaluating logical:  true 
      evaluating comparison:  true 
      is: true
    is: true
true
brackets: ![![true] || ![false] ]
  brackets: ![true] || ![false] 
      evaluating logical: true
        evaluating comparison: true
        is: true
      is: true
    !true
    ...false
  to:  false  || ![false] 
      evaluating logical: false
        evaluating comparison: false
        is: false
      is: false
    !false
    ...true
  to:  false  ||  true  
      evaluating logical:  false  ||  true  
        evaluating comparison:  false
        is: false
        evaluating comparison: true  
        is: true
      ... false | true
      is: true
  true
  !true
  ...false
to:  false 
    evaluating logical:  false 
      evaluating comparison:  false 
      is: false
    is: false
false
brackets: ![![ true && false ]]
  brackets: ![ true && false ]
      evaluating logical:  true && false 
        evaluating comparison:  true
        is: true
        evaluating comparison: false 
        is: false
      ... true & false
      is: false
    !false
    ...true
  to:  true 
      evaluating logical:  true 
        evaluating comparison:  true 
        is: true
      is: true
  true
  !true
  ...false
to:  false 
    evaluating logical:  false 
      evaluating comparison:  false 
      is: false
    is: false
false
brackets: ![true] || ![false]  eq  ![ true && false ]
    evaluating logical: true
      evaluating comparison: true
      is: true
    is: true
  !true
  ...false
to:  false  || ![false]  eq  ![ true && false ]
    evaluating logical: false
      evaluating comparison: false
      is: false
    is: false
  !false
  ...true
to:  false  ||  true   eq  ![ true && false ]
    evaluating logical:  true && false 
      evaluating comparison:  true
      is: true
      evaluating comparison: false 
      is: false
    ... true & false
    is: false
  !false
  ...true
to:  false  ||  true   eq   true 
    evaluating logical:  false  ||  true   eq   true 
      evaluating comparison:  false
      is: false
      evaluating comparison: true
      is: true
    ... false | true
      evaluating comparison: true 
      is: true
    ... true eq true
    is: true
true
brackets: ![![true] || ![false]]  eq  ![![ true && false ]]
  brackets: ![true] || ![false]
      evaluating logical: true
        evaluating comparison: true
        is: true
      is: true
    !true
    ...false
  to:  false  || ![false]
      evaluating logical: false
        evaluating comparison: false
        is: false
      is: false
    !false
    ...true
  to:  false  ||  true 
      evaluating logical:  false  ||  true 
        evaluating comparison:  false
        is: false
        evaluating comparison: true 
        is: true
      ... false | true
      is: true
  true
  !true
  ...false
to:  false   eq  ![![ true && false ]]
  brackets: ![ true && false ]
      evaluating logical:  true && false 
        evaluating comparison:  true
        is: true
        evaluating comparison: false 
        is: false
      ... true & false
      is: false
    !false
    ...true
  to:  true 
      evaluating logical:  true 
        evaluating comparison:  true 
        is: true
      is: true
  true
  !true
  ...false
to:  false   eq   false 
    evaluating logical:  false   eq   false 
      evaluating comparison:  false
      is: false
      evaluating comparison: false 
      is: false
    ... false eq false
    is: true
true
brackets: ![![![true] || ![false]]  eq  ![![ true && false ]]]
  brackets: ![![true] || ![false]]  eq  ![![ true && false ]]
    brackets: ![true] || ![false]
        evaluating logical: true
          evaluating comparison: true
          is: true
        is: true
      !true
      ...false
    to:  false  || ![false]
        evaluating logical: false
          evaluating comparison: false
          is: false
        is: false
      !false
      ...true
    to:  false  ||  true 
        evaluating logical:  false  ||  true 
          evaluating comparison:  false
          is: false
          evaluating comparison: true 
          is: true
        ... false | true
        is: true
    true
    !true
    ...false
  to:  false   eq  ![![ true && false ]]
    brackets: ![ true && false ]
        evaluating logical:  true && false 
          evaluating comparison:  true
          is: true
          evaluating comparison: false 
          is: false
        ... true & false
        is: false
      !false
      ...true
    to:  true 
        evaluating logical:  true 
          evaluating comparison:  true 
          is: true
        is: true
    true
    !true
    ...false
  to:  false   eq   false 
      evaluating logical:  false   eq   false 
        evaluating comparison:  false
        is: false
        evaluating comparison: false 
        is: false
      ... false eq false
      is: true
  true
  !true
  ...false
to:  false 
    evaluating logical:  false 
      evaluating comparison:  false 
      is: false
    is: false
false
[INFO] Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 16.918 s - in parser.LogicalExpressionTest
[INFO] Running parser.logical.LogicalExpressionParserTest
evaluating logical: true eq true
  evaluating comparison: true
  is: true
  evaluating comparison: true
  is: true
... true eq true
is: true
evaluating logical: false eq true
  evaluating comparison: false
  is: false
  evaluating comparison: true
  is: true
... false eq true
is: false
evaluating logical: false eq false
  evaluating comparison: false
  is: false
  evaluating comparison: false
  is: false
... false eq false
is: true
evaluating logical: true eq false
  evaluating comparison: true
  is: true
  evaluating comparison: false
  is: false
... true eq false
is: false
evaluating logical: true or true
  evaluating comparison: true
  is: true
  evaluating comparison: true
  is: true
... true or true
is: true
evaluating logical: false or true
  evaluating comparison: false
  is: false
  evaluating comparison: true
  is: true
... false or true
is: true
evaluating logical: false or false
  evaluating comparison: false
  is: false
  evaluating comparison: false
  is: false
... false or false
is: false
evaluating logical: true or false
  evaluating comparison: true
  is: true
  evaluating comparison: false
  is: false
... true or false
is: true
evaluating logical: true | true
  evaluating comparison: true
  is: true
  evaluating comparison: true
  is: true
... true | true
is: true
evaluating logical: false || true
  evaluating comparison: false
  is: false
  evaluating comparison: true
  is: true
... false | true
is: true
evaluating logical: false ||| false
  evaluating comparison: false
  is: false
  evaluating comparison: false
  is: false
... false | false
is: false
evaluating logical: true |||| false
  evaluating comparison: true
  is: true
  evaluating comparison: false
  is: false
... true | false
is: true
evaluating logical: 1+1==2 and 1+1==2
  evaluating comparison: 1+1==2
    evaluating math: 1+1
    is: 2.0
    evaluating math: 2
    is: 2
  ... 2.0 == 2
  is: true
  evaluating comparison: 1+1==2
    evaluating math: 1+1
    is: 2.0
    evaluating math: 2
    is: 2
  ... 2.0 == 2
  is: true
... true and true
is: true
evaluating logical: 1+1==2 and 1<2 and 1<2
  evaluating comparison: 1+1==2
    evaluating math: 1+1
    is: 2.0
    evaluating math: 2
    is: 2
  ... 2.0 == 2
  is: true
  evaluating comparison: 1<2
    evaluating math: 1
    is: 1
    evaluating math: 2
    is: 2
  ... 1 < 2
  is: true
... true and true
  evaluating comparison: 1<2
    evaluating math: 1
    is: 1
    evaluating math: 2
    is: 2
  ... 1 < 2
  is: true
... true and true
is: true
evaluating logical: 1<2 and 1<2 and 1+1==2
  evaluating comparison: 1<2
    evaluating math: 1
    is: 1
    evaluating math: 2
    is: 2
  ... 1 < 2
  is: true
  evaluating comparison: 1<2
    evaluating math: 1
    is: 1
    evaluating math: 2
    is: 2
  ... 1 < 2
  is: true
... true and true
  evaluating comparison: 1+1==2
    evaluating math: 1+1
    is: 2.0
    evaluating math: 2
    is: 2
  ... 2.0 == 2
  is: true
... true and true
is: true
evaluating logical: 1<2 and 1<2 and 1<2
  evaluating comparison: 1<2
    evaluating math: 1
    is: 1
    evaluating math: 2
    is: 2
  ... 1 < 2
  is: true
  evaluating comparison: 1<2
    evaluating math: 1
    is: 1
    evaluating math: 2
    is: 2
  ... 1 < 2
  is: true
... true and true
  evaluating comparison: 1<2
    evaluating math: 1
    is: 1
    evaluating math: 2
    is: 2
  ... 1 < 2
  is: true
... true and true
is: true
evaluating logical: true and true and true
  evaluating comparison: true
  is: true
  evaluating comparison: true
  is: true
... true and true
  evaluating comparison: true
  is: true
... true and true
is: true
evaluating logical: 1+1==2 or 1+1==2
  evaluating comparison: 1+1==2
    evaluating math: 1+1
    is: 2.0
    evaluating math: 2
    is: 2
  ... 2.0 == 2
  is: true
  evaluating comparison: 1+1==2
    evaluating math: 1+1
    is: 2.0
    evaluating math: 2
    is: 2
  ... 2.0 == 2
  is: true
... true or true
is: true
evaluating logical: 1+1==2 or 1<2 and 1<2
  evaluating comparison: 1+1==2
    evaluating math: 1+1
    is: 2.0
    evaluating math: 2
    is: 2
  ... 2.0 == 2
  is: true
  evaluating comparison: 1<2
    evaluating math: 1
    is: 1
    evaluating math: 2
    is: 2
  ... 1 < 2
  is: true
... true or true
  evaluating comparison: 1<2
    evaluating math: 1
    is: 1
    evaluating math: 2
    is: 2
  ... 1 < 2
  is: true
... true and true
is: true
evaluating logical: 1<2 or 1<2 or 1+1==2
  evaluating comparison: 1<2
    evaluating math: 1
    is: 1
    evaluating math: 2
    is: 2
  ... 1 < 2
  is: true
  evaluating comparison: 1<2
    evaluating math: 1
    is: 1
    evaluating math: 2
    is: 2
  ... 1 < 2
  is: true
... true or true
  evaluating comparison: 1+1==2
    evaluating math: 1+1
    is: 2.0
    evaluating math: 2
    is: 2
  ... 2.0 == 2
  is: true
... true or true
is: true
evaluating logical: 1<2 or 1<2 or 1<2
  evaluating comparison: 1<2
    evaluating math: 1
    is: 1
    evaluating math: 2
    is: 2
  ... 1 < 2
  is: true
  evaluating comparison: 1<2
    evaluating math: 1
    is: 1
    evaluating math: 2
    is: 2
  ... 1 < 2
  is: true
... true or true
  evaluating comparison: 1<2
    evaluating math: 1
    is: 1
    evaluating math: 2
    is: 2
  ... 1 < 2
  is: true
... true or true
is: true
evaluating logical: true or true or true
  evaluating comparison: true
  is: true
  evaluating comparison: true
  is: true
... true or true
  evaluating comparison: true
  is: true
... true or true
is: true
evaluating logical: 1+1==2 imp 1+1==2
  evaluating comparison: 1+1==2
    evaluating math: 1+1
    is: 2.0
    evaluating math: 2
    is: 2
  ... 2.0 == 2
  is: true
  evaluating comparison: 1+1==2
    evaluating math: 1+1
    is: 2.0
    evaluating math: 2
    is: 2
  ... 2.0 == 2
  is: true
... true imp true
evaluating logical: 1+1==2 imp 1<2 imp 1<2
  evaluating comparison: 1+1==2
    evaluating math: 1+1
    is: 2.0
    evaluating math: 2
    is: 2
  ... 2.0 == 2
  is: true
  evaluating comparison: 1<2
    evaluating math: 1
    is: 1
    evaluating math: 2
    is: 2
  ... 1 < 2
  is: true
... true imp true
evaluating logical: 1<2 imp 1<2 imp 1+1==2
  evaluating comparison: 1<2
    evaluating math: 1
    is: 1
    evaluating math: 2
    is: 2
  ... 1 < 2
  is: true
  evaluating comparison: 1<2
    evaluating math: 1
    is: 1
    evaluating math: 2
    is: 2
  ... 1 < 2
  is: true
... true imp true
evaluating logical: 1<2 imp 1<2 imp 1<2
  evaluating comparison: 1<2
    evaluating math: 1
    is: 1
    evaluating math: 2
    is: 2
  ... 1 < 2
  is: true
  evaluating comparison: 1<2
    evaluating math: 1
    is: 1
    evaluating math: 2
    is: 2
  ... 1 < 2
  is: true
... true imp true
evaluating logical: true imp true imp true
  evaluating comparison: true
  is: true
  evaluating comparison: true
  is: true
... true imp true
evaluating logical: 1+1==2 eq 1+1==2
  evaluating comparison: 1+1==2
    evaluating math: 1+1
    is: 2.0
    evaluating math: 2
    is: 2
  ... 2.0 == 2
  is: true
  evaluating comparison: 1+1==2
    evaluating math: 1+1
    is: 2.0
    evaluating math: 2
    is: 2
  ... 2.0 == 2
  is: true
... true eq true
is: true
evaluating logical: 1+1==2 eq 1<2 and 1<2
  evaluating comparison: 1+1==2
    evaluating math: 1+1
    is: 2.0
    evaluating math: 2
    is: 2
  ... 2.0 == 2
  is: true
  evaluating comparison: 1<2
    evaluating math: 1
    is: 1
    evaluating math: 2
    is: 2
  ... 1 < 2
  is: true
... true eq true
  evaluating comparison: 1<2
    evaluating math: 1
    is: 1
    evaluating math: 2
    is: 2
  ... 1 < 2
  is: true
... true and true
is: true
evaluating logical: 1<2 eq 1<2 eq 1+1==2
  evaluating comparison: 1<2
    evaluating math: 1
    is: 1
    evaluating math: 2
    is: 2
  ... 1 < 2
  is: true
  evaluating comparison: 1<2
    evaluating math: 1
    is: 1
    evaluating math: 2
    is: 2
  ... 1 < 2
  is: true
... true eq true
  evaluating comparison: 1+1==2
    evaluating math: 1+1
    is: 2.0
    evaluating math: 2
    is: 2
  ... 2.0 == 2
  is: true
... true eq true
is: true
evaluating logical: 1<2 eq 1<2 eq 1<2
  evaluating comparison: 1<2
    evaluating math: 1
    is: 1
    evaluating math: 2
    is: 2
  ... 1 < 2
  is: true
  evaluating comparison: 1<2
    evaluating math: 1
    is: 1
    evaluating math: 2
    is: 2
  ... 1 < 2
  is: true
... true eq true
  evaluating comparison: 1<2
    evaluating math: 1
    is: 1
    evaluating math: 2
    is: 2
  ... 1 < 2
  is: true
... true eq true
is: true
evaluating logical: true eq true eq true
  evaluating comparison: true
  is: true
  evaluating comparison: true
  is: true
... true eq true
  evaluating comparison: true
  is: true
... true eq true
is: true
evaluating logical: 1+1==2 imp 1+1==2
  evaluating comparison: 1+1==2
    evaluating math: 1+1
    is: 2.0
    evaluating math: 2
    is: 2
  ... 2.0 == 2
  is: true
  evaluating comparison: 1+1==2
    evaluating math: 1+1
    is: 2.0
    evaluating math: 2
    is: 2
  ... 2.0 == 2
  is: true
... true imp true
evaluating logical: 1+1==2 imp 1<2 and 1<2
  evaluating comparison: 1+1==2
    evaluating math: 1+1
    is: 2.0
    evaluating math: 2
    is: 2
  ... 2.0 == 2
  is: true
  evaluating comparison: 1<2
    evaluating math: 1
    is: 1
    evaluating math: 2
    is: 2
  ... 1 < 2
  is: true
... true imp true
evaluating logical: 1<2 imp 1<2 imp 1+1==2
  evaluating comparison: 1<2
    evaluating math: 1
    is: 1
    evaluating math: 2
    is: 2
  ... 1 < 2
  is: true
  evaluating comparison: 1<2
    evaluating math: 1
    is: 1
    evaluating math: 2
    is: 2
  ... 1 < 2
  is: true
... true imp true
evaluating logical: 1<2 imp 1<2 imp 1<2
  evaluating comparison: 1<2
    evaluating math: 1
    is: 1
    evaluating math: 2
    is: 2
  ... 1 < 2
  is: true
  evaluating comparison: 1<2
    evaluating math: 1
    is: 1
    evaluating math: 2
    is: 2
  ... 1 < 2
  is: true
... true imp true
evaluating logical: true imp true imp true
  evaluating comparison: true
  is: true
  evaluating comparison: true
  is: true
... true imp true
evaluating logical: true and true or true
  evaluating comparison: true
  is: true
  evaluating comparison: true
  is: true
... true and true
  evaluating comparison: true
  is: true
... true or true
is: true
evaluating logical: true or true and true
  evaluating comparison: true
  is: true
  evaluating comparison: true
  is: true
... true or true
  evaluating comparison: true
  is: true
... true and true
is: true
evaluating logical: true imp true eq true
  evaluating comparison: true
  is: true
  evaluating comparison: true
  is: true
... true imp true
brackets: false impl  false  impl  false
    evaluating logical: false impl  false  impl  false
      evaluating comparison: false
      is: false
      evaluating comparison: false
      is: false
    ... false impl false
true
brackets: false xor  false  xor  false
    evaluating logical: false xor  false  xor  false
      evaluating comparison: false
      is: false
      evaluating comparison: false
      is: false
    ... false xor false
      evaluating comparison: false
      is: false
    ... false xor false
    is: false
false
brackets: 1<2 impl  1<2  impl  1<2
    evaluating logical: 1<2 impl  1<2  impl  1<2
      evaluating comparison: 1<2
        evaluating math: 1
        is: 1
        evaluating math: 2
        is: 2
      ... 1 < 2
      is: true
      evaluating comparison: 1<2
        evaluating math: 1
        is: 1
        evaluating math: 2
        is: 2
      ... 1 < 2
      is: true
    ... true impl true
true
brackets: 1<2 xor  1<2  xor  1<2
    evaluating logical: 1<2 xor  1<2  xor  1<2
      evaluating comparison: 1<2
        evaluating math: 1
        is: 1
        evaluating math: 2
        is: 2
      ... 1 < 2
      is: true
      evaluating comparison: 1<2
        evaluating math: 1
        is: 1
        evaluating math: 2
        is: 2
      ... 1 < 2
      is: true
    ... true xor true
      evaluating comparison: 1<2
        evaluating math: 1
        is: 1
        evaluating math: 2
        is: 2
      ... 1 < 2
      is: true
    ... false xor true
    is: true
true
brackets: 1+1<2 impl  1+1<2  impl  1+1<2
    evaluating logical: 1+1<2 impl  1+1<2  impl  1+1<2
      evaluating comparison: 1+1<2
        evaluating math: 1+1
        is: 2.0
        evaluating math: 2
        is: 2
      ... 2.0 < 2
      is: false
      evaluating comparison: 1+1<2
        evaluating math: 1+1
        is: 2.0
        evaluating math: 2
        is: 2
      ... 2.0 < 2
      is: false
    ... false impl false
true
brackets: 1+1<2 xor  1+1<2  xor  1+1<2
    evaluating logical: 1+1<2 xor  1+1<2  xor  1+1<2
      evaluating comparison: 1+1<2
        evaluating math: 1+1
        is: 2.0
        evaluating math: 2
        is: 2
      ... 2.0 < 2
      is: false
      evaluating comparison: 1+1<2
        evaluating math: 1+1
        is: 2.0
        evaluating math: 2
        is: 2
      ... 2.0 < 2
      is: false
    ... false xor false
      evaluating comparison: 1+1<2
        evaluating math: 1+1
        is: 2.0
        evaluating math: 2
        is: 2
      ... 2.0 < 2
      is: false
    ... false xor false
    is: false
false
evaluating logical: true and true
  evaluating comparison: true
  is: true
  evaluating comparison: true
  is: true
... true and true
is: true
evaluating logical: false and true
  evaluating comparison: false
  is: false
  evaluating comparison: true
  is: true
... false and true
is: false
evaluating logical: false and false
  evaluating comparison: false
  is: false
  evaluating comparison: false
  is: false
... false and false
is: false
evaluating logical: true and false
  evaluating comparison: true
  is: true
  evaluating comparison: false
  is: false
... true and false
is: false
evaluating logical: true & true
  evaluating comparison: true
  is: true
  evaluating comparison: true
  is: true
... true & true
is: true
evaluating logical: false && true
  evaluating comparison: false
  is: false
  evaluating comparison: true
  is: true
... false & true
is: false
evaluating logical: false &&& false
  evaluating comparison: false
  is: false
  evaluating comparison: false
  is: false
... false & false
is: false
evaluating logical: true &&&& false
  evaluating comparison: true
  is: true
  evaluating comparison: false
  is: false
... true & false
is: false
brackets: false or  false  impl  false
    evaluating logical: false or  false  impl  false
      evaluating comparison: false
      is: false
      evaluating comparison: false
      is: false
    ... false or false
      evaluating comparison: false
      is: false
    ... false impl false
true
brackets: 1<2 or  1<2 impl  1<2
    evaluating logical: 1<2 or  1<2 impl  1<2
      evaluating comparison: 1<2
        evaluating math: 1
        is: 1
        evaluating math: 2
        is: 2
      ... 1 < 2
      is: true
      evaluating comparison: 1<2
        evaluating math: 1
        is: 1
        evaluating math: 2
        is: 2
      ... 1 < 2
      is: true
    ... true or true
      evaluating comparison: 1<2
        evaluating math: 1
        is: 1
        evaluating math: 2
        is: 2
      ... 1 < 2
      is: true
    ... true impl true
true
brackets: 1+1<2 or  1+1<2 impl  1+1<2
    evaluating logical: 1+1<2 or  1+1<2 impl  1+1<2
      evaluating comparison: 1+1<2
        evaluating math: 1+1
        is: 2.0
        evaluating math: 2
        is: 2
      ... 2.0 < 2
      is: false
      evaluating comparison: 1+1<2
        evaluating math: 1+1
        is: 2.0
        evaluating math: 2
        is: 2
      ... 2.0 < 2
      is: false
    ... false or false
      evaluating comparison: 1+1<2
        evaluating math: 1+1
        is: 2.0
        evaluating math: 2
        is: 2
      ... 2.0 < 2
      is: false
    ... false impl false
true
brackets: false imp  false  or  false
    evaluating logical: false imp  false  or  false
      evaluating comparison: false
      is: false
      evaluating comparison: false
      is: false
    ... false imp false
true
brackets: 1<2 imp  1<2 or  1<2
    evaluating logical: 1<2 imp  1<2 or  1<2
      evaluating comparison: 1<2
        evaluating math: 1
        is: 1
        evaluating math: 2
        is: 2
      ... 1 < 2
      is: true
      evaluating comparison: 1<2
        evaluating math: 1
        is: 1
        evaluating math: 2
        is: 2
      ... 1 < 2
      is: true
    ... true imp true
true
brackets: 1+1<2 imp  1+1<2 or  1+1<2
    evaluating logical: 1+1<2 imp  1+1<2 or  1+1<2
      evaluating comparison: 1+1<2
        evaluating math: 1+1
        is: 2.0
        evaluating math: 2
        is: 2
      ... 2.0 < 2
      is: false
      evaluating comparison: 1+1<2
        evaluating math: 1+1
        is: 2.0
        evaluating math: 2
        is: 2
      ... 2.0 < 2
      is: false
    ... false imp false
true
brackets: false impl  false  or  false
    evaluating logical: false impl  false  or  false
      evaluating comparison: false
      is: false
      evaluating comparison: false
      is: false
    ... false impl false
true
brackets: 1<2 impl  1<2 or  1<2
    evaluating logical: 1<2 impl  1<2 or  1<2
      evaluating comparison: 1<2
        evaluating math: 1
        is: 1
        evaluating math: 2
        is: 2
      ... 1 < 2
      is: true
      evaluating comparison: 1<2
        evaluating math: 1
        is: 1
        evaluating math: 2
        is: 2
      ... 1 < 2
      is: true
    ... true impl true
true
brackets: 1+1<2 impl  1+1<2 or  1+1<2
    evaluating logical: 1+1<2 impl  1+1<2 or  1+1<2
      evaluating comparison: 1+1<2
        evaluating math: 1+1
        is: 2.0
        evaluating math: 2
        is: 2
      ... 2.0 < 2
      is: false
      evaluating comparison: 1+1<2
        evaluating math: 1+1
        is: 2.0
        evaluating math: 2
        is: 2
      ... 2.0 < 2
      is: false
    ... false impl false
true
brackets: 1+1 < (2+0)*1 imp  false  eq  false
    evaluating logical: 1+1 < (2+0)*1 imp  false  eq  false
      evaluating comparison: 1+1 < (2+0)*1
        evaluating math: 1+1
        is: 2.0
        evaluating math: (2+0)*1
        is: 2.0
      ... 2.0 < 2.0
      is: false
      evaluating comparison: false
      is: false
    ... false imp false
true
brackets: 1+1 < (2+0)*1 impl  false  eq  false
    evaluating logical: 1+1 < (2+0)*1 impl  false  eq  false
      evaluating comparison: 1+1 < (2+0)*1
        evaluating math: 1+1
        is: 2.0
        evaluating math: (2+0)*1
        is: 2.0
      ... 2.0 < 2.0
      is: false
      evaluating comparison: false
      is: false
    ... false impl false
true
evaluating logical: true imp true
  evaluating comparison: true
  is: true
  evaluating comparison: true
  is: true
... true imp true
evaluating logical: false imp true
  evaluating comparison: false
  is: false
  evaluating comparison: true
  is: true
... false imp true
evaluating logical: false imp false
  evaluating comparison: false
  is: false
  evaluating comparison: false
  is: false
... false imp false
evaluating logical: true imp false
  evaluating comparison: true
  is: true
  evaluating comparison: false
  is: false
... true imp false
evaluating logical: true impl true
  evaluating comparison: true
  is: true
  evaluating comparison: true
  is: true
... true impl true
evaluating logical: false impl true
  evaluating comparison: false
  is: false
  evaluating comparison: true
  is: true
... false impl true
evaluating logical: false impl false
  evaluating comparison: false
  is: false
  evaluating comparison: false
  is: false
... false impl false
evaluating logical: true impl false
  evaluating comparison: true
  is: true
  evaluating comparison: false
  is: false
... true impl false
evaluating logical: 0 == 0  eq 0 == 0
  evaluating comparison: 0 == 0
    evaluating math: 0
    is: 0
    evaluating math: 0
    is: 0
  ... 0 == 0
  is: true
  evaluating comparison: 0 == 0
    evaluating math: 0
    is: 0
    evaluating math: 0
    is: 0
  ... 0 == 0
  is: true
... true eq true
is: true
evaluating logical: 0 != 0 eq 0 == 0
  evaluating comparison: 0 != 0
    evaluating math: 0
    is: 0
    evaluating math: 0
    is: 0
  ... 0 != 0
  is: false
  evaluating comparison: 0 == 0
    evaluating math: 0
    is: 0
    evaluating math: 0
    is: 0
  ... 0 == 0
  is: true
... false eq true
is: false
evaluating logical: 0 != 0  eq 0 != 0 
  evaluating comparison: 0 != 0
    evaluating math: 0
    is: 0
    evaluating math: 0
    is: 0
  ... 0 != 0
  is: false
  evaluating comparison: 0 != 0 
    evaluating math: 0
    is: 0
    evaluating math: 0 
    is: 0
  ... 0 != 0
  is: false
... false eq false
is: true
evaluating logical: 0 == 0  eq 0 != 0 
  evaluating comparison: 0 == 0
    evaluating math: 0
    is: 0
    evaluating math: 0
    is: 0
  ... 0 == 0
  is: true
  evaluating comparison: 0 != 0 
    evaluating math: 0
    is: 0
    evaluating math: 0 
    is: 0
  ... 0 != 0
  is: false
... true eq false
is: false
evaluating logical: 0 -eq 0 eq 0 -eq 0
  evaluating comparison: 0 -eq 0
evaluating logical: 0 -neq 0 eq 0 -eq 0
  evaluating comparison: 0 -neq 0
evaluating logical: 0 neq 0  eq 0 neq 0 
  evaluating comparison: 0 neq 0
evaluating logical: 0 eq 0  eq 0 neq 0 
  evaluating comparison: 0
evaluating logical: 1+2+3 >= 7
  evaluating comparison: 1+2+3 >= 7
    evaluating math: 1+2+3
    is: 6.0
    evaluating math: 7
    is: 7
  ... 6.0 >= 7
  is: false
is: false
evaluating logical: 1+2+3 >= 5
  evaluating comparison: 1+2+3 >= 5
    evaluating math: 1+2+3
    is: 6.0
    evaluating math: 5
    is: 5
  ... 6.0 >= 5
  is: true
is: true
evaluating logical: 1+2+3 >= 7 | 1+2+3 >= 5
  evaluating comparison: 1+2+3 >= 7
    evaluating math: 1+2+3
    is: 6.0
    evaluating math: 7
    is: 7
  ... 6.0 >= 7
  is: false
  evaluating comparison: 1+2+3 >= 5
    evaluating math: 1+2+3
    is: 6.0
    evaluating math: 5
    is: 5
  ... 6.0 >= 5
  is: true
... false | true
is: true
evaluating logical: 6 >= 7 & 6 >= 5
  evaluating comparison: 6 >= 7
    evaluating math: 6
    is: 6
    evaluating math: 7
    is: 7
  ... 6 >= 7
  is: false
  evaluating comparison: 6 >= 5
    evaluating math: 6
    is: 6
    evaluating math: 5
    is: 5
  ... 6 >= 5
  is: true
... false & true
is: false
brackets:  floor(4.5) == 4 and ceil(4.5) == 5 
    evaluating logical:  floor(4.5) == 4 and ceil(4.5) == 5 
      evaluating comparison:  floor(4.5) == 4
        evaluating math:  floor(4.5)
        is: 4
        evaluating math: 4
        is: 4
      ... 4 == 4
      is: true
      evaluating comparison: ceil(4.5) == 5 
        evaluating math: ceil(4.5)
        is: 5
        evaluating math: 5 
        is: 5
      ... 5 == 5
      is: true
    ... true and true
    is: true
true
brackets:  floor(4.5) != 4 or ceil(4.5) != 5 
    evaluating logical:  floor(4.5) != 4 or ceil(4.5) != 5 
      evaluating comparison:  floor(4.5) != 4
        evaluating math:  floor(4.5)
        is: 4
        evaluating math: 4
        is: 4
      ... 4 != 4
      is: false
      evaluating comparison: ceil(4.5) != 5 
        evaluating math: ceil(4.5)
        is: 5
        evaluating math: 5 
        is: 5
      ... 5 != 5
      is: false
    ... false or false
    is: false
false
evaluating logical: true xor true
  evaluating comparison: true
  is: true
  evaluating comparison: true
  is: true
... true xor true
is: false
evaluating logical: false xor true
  evaluating comparison: false
  is: false
  evaluating comparison: true
  is: true
... false xor true
is: true
evaluating logical: false xor false
  evaluating comparison: false
  is: false
  evaluating comparison: false
  is: false
... false xor false
is: false
evaluating logical: true xor false
  evaluating comparison: true
  is: true
  evaluating comparison: false
  is: false
... true xor false
is: true
[INFO] Tests run: 18, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 44.361 s - in parser.logical.LogicalExpressionParserTest
[INFO] Running parser.logical.ComparingExpressionParserTest
evaluating comparison: 1+2+3 < 2*2
  evaluating math: 1+2+3
  is: 6.0
  evaluating math: 2*2
  is: 4.0
... 6.0 < 4.0
is: false
evaluating comparison: 1+2+3 > 2*2
  evaluating math: 1+2+3
  is: 6.0
  evaluating math: 2*2
  is: 4.0
... 6.0 > 4.0
is: true
evaluating comparison: 1+2 <= 3*2
  evaluating math: 1+2
  is: 3.0
  evaluating math: 3*2
  is: 6.0
... 3.0 <= 6.0
is: true
evaluating comparison: 1+2+3 <= 3*2
  evaluating math: 1+2+3
  is: 6.0
  evaluating math: 3*2
  is: 6.0
... 6.0 <= 6.0
is: true
evaluating comparison: 30 <= 3*2
  evaluating math: 30
  is: 30
  evaluating math: 3*2
  is: 6.0
... 30 <= 6.0
is: false
evaluating comparison: 1+2+3 == 3*2
  evaluating math: 1+2+3
  is: 6.0
  evaluating math: 3*2
  is: 6.0
... 6.0 == 6.0
is: true
evaluating comparison: 1+2+3 == 3*2+1
  evaluating math: 1+2+3
  is: 6.0
  evaluating math: 3*2+1
  is: 7.0
... 6.0 == 7.0
is: false
evaluating comparison: 1+2+3 != 3*2+1
  evaluating math: 1+2+3
  is: 6.0
  evaluating math: 3*2+1
  is: 7.0
... 6.0 != 7.0
is: true
evaluating comparison: 10 >= 6
  evaluating math: 10
  is: 10
  evaluating math: 6
  is: 6
... 10 >= 6
is: true
evaluating comparison: 1+2+3 >= 6
  evaluating math: 1+2+3
  is: 6.0
  evaluating math: 6
  is: 6
... 6.0 >= 6
is: true
evaluating comparison: 1+2+3 >= 7
  evaluating math: 1+2+3
  is: 6.0
  evaluating math: 7
  is: 7
... 6.0 >= 7
is: false
evaluating comparison:   true
is: true
evaluating comparison: false  
is: false
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.746 s - in parser.logical.ComparingExpressionParserTest
[INFO] Running parser.logical.AlgebraExpressionParserTest
evaluating math: 0
is: 0
evaluating math: 2+3
is: 5.0
evaluating math: 2+3*4
is: 14.0
evaluating math: (2+3)*4
is: 20.0
evaluating math: cos(pi)
is: -1.0
evaluating math: sum(1,2,3,4)
is: 10
evaluating math: med(0,5,4)
is: 4.0
evaluating math: avg(0,5,4)
is: 3
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.074 s - in parser.logical.AlgebraExpressionParserTest
[INFO] Running parser.logical.LogicalExpressionFactoryTest
brackets: [ 0<1 and -1<2 ] or [ 0<1 and -1<2 ] 
    evaluating logical:  0<1 and -1<2 
      evaluating comparison:  0<1
        evaluating math:  0
        is: 0
        evaluating math: 1
        is: 1
      ... 0 < 1
      is: true
      evaluating comparison: -1<2 
        evaluating math: -1
        is: -1.0
        evaluating math: 2 
        is: 2
      ... -1.0 < 2
      is: true
    ... true and true
    is: true
to:  true  or [ 0<1 and -1<2 ] 
    evaluating logical:  0<1 and -1<2 
      evaluating comparison:  0<1
        evaluating math:  0
        is: 0
        evaluating math: 1
        is: 1
      ... 0 < 1
      is: true
      evaluating comparison: -1<2 
        evaluating math: -1
        is: -1.0
        evaluating math: 2 
        is: 2
      ... -1.0 < 2
      is: true
    ... true and true
    is: true
to:  true  or  true  
    evaluating logical:  true  or  true  
      evaluating comparison:  true
      is: true
      evaluating comparison: true  
      is: true
    ... true or true
    is: true
true
brackets: [ 0>1 and -1<2] or [0>1 and -1<2]
    evaluating logical:  0>1 and -1<2
      evaluating comparison:  0>1
        evaluating math:  0
        is: 0
        evaluating math: 1
        is: 1
      ... 0 > 1
      is: false
      evaluating comparison: -1<2
        evaluating math: -1
        is: -1.0
        evaluating math: 2
        is: 2
      ... -1.0 < 2
      is: true
    ... false and true
    is: false
to:  false  or [0>1 and -1<2]
    evaluating logical: 0>1 and -1<2
      evaluating comparison: 0>1
        evaluating math: 0
        is: 0
        evaluating math: 1
        is: 1
      ... 0 > 1
      is: false
      evaluating comparison: -1<2
        evaluating math: -1
        is: -1.0
        evaluating math: 2
        is: 2
      ... -1.0 < 2
      is: true
    ... false and true
    is: false
to:  false  or  false 
    evaluating logical:  false  or  false 
      evaluating comparison:  false
      is: false
      evaluating comparison: false 
      is: false
    ... false or false
    is: false
false
brackets: [ 0>1 and -1<2] or [0>1 and -1<2]
    evaluating logical:  0>1 and -1<2
      fake exposition
      fake exposition
    ... true and true
    is: true
to:  true  or [0>1 and -1<2]
    evaluating logical: 0>1 and -1<2
      fake exposition
      fake exposition
    ... true and true
    is: true
to:  true  or  true 
    evaluating logical:  true  or  true 
      fake exposition
      fake exposition
    ... true or true
    is: true
true
brackets: [ 0<1 and -1<2 ] or [ 0<1 and -1<2 ] 
    evaluating logical:  0<1 and -1<2 
      evaluating comparison:  0<1
        evaluating math:  0
        is: 0
        evaluating math: 1
        is: 1
      ... 0 < 1
      is: true
      evaluating comparison: -1<2 
        evaluating math: -1
        is: -1.0
        evaluating math: 2 
        is: 2
      ... -1.0 < 2
      is: true
    ... true and true
    is: true
to:  true  or [ 0<1 and -1<2 ] 
    evaluating logical:  0<1 and -1<2 
      evaluating comparison:  0<1
        evaluating math:  0
        is: 0
        evaluating math: 1
        is: 1
      ... 0 < 1
      is: true
      evaluating comparison: -1<2 
        evaluating math: -1
        is: -1.0
        evaluating math: 2 
        is: 2
      ... -1.0 < 2
      is: true
    ... true and true
    is: true
to:  true  or  true  
    evaluating logical:  true  or  true  
      evaluating comparison:  true
      is: true
      evaluating comparison: true  
      is: true
    ... true or true
    is: true
true
brackets: [ 0>1 and -1<2] or [0>1 and -1<2]
    evaluating logical:  0>1 and -1<2
      evaluating comparison:  0>1
        evaluating math:  0
        is: 0
        evaluating math: 1
        is: 1
      ... 0 > 1
      is: false
      evaluating comparison: -1<2
        evaluating math: -1
        is: -1.0
        evaluating math: 2
        is: 2
      ... -1.0 < 2
      is: true
    ... false and true
    is: false
to:  false  or [0>1 and -1<2]
    evaluating logical: 0>1 and -1<2
      evaluating comparison: 0>1
        evaluating math: 0
        is: 0
        evaluating math: 1
        is: 1
      ... 0 > 1
      is: false
      evaluating comparison: -1<2
        evaluating math: -1
        is: -1.0
        evaluating math: 2
        is: 2
      ... -1.0 < 2
      is: true
    ... false and true
    is: false
to:  false  or  false 
    evaluating logical:  false  or  false 
      evaluating comparison:  false
      is: false
      evaluating comparison: false 
      is: false
    ... false or false
    is: false
false
evaluating logical: 0<1 and -1<2
  evaluating comparison: 0<1
    evaluating math: 0
    is: 0
    evaluating math: 1
    is: 1
  ... 0 < 1
  is: true
  evaluating comparison: -1<2
    evaluating math: -1
    is: -1.0
    evaluating math: 2
    is: 2
  ... -1.0 < 2
  is: true
... true and true
is: true
evaluating logical: 0>1 and -1<2
  evaluating comparison: 0>1
    evaluating math: 0
    is: 0
    evaluating math: 1
    is: 1
  ... 0 > 1
  is: false
  evaluating comparison: -1<2
    evaluating math: -1
    is: -1.0
    evaluating math: 2
    is: 2
  ... -1.0 < 2
  is: true
... false and true
is: false
evaluating logical: 0>1 and -1<2
  fake exposition
  fake exposition
... true and true
is: true
evaluating logical: true and true
  evaluating comparison: true
  is: true
  evaluating comparison: true
  is: true
... true and true
is: true
evaluating logical: false and true
  evaluating comparison: false
  is: false
  evaluating comparison: true
  is: true
... false and true
is: false
brackets: [ 0<1 and -1<2 ] or [ 0<1 and -1<2 ] 
    evaluating logical:  0<1 and -1<2 
      evaluating comparison:  0<1
        evaluating math:  0
        is: 0
        evaluating math: 1
        is: 1
      ... 0 < 1
      is: true
      evaluating comparison: -1<2 
        evaluating math: -1
        is: -1.0
        evaluating math: 2 
        is: 2
      ... -1.0 < 2
      is: true
    ... true and true
    is: true
to:  true  or [ 0<1 and -1<2 ] 
    evaluating logical:  0<1 and -1<2 
      evaluating comparison:  0<1
        evaluating math:  0
        is: 0
        evaluating math: 1
        is: 1
      ... 0 < 1
      is: true
      evaluating comparison: -1<2 
        evaluating math: -1
        is: -1.0
        evaluating math: 2 
        is: 2
      ... -1.0 < 2
      is: true
    ... true and true
    is: true
to:  true  or  true  
    evaluating logical:  true  or  true  
      evaluating comparison:  true
      is: true
      evaluating comparison: true  
      is: true
    ... true or true
    is: true
true
brackets: [ 0>1 and -1<2] or [0>1 and -1<2]
    evaluating logical:  0>1 and -1<2
      evaluating comparison:  0>1
        evaluating math:  0
        is: 0
        evaluating math: 1
        is: 1
      ... 0 > 1
      is: false
      evaluating comparison: -1<2
        evaluating math: -1
        is: -1.0
        evaluating math: 2
        is: 2
      ... -1.0 < 2
      is: true
    ... false and true
    is: false
to:  false  or [0>1 and -1<2]
    evaluating logical: 0>1 and -1<2
      evaluating comparison: 0>1
        evaluating math: 0
        is: 0
        evaluating math: 1
        is: 1
      ... 0 > 1
      is: false
      evaluating comparison: -1<2
        evaluating math: -1
        is: -1.0
        evaluating math: 2
        is: 2
      ... -1.0 < 2
      is: true
    ... false and true
    is: false
to:  false  or  false 
    evaluating logical:  false  or  false 
      evaluating comparison:  false
      is: false
      evaluating comparison: false 
      is: false
    ... false or false
    is: false
false
brackets: [ 0>1 and -1<2] or [0>1 and -1<2]
    evaluating logical:  0>1 and -1<2
      evaluating hogwarts members
brackets: [ harry() and ron()] or [ron() and tom()]
    evaluating logical:  harry() and ron()
      evaluating hogwarts members
      evaluating hogwarts members
    ... true and true
    is: true
to:  true  or [ron() and tom()]
    evaluating logical: ron() and tom()
      evaluating hogwarts members
      evaluating hogwarts members
    ... true and false
    is: false
to:  true  or  false 
    evaluating logical:  true  or  false 
      evaluating hogwarts members
      evaluating hogwarts members
    ... true or false
    is: true
true
brackets: [ 0<1 and -1<2 ] or [ 0<1 and -1<2 ] 
    evaluating logical:  0<1 and -1<2 
      evaluating comparison:  0<1
        evaluating math:  0
        is: 0
        evaluating math: 1
        is: 1
      ... 0 < 1
      is: true
      evaluating comparison: -1<2 
        evaluating math: -1
        is: -1.0
        evaluating math: 2 
        is: 2
      ... -1.0 < 2
      is: true
    ... true and true
    is: true
to:  true  or [ 0<1 and -1<2 ] 
    evaluating logical:  0<1 and -1<2 
      evaluating comparison:  0<1
        evaluating math:  0
        is: 0
        evaluating math: 1
        is: 1
      ... 0 < 1
      is: true
      evaluating comparison: -1<2 
        evaluating math: -1
        is: -1.0
        evaluating math: 2 
        is: 2
      ... -1.0 < 2
      is: true
    ... true and true
    is: true
to:  true  or  true  
    evaluating logical:  true  or  true  
      evaluating comparison:  true
      is: true
      evaluating comparison: true  
      is: true
    ... true or true
    is: true
true
brackets: [ 0>1 and -1<2] or [0>1 and -1<2]
    evaluating logical:  0>1 and -1<2
      evaluating comparison:  0>1
        evaluating math:  0
        is: 0
        evaluating math: 1
        is: 1
      ... 0 > 1
      is: false
      evaluating comparison: -1<2
        evaluating math: -1
        is: -1.0
        evaluating math: 2
        is: 2
      ... -1.0 < 2
      is: true
    ... false and true
    is: false
to:  false  or [0>1 and -1<2]
    evaluating logical: 0>1 and -1<2
      evaluating comparison: 0>1
        evaluating math: 0
        is: 0
        evaluating math: 1
        is: 1
      ... 0 > 1
      is: false
      evaluating comparison: -1<2
        evaluating math: -1
        is: -1.0
        evaluating math: 2
        is: 2
      ... -1.0 < 2
      is: true
    ... false and true
    is: false
to:  false  or  false 
    evaluating logical:  false  or  false 
      evaluating comparison:  false
      is: false
      evaluating comparison: false 
      is: false
    ... false or false
    is: false
false
evaluating logical: 0<1 and -1<2
  evaluating comparison: 0<1
    evaluating math: 0
    is: 0
    evaluating math: 1
    is: 1
  ... 0 < 1
  is: true
  evaluating comparison: -1<2
    evaluating math: -1
    is: -1.0
    evaluating math: 2
    is: 2
  ... -1.0 < 2
  is: true
... true and true
is: true
evaluating logical: 0>1 and -1<2
  evaluating comparison: 0>1
    evaluating math: 0
    is: 0
    evaluating math: 1
    is: 1
  ... 0 > 1
  is: false
  evaluating comparison: -1<2
    evaluating math: -1
    is: -1.0
    evaluating math: 2
    is: 2
  ... -1.0 < 2
  is: true
... false and true
is: false
evaluating logical: 0>1 and -1<2
  evaluating hogwarts members
evaluating logical: harry() and ron()
  evaluating hogwarts members
  evaluating hogwarts members
... true and true
is: true
evaluating logical: tom() and ron()
  evaluating hogwarts members
  evaluating hogwarts members
... false and true
is: false
evaluating logical: true and true
  evaluating comparison: true
  is: true
  evaluating comparison: true
  is: true
... true and true
is: true
evaluating logical: false and true
  evaluating comparison: false
  is: false
  evaluating comparison: true
  is: true
... false and true
is: false
[INFO] Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 14.235 s - in parser.logical.LogicalExpressionFactoryTest
[INFO] Running parser.MathExpressionTest
Debug--4
DETECTED ERROR! IN [(, b1, *, (, 1, 2, 3, ), )]
DETECTED ERROR! IN [(, b2, *, (, 1, 2, 3, ), )]
DETECTED ERROR! IN [(, b1, *, (, 1, 2, 3, ), )]
DETECTED ERROR! IN [(, b2, *, (, 1, 2, 3, ), )]
[ERROR] Tests run: 9, Failures: 2, Errors: 0, Skipped: 0, Time elapsed: 85.502 s <<< FAILURE! - in parser.MathExpressionTest
[ERROR] parser.MathExpressionTest.junkExamples  Time elapsed: 8.495 s  <<< FAILURE!
org.opentest4j.AssertionFailedError: expected: <true> but was: <false>
	at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
	at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
	at org.junit.jupiter.api.AssertTrue.failNotTrue(AssertTrue.java:63)
	at org.junit.jupiter.api.AssertTrue.assertTrue(AssertTrue.java:36)
	at org.junit.jupiter.api.AssertTrue.assertTrue(AssertTrue.java:31)
	at org.junit.jupiter.api.Assertions.assertTrue(Assertions.java:179)
	at parser.MathExpressionTest.junkExamples(MathExpressionTest.java:326)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727)
	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:217)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:213)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:138)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:147)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:127)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:90)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:55)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:102)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:54)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
	at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
	at org.apache.maven.surefire.junitplatform.LazyLauncher.execute(LazyLauncher.java:56)
	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.execute(JUnitPlatformProvider.java:223)
	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(JUnitPlatformProvider.java:175)
	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:139)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:456)
	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:169)
	at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:595)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:581)
[ERROR] parser.MathExpressionTest.moreJunkExamples  Time elapsed: 61.852 s  <<< FAILURE!
org.opentest4j.AssertionFailedError: expected: <true> but was: <false>
	at org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
	at org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
	at org.junit.jupiter.api.AssertTrue.failNotTrue(AssertTrue.java:63)
	at org.junit.jupiter.api.AssertTrue.assertTrue(AssertTrue.java:36)
	at org.junit.jupiter.api.AssertTrue.assertTrue(AssertTrue.java:31)
	at org.junit.jupiter.api.Assertions.assertTrue(Assertions.java:179)
	at parser.MathExpressionTest.moreJunkExamples(MathExpressionTest.java:147)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727)
	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:217)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:213)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:138)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:147)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:127)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:90)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:55)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:102)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:54)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
	at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
	at org.apache.maven.surefire.junitplatform.LazyLauncher.execute(LazyLauncher.java:56)
	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.execute(JUnitPlatformProvider.java:223)
	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(JUnitPlatformProvider.java:175)
	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:139)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:456)
	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:169)
	at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:595)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:581)
[INFO] 
[INFO] Results:
[INFO] 
[ERROR] Failures: 
[ERROR]   MathExpressionTest.junkExamples:326 expected: <true> but was: <false>
[ERROR]   MathExpressionTest.moreJunkExamples:147 expected: <true> but was: <false>
[INFO] 
[ERROR] Tests run: 143, Failures: 2, Errors: 0, Skipped: 0
[INFO] 
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] Skipping ParserNG
[INFO] This project has been banned from the build due to previous failures.
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  22:33 min
[INFO] Finished at: 2023-07-09T01:07:52-04:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M6:test (default-test) on project parser-ng: There are test failures.
[ERROR] 
[ERROR] Please refer to /builddir/build/BUILD/parserng-0.1.9/target/surefire-reports for the individual test results.
[ERROR] Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
error: Bad exit status from /var/tmp/rpm-tmp.gJvfs6 (%build)
RPM build errors:
    Bad exit status from /var/tmp/rpm-tmp.gJvfs6 (%build)
Child return code was: 1
EXCEPTION: [Error('Command failed: \n # bash --login -c /usr/bin/rpmbuild -bb --noclean --target noarch --nodeps /builddir/build/SPECS/parserng.spec\n', 1)]
Traceback (most recent call last):
  File "/usr/lib/python3.11/site-packages/mockbuild/trace_decorator.py", line 93, in trace
    result = func(*args, **kw)
             ^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/mockbuild/util.py", line 598, in do_with_status
    raise exception.Error("Command failed: \n # %s\n%s" % (command, output), child.returncode)
mockbuild.exception.Error: Command failed: 
 # bash --login -c /usr/bin/rpmbuild -bb --noclean --target noarch --nodeps /builddir/build/SPECS/parserng.spec