Reviewers: jasvir,
Description: Fix Issue 985: http://code.google.com/p/google-caja/issues/detail?id=985 Adds a distinguished annotation for ParseTreeNode constructors to be invoked reflectively (e.g., when cloning a tree); adds tests for cloneability for the CSS and JS parse tree nodes; and makes a couple of minor changes to the CSS nodes (the original source of this bug) where their ctors were not allowing them to be successfully cloned. Please review this at http://codereview.appspot.com/88158 Affected files: M src/com/google/caja/parser/ParseTreeNode.java M src/com/google/caja/parser/ParseTreeNodeContainer.java M src/com/google/caja/parser/ParseTreeNodes.java M src/com/google/caja/parser/css/CssTree.java M src/com/google/caja/parser/js/AbstractExpression.java M src/com/google/caja/parser/js/AbstractStatement.java M src/com/google/caja/parser/js/ArrayConstructor.java M src/com/google/caja/parser/js/AssignOperation.java M src/com/google/caja/parser/js/Block.java M src/com/google/caja/parser/js/BooleanLiteral.java M src/com/google/caja/parser/js/BreakStmt.java M src/com/google/caja/parser/js/CajoledModule.java M src/com/google/caja/parser/js/CaseStmt.java M src/com/google/caja/parser/js/CatchStmt.java M src/com/google/caja/parser/js/Conditional.java M src/com/google/caja/parser/js/ContinueStmt.java M src/com/google/caja/parser/js/ControlOperation.java M src/com/google/caja/parser/js/DebuggerStmt.java M src/com/google/caja/parser/js/Declaration.java M src/com/google/caja/parser/js/DefaultCaseStmt.java M src/com/google/caja/parser/js/DoWhileLoop.java M src/com/google/caja/parser/js/ExpressionStmt.java M src/com/google/caja/parser/js/FinallyStmt.java M src/com/google/caja/parser/js/ForEachLoop.java M src/com/google/caja/parser/js/ForLoop.java M src/com/google/caja/parser/js/FormalParam.java M src/com/google/caja/parser/js/FunctionConstructor.java M src/com/google/caja/parser/js/FunctionDeclaration.java M src/com/google/caja/parser/js/Identifier.java M src/com/google/caja/parser/js/IntegerLiteral.java M src/com/google/caja/parser/js/LabeledStmtWrapper.java M src/com/google/caja/parser/js/Loop.java M src/com/google/caja/parser/js/MultiDeclaration.java M src/com/google/caja/parser/js/Noop.java M src/com/google/caja/parser/js/NullLiteral.java M src/com/google/caja/parser/js/ObjectConstructor.java M src/com/google/caja/parser/js/QuotedExpression.java M src/com/google/caja/parser/js/RealLiteral.java M src/com/google/caja/parser/js/Reference.java M src/com/google/caja/parser/js/RegexpLiteral.java M src/com/google/caja/parser/js/ReturnStmt.java M src/com/google/caja/parser/js/SimpleOperation.java M src/com/google/caja/parser/js/SpecialOperation.java M src/com/google/caja/parser/js/StringLiteral.java M src/com/google/caja/parser/js/SwitchStmt.java M src/com/google/caja/parser/js/ThrowStmt.java M src/com/google/caja/parser/js/TranslatedCode.java M src/com/google/caja/parser/js/TryStmt.java M src/com/google/caja/parser/js/UncajoledModule.java M src/com/google/caja/parser/js/UseSubset.java M src/com/google/caja/parser/js/UseSubsetDirective.java M src/com/google/caja/parser/js/WhileLoop.java M src/com/google/caja/parser/js/WithStmt.java M tests/com/google/caja/parser/css/CssParserTest.java M tests/com/google/caja/parser/js/ParserTest.java M tests/com/google/caja/util/CajaTestCase.java
