@Override
 public boolean enterPropertyNode(final PropertyNode propertyNode) {
   if (propertyNode.getKeyName().equals(ScriptObject.PROTO_PROPERTY_NAME)) {
     tagNeverOptimistic(propertyNode.getValue());
   }
   return super.enterPropertyNode(propertyNode);
 }
 @Override
 public boolean enterObjectNode(final ObjectNode objectNode) {
   final List<PropertyNode> propNodes = objectNode.getElements();
   final List<PropertyTreeImpl> propTrees = new ArrayList<>(propNodes.size());
   for (final PropertyNode propNode : propNodes) {
     propTrees.add(
         new PropertyTreeImpl(
             propNode,
             translateExpr(propNode.getKey()),
             translateExpr(propNode.getValue()),
             (FunctionExpressionTree) translateExpr(propNode.getGetter()),
             (FunctionExpressionTree) translateExpr(propNode.getSetter())));
   }
   curExpr = new ObjectLiteralTreeImpl(objectNode, propTrees);
   return false;
 }