Removes cast-check removal logic from compiler.

Cast-checking optimization is deprecated with the new replacement
via configurable preconditions:
https://gwt-review.googlesource.com/#/c/10933/

With this patch also the related flag is deprecated and refactored
to set the new corresponding precondition property to keeps existing
apps that sets the flag working.

Change-Id: I15ea663c37d081cb7df58d78c806389571660699
Review-Link: https://gwt-review.googlesource.com/#/c/11330/
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/CompilerOptionsImpl.java b/dev/codeserver/java/com/google/gwt/dev/codeserver/CompilerOptionsImpl.java
index 8ce479c..724be9a 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/CompilerOptionsImpl.java
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/CompilerOptionsImpl.java
@@ -166,11 +166,6 @@
   }
 
   @Override
-  public boolean isCastCheckingDisabled() {
-    return false;
-  }
-
-  @Override
   public boolean isClassMetadataDisabled() {
     return false;
   }
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/UnmodifiableCompilerOptions.java b/dev/codeserver/java/com/google/gwt/dev/codeserver/UnmodifiableCompilerOptions.java
index bb1f31b..b9c8336 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/UnmodifiableCompilerOptions.java
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/UnmodifiableCompilerOptions.java
@@ -46,11 +46,6 @@
   }
 
   @Override
-  public final void setCastCheckingDisabled(boolean disabled) {
-    throw new UnsupportedOperationException();
-  }
-
-  @Override
   public final void setClassMetadataDisabled(boolean disabled) {
     throw new UnsupportedOperationException();
   }
diff --git a/dev/core/src/com/google/gwt/dev/PrecompileTaskOptionsImpl.java b/dev/core/src/com/google/gwt/dev/PrecompileTaskOptionsImpl.java
index 09535cf..3ba54d3 100644
--- a/dev/core/src/com/google/gwt/dev/PrecompileTaskOptionsImpl.java
+++ b/dev/core/src/com/google/gwt/dev/PrecompileTaskOptionsImpl.java
@@ -130,11 +130,6 @@
   }
 
   @Override
-  public boolean isCastCheckingDisabled() {
-    return jjsOptions.isCastCheckingDisabled();
-  }
-
-  @Override
   public boolean isClassMetadataDisabled() {
     return jjsOptions.isClassMetadataDisabled();
   }
@@ -214,11 +209,6 @@
   }
 
   @Override
-  public void setCastCheckingDisabled(boolean disabled) {
-    jjsOptions.setCastCheckingDisabled(disabled);
-  }
-
-  @Override
   public void setClassMetadataDisabled(boolean disabled) {
     jjsOptions.setClassMetadataDisabled(disabled);
   }
@@ -401,6 +391,7 @@
   public boolean shouldOptimizeDataflow() {
     return jjsOptions.shouldOptimizeDataflow();
   }
