goog.module('genericmethod.GenericMethod$impl');

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

let $1 = goog.forwardDeclare('genericmethod.GenericMethod.$1$impl');
let $1LocalClass = goog.forwardDeclare('genericmethod.GenericMethod.$1LocalClass$impl');
let Consumer = goog.forwardDeclare('genericmethod.GenericMethod.Consumer$impl');
let Container = goog.forwardDeclare('genericmethod.GenericMethod.Container$impl');
let Content = goog.forwardDeclare('genericmethod.GenericMethod.Content$impl');
let SuperContainer = goog.forwardDeclare('genericmethod.GenericMethod.SuperContainer$impl');
let Supplier = goog.forwardDeclare('genericmethod.GenericMethod.Supplier$impl');
let Error = goog.forwardDeclare('java.lang.Error$impl');
let Exception = goog.forwardDeclare('java.lang.Exception$impl');
let Number = goog.forwardDeclare('java.lang.Number$impl');
let j_l_String = goog.forwardDeclare('java.lang.String$impl');
let ArrayList = goog.forwardDeclare('java.util.ArrayList$impl');
let $Arrays = goog.forwardDeclare('vmbootstrap.Arrays$impl');
let $Casts = goog.forwardDeclare('vmbootstrap.Casts$impl');

/**
 * @template T
 */
