goog.module('jsasync.Main$impl');

const j_l_Object = goog.require('java.lang.Object$impl');
const $Util = goog.require('nativebootstrap.Util$impl');

let Integer = goog.forwardDeclare('java.lang.Integer$impl');
let Void = goog.forwardDeclare('java.lang.Void$impl');
let $3 = goog.forwardDeclare('jsasync.Main.$3$impl');
let AsyncInterface = goog.forwardDeclare('jsasync.Main.AsyncInterface$impl');
let BaseInterface = goog.forwardDeclare('jsasync.Main.BaseInterface$impl');
let $Casts = goog.forwardDeclare('vmbootstrap.Casts$impl');

class Main extends j_l_Object {
 /** @protected @nodts */
 constructor() {
  super();
  /**@type {IThenable<Integer>} @nodts*/
  this.f_x__jsasync_Main_;
 }
 /** @nodts @return {!Main} */
 static $create__() {
  Main.$clinit();
  let $instance = new Main();
  $instance.$ctor__jsasync_Main__void();
  return $instance;
 }
 /** @nodts */
 $ctor__jsasync_Main__void() {
  this.$ctor__java_lang_Object__void();
  this.$init__void_$p_jsasync_Main();
 }
 /** @nodts @return {IThenable<?void>} */
 async m_emptyAsyncMethod__jsasync_Main_IThenable_$pp_jsasync() {
  return null;
 }
 /** @nodts @return {IThenable<Integer>} */
 async m_asyncMethod__jsasync_Main_IThenable_$pp_jsasync() {
  let result = (/**@type {Integer}*/ ($Casts.$to(await (/**@type {Promise<Integer>}*/ (Promise.resolve(Integer.m_valueOf__int__java_lang_Integer(7)))), Integer))).m_intValue__int();
  return /**@type {IThenable<Integer>}*/ (this.m_parametricAsyncMethod__java_lang_Object__jsasync_Main_IThenable_$pp_jsasync(Integer.m_valueOf__int__java_lang_Integer(result)));
 }
 /** @nodts @template T @return {IThenable<T>} */
 async m_parametricAsyncMethod__java_lang_Object__jsasync_Main_IThenable_$pp_jsasync(/** T */ value) {
  return /**@type {Promise<T>}*/ (Promise.resolve(await (/**@type {Promise<T>}*/ (Promise.resolve(value)))));
 }
 /** @nodts @return {IThenable<?void>} */
 static async m_staticAsyncMethod__jsasync_Main_IThenable() {
  Main.$clinit();
  return /**@type {Promise<?void>}*/ (Promise.resolve(/**@type {?void}*/ ($Casts.$to(await (/**@type {Promise<?void>}*/ (Promise.resolve(/**@type {?void}*/ (null)))), Void))));
 }
 /** @return {IThenable<?void>} */
 async jsAsyncAndJsMethod() {
  return null;
 }
 /** @nodts */
 m_testAsyncLambdas__void_$pp_jsasync() {
  let i = AsyncInterface.$adapt(/**  @return {IThenable<Integer>}*/ (async () =>{
   return /**@type {Promise<Integer>}*/ (Promise.resolve(/**@type {Integer}*/ ($Casts.$to(await (/**@type {Promise<Integer>}*/ (Promise.resolve(Integer.m_valueOf__int__java_lang_Integer(5)))), Integer))));
  }));
  let o = BaseInterface.$adapt(/**  @return {IThenable<Integer>}*/ (async () =>{
   return /**@type {Promise<Integer>}*/ (Promise.resolve(/**@type {Integer}*/ ($Casts.$to(await this.f_x__jsasync_Main_, Integer))));
  }));
  let j = /**  @return {IThenable<Integer>}*/ (async () =>{
   return /**@type {Promise<Integer>}*/ (Promise.resolve(/**@type {Integer}*/ ($Casts.$to(await (/**@type {Promise<Integer>}*/ (Promise.resolve(Integer.m_valueOf__int__java_lang_Integer(5)))), Integer))));
  });
  let optimizableJsFunction = /**  @return {IThenable<Integer>}*/ (async () =>{
   return /**@type {Promise<Integer>}*/ (Promise.resolve(/**@type {Integer}*/ ($Casts.$to(await this.f_x__jsasync_Main_, Integer))));
  });
  let unoptimizableJsFunction = $3.$create__jsasync_Main(this);
 }
 /** @private @nodts */
 $init__void_$p_jsasync_Main() {
  this.f_x__jsasync_Main_ = (/**@type {Promise<Integer>}*/ (Promise.resolve(Integer.m_valueOf__int__java_lang_Integer(10))));
 }
 /** @nodts */
 static $clinit() {
  Main.$clinit = () =>{};
  Main.$loadModules();
  j_l_Object.$clinit();
 }
 /** @nodts @return {boolean} */
 static $isInstance(/** ? */ instance) {
  return instance instanceof Main;
 }
 
 /** @nodts */
 static $loadModules() {
  Integer = goog.module.get('java.lang.Integer$impl');
  Void = goog.module.get('java.lang.Void$impl');
  $3 = goog.module.get('jsasync.Main.$3$impl');
  AsyncInterface = goog.module.get('jsasync.Main.AsyncInterface$impl');
  BaseInterface = goog.module.get('jsasync.Main.BaseInterface$impl');
  $Casts = goog.module.get('vmbootstrap.Casts$impl');
 }
}
$Util.$setClassMetadata(Main, 'jsasync.Main');

exports = Main;

//# sourceMappingURL=Main.js.map
