// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import "mock_compiler.dart";
import "parser_helper.dart";
import "../../../sdk/lib/_internal/compiler/implementation/ssa/ssa.dart";
import "../../../sdk/lib/_internal/compiler/implementation/types/types.dart";

const CONFLICTING = HType.CONFLICTING;
const UNKNOWN = HType.UNKNOWN;
const BOOLEAN = HType.BOOLEAN;
const NUMBER = HType.NUMBER;
const INTEGER = HType.INTEGER;
const DOUBLE = HType.DOUBLE;
const INDEXABLE_PRIMITIVE = HType.INDEXABLE_PRIMITIVE;
const STRING = HType.STRING;
const READABLE_ARRAY = HType.READABLE_ARRAY;
const MUTABLE_ARRAY = HType.MUTABLE_ARRAY;
const FIXED_ARRAY = HType.FIXED_ARRAY;
const EXTENDABLE_ARRAY = HType.EXTENDABLE_ARRAY;
const BOOLEAN_OR_NULL = HType.BOOLEAN_OR_NULL;
const NUMBER_OR_NULL = HType.NUMBER_OR_NULL;
const INTEGER_OR_NULL = HType.INTEGER_OR_NULL;
const DOUBLE_OR_NULL = HType.DOUBLE_OR_NULL;
const STRING_OR_NULL = HType.STRING_OR_NULL;
const NULL = HType.NULL;

var patternClass;
HType nonPrimitive1;
HType nonPrimitive2;
HType potentialArray;
HType potentialString;
HType jsArrayOrNull;