class GenericMethod extends j_l_Object {
 /** @protected @nodts */
 constructor() {
  super();
 }
 /** @nodts @template T @return {!GenericMethod<T>} */
 static $create__() {
  GenericMethod.$clinit();
  let $instance = new GenericMethod();
  $instance.$ctor__genericmethod_GenericMethod__void();
  return $instance;
 }
 /** @nodts */
 $ctor__genericmethod_GenericMethod__void() {
  this.$ctor__java_lang_Object__void();
 }
 /** @nodts @template T_1, S */
 m_foo__java_lang_Object__java_lang_Object__void(/** T_1 */ f, /** S */ s) {}
 /** @nodts */
 m_fun__java_lang_Object__void(/** * */ o) {}
 /** @nodts @template T_1 */
 m_fun__java_lang_Exception__void(/** T_1 */ t) {}
 /** @nodts @template T_1 */
 m_fun__java_lang_Error__void(/** T_1 */ t) {
  $1.$create__genericmethod_GenericMethod(this);
  $1LocalClass.$create__genericmethod_GenericMethod(this);
 }
 /** @nodts @template T_1 @return {GenericMethod<T_1>} */
 m_bar__genericmethod_GenericMethod() {
  return null;
 }
 /** @nodts @template T_1 @return {Array<T_1>} */
 m_fun__arrayOf_java_lang_Object__arrayOf_java_lang_Object(/** Array<T_1> */ array) {
  return array;
 }
 /** @nodts @template T_1 @return {T_1} */
 m_checked__java_lang_Object() {
  return null;
 }
 /** @nodts @template T_1 @return {T_1} */
 m_unchecked__java_lang_Object() {
  return null;
 }
 /** @nodts */
 m_test__void() {
  let g = /**@type {!GenericMethod<(Number|number)>}*/ (GenericMethod.$create__());
  g.m_foo__java_lang_Object__java_lang_Object__void(g, g);
  g.m_foo__java_lang_Object__java_lang_Object__void(Error.$create__(), Exception.$create__());
  g.m_fun__java_lang_Object__void(j_l_Object.$create__());
  g.m_fun__java_lang_Exception__void(Exception.$create__());
  g.m_fun__java_lang_Error__void(Error.$create__());
  g.m_fun__arrayOf_java_lang_Object__arrayOf_java_lang_Object(/**@type {!Array<?string>}*/ ($Arrays.$stampType(['asdf'], j_l_String)));
  let s = /**@type {?string}*/ ($Casts.$to(this.m_checked__java_lang_Object(), j_l_String));
  s = (/**@type {?string}*/ (this.m_unchecked__java_lang_Object()));
  (/**@type {Content}*/ ($Casts.$to(this.m_checked__java_lang_Object(), Content))).m_getProp__java_lang_String_$pp_genericmethod();
  (/**@type {Content}*/ (this.m_unchecked__java_lang_Object())).m_getProp__java_lang_String_$pp_genericmethod();
 }
 /** @nodts */
 static m_acceptsContent__genericmethod_GenericMethod_Content__void(/** Content */ content) {
  GenericMethod.$clinit();
 }
 /** @nodts */
 static m_acceptsString__java_lang_String__void(/** ?string */ string_1) {
  GenericMethod.$clinit();
 }
 /** @nodts */
 static m_testErasureCast_wildcard__void() {
  GenericMethod.$clinit();
  let list = /**@type {!ArrayList<Container<?>>}*/ (ArrayList.$create__());
  let content = /**@type {Content}*/ ((/**@type {Container<Content>}*/ ($Casts.$to(list.getAtIndex(0), Container))).m_get__genericmethod_GenericMethod_Content_$pp_genericmethod());
  GenericMethod.m_acceptsString__java_lang_String__void(content.m_getProp__java_lang_String_$pp_genericmethod());
  GenericMethod.m_acceptsContent__genericmethod_GenericMethod_Content__void(content);
  let nestedWildcardList = /**@type {!ArrayList<SuperContainer<?>>}*/ (ArrayList.$create__());
  let nestedContent = /**@type {Content}*/ ((/**@type {!Container<Content>}*/ ((/**@type {SuperContainer<Container>}*/ ($Casts.$to(nestedWildcardList.getAtIndex(0), SuperContainer))).m_get__genericmethod_GenericMethod_Container_$pp_genericmethod())).m_get__genericmethod_GenericMethod_Content_$pp_genericmethod());
  GenericMethod.m_acceptsString__java_lang_String__void(nestedContent.m_getProp__java_lang_String_$pp_genericmethod());
  GenericMethod.m_acceptsContent__genericmethod_GenericMethod_Content__void(nestedContent);
  let deepWildcardList = /**@type {!ArrayList<SuperContainer<Container<?>>>}*/ (ArrayList.$create__());
  let deepContent = /**@type {Content}*/ ((/**@type {SuperContainer<Container<?>>}*/ ($Casts.$to(deepWildcardList.getAtIndex(0), SuperContainer))).m_get__genericmethod_GenericMethod_Container_$pp_genericmethod().m_get__genericmethod_GenericMethod_Content_$pp_genericmethod());
  GenericMethod.m_acceptsString__java_lang_String__void(deepContent.m_getProp__java_lang_String_$pp_genericmethod());
  GenericMethod.m_acceptsContent__genericmethod_GenericMethod_Content__void(deepContent);
 }
 /** @nodts @template CT, C */
 static m_testErasureCast_typeVariable__void() {
  GenericMethod.$clinit();
  let list = /**@type {!ArrayList<Container<C>>}*/ (ArrayList.$create__());
  let content = /**@type {Content}*/ ((/**@type {Container<C>}*/ ($Casts.$to(list.getAtIndex(0), Container))).m_get__genericmethod_GenericMethod_Content_$pp_genericmethod());
  GenericMethod.m_acceptsString__java_lang_String__void(content.m_getProp__java_lang_String_$pp_genericmethod());
  GenericMethod.m_acceptsContent__genericmethod_GenericMethod_Content__void(content);
  let nestedTypeVariableList = /**@type {!ArrayList<SuperContainer<CT>>}*/ (ArrayList.$create__());
  let nestedContent = /**@type {Content}*/ ((/**@type {!Container<C>}*/ ((/**@type {SuperContainer<CT>}*/ ($Casts.$to(nestedTypeVariableList.getAtIndex(0), SuperContainer))).m_get__genericmethod_GenericMethod_Container_$pp_genericmethod())).m_get__genericmethod_GenericMethod_Content_$pp_genericmethod());
  GenericMethod.m_acceptsString__java_lang_String__void(nestedContent.m_getProp__java_lang_String_$pp_genericmethod());
  GenericMethod.m_acceptsContent__genericmethod_GenericMethod_Content__void(nestedContent);
  let deepTypeVariableList = /**@type {!ArrayList<SuperContainer<Container<C>>>}*/ (ArrayList.$create__());
  let deepContent = /**@type {Content}*/ ((/**@type {SuperContainer<Container<C>>}*/ ($Casts.$to(deepTypeVariableList.getAtIndex(0), SuperContainer))).m_get__genericmethod_GenericMethod_Container_$pp_genericmethod().m_get__genericmethod_GenericMethod_Content_$pp_genericmethod());
  GenericMethod.m_acceptsString__java_lang_String__void(deepContent.m_getProp__java_lang_String_$pp_genericmethod());
  GenericMethod.m_acceptsContent__genericmethod_GenericMethod_Content__void(deepContent);
 }
 /** @nodts @template V */
 static m_testLowerWildcardBound__genericmethod_GenericMethod_Consumer__java_lang_Object__void(/** Consumer<?> */ consumer, /** V */ v) {
  GenericMethod.$clinit();
  consumer.m_accept__java_lang_Object__void(v);
 }
 /** @nodts @template V @return {V} */
 static m_testUpperWildcardBound__genericmethod_GenericMethod_Supplier__java_lang_Object(/** Supplier<?> */ supplier) {
  GenericMethod.$clinit();
  return supplier.m_get__java_lang_Object();
 }
 /** @nodts @template T_1 */
 static m_methodWithBoundTypeVariable__void() {
  GenericMethod.$clinit();
 }
 /** @nodts */
 static m_testMethodCallsWithCaptureTypeArguments__void() {
  GenericMethod.$clinit();
  GenericMethod.m_methodWithBoundTypeVariable__void();
 }
 /** @nodts */
 static $clinit() {
  GenericMethod.$clinit = () =>{};
  GenericMethod.$loadModules();
  j_l_Object.$clinit();
 }
 /** @nodts @return {boolean} */
 static $isInstance(/** ? */ instance) {
  return instance instanceof GenericMethod;
 }
 
 /** @nodts */
 static $loadModules() {
  $1 = goog.module.get('genericmethod.GenericMethod.$1$impl');
  $1LocalClass = goog.module.get('genericmethod.GenericMethod.$1LocalClass$impl');
  Container = goog.module.get('genericmethod.GenericMethod.Container$impl');
  Content = goog.module.get('genericmethod.GenericMethod.Content$impl');
  SuperContainer = goog.module.get('genericmethod.GenericMethod.SuperContainer$impl');
  Error = goog.module.get('java.lang.Error$impl');
  Exception = goog.module.get('java.lang.Exception$impl');
  j_l_String = goog.module.get('java.lang.String$impl');
  ArrayList = goog.module.get('java.util.ArrayList$impl');
  $Arrays = goog.module.get('vmbootstrap.Arrays$impl');
  $Casts = goog.module.get('vmbootstrap.Casts$impl');
 }
}
$Util.$setClassMetadata(GenericMethod, 'genericmethod.GenericMethod');

exports = GenericMethod;

//# sourceMappingURL=GenericMethod.js.map
