// Copyright (c) 2018, 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.

class Class {
  Class next;
}

main() {
  if1(null, null);
  if2(null, null);
  if3(null, null);
}

if1(dynamic c1, dynamic c2) {
  /*dynamic*/ c1.next;
  /*dynamic*/ c2.next;
  if (/*dynamic*/ c1 is Class) {
    /*Class*/ c1.next;
    /*dynamic*/ c2.next;
    if (/*dynamic*/ c2 is Class) {
      /*Class*/ c1.next;
      /*Class*/ c2.next;
    } else {
      /*Class*/ c1.next;
      /*dynamic*/ c2.next;
    }
  } else {
    /*dynamic*/ c1.next;
    /*dynamic*/ c2.next;
    if (/*dynamic*/ c2 is Class) {
      /*dynamic*/ c1.next;
      /*Class*/ c2.next;
    } else {
      /*dynamic*/ c1.next;
      /*dynamic*/ c2.next;
    }
  }
}

if2(Class c1, Class c2) {
  /*Class*/ c1.next;
  /*Class*/ c2.next;
  if (/*Class*/ c1 is Class) {
    /*Class*/ c1.next;
    /*Class*/ c2.next;
    if (/*Class*/ c2 is Class) {
      /*Class*/ c1.next;
      /*Class*/ c2.next;
    } else {
      /*Class*/ c1.next;
      /*Class*/ c2.next;
    }
  } else {
    /*Class*/ c1.next;
    /*Class*/ c2.next;
    if (/*Class*/ c2 is Class) {
      /*Class*/ c1.next;
      /*Class*/ c2.next;
    } else {
      /*Class*/ c1.next;
      /*Class*/ c2.next;
    }
  }
}

if3(dynamic c1, dynamic c2) {
  /*dynamic*/ c1.next;
  /*dynamic*/ c2.next;
  if (/*dynamic*/ c1 is! Class) {
    /*dynamic*/ c1.next;
    /*dynamic*/ c2.next;
    if (/*dynamic*/ c2 is! Class) {
      /*dynamic*/ c1.next;
      /*dynamic*/ c2.next;
    } else {
      /*dynamic*/ c1.next;
      /*dynamic*/ c2.next;
    }
  } else {
    /*dynamic*/ c1.next;
    /*dynamic*/ c2.next;
    if (/*dynamic*/ c2 is! Class) {
      /*dynamic*/ c1.next;
      /*dynamic*/ c2.next;
    } else {
      /*dynamic*/ c1.next;
      /*dynamic*/ c2.next;
    }
  }
}