void testUnion(MockCompiler compiler) {
  Expect.equals(CONFLICTING,
                CONFLICTING.union(CONFLICTING, compiler));
  Expect.equals(UNKNOWN,
                CONFLICTING.union(UNKNOWN, compiler));
  Expect.equals(BOOLEAN,
                CONFLICTING.union(BOOLEAN, compiler));
  Expect.equals(NUMBER,
                CONFLICTING.union(NUMBER, compiler));
  Expect.equals(INTEGER,
                CONFLICTING.union(INTEGER, compiler));
  Expect.equals(DOUBLE,
                CONFLICTING.union(DOUBLE, compiler));
  Expect.equals(INDEXABLE_PRIMITIVE,
                CONFLICTING.union(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(STRING,
                CONFLICTING.union(STRING, compiler));
  Expect.equals(READABLE_ARRAY,
                CONFLICTING.union(READABLE_ARRAY, compiler));
  Expect.equals(MUTABLE_ARRAY,
                CONFLICTING.union(MUTABLE_ARRAY, compiler));
  Expect.equals(EXTENDABLE_ARRAY,
                CONFLICTING.union(EXTENDABLE_ARRAY, compiler));
  Expect.equals(nonPrimitive1,
                CONFLICTING.union(nonPrimitive1, compiler));
  Expect.equals(nonPrimitive2,
                CONFLICTING.union(nonPrimitive2, compiler));
  Expect.equals(potentialArray,
                CONFLICTING.union(potentialArray, compiler));
  Expect.equals(potentialString,
                CONFLICTING.union(potentialString, compiler));
  Expect.equals(BOOLEAN_OR_NULL,
                CONFLICTING.union(BOOLEAN_OR_NULL, compiler));
  Expect.equals(NUMBER_OR_NULL,
                CONFLICTING.union(NUMBER_OR_NULL, compiler));
  Expect.equals(INTEGER_OR_NULL,
                CONFLICTING.union(INTEGER_OR_NULL, compiler));
  Expect.equals(DOUBLE_OR_NULL,
                CONFLICTING.union(DOUBLE_OR_NULL, compiler));
  Expect.equals(STRING_OR_NULL,
                CONFLICTING.union(STRING_OR_NULL, compiler));
  Expect.equals(NULL,
                CONFLICTING.union(NULL, compiler));
  Expect.equals(FIXED_ARRAY,
                CONFLICTING.union(FIXED_ARRAY, compiler));

  Expect.equals(UNKNOWN,
                UNKNOWN.union(CONFLICTING, compiler));
  Expect.equals(UNKNOWN,
                UNKNOWN.union(UNKNOWN, compiler));
  Expect.equals(UNKNOWN,
                UNKNOWN.union(BOOLEAN, compiler));
  Expect.equals(UNKNOWN,
                UNKNOWN.union(NUMBER, compiler));
  Expect.equals(UNKNOWN,
                UNKNOWN.union(INTEGER, compiler));
  Expect.equals(UNKNOWN,
                UNKNOWN.union(DOUBLE, compiler));
  Expect.equals(UNKNOWN,
                UNKNOWN.union(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(UNKNOWN,
                UNKNOWN.union(STRING, compiler));
  Expect.equals(UNKNOWN,
                UNKNOWN.union(READABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                UNKNOWN.union(MUTABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                UNKNOWN.union(EXTENDABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                UNKNOWN.union(nonPrimitive1, compiler));
  Expect.equals(UNKNOWN,
                UNKNOWN.union(nonPrimitive2, compiler));
  Expect.equals(UNKNOWN,
                UNKNOWN.union(potentialArray, compiler));
  Expect.equals(UNKNOWN,
                UNKNOWN.union(potentialString, compiler));
  Expect.equals(UNKNOWN,
                UNKNOWN.union(BOOLEAN_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                UNKNOWN.union(NUMBER_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                UNKNOWN.union(INTEGER_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                UNKNOWN.union(DOUBLE_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                UNKNOWN.union(STRING_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                UNKNOWN.union(NULL, compiler));
  Expect.equals(UNKNOWN,
                UNKNOWN.union(FIXED_ARRAY, compiler));

  Expect.equals(BOOLEAN,
                BOOLEAN.union(CONFLICTING, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN.union(UNKNOWN, compiler));
  Expect.equals(BOOLEAN,
                BOOLEAN.union(BOOLEAN, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN.union(NUMBER, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN.union(INTEGER, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN.union(DOUBLE, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN.union(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN.union(STRING, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN.union(READABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN.union(MUTABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN.union(EXTENDABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN.union(nonPrimitive1, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN.union(nonPrimitive2, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN.union(potentialArray, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN.union(potentialString, compiler));
  Expect.equals(BOOLEAN_OR_NULL,
                BOOLEAN.union(BOOLEAN_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN.union(NUMBER_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN.union(INTEGER_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN.union(DOUBLE_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN.union(STRING_OR_NULL, compiler));
  Expect.equals(BOOLEAN_OR_NULL,
                BOOLEAN.union(NULL, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN.union(FIXED_ARRAY, compiler));

  Expect.equals(NUMBER,
                NUMBER.union(CONFLICTING, compiler));
  Expect.equals(UNKNOWN,
                NUMBER.union(UNKNOWN, compiler));
  Expect.equals(UNKNOWN,
                NUMBER.union(BOOLEAN, compiler));
  Expect.equals(NUMBER,
                NUMBER.union(NUMBER, compiler));
  Expect.equals(NUMBER,
                NUMBER.union(INTEGER, compiler));
  Expect.equals(NUMBER,
                NUMBER.union(DOUBLE, compiler));
  Expect.equals(UNKNOWN,
                NUMBER.union(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(UNKNOWN,
                NUMBER.union(STRING, compiler));
  Expect.equals(UNKNOWN,
                NUMBER.union(READABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                NUMBER.union(MUTABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                NUMBER.union(EXTENDABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                NUMBER.union(nonPrimitive1, compiler));
  Expect.equals(UNKNOWN,
                NUMBER.union(nonPrimitive2, compiler));
  Expect.equals(UNKNOWN,
                NUMBER.union(potentialArray, compiler));
  Expect.equals(UNKNOWN,
                NUMBER.union(potentialString, compiler));
  Expect.equals(UNKNOWN,
                NUMBER.union(BOOLEAN_OR_NULL, compiler));
  Expect.equals(NUMBER_OR_NULL,
                NUMBER.union(NUMBER_OR_NULL, compiler));
  Expect.equals(NUMBER_OR_NULL,
                NUMBER.union(INTEGER_OR_NULL, compiler));
  Expect.equals(NUMBER_OR_NULL,
                NUMBER.union(DOUBLE_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                NUMBER.union(STRING_OR_NULL, compiler));
  Expect.equals(NUMBER_OR_NULL,
                NUMBER.union(NULL, compiler));
  Expect.equals(UNKNOWN,
                NUMBER.union(FIXED_ARRAY, compiler));

  Expect.equals(INTEGER,
                INTEGER.union(CONFLICTING, compiler));
  Expect.equals(UNKNOWN,
                INTEGER.union(UNKNOWN, compiler));
  Expect.equals(UNKNOWN,
                INTEGER.union(BOOLEAN, compiler));
  Expect.equals(NUMBER,
                INTEGER.union(NUMBER, compiler));
  Expect.equals(INTEGER,
                INTEGER.union(INTEGER, compiler));
  Expect.equals(NUMBER,
                INTEGER.union(DOUBLE, compiler));
  Expect.equals(UNKNOWN,
                INTEGER.union(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(UNKNOWN,
                INTEGER.union(STRING, compiler));
  Expect.equals(UNKNOWN,
                INTEGER.union(READABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                INTEGER.union(MUTABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                INTEGER.union(EXTENDABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                INTEGER.union(nonPrimitive1, compiler));
  Expect.equals(UNKNOWN,
                INTEGER.union(nonPrimitive2, compiler));
  Expect.equals(UNKNOWN,
                INTEGER.union(potentialArray, compiler));
  Expect.equals(UNKNOWN,
                INTEGER.union(potentialString, compiler));
  Expect.equals(UNKNOWN,
                INTEGER.union(BOOLEAN_OR_NULL, compiler));
  Expect.equals(NUMBER_OR_NULL,
                INTEGER.union(NUMBER_OR_NULL, compiler));
  Expect.equals(INTEGER_OR_NULL,
                INTEGER.union(INTEGER_OR_NULL, compiler));
  Expect.equals(NUMBER_OR_NULL,
                INTEGER.union(DOUBLE_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                INTEGER.union(STRING_OR_NULL, compiler));
  Expect.equals(INTEGER_OR_NULL,
                INTEGER.union(NULL, compiler));
  Expect.equals(UNKNOWN,
                INTEGER.union(FIXED_ARRAY, compiler));

  Expect.equals(DOUBLE,
                DOUBLE.union(CONFLICTING, compiler));
  Expect.equals(UNKNOWN,
                DOUBLE.union(UNKNOWN, compiler));
  Expect.equals(UNKNOWN,
                DOUBLE.union(BOOLEAN, compiler));
  Expect.equals(NUMBER,
                DOUBLE.union(NUMBER, compiler));
  Expect.equals(NUMBER,
                DOUBLE.union(INTEGER, compiler));
  Expect.equals(DOUBLE,
                DOUBLE.union(DOUBLE, compiler));
  Expect.equals(UNKNOWN,
                DOUBLE.union(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(UNKNOWN,
                DOUBLE.union(STRING, compiler));
  Expect.equals(UNKNOWN,
                DOUBLE.union(READABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                DOUBLE.union(MUTABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                DOUBLE.union(EXTENDABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                DOUBLE.union(nonPrimitive1, compiler));
  Expect.equals(UNKNOWN,
                DOUBLE.union(nonPrimitive2, compiler));
  Expect.equals(UNKNOWN,
                DOUBLE.union(potentialArray, compiler));
  Expect.equals(UNKNOWN,
                DOUBLE.union(potentialString, compiler));
  Expect.equals(UNKNOWN,
                DOUBLE.union(BOOLEAN_OR_NULL, compiler));
  Expect.equals(NUMBER_OR_NULL,
                DOUBLE.union(NUMBER_OR_NULL, compiler));
  Expect.equals(NUMBER_OR_NULL,
                DOUBLE.union(INTEGER_OR_NULL, compiler));
  Expect.equals(DOUBLE_OR_NULL,
                DOUBLE.union(DOUBLE_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                DOUBLE.union(STRING_OR_NULL, compiler));
  Expect.equals(DOUBLE_OR_NULL,
                DOUBLE.union(NULL, compiler));
  Expect.equals(UNKNOWN,
                DOUBLE.union(FIXED_ARRAY, compiler));

  Expect.equals(INDEXABLE_PRIMITIVE,
                INDEXABLE_PRIMITIVE.union(CONFLICTING, compiler));
  Expect.equals(UNKNOWN,
                INDEXABLE_PRIMITIVE.union(UNKNOWN, compiler));
  Expect.equals(UNKNOWN,
                INDEXABLE_PRIMITIVE.union(BOOLEAN, compiler));
  Expect.equals(UNKNOWN,
                INDEXABLE_PRIMITIVE.union(NUMBER, compiler));
  Expect.equals(UNKNOWN,
                INDEXABLE_PRIMITIVE.union(INTEGER, compiler));
  Expect.equals(UNKNOWN,
                INDEXABLE_PRIMITIVE.union(DOUBLE, compiler));
  Expect.equals(INDEXABLE_PRIMITIVE,
                INDEXABLE_PRIMITIVE.union(INDEXABLE_PRIMITIVE,
                compiler));
  Expect.equals(INDEXABLE_PRIMITIVE,
                INDEXABLE_PRIMITIVE.union(STRING, compiler));
  Expect.equals(INDEXABLE_PRIMITIVE,
                INDEXABLE_PRIMITIVE.union(READABLE_ARRAY, compiler));
  Expect.equals(INDEXABLE_PRIMITIVE,
                INDEXABLE_PRIMITIVE.union(MUTABLE_ARRAY, compiler));
  Expect.equals(INDEXABLE_PRIMITIVE,
                INDEXABLE_PRIMITIVE.union(EXTENDABLE_ARRAY,
                compiler));
  Expect.equals(UNKNOWN,
                INDEXABLE_PRIMITIVE.union(nonPrimitive1, compiler));
  Expect.equals(UNKNOWN,
                INDEXABLE_PRIMITIVE.union(nonPrimitive2, compiler));
  Expect.equals(UNKNOWN,
                INDEXABLE_PRIMITIVE.union(potentialArray, compiler));
  Expect.equals(UNKNOWN,
                INDEXABLE_PRIMITIVE.union(potentialString, compiler));
  Expect.equals(UNKNOWN,
                INDEXABLE_PRIMITIVE.union(BOOLEAN_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                INDEXABLE_PRIMITIVE.union(NUMBER_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                INDEXABLE_PRIMITIVE.union(INTEGER_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                INDEXABLE_PRIMITIVE.union(DOUBLE_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                INDEXABLE_PRIMITIVE.union(STRING_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                INDEXABLE_PRIMITIVE.union(NULL, compiler));
  Expect.equals(INDEXABLE_PRIMITIVE,
                INDEXABLE_PRIMITIVE.union(FIXED_ARRAY, compiler));

  Expect.equals(STRING,
                STRING.union(CONFLICTING, compiler));
  Expect.equals(UNKNOWN,
                STRING.union(UNKNOWN, compiler));
  Expect.equals(UNKNOWN,
                STRING.union(BOOLEAN, compiler));
  Expect.equals(UNKNOWN,
                STRING.union(NUMBER, compiler));
  Expect.equals(UNKNOWN,
                STRING.union(INTEGER, compiler));
  Expect.equals(UNKNOWN,
                STRING.union(DOUBLE, compiler));
  Expect.equals(INDEXABLE_PRIMITIVE,
                STRING.union(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(STRING,
                STRING.union(STRING, compiler));
  Expect.equals(INDEXABLE_PRIMITIVE,
                STRING.union(READABLE_ARRAY, compiler));
  Expect.equals(INDEXABLE_PRIMITIVE,
                STRING.union(MUTABLE_ARRAY, compiler));
  Expect.equals(INDEXABLE_PRIMITIVE,
                STRING.union(EXTENDABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                STRING.union(nonPrimitive1, compiler));
  Expect.equals(UNKNOWN,
                STRING.union(nonPrimitive2, compiler));
  Expect.equals(UNKNOWN,
                STRING.union(potentialArray, compiler));
  Expect.equals(potentialString,
                STRING.union(potentialString, compiler));
  Expect.equals(UNKNOWN,
                STRING.union(BOOLEAN_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                STRING.union(NUMBER_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                STRING.union(INTEGER_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                STRING.union(DOUBLE_OR_NULL, compiler));
  Expect.equals(STRING_OR_NULL,
                STRING.union(STRING_OR_NULL, compiler));
  Expect.equals(STRING_OR_NULL,
                STRING.union(NULL, compiler));
  Expect.equals(INDEXABLE_PRIMITIVE,
                STRING.union(FIXED_ARRAY, compiler));

  Expect.equals(READABLE_ARRAY,
                READABLE_ARRAY.union(CONFLICTING, compiler));
  Expect.equals(UNKNOWN,
                READABLE_ARRAY.union(UNKNOWN, compiler));
  Expect.equals(UNKNOWN,
                READABLE_ARRAY.union(BOOLEAN, compiler));
  Expect.equals(UNKNOWN,
                READABLE_ARRAY.union(NUMBER, compiler));
  Expect.equals(UNKNOWN,
                READABLE_ARRAY.union(INTEGER, compiler));
  Expect.equals(UNKNOWN,
                READABLE_ARRAY.union(DOUBLE, compiler));
  Expect.equals(INDEXABLE_PRIMITIVE,
                READABLE_ARRAY.union(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(INDEXABLE_PRIMITIVE,
                READABLE_ARRAY.union(STRING, compiler));
  Expect.equals(READABLE_ARRAY,
                READABLE_ARRAY.union(READABLE_ARRAY, compiler));
  Expect.equals(READABLE_ARRAY,
                READABLE_ARRAY.union(MUTABLE_ARRAY, compiler));
  Expect.equals(READABLE_ARRAY,
                READABLE_ARRAY.union(EXTENDABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                READABLE_ARRAY.union(nonPrimitive1, compiler));
  Expect.equals(UNKNOWN,
                READABLE_ARRAY.union(nonPrimitive2, compiler));
  Expect.equals(potentialArray,
                READABLE_ARRAY.union(potentialArray, compiler));
  Expect.equals(UNKNOWN,
                READABLE_ARRAY.union(potentialString, compiler));
  Expect.equals(UNKNOWN,
                READABLE_ARRAY.union(BOOLEAN_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                READABLE_ARRAY.union(NUMBER_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                READABLE_ARRAY.union(INTEGER_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                READABLE_ARRAY.union(DOUBLE_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                READABLE_ARRAY.union(STRING_OR_NULL, compiler));
  Expect.equals(jsArrayOrNull,
                READABLE_ARRAY.union(NULL, compiler));
  Expect.equals(READABLE_ARRAY,
                READABLE_ARRAY.union(FIXED_ARRAY, compiler));

  Expect.equals(MUTABLE_ARRAY,
                MUTABLE_ARRAY.union(CONFLICTING, compiler));
  Expect.equals(UNKNOWN,
                MUTABLE_ARRAY.union(UNKNOWN, compiler));
  Expect.equals(UNKNOWN,
                MUTABLE_ARRAY.union(BOOLEAN, compiler));
  Expect.equals(UNKNOWN,
                MUTABLE_ARRAY.union(NUMBER, compiler));
  Expect.equals(UNKNOWN,
                MUTABLE_ARRAY.union(INTEGER, compiler));
  Expect.equals(UNKNOWN,
                MUTABLE_ARRAY.union(DOUBLE, compiler));
  Expect.equals(INDEXABLE_PRIMITIVE,
                MUTABLE_ARRAY.union(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(INDEXABLE_PRIMITIVE,
                MUTABLE_ARRAY.union(STRING, compiler));
  Expect.equals(READABLE_ARRAY,
                MUTABLE_ARRAY.union(READABLE_ARRAY, compiler));
  Expect.equals(MUTABLE_ARRAY,
                MUTABLE_ARRAY.union(MUTABLE_ARRAY, compiler));
  Expect.equals(MUTABLE_ARRAY,
                MUTABLE_ARRAY.union(EXTENDABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                MUTABLE_ARRAY.union(nonPrimitive1, compiler));
  Expect.equals(UNKNOWN,
                MUTABLE_ARRAY.union(nonPrimitive2, compiler));
  Expect.equals(potentialArray,MUTABLE_ARRAY.union(potentialArray,
                compiler));
  Expect.equals(UNKNOWN,
                MUTABLE_ARRAY.union(potentialString, compiler));
  Expect.equals(UNKNOWN,
                MUTABLE_ARRAY.union(BOOLEAN_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                MUTABLE_ARRAY.union(NUMBER_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                MUTABLE_ARRAY.union(INTEGER_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                MUTABLE_ARRAY.union(DOUBLE_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                MUTABLE_ARRAY.union(STRING_OR_NULL, compiler));
  Expect.equals(jsArrayOrNull,
                MUTABLE_ARRAY.union(NULL, compiler));
  Expect.equals(MUTABLE_ARRAY,
                MUTABLE_ARRAY.union(FIXED_ARRAY, compiler));

  Expect.equals(EXTENDABLE_ARRAY,
                EXTENDABLE_ARRAY.union(CONFLICTING, compiler));
  Expect.equals(UNKNOWN,
                EXTENDABLE_ARRAY.union(UNKNOWN, compiler));
  Expect.equals(UNKNOWN,
                EXTENDABLE_ARRAY.union(BOOLEAN, compiler));
  Expect.equals(UNKNOWN,
                EXTENDABLE_ARRAY.union(NUMBER, compiler));
  Expect.equals(UNKNOWN,
                EXTENDABLE_ARRAY.union(INTEGER, compiler));
  Expect.equals(UNKNOWN,
                EXTENDABLE_ARRAY.union(DOUBLE, compiler));
  Expect.equals(INDEXABLE_PRIMITIVE,
                EXTENDABLE_ARRAY.union(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(INDEXABLE_PRIMITIVE,
                EXTENDABLE_ARRAY.union(STRING, compiler));
  Expect.equals(READABLE_ARRAY,
                EXTENDABLE_ARRAY.union(READABLE_ARRAY, compiler));
  Expect.equals(MUTABLE_ARRAY,
                EXTENDABLE_ARRAY.union(MUTABLE_ARRAY, compiler));
  Expect.equals(EXTENDABLE_ARRAY,
                EXTENDABLE_ARRAY.union(EXTENDABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                EXTENDABLE_ARRAY.union(nonPrimitive1, compiler));
  Expect.equals(UNKNOWN,
                EXTENDABLE_ARRAY.union(nonPrimitive2, compiler));
  Expect.equals(potentialArray,
                EXTENDABLE_ARRAY.union(potentialArray, compiler));
  Expect.equals(UNKNOWN,
                EXTENDABLE_ARRAY.union(potentialString, compiler));
  Expect.equals(UNKNOWN,
                EXTENDABLE_ARRAY.union(BOOLEAN_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                EXTENDABLE_ARRAY.union(NUMBER_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                EXTENDABLE_ARRAY.union(INTEGER_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                EXTENDABLE_ARRAY.union(DOUBLE_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                EXTENDABLE_ARRAY.union(STRING_OR_NULL, compiler));
  Expect.equals(jsArrayOrNull,
                EXTENDABLE_ARRAY.union(NULL, compiler));
  Expect.equals(MUTABLE_ARRAY,
                EXTENDABLE_ARRAY.union(FIXED_ARRAY, compiler));

  Expect.equals(nonPrimitive1,
                nonPrimitive1.union(CONFLICTING, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive1.union(UNKNOWN, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive1.union(BOOLEAN, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive1.union(NUMBER, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive1.union(INTEGER, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive1.union(DOUBLE, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive1.union(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive1.union(STRING, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive1.union(READABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive1.union(MUTABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive1.union(EXTENDABLE_ARRAY, compiler));
  Expect.equals(nonPrimitive1,
                nonPrimitive1.union(nonPrimitive1, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive1.union(nonPrimitive2, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive1.union(potentialArray, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive1.union(potentialString, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive1.union(BOOLEAN_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive1.union(NUMBER_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive1.union(INTEGER_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive1.union(DOUBLE_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive1.union(STRING_OR_NULL, compiler));
  Expect.isTrue(nonPrimitive1.union(NULL, compiler) is HBoundedType);
  Expect.equals(UNKNOWN,
                nonPrimitive1.union(FIXED_ARRAY, compiler));

  Expect.equals(nonPrimitive2,
                nonPrimitive2.union(CONFLICTING, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive2.union(UNKNOWN, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive2.union(BOOLEAN, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive2.union(NUMBER, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive2.union(INTEGER, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive2.union(DOUBLE, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive2.union(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive2.union(STRING, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive2.union(READABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive2.union(MUTABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive2.union(EXTENDABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive2.union(nonPrimitive1, compiler));
  Expect.equals(nonPrimitive2,
                nonPrimitive2.union(nonPrimitive2, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive2.union(potentialArray, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive2.union(potentialString, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive2.union(BOOLEAN_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive2.union(NUMBER_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive2.union(INTEGER_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive2.union(DOUBLE_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                nonPrimitive2.union(STRING_OR_NULL, compiler));
  Expect.isTrue(nonPrimitive2.union(NULL, compiler) is HBoundedType);
  Expect.equals(UNKNOWN,
                nonPrimitive2.union(FIXED_ARRAY, compiler));

  Expect.equals(potentialArray,
                potentialArray.union(CONFLICTING, compiler));
  Expect.equals(UNKNOWN,
                potentialArray.union(UNKNOWN, compiler));
  Expect.equals(UNKNOWN,
                potentialArray.union(BOOLEAN, compiler));
  Expect.equals(UNKNOWN,
                potentialArray.union(NUMBER, compiler));
  Expect.equals(UNKNOWN,
                potentialArray.union(INTEGER, compiler));
  Expect.equals(UNKNOWN,
                potentialArray.union(DOUBLE, compiler));
  Expect.equals(UNKNOWN,
                potentialArray.union(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(UNKNOWN,
                potentialArray.union(STRING, compiler));
  Expect.equals(potentialArray,
                potentialArray.union(READABLE_ARRAY, compiler));
  Expect.equals(potentialArray,
                potentialArray.union(MUTABLE_ARRAY, compiler));
  Expect.equals(potentialArray,
                potentialArray.union(EXTENDABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                potentialArray.union(nonPrimitive1, compiler));
  Expect.equals(UNKNOWN,
                potentialArray.union(nonPrimitive2, compiler));
  Expect.equals(potentialArray,
                potentialArray.union(potentialArray, compiler));
  Expect.equals(UNKNOWN,
                potentialArray.union(potentialString, compiler));
  Expect.equals(UNKNOWN,
                potentialArray.union(BOOLEAN_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                potentialArray.union(NUMBER_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                potentialArray.union(INTEGER_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                potentialArray.union(DOUBLE_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                potentialArray.union(STRING_OR_NULL, compiler));
  Expect.equals(potentialArray,
                potentialArray.union(NULL, compiler));
  Expect.equals(potentialArray,
                potentialArray.union(FIXED_ARRAY, compiler));

  Expect.equals(potentialString,
                potentialString.union(CONFLICTING, compiler));
  Expect.equals(UNKNOWN,
                potentialString.union(UNKNOWN, compiler));
  Expect.equals(UNKNOWN,
                potentialString.union(BOOLEAN, compiler));
  Expect.equals(UNKNOWN,
                potentialString.union(NUMBER, compiler));
  Expect.equals(UNKNOWN,
                potentialString.union(INTEGER, compiler));
  Expect.equals(UNKNOWN,
                potentialString.union(DOUBLE, compiler));
  Expect.equals(UNKNOWN,
                potentialString.union(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(potentialString,
                potentialString.union(STRING, compiler));
  Expect.equals(UNKNOWN,
                potentialString.union(READABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                potentialString.union(MUTABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                potentialString.union(EXTENDABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                potentialString.union(nonPrimitive1, compiler));
  Expect.equals(UNKNOWN,
                potentialString.union(nonPrimitive2, compiler));
  Expect.equals(UNKNOWN,
                potentialString.union(potentialArray, compiler));
  Expect.equals(potentialString,
                potentialString.union(potentialString, compiler));
  Expect.equals(UNKNOWN,
                potentialString.union(BOOLEAN_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                potentialString.union(NUMBER_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                potentialString.union(INTEGER_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                potentialString.union(DOUBLE_OR_NULL, compiler));
  Expect.equals(potentialString,
                potentialString.union(STRING_OR_NULL, compiler));
  Expect.equals(potentialString,
                potentialString.union(NULL, compiler));
  Expect.equals(UNKNOWN,
                potentialString.union(FIXED_ARRAY, compiler));

  Expect.equals(BOOLEAN_OR_NULL,
                BOOLEAN_OR_NULL.union(CONFLICTING, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN_OR_NULL.union(UNKNOWN, compiler));
  Expect.equals(BOOLEAN_OR_NULL,
                BOOLEAN_OR_NULL.union(BOOLEAN, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN_OR_NULL.union(NUMBER, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN_OR_NULL.union(INTEGER, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN_OR_NULL.union(DOUBLE, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN_OR_NULL.union(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN_OR_NULL.union(STRING, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN_OR_NULL.union(READABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN_OR_NULL.union(MUTABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN_OR_NULL.union(EXTENDABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN_OR_NULL.union(nonPrimitive1, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN_OR_NULL.union(nonPrimitive2, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN_OR_NULL.union(potentialArray, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN_OR_NULL.union(potentialString, compiler));
  Expect.equals(BOOLEAN_OR_NULL,
                BOOLEAN_OR_NULL.union(BOOLEAN_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN_OR_NULL.union(NUMBER_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN_OR_NULL.union(INTEGER_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN_OR_NULL.union(DOUBLE_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN_OR_NULL.union(STRING_OR_NULL, compiler));
  Expect.equals(BOOLEAN_OR_NULL,
                BOOLEAN_OR_NULL.union(NULL, compiler));
  Expect.equals(UNKNOWN,
                BOOLEAN_OR_NULL.union(FIXED_ARRAY, compiler));

  Expect.equals(NUMBER_OR_NULL,
                NUMBER_OR_NULL.union(CONFLICTING, compiler));
  Expect.equals(UNKNOWN,
                NUMBER_OR_NULL.union(UNKNOWN, compiler));
  Expect.equals(UNKNOWN,
                NUMBER_OR_NULL.union(BOOLEAN, compiler));
  Expect.equals(NUMBER_OR_NULL,
                NUMBER_OR_NULL.union(NUMBER, compiler));
  Expect.equals(NUMBER_OR_NULL,
                NUMBER_OR_NULL.union(INTEGER, compiler));
  Expect.equals(NUMBER_OR_NULL,
                NUMBER_OR_NULL.union(DOUBLE, compiler));
  Expect.equals(UNKNOWN,
                NUMBER_OR_NULL.union(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(UNKNOWN,
                NUMBER_OR_NULL.union(STRING, compiler));
  Expect.equals(UNKNOWN,
                NUMBER_OR_NULL.union(READABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                NUMBER_OR_NULL.union(MUTABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                NUMBER_OR_NULL.union(EXTENDABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                NUMBER_OR_NULL.union(nonPrimitive1, compiler));
  Expect.equals(UNKNOWN,
                NUMBER_OR_NULL.union(nonPrimitive2, compiler));
  Expect.equals(UNKNOWN,
                NUMBER_OR_NULL.union(potentialArray, compiler));
  Expect.equals(UNKNOWN,
                NUMBER_OR_NULL.union(potentialString, compiler));
  Expect.equals(UNKNOWN,
                NUMBER_OR_NULL.union(BOOLEAN_OR_NULL, compiler));
  Expect.equals(NUMBER_OR_NULL,
                NUMBER_OR_NULL.union(NUMBER_OR_NULL, compiler));
  Expect.equals(NUMBER_OR_NULL,
                NUMBER_OR_NULL.union(INTEGER_OR_NULL, compiler));
  Expect.equals(NUMBER_OR_NULL,
                NUMBER_OR_NULL.union(DOUBLE_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                NUMBER_OR_NULL.union(STRING_OR_NULL, compiler));
  Expect.equals(NUMBER_OR_NULL,
                NUMBER_OR_NULL.union(NULL, compiler));
  Expect.equals(UNKNOWN,
                NUMBER_OR_NULL.union(FIXED_ARRAY, compiler));

  Expect.equals(INTEGER_OR_NULL,
                INTEGER_OR_NULL.union(CONFLICTING, compiler));
  Expect.equals(UNKNOWN,
                INTEGER_OR_NULL.union(UNKNOWN, compiler));
  Expect.equals(UNKNOWN,
                INTEGER_OR_NULL.union(BOOLEAN, compiler));
  Expect.equals(NUMBER_OR_NULL,
                INTEGER_OR_NULL.union(NUMBER, compiler));
  Expect.equals(INTEGER_OR_NULL,
                INTEGER_OR_NULL.union(INTEGER, compiler));
  Expect.equals(NUMBER_OR_NULL,
                INTEGER_OR_NULL.union(DOUBLE, compiler));
  Expect.equals(UNKNOWN,
                INTEGER_OR_NULL.union(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(UNKNOWN,
                INTEGER_OR_NULL.union(STRING, compiler));
  Expect.equals(UNKNOWN,
                INTEGER_OR_NULL.union(READABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                INTEGER_OR_NULL.union(MUTABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                INTEGER_OR_NULL.union(EXTENDABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                INTEGER_OR_NULL.union(nonPrimitive1, compiler));
  Expect.equals(UNKNOWN,
                INTEGER_OR_NULL.union(nonPrimitive2, compiler));
  Expect.equals(UNKNOWN,
                INTEGER_OR_NULL.union(potentialArray, compiler));
  Expect.equals(UNKNOWN,
                INTEGER_OR_NULL.union(potentialString, compiler));
  Expect.equals(UNKNOWN,
                INTEGER_OR_NULL.union(BOOLEAN_OR_NULL, compiler));
  Expect.equals(NUMBER_OR_NULL,
                INTEGER_OR_NULL.union(NUMBER_OR_NULL, compiler));
  Expect.equals(INTEGER_OR_NULL,
                INTEGER_OR_NULL.union(INTEGER_OR_NULL, compiler));
  Expect.equals(NUMBER_OR_NULL,
                INTEGER_OR_NULL.union(DOUBLE_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                INTEGER_OR_NULL.union(STRING_OR_NULL, compiler));
  Expect.equals(INTEGER_OR_NULL,
                INTEGER_OR_NULL.union(NULL, compiler));
  Expect.equals(UNKNOWN,
                INTEGER_OR_NULL.union(FIXED_ARRAY, compiler));

  Expect.equals(DOUBLE_OR_NULL,
                DOUBLE_OR_NULL.union(CONFLICTING, compiler));
  Expect.equals(UNKNOWN,
                DOUBLE_OR_NULL.union(UNKNOWN, compiler));
  Expect.equals(UNKNOWN,
                DOUBLE_OR_NULL.union(BOOLEAN, compiler));
  Expect.equals(NUMBER_OR_NULL,
                DOUBLE_OR_NULL.union(NUMBER, compiler));
  Expect.equals(NUMBER_OR_NULL,
                DOUBLE_OR_NULL.union(INTEGER, compiler));
  Expect.equals(DOUBLE_OR_NULL,
                DOUBLE_OR_NULL.union(DOUBLE, compiler));
  Expect.equals(UNKNOWN,
                DOUBLE_OR_NULL.union(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(UNKNOWN,
                DOUBLE_OR_NULL.union(STRING, compiler));
  Expect.equals(UNKNOWN,
                DOUBLE_OR_NULL.union(READABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                DOUBLE_OR_NULL.union(MUTABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                DOUBLE_OR_NULL.union(EXTENDABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                DOUBLE_OR_NULL.union(nonPrimitive1, compiler));
  Expect.equals(UNKNOWN,
                DOUBLE_OR_NULL.union(nonPrimitive2, compiler));
  Expect.equals(UNKNOWN,
                DOUBLE_OR_NULL.union(potentialArray, compiler));
  Expect.equals(UNKNOWN,
                DOUBLE_OR_NULL.union(potentialString, compiler));
  Expect.equals(UNKNOWN,
                DOUBLE_OR_NULL.union(BOOLEAN_OR_NULL, compiler));
  Expect.equals(NUMBER_OR_NULL,
                DOUBLE_OR_NULL.union(NUMBER_OR_NULL, compiler));
  Expect.equals(NUMBER_OR_NULL,
                DOUBLE_OR_NULL.union(INTEGER_OR_NULL, compiler));
  Expect.equals(DOUBLE_OR_NULL,
                DOUBLE_OR_NULL.union(DOUBLE_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                DOUBLE_OR_NULL.union(STRING_OR_NULL, compiler));
  Expect.equals(DOUBLE_OR_NULL,
                DOUBLE_OR_NULL.union(NULL, compiler));
  Expect.equals(UNKNOWN,
                DOUBLE_OR_NULL.union(FIXED_ARRAY, compiler));

  Expect.equals(STRING_OR_NULL,
                STRING_OR_NULL.union(CONFLICTING, compiler));
  Expect.equals(UNKNOWN,
                STRING_OR_NULL.union(UNKNOWN, compiler));
  Expect.equals(UNKNOWN,
                STRING_OR_NULL.union(BOOLEAN, compiler));
  Expect.equals(UNKNOWN,
                STRING_OR_NULL.union(NUMBER, compiler));
  Expect.equals(UNKNOWN,
                STRING_OR_NULL.union(INTEGER, compiler));
  Expect.equals(UNKNOWN,
                STRING_OR_NULL.union(DOUBLE, compiler));
  Expect.equals(UNKNOWN,
                STRING_OR_NULL.union(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(STRING_OR_NULL,
                STRING_OR_NULL.union(STRING, compiler));
  Expect.equals(UNKNOWN,
                STRING_OR_NULL.union(READABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                STRING_OR_NULL.union(MUTABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                STRING_OR_NULL.union(EXTENDABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                STRING_OR_NULL.union(nonPrimitive1, compiler));
  Expect.equals(UNKNOWN,
                STRING_OR_NULL.union(nonPrimitive2, compiler));
  Expect.equals(UNKNOWN,
                STRING_OR_NULL.union(potentialArray, compiler));
  Expect.equals(potentialString,
                STRING_OR_NULL.union(potentialString, compiler));
  Expect.equals(UNKNOWN,
                STRING_OR_NULL.union(BOOLEAN_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                STRING_OR_NULL.union(NUMBER_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                STRING_OR_NULL.union(INTEGER_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                STRING_OR_NULL.union(DOUBLE_OR_NULL, compiler));
  Expect.equals(STRING_OR_NULL,
                STRING_OR_NULL.union(STRING_OR_NULL, compiler));
  Expect.equals(STRING_OR_NULL,
                STRING_OR_NULL.union(NULL, compiler));
  Expect.equals(UNKNOWN,
                STRING_OR_NULL.union(FIXED_ARRAY, compiler));

  Expect.equals(NULL,
                NULL.union(CONFLICTING, compiler));
  Expect.equals(UNKNOWN,
                NULL.union(UNKNOWN, compiler));
  Expect.equals(BOOLEAN_OR_NULL,
                NULL.union(BOOLEAN, compiler));
  Expect.equals(NUMBER_OR_NULL,
                NULL.union(NUMBER, compiler));
  Expect.equals(INTEGER_OR_NULL,
                NULL.union(INTEGER, compiler));
  Expect.equals(DOUBLE_OR_NULL,
                NULL.union(DOUBLE, compiler));
  Expect.equals(UNKNOWN,
                NULL.union(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(STRING_OR_NULL,
                NULL.union(STRING, compiler));
  Expect.equals(jsArrayOrNull,
                NULL.union(READABLE_ARRAY, compiler));
  Expect.equals(jsArrayOrNull,
                NULL.union(MUTABLE_ARRAY, compiler));
  Expect.equals(jsArrayOrNull,
                NULL.union(EXTENDABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                NULL.union(nonPrimitive1, compiler));
  Expect.equals(UNKNOWN,
                NULL.union(nonPrimitive2, compiler));
  Expect.equals(potentialArray,
                NULL.union(potentialArray, compiler));
  Expect.equals(potentialString,
                NULL.union(potentialString, compiler));
  Expect.equals(BOOLEAN_OR_NULL,
                NULL.union(BOOLEAN_OR_NULL, compiler));
  Expect.equals(NUMBER_OR_NULL,
                NULL.union(NUMBER_OR_NULL, compiler));
  Expect.equals(INTEGER_OR_NULL,
                NULL.union(INTEGER_OR_NULL, compiler));
  Expect.equals(DOUBLE_OR_NULL,
                NULL.union(DOUBLE_OR_NULL, compiler));
  Expect.equals(STRING_OR_NULL,
                NULL.union(STRING_OR_NULL, compiler));
  Expect.equals(NULL,
                NULL.union(NULL, compiler));
  Expect.equals(jsArrayOrNull,
                NULL.union(FIXED_ARRAY, compiler));

  Expect.equals(FIXED_ARRAY,
                FIXED_ARRAY.union(CONFLICTING, compiler));
  Expect.equals(UNKNOWN,
                FIXED_ARRAY.union(UNKNOWN, compiler));
  Expect.equals(UNKNOWN,
                FIXED_ARRAY.union(BOOLEAN, compiler));
  Expect.equals(UNKNOWN,
                FIXED_ARRAY.union(NUMBER, compiler));
  Expect.equals(UNKNOWN,
                FIXED_ARRAY.union(INTEGER, compiler));
  Expect.equals(UNKNOWN,
                FIXED_ARRAY.union(DOUBLE, compiler));
  Expect.equals(INDEXABLE_PRIMITIVE,
                FIXED_ARRAY.union(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(INDEXABLE_PRIMITIVE,
                FIXED_ARRAY.union(STRING, compiler));
  Expect.equals(READABLE_ARRAY,
                FIXED_ARRAY.union(READABLE_ARRAY, compiler));
  Expect.equals(MUTABLE_ARRAY,
                FIXED_ARRAY.union(MUTABLE_ARRAY, compiler));
  Expect.equals(MUTABLE_ARRAY,
                FIXED_ARRAY.union(EXTENDABLE_ARRAY, compiler));
  Expect.equals(UNKNOWN,
                FIXED_ARRAY.union(nonPrimitive1, compiler));
  Expect.equals(UNKNOWN,
                FIXED_ARRAY.union(nonPrimitive2, compiler));
  Expect.equals(potentialArray,
                FIXED_ARRAY.union(potentialArray, compiler));
  Expect.equals(UNKNOWN,
                FIXED_ARRAY.union(potentialString, compiler));
  Expect.equals(UNKNOWN,
                FIXED_ARRAY.union(BOOLEAN_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                FIXED_ARRAY.union(NUMBER_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                FIXED_ARRAY.union(INTEGER_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                FIXED_ARRAY.union(DOUBLE_OR_NULL, compiler));
  Expect.equals(UNKNOWN,
                FIXED_ARRAY.union(STRING_OR_NULL, compiler));
  Expect.equals(jsArrayOrNull,
                FIXED_ARRAY.union(NULL, compiler));
  Expect.equals(FIXED_ARRAY,
                FIXED_ARRAY.union(FIXED_ARRAY, compiler));
}

void testIntersection(MockCompiler compiler) {
  Expect.equals(CONFLICTING,
                CONFLICTING.intersection(CONFLICTING, compiler));
  Expect.equals(CONFLICTING,
                CONFLICTING.intersection(UNKNOWN, compiler));
  Expect.equals(CONFLICTING,
                CONFLICTING.intersection(BOOLEAN, compiler));
  Expect.equals(CONFLICTING,
                CONFLICTING.intersection(NUMBER, compiler));
  Expect.equals(CONFLICTING,
                CONFLICTING.intersection(INTEGER, compiler));
  Expect.equals(CONFLICTING,
                CONFLICTING.intersection(DOUBLE, compiler));
  Expect.equals(CONFLICTING,
                CONFLICTING.intersection(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(CONFLICTING,
                CONFLICTING.intersection(STRING, compiler));
  Expect.equals(CONFLICTING,
                CONFLICTING.intersection(READABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                CONFLICTING.intersection(MUTABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                CONFLICTING.intersection(EXTENDABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                CONFLICTING.intersection(nonPrimitive1, compiler));
  Expect.equals(CONFLICTING,
                CONFLICTING.intersection(nonPrimitive2, compiler));
  Expect.equals(CONFLICTING,
                CONFLICTING.intersection(potentialArray, compiler));
  Expect.equals(CONFLICTING,
                CONFLICTING.intersection(potentialString, compiler));
  Expect.equals(CONFLICTING,
                CONFLICTING.intersection(BOOLEAN_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                CONFLICTING.intersection(NUMBER_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                CONFLICTING.intersection(INTEGER_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                CONFLICTING.intersection(DOUBLE_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                CONFLICTING.intersection(STRING_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                CONFLICTING.intersection(NULL, compiler));
  Expect.equals(CONFLICTING,
                CONFLICTING.intersection(FIXED_ARRAY, compiler));

  Expect.equals(CONFLICTING,
                UNKNOWN.intersection(CONFLICTING, compiler));
  Expect.equals(UNKNOWN,
                UNKNOWN.intersection(UNKNOWN, compiler));
  Expect.equals(BOOLEAN,
                UNKNOWN.intersection(BOOLEAN, compiler));
  Expect.equals(NUMBER,
                UNKNOWN.intersection(NUMBER, compiler));
  Expect.equals(INTEGER,
                UNKNOWN.intersection(INTEGER, compiler));
  Expect.equals(DOUBLE,
                UNKNOWN.intersection(DOUBLE, compiler));
  Expect.equals(INDEXABLE_PRIMITIVE,
                UNKNOWN.intersection(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(STRING,
                UNKNOWN.intersection(STRING, compiler));
  Expect.equals(READABLE_ARRAY,
                UNKNOWN.intersection(READABLE_ARRAY, compiler));
  Expect.equals(MUTABLE_ARRAY,
                UNKNOWN.intersection(MUTABLE_ARRAY, compiler));
  Expect.equals(EXTENDABLE_ARRAY,
                UNKNOWN.intersection(EXTENDABLE_ARRAY, compiler));
  Expect.equals(nonPrimitive1,
                UNKNOWN.intersection(nonPrimitive1, compiler));
  Expect.equals(nonPrimitive2,
                UNKNOWN.intersection(nonPrimitive2, compiler));
  Expect.equals(potentialArray,
                UNKNOWN.intersection(potentialArray, compiler));
  Expect.equals(potentialString,
                UNKNOWN.intersection(potentialString, compiler));
  Expect.equals(BOOLEAN_OR_NULL,
                UNKNOWN.intersection(BOOLEAN_OR_NULL, compiler));
  Expect.equals(NUMBER_OR_NULL,
                UNKNOWN.intersection(NUMBER_OR_NULL, compiler));
  Expect.equals(INTEGER_OR_NULL,
                UNKNOWN.intersection(INTEGER_OR_NULL, compiler));
  Expect.equals(DOUBLE_OR_NULL,
                UNKNOWN.intersection(DOUBLE_OR_NULL, compiler));
  Expect.equals(STRING_OR_NULL,
                UNKNOWN.intersection(STRING_OR_NULL, compiler));
  Expect.equals(NULL,
                UNKNOWN.intersection(NULL, compiler));
  Expect.equals(FIXED_ARRAY,
                UNKNOWN.intersection(FIXED_ARRAY, compiler));

  Expect.equals(CONFLICTING,
                BOOLEAN.intersection(CONFLICTING, compiler));
  Expect.equals(BOOLEAN,
                BOOLEAN.intersection(UNKNOWN, compiler));
  Expect.equals(BOOLEAN,
                BOOLEAN.intersection(BOOLEAN, compiler));
  Expect.equals(CONFLICTING,
                BOOLEAN.intersection(NUMBER, compiler));
  Expect.equals(CONFLICTING,
                BOOLEAN.intersection(INTEGER, compiler));
  Expect.equals(CONFLICTING,
                BOOLEAN.intersection(DOUBLE, compiler));
  Expect.equals(CONFLICTING,
                BOOLEAN.intersection(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(CONFLICTING,
                BOOLEAN.intersection(STRING, compiler));
  Expect.equals(CONFLICTING,
                BOOLEAN.intersection(READABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                BOOLEAN.intersection(MUTABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                BOOLEAN.intersection(EXTENDABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                BOOLEAN.intersection(nonPrimitive1, compiler));
  Expect.equals(CONFLICTING,
                BOOLEAN.intersection(nonPrimitive2, compiler));
  Expect.equals(CONFLICTING,
                BOOLEAN.intersection(potentialArray, compiler));
  Expect.equals(CONFLICTING,
                BOOLEAN.intersection(potentialString, compiler));
  Expect.equals(BOOLEAN,
                BOOLEAN.intersection(BOOLEAN_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                BOOLEAN.intersection(NUMBER_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                BOOLEAN.intersection(INTEGER_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                BOOLEAN.intersection(DOUBLE_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                BOOLEAN.intersection(STRING_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                BOOLEAN.intersection(NULL, compiler));
  Expect.equals(CONFLICTING,
                BOOLEAN.intersection(FIXED_ARRAY, compiler));

  Expect.equals(CONFLICTING,
                NUMBER.intersection(CONFLICTING, compiler));
  Expect.equals(NUMBER,
                NUMBER.intersection(UNKNOWN, compiler));
  Expect.equals(CONFLICTING,
                NUMBER.intersection(BOOLEAN, compiler));
  Expect.equals(NUMBER,
                NUMBER.intersection(NUMBER, compiler));
  Expect.equals(INTEGER,
                NUMBER.intersection(INTEGER, compiler));
  Expect.equals(DOUBLE,
                NUMBER.intersection(DOUBLE, compiler));
  Expect.equals(CONFLICTING,
                NUMBER.intersection(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(CONFLICTING,
                NUMBER.intersection(STRING, compiler));
  Expect.equals(CONFLICTING,
                NUMBER.intersection(READABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                NUMBER.intersection(MUTABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                NUMBER.intersection(EXTENDABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                NUMBER.intersection(nonPrimitive1, compiler));
  Expect.equals(CONFLICTING,
                NUMBER.intersection(nonPrimitive2, compiler));
  Expect.equals(CONFLICTING,
                NUMBER.intersection(potentialArray, compiler));
  Expect.equals(CONFLICTING,
                NUMBER.intersection(potentialString, compiler));
  Expect.equals(CONFLICTING,
                NUMBER.intersection(BOOLEAN_OR_NULL, compiler));
  Expect.equals(NUMBER,
                NUMBER.intersection(NUMBER_OR_NULL, compiler));
  Expect.equals(INTEGER,
                NUMBER.intersection(INTEGER_OR_NULL, compiler));
  Expect.equals(DOUBLE,
                NUMBER.intersection(DOUBLE_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                NUMBER.intersection(STRING_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                NUMBER.intersection(NULL, compiler));
  Expect.equals(CONFLICTING,
                NUMBER.intersection(FIXED_ARRAY, compiler));

  Expect.equals(CONFLICTING,
                INTEGER.intersection(CONFLICTING, compiler));
  Expect.equals(INTEGER,
                INTEGER.intersection(UNKNOWN, compiler));
  Expect.equals(CONFLICTING,
                INTEGER.intersection(BOOLEAN, compiler));
  Expect.equals(INTEGER,
                INTEGER.intersection(NUMBER, compiler));
  Expect.equals(INTEGER,
                INTEGER.intersection(INTEGER, compiler));
  Expect.equals(CONFLICTING,
                INTEGER.intersection(DOUBLE, compiler));
  Expect.equals(CONFLICTING,
                INTEGER.intersection(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(CONFLICTING,
                INTEGER.intersection(STRING, compiler));
  Expect.equals(CONFLICTING,
                INTEGER.intersection(READABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                INTEGER.intersection(MUTABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                INTEGER.intersection(EXTENDABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                INTEGER.intersection(nonPrimitive1, compiler));
  Expect.equals(CONFLICTING,
                INTEGER.intersection(nonPrimitive2, compiler));
  Expect.equals(CONFLICTING,
                INTEGER.intersection(potentialArray, compiler));
  Expect.equals(CONFLICTING,
                INTEGER.intersection(potentialString, compiler));
  Expect.equals(CONFLICTING,
                INTEGER.intersection(BOOLEAN_OR_NULL, compiler));
  Expect.equals(INTEGER,
                INTEGER.intersection(NUMBER_OR_NULL, compiler));
  Expect.equals(INTEGER,
                INTEGER.intersection(INTEGER_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                INTEGER.intersection(DOUBLE_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                INTEGER.intersection(STRING_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                INTEGER.intersection(NULL, compiler));
  Expect.equals(CONFLICTING,
                INTEGER.intersection(FIXED_ARRAY, compiler));

  Expect.equals(CONFLICTING,
                DOUBLE.intersection(CONFLICTING, compiler));
  Expect.equals(DOUBLE,
                DOUBLE.intersection(UNKNOWN, compiler));
  Expect.equals(CONFLICTING,
                DOUBLE.intersection(BOOLEAN, compiler));
  Expect.equals(DOUBLE,
                DOUBLE.intersection(NUMBER, compiler));
  Expect.equals(CONFLICTING,
                DOUBLE.intersection(INTEGER, compiler));
  Expect.equals(DOUBLE,
                DOUBLE.intersection(DOUBLE, compiler));
  Expect.equals(CONFLICTING,
                DOUBLE.intersection(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(CONFLICTING,
                DOUBLE.intersection(STRING, compiler));
  Expect.equals(CONFLICTING,
                DOUBLE.intersection(READABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                DOUBLE.intersection(MUTABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                DOUBLE.intersection(EXTENDABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                DOUBLE.intersection(nonPrimitive1, compiler));
  Expect.equals(CONFLICTING,
                DOUBLE.intersection(nonPrimitive2, compiler));
  Expect.equals(CONFLICTING,
                DOUBLE.intersection(potentialArray, compiler));
  Expect.equals(CONFLICTING,
                DOUBLE.intersection(potentialString, compiler));
  Expect.equals(CONFLICTING,
                DOUBLE.intersection(BOOLEAN_OR_NULL, compiler));
  Expect.equals(DOUBLE,
                DOUBLE.intersection(NUMBER_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                DOUBLE.intersection(INTEGER_OR_NULL, compiler));
  Expect.equals(DOUBLE,
                DOUBLE.intersection(DOUBLE_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                DOUBLE.intersection(STRING_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                DOUBLE.intersection(NULL, compiler));
  Expect.equals(CONFLICTING,
                DOUBLE.intersection(FIXED_ARRAY, compiler));

  Expect.equals(CONFLICTING,
                INDEXABLE_PRIMITIVE.intersection(CONFLICTING, compiler));
  Expect.equals(INDEXABLE_PRIMITIVE,
                INDEXABLE_PRIMITIVE.intersection(UNKNOWN, compiler));
  Expect.equals(CONFLICTING,
                INDEXABLE_PRIMITIVE.intersection(BOOLEAN, compiler));
  Expect.equals(CONFLICTING,
                INDEXABLE_PRIMITIVE.intersection(NUMBER, compiler));
  Expect.equals(CONFLICTING,
                INDEXABLE_PRIMITIVE.intersection(INTEGER, compiler));
  Expect.equals(CONFLICTING,
                INDEXABLE_PRIMITIVE.intersection(DOUBLE, compiler));
  Expect.equals(INDEXABLE_PRIMITIVE,
                INDEXABLE_PRIMITIVE.intersection(INDEXABLE_PRIMITIVE,
                compiler));
  Expect.equals(STRING,
                INDEXABLE_PRIMITIVE.intersection(STRING, compiler));
  Expect.equals(READABLE_ARRAY,
                INDEXABLE_PRIMITIVE.intersection(READABLE_ARRAY,
                compiler));
  Expect.equals(MUTABLE_ARRAY,
                INDEXABLE_PRIMITIVE.intersection(MUTABLE_ARRAY,
                compiler));
  Expect.equals(EXTENDABLE_ARRAY,
                INDEXABLE_PRIMITIVE.intersection(EXTENDABLE_ARRAY,
                compiler));
  Expect.equals(CONFLICTING,
                INDEXABLE_PRIMITIVE.intersection(nonPrimitive1, compiler));
  Expect.equals(CONFLICTING,
                INDEXABLE_PRIMITIVE.intersection(nonPrimitive2, compiler));
  Expect.equals(READABLE_ARRAY,
                INDEXABLE_PRIMITIVE.intersection(potentialArray,
                compiler));
  Expect.equals(STRING,
                INDEXABLE_PRIMITIVE.intersection(potentialString,
                compiler));
  Expect.equals(CONFLICTING,
                INDEXABLE_PRIMITIVE.intersection(BOOLEAN_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                INDEXABLE_PRIMITIVE.intersection(NUMBER_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                INDEXABLE_PRIMITIVE.intersection(INTEGER_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                INDEXABLE_PRIMITIVE.intersection(DOUBLE_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                INDEXABLE_PRIMITIVE.intersection(STRING_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                INDEXABLE_PRIMITIVE.intersection(NULL, compiler));
  Expect.equals(FIXED_ARRAY,
                INDEXABLE_PRIMITIVE.intersection(FIXED_ARRAY, compiler));

  Expect.equals(CONFLICTING,
                STRING.intersection(CONFLICTING, compiler));
  Expect.equals(STRING,
                STRING.intersection(UNKNOWN, compiler));
  Expect.equals(CONFLICTING,
                STRING.intersection(BOOLEAN, compiler));
  Expect.equals(CONFLICTING,
                STRING.intersection(NUMBER, compiler));
  Expect.equals(CONFLICTING,
                STRING.intersection(INTEGER, compiler));
  Expect.equals(CONFLICTING,
                STRING.intersection(DOUBLE, compiler));
  Expect.equals(STRING,
                STRING.intersection(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(STRING,
                STRING.intersection(STRING, compiler));
  Expect.equals(CONFLICTING,
                STRING.intersection(READABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                STRING.intersection(MUTABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                STRING.intersection(EXTENDABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                STRING.intersection(nonPrimitive1, compiler));
  Expect.equals(CONFLICTING,
                STRING.intersection(nonPrimitive2, compiler));
  Expect.equals(CONFLICTING,
                STRING.intersection(potentialArray, compiler));
  Expect.equals(STRING,
                STRING.intersection(potentialString, compiler));
  Expect.equals(CONFLICTING,
                STRING.intersection(BOOLEAN_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                STRING.intersection(NUMBER_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                STRING.intersection(INTEGER_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                STRING.intersection(DOUBLE_OR_NULL, compiler));
  Expect.equals(STRING,
                STRING.intersection(STRING_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                STRING.intersection(NULL, compiler));
  Expect.equals(CONFLICTING,
                STRING.intersection(FIXED_ARRAY, compiler));

  Expect.equals(CONFLICTING,
                READABLE_ARRAY.intersection(CONFLICTING, compiler));
  Expect.equals(READABLE_ARRAY,
                READABLE_ARRAY.intersection(UNKNOWN, compiler));
  Expect.equals(CONFLICTING,
                READABLE_ARRAY.intersection(BOOLEAN, compiler));
  Expect.equals(CONFLICTING,
                READABLE_ARRAY.intersection(NUMBER, compiler));
  Expect.equals(CONFLICTING,
                READABLE_ARRAY.intersection(INTEGER, compiler));
  Expect.equals(CONFLICTING,
                READABLE_ARRAY.intersection(DOUBLE, compiler));
  Expect.equals(READABLE_ARRAY,
                READABLE_ARRAY.intersection(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(CONFLICTING,
                READABLE_ARRAY.intersection(STRING, compiler));
  Expect.equals(READABLE_ARRAY,
                READABLE_ARRAY.intersection(READABLE_ARRAY, compiler));
  Expect.equals(MUTABLE_ARRAY,
                READABLE_ARRAY.intersection(MUTABLE_ARRAY, compiler));
  Expect.equals(EXTENDABLE_ARRAY,
                READABLE_ARRAY.intersection(EXTENDABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                READABLE_ARRAY.intersection(nonPrimitive1, compiler));
  Expect.equals(CONFLICTING,
                READABLE_ARRAY.intersection(nonPrimitive2, compiler));
  Expect.equals(READABLE_ARRAY,
                READABLE_ARRAY.intersection(potentialArray, compiler));
  Expect.equals(CONFLICTING,
                READABLE_ARRAY.intersection(potentialString, compiler));
  Expect.equals(CONFLICTING,
                READABLE_ARRAY.intersection(BOOLEAN_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                READABLE_ARRAY.intersection(NUMBER_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                READABLE_ARRAY.intersection(INTEGER_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                READABLE_ARRAY.intersection(DOUBLE_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                READABLE_ARRAY.intersection(STRING_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                READABLE_ARRAY.intersection(NULL, compiler));
  Expect.equals(FIXED_ARRAY,
                READABLE_ARRAY.intersection(FIXED_ARRAY, compiler));

  Expect.equals(CONFLICTING,
                MUTABLE_ARRAY.intersection(CONFLICTING, compiler));
  Expect.equals(MUTABLE_ARRAY,
                MUTABLE_ARRAY.intersection(UNKNOWN, compiler));
  Expect.equals(CONFLICTING,
                MUTABLE_ARRAY.intersection(BOOLEAN, compiler));
  Expect.equals(CONFLICTING,
                MUTABLE_ARRAY.intersection(NUMBER, compiler));
  Expect.equals(CONFLICTING,
                MUTABLE_ARRAY.intersection(INTEGER, compiler));
  Expect.equals(CONFLICTING,
                MUTABLE_ARRAY.intersection(DOUBLE, compiler));
  Expect.equals(MUTABLE_ARRAY,
                MUTABLE_ARRAY.intersection(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(CONFLICTING,
                MUTABLE_ARRAY.intersection(STRING, compiler));
  Expect.equals(MUTABLE_ARRAY,
                MUTABLE_ARRAY.intersection(READABLE_ARRAY, compiler));
  Expect.equals(MUTABLE_ARRAY,
                MUTABLE_ARRAY.intersection(MUTABLE_ARRAY, compiler));
  Expect.equals(EXTENDABLE_ARRAY,
                MUTABLE_ARRAY.intersection(EXTENDABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                MUTABLE_ARRAY.intersection(nonPrimitive1, compiler));
  Expect.equals(CONFLICTING,
                MUTABLE_ARRAY.intersection(nonPrimitive2, compiler));
  Expect.equals(MUTABLE_ARRAY,
                MUTABLE_ARRAY.intersection(potentialArray, compiler));
  Expect.equals(CONFLICTING,
                MUTABLE_ARRAY.intersection(potentialString, compiler));
  Expect.equals(CONFLICTING,
                MUTABLE_ARRAY.intersection(BOOLEAN_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                MUTABLE_ARRAY.intersection(NUMBER_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                MUTABLE_ARRAY.intersection(INTEGER_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                MUTABLE_ARRAY.intersection(DOUBLE_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                MUTABLE_ARRAY.intersection(STRING_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                MUTABLE_ARRAY.intersection(NULL, compiler));
  Expect.equals(FIXED_ARRAY,
                MUTABLE_ARRAY.intersection(FIXED_ARRAY, compiler));

  Expect.equals(CONFLICTING,
                EXTENDABLE_ARRAY.intersection(CONFLICTING, compiler));
  Expect.equals(EXTENDABLE_ARRAY,
                EXTENDABLE_ARRAY.intersection(UNKNOWN, compiler));
  Expect.equals(CONFLICTING,
                EXTENDABLE_ARRAY.intersection(BOOLEAN, compiler));
  Expect.equals(CONFLICTING,
                EXTENDABLE_ARRAY.intersection(NUMBER, compiler));
  Expect.equals(CONFLICTING,
                EXTENDABLE_ARRAY.intersection(INTEGER, compiler));
  Expect.equals(CONFLICTING,
                EXTENDABLE_ARRAY.intersection(DOUBLE, compiler));
  Expect.equals(EXTENDABLE_ARRAY,
                EXTENDABLE_ARRAY.intersection(INDEXABLE_PRIMITIVE,
                compiler));
  Expect.equals(CONFLICTING,
                EXTENDABLE_ARRAY.intersection(STRING, compiler));
  Expect.equals(EXTENDABLE_ARRAY,
                EXTENDABLE_ARRAY.intersection(READABLE_ARRAY,
                compiler));
  Expect.equals(EXTENDABLE_ARRAY,
                EXTENDABLE_ARRAY.intersection(MUTABLE_ARRAY, compiler));
  Expect.equals(EXTENDABLE_ARRAY,
                EXTENDABLE_ARRAY.intersection(EXTENDABLE_ARRAY,
                compiler));
  Expect.equals(CONFLICTING,
                EXTENDABLE_ARRAY.intersection(nonPrimitive1, compiler));
  Expect.equals(CONFLICTING,
                EXTENDABLE_ARRAY.intersection(nonPrimitive2, compiler));
  Expect.equals(EXTENDABLE_ARRAY,
                EXTENDABLE_ARRAY.intersection(potentialArray,
                compiler));
  Expect.equals(CONFLICTING,
                EXTENDABLE_ARRAY.intersection(potentialString, compiler));
  Expect.equals(CONFLICTING,
                EXTENDABLE_ARRAY.intersection(BOOLEAN_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                EXTENDABLE_ARRAY.intersection(NUMBER_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                EXTENDABLE_ARRAY.intersection(INTEGER_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                EXTENDABLE_ARRAY.intersection(DOUBLE_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                EXTENDABLE_ARRAY.intersection(STRING_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                EXTENDABLE_ARRAY.intersection(NULL, compiler));
  Expect.equals(CONFLICTING,
                EXTENDABLE_ARRAY.intersection(FIXED_ARRAY, compiler));

  Expect.equals(CONFLICTING,
                nonPrimitive1.intersection(CONFLICTING, compiler));
  Expect.equals(nonPrimitive1,
                nonPrimitive1.intersection(UNKNOWN, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive1.intersection(BOOLEAN, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive1.intersection(NUMBER, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive1.intersection(INTEGER, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive1.intersection(DOUBLE, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive1.intersection(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive1.intersection(STRING, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive1.intersection(READABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive1.intersection(MUTABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive1.intersection(EXTENDABLE_ARRAY, compiler));
  Expect.equals(nonPrimitive1,
                nonPrimitive1.intersection(nonPrimitive1, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive1.intersection(nonPrimitive2, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive1.intersection(potentialArray, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive1.intersection(potentialString, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive1.intersection(BOOLEAN_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive1.intersection(NUMBER_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive1.intersection(INTEGER_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive1.intersection(DOUBLE_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive1.intersection(STRING_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive1.intersection(NULL, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive1.intersection(FIXED_ARRAY, compiler));

  Expect.equals(CONFLICTING,
                nonPrimitive2.intersection(CONFLICTING, compiler));
  Expect.equals(nonPrimitive2,
                nonPrimitive2.intersection(UNKNOWN, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive2.intersection(BOOLEAN, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive2.intersection(NUMBER, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive2.intersection(INTEGER, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive2.intersection(DOUBLE, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive2.intersection(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive2.intersection(STRING, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive2.intersection(READABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive2.intersection(MUTABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive2.intersection(EXTENDABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive2.intersection(nonPrimitive1, compiler));
  Expect.equals(nonPrimitive2,
                nonPrimitive2.intersection(nonPrimitive2, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive2.intersection(potentialArray, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive2.intersection(potentialString, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive2.intersection(BOOLEAN_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive2.intersection(NUMBER_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive2.intersection(INTEGER_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive2.intersection(DOUBLE_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive2.intersection(STRING_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive2.intersection(NULL, compiler));
  Expect.equals(CONFLICTING,
                nonPrimitive2.intersection(FIXED_ARRAY, compiler));

  Expect.equals(CONFLICTING,
                potentialArray.intersection(CONFLICTING, compiler));
  Expect.equals(potentialArray,
                potentialArray.intersection(UNKNOWN, compiler));
  Expect.equals(CONFLICTING,
                potentialArray.intersection(BOOLEAN, compiler));
  Expect.equals(CONFLICTING,
                potentialArray.intersection(NUMBER, compiler));
  Expect.equals(CONFLICTING,
                potentialArray.intersection(INTEGER, compiler));
  Expect.equals(CONFLICTING,
                potentialArray.intersection(DOUBLE, compiler));
  Expect.equals(READABLE_ARRAY,
                potentialArray.intersection(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(CONFLICTING,
                potentialArray.intersection(STRING, compiler));
  Expect.equals(READABLE_ARRAY,
                potentialArray.intersection(READABLE_ARRAY, compiler));
  Expect.equals(MUTABLE_ARRAY,
                potentialArray.intersection(MUTABLE_ARRAY, compiler));
  Expect.equals(EXTENDABLE_ARRAY,
                potentialArray.intersection(EXTENDABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                potentialArray.intersection(nonPrimitive1, compiler));
  Expect.equals(CONFLICTING,
                potentialArray.intersection(nonPrimitive2, compiler));
  Expect.equals(potentialArray,
                potentialArray.intersection(potentialArray, compiler));
  Expect.equals(NULL,
                potentialArray.intersection(potentialString, compiler));
  Expect.equals(NULL,
                potentialArray.intersection(BOOLEAN_OR_NULL, compiler));
  Expect.equals(NULL,
                potentialArray.intersection(NUMBER_OR_NULL, compiler));
  Expect.equals(NULL,
                potentialArray.intersection(INTEGER_OR_NULL, compiler));
  Expect.equals(NULL,
                potentialArray.intersection(DOUBLE_OR_NULL, compiler));
  Expect.equals(NULL,
                potentialArray.intersection(STRING_OR_NULL, compiler));
  Expect.equals(NULL,
                potentialArray.intersection(NULL, compiler));
  Expect.equals(FIXED_ARRAY,
                potentialArray.intersection(FIXED_ARRAY, compiler));

  Expect.equals(CONFLICTING,
                potentialString.intersection(CONFLICTING, compiler));
  Expect.equals(potentialString,
                potentialString.intersection(UNKNOWN, compiler));
  Expect.equals(CONFLICTING,
                potentialString.intersection(BOOLEAN, compiler));
  Expect.equals(CONFLICTING,
                potentialString.intersection(NUMBER, compiler));
  Expect.equals(CONFLICTING,
                potentialString.intersection(INTEGER, compiler));
  Expect.equals(CONFLICTING,
                potentialString.intersection(DOUBLE, compiler));
  Expect.equals(STRING,
                potentialString.intersection(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(STRING,
                potentialString.intersection(STRING, compiler));
  Expect.equals(CONFLICTING,
                potentialString.intersection(READABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                potentialString.intersection(MUTABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                potentialString.intersection(EXTENDABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                potentialString.intersection(nonPrimitive1, compiler));
  Expect.equals(CONFLICTING,
                potentialString.intersection(nonPrimitive2, compiler));
  Expect.equals(NULL,
                potentialString.intersection(potentialArray, compiler));
  Expect.equals(potentialString,
                potentialString.intersection(potentialString, compiler));
  Expect.equals(NULL,
                potentialString.intersection(BOOLEAN_OR_NULL, compiler));
  Expect.equals(NULL,
                potentialString.intersection(NUMBER_OR_NULL, compiler));
  Expect.equals(NULL,
                potentialString.intersection(INTEGER_OR_NULL, compiler));
  Expect.equals(NULL,
                potentialString.intersection(DOUBLE_OR_NULL, compiler));
  Expect.equals(STRING_OR_NULL,
                potentialString.intersection(STRING_OR_NULL, compiler));
  Expect.equals(NULL,
                potentialString.intersection(NULL, compiler));
  Expect.equals(CONFLICTING,
                potentialString.intersection(FIXED_ARRAY, compiler));

  Expect.equals(CONFLICTING,
                BOOLEAN_OR_NULL.intersection(CONFLICTING, compiler));
  Expect.equals(BOOLEAN_OR_NULL,
                BOOLEAN_OR_NULL.intersection(UNKNOWN, compiler));
  Expect.equals(BOOLEAN,
                BOOLEAN_OR_NULL.intersection(BOOLEAN, compiler));
  Expect.equals(CONFLICTING,
                BOOLEAN_OR_NULL.intersection(NUMBER, compiler));
  Expect.equals(CONFLICTING,
                BOOLEAN_OR_NULL.intersection(INTEGER, compiler));
  Expect.equals(CONFLICTING,
                BOOLEAN_OR_NULL.intersection(DOUBLE, compiler));
  Expect.equals(CONFLICTING,
                BOOLEAN_OR_NULL.intersection(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(CONFLICTING,
                BOOLEAN_OR_NULL.intersection(STRING, compiler));
  Expect.equals(CONFLICTING,
                BOOLEAN_OR_NULL.intersection(READABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                BOOLEAN_OR_NULL.intersection(MUTABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                BOOLEAN_OR_NULL.intersection(EXTENDABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                BOOLEAN_OR_NULL.intersection(nonPrimitive1, compiler));
  Expect.equals(CONFLICTING,
                BOOLEAN_OR_NULL.intersection(nonPrimitive2, compiler));
  Expect.equals(NULL,
                BOOLEAN_OR_NULL.intersection(potentialArray, compiler));
  Expect.equals(NULL,
                BOOLEAN_OR_NULL.intersection(potentialString, compiler));
  Expect.equals(BOOLEAN_OR_NULL,
                BOOLEAN_OR_NULL.intersection(BOOLEAN_OR_NULL, compiler));
  Expect.equals(NULL,
                BOOLEAN_OR_NULL.intersection(NUMBER_OR_NULL, compiler));
  Expect.equals(NULL,
                BOOLEAN_OR_NULL.intersection(INTEGER_OR_NULL, compiler));
  Expect.equals(NULL,
                BOOLEAN_OR_NULL.intersection(DOUBLE_OR_NULL, compiler));
  Expect.equals(NULL,
                BOOLEAN_OR_NULL.intersection(STRING_OR_NULL, compiler));
  Expect.equals(NULL,
                BOOLEAN_OR_NULL.intersection(NULL, compiler));
  Expect.equals(CONFLICTING,
                BOOLEAN_OR_NULL.intersection(FIXED_ARRAY, compiler));

  Expect.equals(CONFLICTING,
                NUMBER_OR_NULL.intersection(CONFLICTING, compiler));
  Expect.equals(NUMBER_OR_NULL,
                NUMBER_OR_NULL.intersection(UNKNOWN, compiler));
  Expect.equals(CONFLICTING,
                NUMBER_OR_NULL.intersection(BOOLEAN, compiler));
  Expect.equals(NUMBER,
                NUMBER_OR_NULL.intersection(NUMBER, compiler));
  Expect.equals(INTEGER,
                NUMBER_OR_NULL.intersection(INTEGER, compiler));
  Expect.equals(DOUBLE,
                NUMBER_OR_NULL.intersection(DOUBLE, compiler));
  Expect.equals(CONFLICTING,
                NUMBER_OR_NULL.intersection(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(CONFLICTING,
                NUMBER_OR_NULL.intersection(STRING, compiler));
  Expect.equals(CONFLICTING,
                NUMBER_OR_NULL.intersection(READABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                NUMBER_OR_NULL.intersection(MUTABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                NUMBER_OR_NULL.intersection(EXTENDABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                NUMBER_OR_NULL.intersection(nonPrimitive1, compiler));
  Expect.equals(CONFLICTING,
                NUMBER_OR_NULL.intersection(nonPrimitive2, compiler));
  Expect.equals(NULL,
                NUMBER_OR_NULL.intersection(potentialArray, compiler));
  Expect.equals(NULL,
                NUMBER_OR_NULL.intersection(potentialString, compiler));
  Expect.equals(NULL,
                NUMBER_OR_NULL.intersection(BOOLEAN_OR_NULL, compiler));
  Expect.equals(NUMBER_OR_NULL,
                NUMBER_OR_NULL.intersection(NUMBER_OR_NULL, compiler));
  Expect.equals(INTEGER_OR_NULL,
                NUMBER_OR_NULL.intersection(INTEGER_OR_NULL, compiler));
  Expect.equals(DOUBLE_OR_NULL,
                NUMBER_OR_NULL.intersection(DOUBLE_OR_NULL, compiler));
  Expect.equals(NULL,
                NUMBER_OR_NULL.intersection(STRING_OR_NULL, compiler));
  Expect.equals(NULL,
                NUMBER_OR_NULL.intersection(NULL, compiler));
  Expect.equals(CONFLICTING,
                NUMBER_OR_NULL.intersection(FIXED_ARRAY, compiler));

  Expect.equals(CONFLICTING,
                INTEGER_OR_NULL.intersection(CONFLICTING, compiler));
  Expect.equals(INTEGER_OR_NULL,
                INTEGER_OR_NULL.intersection(UNKNOWN, compiler));
  Expect.equals(CONFLICTING,
                INTEGER_OR_NULL.intersection(BOOLEAN, compiler));
  Expect.equals(INTEGER,
                INTEGER_OR_NULL.intersection(NUMBER, compiler));
  Expect.equals(INTEGER,
                INTEGER_OR_NULL.intersection(INTEGER, compiler));
  Expect.equals(CONFLICTING,
                INTEGER_OR_NULL.intersection(DOUBLE, compiler));
  Expect.equals(CONFLICTING,
                INTEGER_OR_NULL.intersection(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(CONFLICTING,
                INTEGER_OR_NULL.intersection(STRING, compiler));
  Expect.equals(CONFLICTING,
                INTEGER_OR_NULL.intersection(READABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                INTEGER_OR_NULL.intersection(MUTABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                INTEGER_OR_NULL.intersection(EXTENDABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                INTEGER_OR_NULL.intersection(nonPrimitive1, compiler));
  Expect.equals(CONFLICTING,
                INTEGER_OR_NULL.intersection(nonPrimitive2, compiler));
  Expect.equals(NULL,
                INTEGER_OR_NULL.intersection(potentialArray, compiler));
  Expect.equals(NULL,
                INTEGER_OR_NULL.intersection(potentialString, compiler));
  Expect.equals(NULL,
                INTEGER_OR_NULL.intersection(BOOLEAN_OR_NULL, compiler));
  Expect.equals(INTEGER_OR_NULL,
                INTEGER_OR_NULL.intersection(NUMBER_OR_NULL, compiler));
  Expect.equals(INTEGER_OR_NULL,
                INTEGER_OR_NULL.intersection(INTEGER_OR_NULL, compiler));
  Expect.equals(NULL,
                INTEGER_OR_NULL.intersection(DOUBLE_OR_NULL, compiler));
  Expect.equals(NULL,
                INTEGER_OR_NULL.intersection(STRING_OR_NULL, compiler));
  Expect.equals(NULL,
                INTEGER_OR_NULL.intersection(NULL, compiler));
  Expect.equals(CONFLICTING,
                INTEGER_OR_NULL.intersection(FIXED_ARRAY, compiler));

  Expect.equals(CONFLICTING,
                DOUBLE_OR_NULL.intersection(CONFLICTING, compiler));
  Expect.equals(DOUBLE_OR_NULL,
                DOUBLE_OR_NULL.intersection(UNKNOWN, compiler));
  Expect.equals(CONFLICTING,
                DOUBLE_OR_NULL.intersection(BOOLEAN, compiler));
  Expect.equals(DOUBLE,
                DOUBLE_OR_NULL.intersection(NUMBER, compiler));
  Expect.equals(CONFLICTING,
                DOUBLE_OR_NULL.intersection(INTEGER, compiler));
  Expect.equals(DOUBLE,
                DOUBLE_OR_NULL.intersection(DOUBLE, compiler));
  Expect.equals(CONFLICTING,
                DOUBLE_OR_NULL.intersection(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(CONFLICTING,
                DOUBLE_OR_NULL.intersection(STRING, compiler));
  Expect.equals(CONFLICTING,
                DOUBLE_OR_NULL.intersection(READABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                DOUBLE_OR_NULL.intersection(MUTABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                DOUBLE_OR_NULL.intersection(EXTENDABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                DOUBLE_OR_NULL.intersection(nonPrimitive1, compiler));
  Expect.equals(CONFLICTING,
                DOUBLE_OR_NULL.intersection(nonPrimitive2, compiler));
  Expect.equals(NULL,
                DOUBLE_OR_NULL.intersection(potentialArray, compiler));
  Expect.equals(NULL,
                DOUBLE_OR_NULL.intersection(potentialString, compiler));
  Expect.equals(NULL,
                DOUBLE_OR_NULL.intersection(BOOLEAN_OR_NULL, compiler));
  Expect.equals(DOUBLE_OR_NULL,
                DOUBLE_OR_NULL.intersection(NUMBER_OR_NULL, compiler));
  Expect.equals(NULL,
                DOUBLE_OR_NULL.intersection(INTEGER_OR_NULL, compiler));
  Expect.equals(DOUBLE_OR_NULL,
                DOUBLE_OR_NULL.intersection(DOUBLE_OR_NULL, compiler));
  Expect.equals(NULL,
                DOUBLE_OR_NULL.intersection(STRING_OR_NULL, compiler));
  Expect.equals(NULL,
                DOUBLE_OR_NULL.intersection(NULL, compiler));
  Expect.equals(CONFLICTING,
                DOUBLE_OR_NULL.intersection(FIXED_ARRAY, compiler));

  Expect.equals(CONFLICTING,
                STRING_OR_NULL.intersection(CONFLICTING, compiler));
  Expect.equals(STRING_OR_NULL,
                STRING_OR_NULL.intersection(UNKNOWN, compiler));
  Expect.equals(CONFLICTING,
                STRING_OR_NULL.intersection(BOOLEAN, compiler));
  Expect.equals(CONFLICTING,
                STRING_OR_NULL.intersection(NUMBER, compiler));
  Expect.equals(CONFLICTING,
                STRING_OR_NULL.intersection(INTEGER, compiler));
  Expect.equals(CONFLICTING,
                STRING_OR_NULL.intersection(DOUBLE, compiler));
  Expect.equals(STRING,
                STRING_OR_NULL.intersection(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(STRING,
                STRING_OR_NULL.intersection(STRING, compiler));
  Expect.equals(CONFLICTING,
                STRING_OR_NULL.intersection(READABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                STRING_OR_NULL.intersection(MUTABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                STRING_OR_NULL.intersection(EXTENDABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                STRING_OR_NULL.intersection(nonPrimitive1, compiler));
  Expect.equals(CONFLICTING,
                STRING_OR_NULL.intersection(nonPrimitive2, compiler));
  Expect.equals(NULL,
                STRING_OR_NULL.intersection(potentialArray, compiler));
  Expect.equals(STRING_OR_NULL,
                STRING_OR_NULL.intersection(potentialString, compiler));
  Expect.equals(NULL,
                STRING_OR_NULL.intersection(BOOLEAN_OR_NULL, compiler));
  Expect.equals(NULL,
                STRING_OR_NULL.intersection(NUMBER_OR_NULL, compiler));
  Expect.equals(NULL,
                STRING_OR_NULL.intersection(INTEGER_OR_NULL, compiler));
  Expect.equals(NULL,
                STRING_OR_NULL.intersection(DOUBLE_OR_NULL, compiler));
  Expect.equals(STRING_OR_NULL,
                STRING_OR_NULL.intersection(STRING_OR_NULL, compiler));
  Expect.equals(NULL,
                STRING_OR_NULL.intersection(NULL, compiler));
  Expect.equals(CONFLICTING,
                STRING_OR_NULL.intersection(FIXED_ARRAY, compiler));

  Expect.equals(CONFLICTING,
                NULL.intersection(CONFLICTING, compiler));
  Expect.equals(NULL,
                NULL.intersection(UNKNOWN, compiler));
  Expect.equals(CONFLICTING,
                NULL.intersection(BOOLEAN, compiler));
  Expect.equals(CONFLICTING,
                NULL.intersection(NUMBER, compiler));
  Expect.equals(CONFLICTING,
                NULL.intersection(INTEGER, compiler));
  Expect.equals(CONFLICTING,
                NULL.intersection(DOUBLE, compiler));
  Expect.equals(CONFLICTING,
                NULL.intersection(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(CONFLICTING,
                NULL.intersection(STRING, compiler));
  Expect.equals(CONFLICTING,
                NULL.intersection(READABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                NULL.intersection(MUTABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                NULL.intersection(EXTENDABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                NULL.intersection(nonPrimitive1, compiler));
  Expect.equals(CONFLICTING,
                NULL.intersection(nonPrimitive2, compiler));
  Expect.equals(NULL,
                NULL.intersection(potentialArray, compiler));
  Expect.equals(NULL,
                NULL.intersection(potentialString, compiler));
  Expect.equals(NULL,
                NULL.intersection(BOOLEAN_OR_NULL, compiler));
  Expect.equals(NULL,
                NULL.intersection(NUMBER_OR_NULL, compiler));
  Expect.equals(NULL,
                NULL.intersection(INTEGER_OR_NULL, compiler));
  Expect.equals(NULL,
                NULL.intersection(DOUBLE_OR_NULL, compiler));
  Expect.equals(NULL,
                NULL.intersection(STRING_OR_NULL, compiler));
  Expect.equals(NULL,
                NULL.intersection(NULL, compiler));
  Expect.equals(CONFLICTING,
                NULL.intersection(FIXED_ARRAY, compiler));

  Expect.equals(CONFLICTING,
                FIXED_ARRAY.intersection(CONFLICTING, compiler));
  Expect.equals(FIXED_ARRAY,
                FIXED_ARRAY.intersection(UNKNOWN, compiler));
  Expect.equals(CONFLICTING,
                FIXED_ARRAY.intersection(BOOLEAN, compiler));
  Expect.equals(CONFLICTING,
                FIXED_ARRAY.intersection(NUMBER, compiler));
  Expect.equals(CONFLICTING,
                FIXED_ARRAY.intersection(INTEGER, compiler));
  Expect.equals(CONFLICTING,
                FIXED_ARRAY.intersection(DOUBLE, compiler));
  Expect.equals(FIXED_ARRAY,
                FIXED_ARRAY.intersection(INDEXABLE_PRIMITIVE, compiler));
  Expect.equals(CONFLICTING,
                FIXED_ARRAY.intersection(STRING, compiler));
  Expect.equals(FIXED_ARRAY,
                FIXED_ARRAY.intersection(READABLE_ARRAY, compiler));
  Expect.equals(FIXED_ARRAY,
                FIXED_ARRAY.intersection(MUTABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                FIXED_ARRAY.intersection(EXTENDABLE_ARRAY, compiler));
  Expect.equals(CONFLICTING,
                FIXED_ARRAY.intersection(nonPrimitive1, compiler));
  Expect.equals(CONFLICTING,
                FIXED_ARRAY.intersection(nonPrimitive2, compiler));
  Expect.equals(FIXED_ARRAY,
                FIXED_ARRAY.intersection(potentialArray, compiler));
  Expect.equals(CONFLICTING,
                FIXED_ARRAY.intersection(potentialString, compiler));
  Expect.equals(CONFLICTING,
                FIXED_ARRAY.intersection(BOOLEAN_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                FIXED_ARRAY.intersection(NUMBER_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                FIXED_ARRAY.intersection(INTEGER_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                FIXED_ARRAY.intersection(DOUBLE_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                FIXED_ARRAY.intersection(STRING_OR_NULL, compiler));
  Expect.equals(CONFLICTING,
                FIXED_ARRAY.intersection(NULL, compiler));
  Expect.equals(FIXED_ARRAY,
                FIXED_ARRAY.intersection(FIXED_ARRAY, compiler));
}

void testRegressions(MockCompiler compiler) {
  HType nonNullPotentialString = new HType.nonNullSubtype(
      patternClass.computeType(compiler), compiler);
  Expect.equals(
      potentialString, STRING_OR_NULL.union(nonNullPotentialString, compiler));
}

void main() {
  MockCompiler compiler = new MockCompiler();
  compiler.interceptorsLibrary.forEachLocalMember((element) {
    if (element.isClass()) {
      compiler.enqueuer.resolution.registerInstantiatedClass(element);
    }
  });
  compiler.world.populate();

  // Grab hold of a supertype for String so we can produce potential
  // string types.
  patternClass = compiler.coreLibrary.find(buildSourceString('Pattern'));

  nonPrimitive1 = new HType.nonNullSubtype(
      compiler.mapClass.computeType(compiler), compiler);
  nonPrimitive2 = new HType.nonNullSubtype(
      compiler.functionClass.computeType(compiler), compiler);
  potentialArray = new HType.subtype(
      compiler.listClass.computeType(compiler), compiler);
  potentialString = new HType.subtype(
      patternClass.computeType(compiler), compiler);
  jsArrayOrNull = new HType.exact(
      compiler.backend.jsArrayClass.computeType(compiler), compiler);

  testUnion(compiler);
  testIntersection(compiler);
  testRegressions(compiler);
}
