library test;
import self as self;
import "dart:core" as core;

static method main() → dynamic {
  dynamic a = () → dynamic {};
  dynamic b = () → dynamic {
    return;
  };
  dynamic c = () → dynamic {
    return null;
  };
  dynamic d = () → dynamic {
    return 0;
  };
  dynamic e = (core::bool b) → dynamic {
    if(b) {
      return;
    }
    else {
      return;
    }
  };
  dynamic f = (core::bool b) → dynamic {
    if(b) {
      return;
    }
    else {
      return null;
    }
  };
  dynamic g = (core::bool b) → dynamic {
    if(b) {
      return;
    }
    else {
      return 0;
    }
  };
  dynamic h = (core::bool b) → dynamic {
    if(b) {
      return null;
    }
    else {
      return;
    }
  };
  dynamic i = (core::bool b) → dynamic {
    if(b) {
      return null;
    }
    else {
      return null;
    }
  };
  dynamic j = (core::bool b) → dynamic {
    if(b) {
      return null;
    }
    else {
      return 0;
    }
  };
  dynamic k = (core::bool b) → dynamic {
    if(b) {
      return 0;
    }
    else {
      return;
    }
  };
  dynamic l = (core::bool b) → dynamic {
    if(b) {
      return 0;
    }
    else {
      return null;
    }
  };
  dynamic m = (core::bool b) → dynamic {
    if(b) {
      return 0;
    }
    else {
      return 0;
    }
  };
}
