goog.module('typewildcards.TypeWildCards$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 Bar = goog.forwardDeclare('typewildcards.Bar$impl');
let DeepRecursiveType = goog.forwardDeclare('typewildcards.DeepRecursiveType$impl');
let typewildcards_Function = goog.forwardDeclare('typewildcards.Function$impl');
let GenericType = goog.forwardDeclare('typewildcards.GenericType$impl');
let List = goog.forwardDeclare('typewildcards.List$impl');
let RecursiveType = goog.forwardDeclare('typewildcards.RecursiveType$impl');
let A = goog.forwardDeclare('typewildcards.TypeWildCards.A$impl');
let Element = goog.forwardDeclare('typewildcards.TypeWildCards.Element$impl');
let Foo = goog.forwardDeclare('typewildcards.TypeWildCards.Foo$impl');
let HasKey = goog.forwardDeclare('typewildcards.TypeWildCards.HasKey$impl');
let IntegerSupplier = goog.forwardDeclare('typewildcards.TypeWildCards.IntegerSupplier$impl');
let MultipleGenerics = goog.forwardDeclare('typewildcards.TypeWildCards.MultipleGenerics$impl');
let RecursiveInterface = goog.forwardDeclare('typewildcards.TypeWildCards.RecursiveInterface$impl');
let SubOtherElement = goog.forwardDeclare('typewildcards.TypeWildCards.SubOtherElement$impl');
let Y = goog.forwardDeclare('typewildcards.TypeWildCards.Y$impl');
let $Casts = goog.forwardDeclare('vmbootstrap.Casts$impl');

class TypeWildCards extends j_l_Object {
 /** @protected @nodts */
 constructor() {
  super();
 }
 /** @nodts @return {!TypeWildCards} */
 static $create__() {
  TypeWildCards.$clinit();
  let $instance = new TypeWildCards();
  $instance.$ctor__typewildcards_TypeWildCards__void();
  return $instance;
 }
 /** @nodts */
 $ctor__typewildcards_TypeWildCards__void() {
  this.$ctor__java_lang_Object__void();
 }
 /** @nodts @return {*} */
 m_unbounded__typewildcards_GenericType__java_lang_Object(/** GenericType<?> */ g) {
  return g.m_get__java_lang_Object_$pp_typewildcards();
 }
 /** @nodts @return {Bar} */
 m_upperBound__typewildcards_GenericType__typewildcards_Bar(/** GenericType<?> */ g) {
  return /**@type {Bar}*/ ($Casts.$to(g.m_get__java_lang_Object_$pp_typewildcards(), Bar));
 }
 /** @nodts @return {*} */
 m_lowerBound__typewildcards_GenericType__java_lang_Object(/** GenericType<?> */ g) {
  return g.m_get__java_lang_Object_$pp_typewildcards();
 }
 /** @nodts */
 m_unboundedRecursive__typewildcards_RecursiveType__void(/** RecursiveType<?> */ g) {}
 /** @nodts */
 m_upperBoundRecursive__typewildcards_GenericType__void(/** GenericType<?> */ g) {}
 /** @nodts */
 m_lowerBoundRecursive__typewildcards_GenericType__void(/** GenericType<?> */ g) {}
 /** @nodts */
 m_deepRecursiveType__typewildcards_DeepRecursiveType__void(/** DeepRecursiveType<?> */ t) {}
 /** @nodts */
 m_test__void() {
  this.m_unbounded__typewildcards_GenericType__java_lang_Object(/**@type {!GenericType<Bar>}*/ (GenericType.$create__()));
  this.m_upperBound__typewildcards_GenericType__typewildcards_Bar(/**@type {!GenericType<Bar>}*/ (GenericType.$create__()));
  this.m_lowerBound__typewildcards_GenericType__java_lang_Object(/**@type {!GenericType<Bar>}*/ (GenericType.$create__()));
 }
 /** @nodts @template T */
 static m_testBoundedTypeMemberAccess__typewildcards_TypeWildCards_A__void(/** T */ t) {
  TypeWildCards.$clinit();
  let i = (/**@type {!A}*/ (t)).f_f__typewildcards_TypeWildCards_A;
  (/**@type {!A}*/ (t)).m_m__void();
 }
 /** @nodts @template T */
 static m_testIntersectionBoundedTypeMemberAccess__typewildcards_TypeWildCards_A__void(/** T */ t) {
  TypeWildCards.$clinit();
  let i = (/**@type {!A}*/ (t)).f_f__typewildcards_TypeWildCards_A;
  (/**@type {!A}*/ (t)).m_m__void();
  (/**@type {!Y}*/ ($Casts.$to(t, /**@type {Function}*/ (Y)))).m_n__void();
 }
 /** @nodts @template F, V @return {List<V>} */
 static m_transform__typewildcards_List__typewildcards_Function__typewildcards_List(/** List<F> */ from, /** typewildcards_Function<?, ?> */ function_1) {
  return null;
 }
 /** @nodts @template E @return {List<E>} */
 static m_concat__typewildcards_List__typewildcards_List__typewildcards_List(/** List<?> */ a, /** List<?> */ b) {
  return null;
 }
 /** @nodts */
 m_testInferredGenericIntersection__void() {
  let /** List<Element> */ elements = null;
  let /** List<SubOtherElement> */ otherElements = null;
  let integers = /**@type {List<Integer>}*/ (TypeWildCards.m_transform__typewildcards_List__typewildcards_Function__typewildcards_List(/**@type {List<*>}*/ (TypeWildCards.m_concat__typewildcards_List__typewildcards_List__typewildcards_List(elements, otherElements)), typewildcards_Function.$adapt(/**  @return {?}*/ ((/** ? */ a) =>{
   (/**@type {!HasKey}*/ ($Casts.$to(a, /**@type {Function}*/ (HasKey)))).m_getKey__java_lang_String();
   return (/**@type {!IntegerSupplier}*/ ($Casts.$to(a, /**@type {Function}*/ (IntegerSupplier)))).m_get__java_lang_Integer();
  }))));
 }
 /** @nodts */
 static m_takesRecursiveGeneric__typewildcards_GenericType__void(/** GenericType<Foo> */ foo) {}
 /** @nodts */
 m_testRecursiveGeneric__void() {
  TypeWildCards.m_takesRecursiveGeneric__typewildcards_GenericType__void(Foo.$create__typewildcards_TypeWildCards(this));
 }
 /** @nodts @template C @return {C} */
 static m_testInferredIntersectionWithTypeVariable__typewildcards_TypeWildCards_RecursiveInterface__java_lang_Object(/** RecursiveInterface<?, C> */ ri) {
  TypeWildCards.$clinit();
  return ri.m_m__typewildcards_TypeWildCards_RecursiveInterface();
 }
 /** @nodts @template D @return {MultipleGenerics<D, ?string, List<D>>} */
 static m_createMultipleGenerics__typewildcards_List__typewildcards_TypeWildCards_MultipleGenerics(/** List<D> */ foo) {
  TypeWildCards.$clinit();
  return /**@type {!MultipleGenerics<D, ?string, List<D>>}*/ (MultipleGenerics.$create__());
 }
 /** @nodts @return {List<?>} */
 static get f_listWithWildcard__typewildcards_TypeWildCards() {
  return (TypeWildCards.$clinit(), TypeWildCards.$static_listWithWildcard__typewildcards_TypeWildCards);
 }
 /** @nodts */
 static set f_listWithWildcard__typewildcards_TypeWildCards(/** List<?> */ value) {
  (TypeWildCards.$clinit(), TypeWildCards.$static_listWithWildcard__typewildcards_TypeWildCards = value);
 }
 /** @nodts @return {MultipleGenerics<?, ?string, ?>} */
 static get f_valMultipleGenerics__typewildcards_TypeWildCards() {
  return (TypeWildCards.$clinit(), TypeWildCards.$static_valMultipleGenerics__typewildcards_TypeWildCards);
 }
 /** @nodts */
 static set f_valMultipleGenerics__typewildcards_TypeWildCards(/** MultipleGenerics<?, ?string, ?> */ value) {
  (TypeWildCards.$clinit(), TypeWildCards.$static_valMultipleGenerics__typewildcards_TypeWildCards = value);
 }
 /** @nodts */
 static $clinit() {
  TypeWildCards.$clinit = () =>{};
  TypeWildCards.$loadModules();
  j_l_Object.$clinit();
  TypeWildCards.$static_listWithWildcard__typewildcards_TypeWildCards = null;
  TypeWildCards.$static_valMultipleGenerics__typewildcards_TypeWildCards = (/**@type {MultipleGenerics<*, ?string, List<?>>}*/ (TypeWildCards.m_createMultipleGenerics__typewildcards_List__typewildcards_TypeWildCards_MultipleGenerics(TypeWildCards.$static_listWithWildcard__typewildcards_TypeWildCards)));
 }
 /** @nodts @return {boolean} */
 static $isInstance(/** ? */ instance) {
  return instance instanceof TypeWildCards;
 }
 
 /** @nodts */
 static $loadModules() {
  Bar = goog.module.get('typewildcards.Bar$impl');
  typewildcards_Function = goog.module.get('typewildcards.Function$impl');
  GenericType = goog.module.get('typewildcards.GenericType$impl');
  Foo = goog.module.get('typewildcards.TypeWildCards.Foo$impl');
  HasKey = goog.module.get('typewildcards.TypeWildCards.HasKey$impl');
  IntegerSupplier = goog.module.get('typewildcards.TypeWildCards.IntegerSupplier$impl');
  MultipleGenerics = goog.module.get('typewildcards.TypeWildCards.MultipleGenerics$impl');
  Y = goog.module.get('typewildcards.TypeWildCards.Y$impl');
  $Casts = goog.module.get('vmbootstrap.Casts$impl');
 }
}
/**@private {List<?>} @nodts*/
TypeWildCards.$static_listWithWildcard__typewildcards_TypeWildCards;
/**@private {MultipleGenerics<?, ?string, ?>} @nodts*/
TypeWildCards.$static_valMultipleGenerics__typewildcards_TypeWildCards;
$Util.$setClassMetadata(TypeWildCards, 'typewildcards.TypeWildCards');

exports = TypeWildCards;

//# sourceMappingURL=TypeWildCards.js.map