+
   @Override
   public boolean shouldOrdinalizeEnums() {
     return jjsOptions.shouldOrdinalizeEnums();
diff --git a/dev/core/src/com/google/gwt/dev/jjs/JJSOptions.java b/dev/core/src/com/google/gwt/dev/jjs/JJSOptions.java
index a7da111..b36a11e 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/JJSOptions.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/JJSOptions.java
@@ -19,7 +19,6 @@
 import com.google.gwt.dev.util.arg.OptionCheckedMode;
 import com.google.gwt.dev.util.arg.OptionClosureFormattedOutput;
 import com.google.gwt.dev.util.arg.OptionClusterSimilarFunctions;
-import com.google.gwt.dev.util.arg.OptionDisableCastChecking;
 import com.google.gwt.dev.util.arg.OptionDisableClassMetadata;
 import com.google.gwt.dev.util.arg.OptionEnableAssertions;
 import com.google.gwt.dev.util.arg.OptionEnableClosureCompiler;
@@ -49,7 +48,7 @@
  */
 public interface JJSOptions extends OptionOptimize,
     OptionClusterSimilarFunctions, OptionIncrementalCompile, OptionDisableClassMetadata,
-    OptionDisableCastChecking, OptionEnableAssertions, OptionInlineLiteralParameters,
+    OptionEnableAssertions, OptionInlineLiteralParameters,
     OptionOptimizeDataflow, OptionRunAsyncEnabled, OptionScriptStyle, OptionSoycEnabled,
     OptionSoycDetailed, OptionJsonSoycEnabled, OptionOrdinalizeEnums,
     OptionRemoveDuplicateFunctions, OptionStrict,
diff --git a/dev/core/src/com/google/gwt/dev/jjs/JJSOptionsImpl.java b/dev/core/src/com/google/gwt/dev/jjs/JJSOptionsImpl.java
index 0f8aa73..69f202b 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/JJSOptionsImpl.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/JJSOptionsImpl.java
@@ -33,7 +33,6 @@
   private boolean clusterSimilarFunctions = true;
   private boolean incrementalCompile = false;
   private boolean compilerMetricsEnabled = false;
-  private boolean disableCastChecking = false;
   private boolean disableClassMetadata = false;
   private boolean enableAssertions;
   private int fragmentCount = -1;
@@ -63,7 +62,6 @@
 
   public void copyFrom(JJSOptions other) {
     setAddRuntimeChecks(other.shouldAddRuntimeChecks());
-    setCastCheckingDisabled(other.isCastCheckingDisabled());
     setClassMetadataDisabled(other.isClassMetadataDisabled());
     setClosureCompilerEnabled(other.isClosureCompilerEnabled());
     setClusterSimilarFunctions(other.shouldClusterSimilarFunctions());
@@ -127,11 +125,6 @@
   }
 
   @Override
-  public boolean isCastCheckingDisabled() {
-    return disableCastChecking;
-  }
-
-  @Override
   public boolean isClassMetadataDisabled() {
     return disableClassMetadata;
   }
@@ -191,11 +184,6 @@
   }
 
   @Override
-  public void setCastCheckingDisabled(boolean disabled) {
-    disableCastChecking = disabled;
-  }
-
-  @Override
   public void setClassMetadataDisabled(boolean disabled) {
     disableClassMetadata = disabled;
   }
diff --git a/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java b/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java
index b507c64..c61a631 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java
@@ -481,13 +481,11 @@
         ComputeExhaustiveCastabilityInformation.exec(jprogram);
       } else {
         // If trivial casts are pruned then one can use smaller runtime castmaps.
-        ComputeCastabilityInformation.exec(jprogram, options.isCastCheckingDisabled(),
-            !shouldOptimize() /* recordTrivialCasts */);
+        ComputeCastabilityInformation.exec(jprogram, !shouldOptimize() /* recordTrivialCasts */);
       }
 
-      ImplementCastsAndTypeChecks.exec(jprogram, options.isCastCheckingDisabled(),
-          shouldOptimize() /* pruneTrivialCasts */);
-      ArrayNormalizer.exec(jprogram, options.isCastCheckingDisabled());
+      ImplementCastsAndTypeChecks.exec(jprogram, shouldOptimize() /* pruneTrivialCasts */);
+      ArrayNormalizer.exec(jprogram);
       EqualityNormalizer.exec(jprogram);
 
       TypeMapper<?> typeMapper = getTypeMapper();
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/ArrayNormalizer.java b/dev/core/src/com/google/gwt/dev/jjs/impl/ArrayNormalizer.java
index 0c10cb1..75d07c9 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/ArrayNormalizer.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/ArrayNormalizer.java
@@ -49,8 +49,7 @@
 
     @Override
     public void endVisit(JBinaryOperation x, Context ctx) {
-      if (disableCastChecking || x.getOp() != JBinaryOperator.ASG ||
-          !(x.getLhs() instanceof JArrayRef)) {
+      if (x.getOp() != JBinaryOperator.ASG || !(x.getLhs() instanceof JArrayRef)) {
         return;
       }
       JArrayRef arrayRef = (JArrayRef) x.getLhs();
@@ -202,22 +201,19 @@
     }
   }
 
-  public static void exec(JProgram program, boolean disableCastChecking) {
-    new ArrayNormalizer(program, disableCastChecking).execImpl();
+  public static void exec(JProgram program) {
+    new ArrayNormalizer(program).execImpl();
   }
 
-  private final boolean disableCastChecking;
   private final JMethod initDim;
   private final JMethod initDims;
   private final JMethod initValues;
   private final JProgram program;
   private final JMethod setCheckMethod;
 
-  private ArrayNormalizer(JProgram program, boolean disableCastChecking) {
+  private ArrayNormalizer(JProgram program) {
     this.program = program;
-    this.disableCastChecking = disableCastChecking;
     setCheckMethod = program.getIndexedMethod("Array.setCheck");
-
     initDim = program.getIndexedMethod("Array.initDim");
     initDims = program.getIndexedMethod("Array.initDims");
     initValues = program.getIndexedMethod("Array.initValues");
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/ComputeCastabilityInformation.java b/dev/core/src/com/google/gwt/dev/jjs/impl/ComputeCastabilityInformation.java
index 7dfada8..2b2b6d5 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/ComputeCastabilityInformation.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/ComputeCastabilityInformation.java
@@ -151,7 +151,7 @@
 
     @Override
     public void endVisit(JCastOperation x, Context ctx) {
-      if (disableCastChecking || x.getCastType().isNullType()) {
+      if (x.getCastType().isNullType()) {
         return;
       }
       recordCast(x.getCastType(), x.getExpr());
@@ -288,28 +288,23 @@
     }
   }
 
-  public static void exec(JProgram program, boolean disableCastChecking,
-      boolean recordTrivialCasts) {
-    new ComputeCastabilityInformation(program, disableCastChecking, recordTrivialCasts).execImpl();
+  public static void exec(JProgram program, boolean recordTrivialCasts) {
+    new ComputeCastabilityInformation(program, recordTrivialCasts).execImpl();
   }
 
-  public static void exec(JProgram program, boolean disableCastChecking) {
-    new ComputeCastabilityInformation(program, disableCastChecking, false).execImpl();
+  public static void exec(JProgram program) {
+    new ComputeCastabilityInformation(program, false).execImpl();
   }
 
-  private final boolean disableCastChecking;
-
   private final boolean recordTrivialCasts;
 
   private final JProgram program;
 
   private final JTypeOracle typeOracle;
 
-  private ComputeCastabilityInformation(JProgram program, boolean disableCastChecking,
-      boolean recordTrivialCasts) {
+  private ComputeCastabilityInformation(JProgram program, boolean recordTrivialCasts) {
     this.program = program;
     this.typeOracle = program.typeOracle;
-    this.disableCastChecking = disableCastChecking;
     this.recordTrivialCasts = recordTrivialCasts;
   }
 
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/ImplementCastsAndTypeChecks.java b/dev/core/src/com/google/gwt/dev/jjs/impl/ImplementCastsAndTypeChecks.java
index 866b49d..8e9f398 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/ImplementCastsAndTypeChecks.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/ImplementCastsAndTypeChecks.java
@@ -57,11 +57,6 @@
       JType toType = x.getCastType();
       JExpression expr = x.getExpr();
 
-      // Even if disableCastChecking is enabled, we need to rescue JSOs
-      if (disableCastChecking && toType instanceof JReferenceType) {
-        // Just leave the cast in, GenerateJavaScriptAST will ignore it.
-        return;
-      }
       SourceInfo info = x.getSourceInfo();
       if (pruneTrivialCasts && toType.isNullType()) {
         /**
@@ -268,16 +263,14 @@
     return call;
   }
 
-  public static void exec(JProgram program, boolean disableCastChecking,
-      boolean pruneTrivialCasts) {
-    new ImplementCastsAndTypeChecks(program, disableCastChecking, pruneTrivialCasts).execImpl();
+  public static void exec(JProgram program, boolean pruneTrivialCasts) {
+    new ImplementCastsAndTypeChecks(program, pruneTrivialCasts).execImpl();
   }
 
-  public static void exec(JProgram program, boolean disableCastChecking) {
-    new ImplementCastsAndTypeChecks(program, disableCastChecking, true).execImpl();
+  public static void exec(JProgram program) {
+    new ImplementCastsAndTypeChecks(program, true).execImpl();
   }
 
-  private final boolean disableCastChecking;
   private final boolean pruneTrivialCasts;
   private final JProgram program;
 
@@ -287,10 +280,8 @@
   private Map<TypeCategory, JMethod> dynamicCastMethodsByTargetTypeCategory =
       Maps.newEnumMap(TypeCategory.class);
 
-  private ImplementCastsAndTypeChecks(JProgram program, boolean disableCastChecking,
-      boolean pruneTrivialCasts) {
+  private ImplementCastsAndTypeChecks(JProgram program, boolean pruneTrivialCasts) {
     this.program = program;
-    this.disableCastChecking = disableCastChecking;
     this.pruneTrivialCasts = pruneTrivialCasts;
 
     // Populate the necessary instanceOf methods.
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableCastChecking.java b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableCastChecking.java
index 83473cc..1994a95 100644
--- a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableCastChecking.java
+++ b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableCastChecking.java
@@ -17,22 +17,24 @@
 
 import com.google.gwt.util.tools.ArgHandlerFlag;
 
+import java.util.Arrays;
+import java.util.List;
+
 /**
  * Enables run-time cast checking.
  */
 public class ArgHandlerDisableCastChecking extends ArgHandlerFlag {
 
-  private final OptionDisableCastChecking option;
+  private OptionSetProperties setProperties;
 
-  public ArgHandlerDisableCastChecking(OptionDisableCastChecking option) {
-    this.option = option;
-
+  public ArgHandlerDisableCastChecking(OptionSetProperties setProperties) {
+    this.setProperties = setProperties;
     addTagValue("-XdisableCastChecking", false);
   }
 
   @Override
   public String getPurposeSnippet() {
-    return "Insert run-time checking of cast operations.";
+    return "DEPRECATED: use checks.checkLevel instead.";
   }
 
   @Override
@@ -42,7 +44,8 @@
 
   @Override
   public boolean setFlag(boolean value) {
-    option.setCastCheckingDisabled(!value);
+    List<String> propertyValue = Arrays.asList(value ? "ENABLED" : "DISABLED");
+    setProperties.setPropertyValues("checks.type", propertyValue);
     return true;
   }
 
@@ -53,6 +56,6 @@
 
   @Override
   public boolean getDefaultValue() {
-    return !option.isCastCheckingDisabled();
+    return false;
   }
 }
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/OptionDisableCastChecking.java b/dev/core/src/com/google/gwt/dev/util/arg/OptionDisableCastChecking.java
deleted file mode 100644
index f89630b..0000000
--- a/dev/core/src/com/google/gwt/dev/util/arg/OptionDisableCastChecking.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright 2009 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.dev.util.arg;
-
-/**
- * Encapsulates a compiler option to disable runtime cast checking.
- */
-public interface OptionDisableCastChecking {
-  boolean isCastCheckingDisabled();
-
-  void setCastCheckingDisabled(boolean disabled);
-}
diff --git a/dev/core/src/com/google/gwt/util/tools/ArgHandlerNoopDeprecatedFlag.java b/dev/core/src/com/google/gwt/util/tools/ArgHandlerNoopDeprecatedFlag.java
index 3c52bd1..cb1cbb8 100644
--- a/dev/core/src/com/google/gwt/util/tools/ArgHandlerNoopDeprecatedFlag.java
+++ b/dev/core/src/com/google/gwt/util/tools/ArgHandlerNoopDeprecatedFlag.java
@@ -44,7 +44,7 @@
 
   @Override
   public String getPurpose() {
-    return "Deprecated. Has no effect and will be removed in a future release";
+    return "DEPRECATED: Has no effect and will be removed in a future release";
   }
 
   @Override
diff --git a/dev/core/test/com/google/gwt/dev/PrecompileTaskArgProcessorTest.java b/dev/core/test/com/google/gwt/dev/PrecompileTaskArgProcessorTest.java
index 123239f..cb4630e 100644
--- a/dev/core/test/com/google/gwt/dev/PrecompileTaskArgProcessorTest.java
+++ b/dev/core/test/com/google/gwt/dev/PrecompileTaskArgProcessorTest.java
@@ -38,7 +38,7 @@
   public void testFlagBackwardCompatibility() {
     // Set a bunch of boolean flags using old-style tags.
     precompileTaskArgProcessor.processArgs("-workDir", "/tmp", "-XcompilerMetrics",
-        "-XdisableCastChecking", "-XdisableClassMetadata", "-XdisableClusterSimilarFunctions",
+        "-XdisableClassMetadata", "-XdisableClusterSimilarFunctions",
         "-XdisableInlineLiteralParameters", "-XdisableOptimizeDataflow", "-XdisableOrdinalizeEnums",
         "-XdisableRemoveDuplicateFunctions", "-XdisableRunAsync", "-XdisableSoycHtml",
         "-XdisableUpdateCheck", "-ea", "-XenableClosureCompiler", "-soyc", "-XsoycDetailed",
@@ -48,8 +48,6 @@
     assertNotEquals(
         defaultOptions.isCompilerMetricsEnabled(), handledOptions.isCompilerMetricsEnabled());
     assertNotEquals(
-        defaultOptions.isCastCheckingDisabled(), handledOptions.isCastCheckingDisabled());
-    assertNotEquals(
         defaultOptions.isClassMetadataDisabled(), handledOptions.isClassMetadataDisabled());
     assertNotEquals(defaultOptions.shouldClusterSimilarFunctions(),
         handledOptions.shouldClusterSimilarFunctions());
diff --git a/dev/core/test/com/google/gwt/dev/jjs/impl/ArrayNormalizerTest.java b/dev/core/test/com/google/gwt/dev/jjs/impl/ArrayNormalizerTest.java
index d5cf3d9..6ecb89c 100644
--- a/dev/core/test/com/google/gwt/dev/jjs/impl/ArrayNormalizerTest.java
+++ b/dev/core/test/com/google/gwt/dev/jjs/impl/ArrayNormalizerTest.java
@@ -21,7 +21,6 @@
  * Test for {@link ArrayNormalizer}.
  */
 public class ArrayNormalizerTest extends OptimizerTestBase {
-  private boolean disableCastCheck  = false;
   // TODO(rluble): add unit test for the rest of the functionality.
 
   public void testSetCheckElimination_finalTypeArray() throws Exception {
@@ -35,21 +34,6 @@
         "a[1] = new EntryPoint$A();");
   }
 
-  public void testSetCheckElimination_disableCastCheck() throws Exception {
-    disableCastCheck = true;
-    addSnippetClassDecl("static class A {String name; public void set() { name = \"A\";} }");
-    addSnippetClassDecl("static class B extends A { }");
-
-    Result result =
-        optimize("void", "A[] a = new A[1]; a = new B[1]; a[1] = new B();");
-    result.intoString(
-        "EntryPoint$A[] a = Array.initDim(EntryPoint$A.class, , " +
-          "/* JRuntimeTypeReference */\"test.EntryPoint$A\", 1, 0, 1);",
-        "a = Array.initDim(EntryPoint$B.class, , " +
-          "/* JRuntimeTypeReference */\"test.EntryPoint$B\", 1, 0, 1);",
-        "a[1] = new EntryPoint$B();");
-  }
-
   public void testSetCheckPreservation_nonFinalTypeArray() throws Exception {
     addSnippetClassDecl("static class A {String name; public void set() { name = \"A\";} }");
     addSnippetClassDecl("static class B extends A { }");
@@ -74,7 +58,7 @@
       didChange &= TypeTightener.exec(program).didChange();
       didChange &= MethodCallTightener.exec(program).didChange();
     } while (didChange);
-    ArrayNormalizer.exec(program, disableCastCheck);
+    ArrayNormalizer.exec(program);
     return true;
   }
 }
diff --git a/dev/core/test/com/google/gwt/dev/jjs/impl/FullCompileTestBase.java b/dev/core/test/com/google/gwt/dev/jjs/impl/FullCompileTestBase.java
index 3f62f68..cbc2067 100644
--- a/dev/core/test/com/google/gwt/dev/jjs/impl/FullCompileTestBase.java
+++ b/dev/core/test/com/google/gwt/dev/jjs/impl/FullCompileTestBase.java
@@ -96,7 +96,7 @@
     optimizeJava();
     ComputeCastabilityInformation.exec(jProgram, false);
     ImplementCastsAndTypeChecks.exec(jProgram, false);
-    ArrayNormalizer.exec(jProgram, false);
+    ArrayNormalizer.exec(jProgram);
     TypeTightener.exec(jProgram);
     MethodCallTightener.exec(jProgram);
 
diff --git a/dev/core/test/com/google/gwt/dev/jjs/impl/ImplementCastsAndTypeChecksTest.java b/dev/core/test/com/google/gwt/dev/jjs/impl/ImplementCastsAndTypeChecksTest.java
index a1708b7..d963e9e 100644
--- a/dev/core/test/com/google/gwt/dev/jjs/impl/ImplementCastsAndTypeChecksTest.java
+++ b/dev/core/test/com/google/gwt/dev/jjs/impl/ImplementCastsAndTypeChecksTest.java
@@ -21,7 +21,6 @@
  * Test for {@link ImplementCastsAndTypeChecksTest}.
  */
 public class ImplementCastsAndTypeChecksTest extends OptimizerTestBase {
-  private boolean disableCastCheck  = false;
   // TODO(rluble): add unit test for the rest of the functionality.
 
   public void testCastCheckIntoNullCheck() throws Exception {
@@ -56,7 +55,7 @@
       didChange &= TypeTightener.exec(program).didChange();
       didChange &= MethodCallTightener.exec(program).didChange();
     } while (didChange);
-    ImplementCastsAndTypeChecks.exec(program, disableCastCheck);
+    ImplementCastsAndTypeChecks.exec(program);
     return true;
   }
 }
diff --git a/dev/core/test/com/google/gwt/dev/js/JsStackEmulatorTest.java b/dev/core/test/com/google/gwt/dev/js/JsStackEmulatorTest.java
index 4344807..2bba3e7 100644
--- a/dev/core/test/com/google/gwt/dev/js/JsStackEmulatorTest.java
+++ b/dev/core/test/com/google/gwt/dev/js/JsStackEmulatorTest.java
@@ -281,7 +281,7 @@
     // These passes are needed by GenerateJavaScriptAST.
     ComputeCastabilityInformation.exec(jProgram, false);
     ImplementCastsAndTypeChecks.exec(jProgram, false);
-    ArrayNormalizer.exec(jProgram, false);
+    ArrayNormalizer.exec(jProgram);
 
     TypeMapper<String> typeMapper = new StringTypeMapper();
     ResolveRuntimeTypeReferences.exec(jProgram, typeMapper, TypeOrder.FREQUENCY);