goog.module('methodreferences.MethodReferences$impl');

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

let Boolean = goog.forwardDeclare('java.lang.Boolean$impl');
let Double = goog.forwardDeclare('java.lang.Double$impl');
let Integer = goog.forwardDeclare('java.lang.Integer$impl');
let Number = goog.forwardDeclare('java.lang.Number$impl');
let j_l_String = goog.forwardDeclare('java.lang.String$impl');
let ArrayProducer = goog.forwardDeclare('methodreferences.MethodReferences.ArrayProducer$impl');
let BiFunction = goog.forwardDeclare('methodreferences.MethodReferences.BiFunction$impl');
let MethodReferences_Function = goog.forwardDeclare('methodreferences.MethodReferences.Function$impl');
let ObjectCapturingOuter = goog.forwardDeclare('methodreferences.MethodReferences.ObjectCapturingOuter$impl');
let Predicate = goog.forwardDeclare('methodreferences.MethodReferences.Predicate$impl');
let Producer = goog.forwardDeclare('methodreferences.MethodReferences.Producer$impl');
let $Long = goog.forwardDeclare('nativebootstrap.Long$impl');
let $Arrays = goog.forwardDeclare('vmbootstrap.Arrays$impl');
let $Casts = goog.forwardDeclare('vmbootstrap.Casts$impl');
let $Objects = goog.forwardDeclare('vmbootstrap.Objects$impl');
let $$boolean = goog.forwardDeclare('vmbootstrap.primitives.$boolean$impl');
let $$byte = goog.forwardDeclare('vmbootstrap.primitives.$byte$impl');
let $$char = goog.forwardDeclare('vmbootstrap.primitives.$char$impl');
let $$double = goog.forwardDeclare('vmbootstrap.primitives.$double$impl');
let $$float = goog.forwardDeclare('vmbootstrap.primitives.$float$impl');
let $$int = goog.forwardDeclare('vmbootstrap.primitives.$int$impl');
let $$long = goog.forwardDeclare('vmbootstrap.primitives.$long$impl');
let $$short = goog.forwardDeclare('vmbootstrap.primitives.$short$impl');

/**
 * @template T
 */
class MethodReferences extends j_l_Object {
 /** @protected @nodts */
 constructor() {
  super();
 }
 /** @nodts @template T @return {!MethodReferences<T>} */
 static $create__() {
  MethodReferences.$clinit();
  let $instance = new MethodReferences();
  $instance.$ctor__methodreferences_MethodReferences__void();
  return $instance;
 }
 /** @nodts */
 $ctor__methodreferences_MethodReferences__void() {
  this.$ctor__java_lang_Object__void();
 }
 /** @nodts @return {!*} */
 static m_m__java_lang_Object() {
  MethodReferences.$clinit();
  return j_l_Object.$create__();
 }
 /** @nodts @return {boolean} */
 m_isA__java_lang_Boolean() {
  return true;
 }
 /** @nodts @return {!*} */
 m_self__java_lang_Object_$pp_methodreferences() {
  return this;
 }
 /** @nodts @return {T} */
 m_t__java_lang_Object_$pp_methodreferences() {
  return null;
 }
 /** @nodts @return {boolean} */
 m_sameAs__java_lang_Number__java_lang_Boolean_$pp_methodreferences(/** !(Number|number) */ n) {
  return false;
 }
 /** @nodts @template U, V */
 static m_acceptFunctionSuperVariance__methodreferences_MethodReferences_Function__void(/** !MethodReferences_Function<?, V> */ f) {}
 /** @nodts */
 m_main__void_$pp_methodreferences() {
  let objectFactory = Producer.$adapt(/**  @return {!*}*/ (() =>{
   return j_l_Object.$create__();
  }));
  objectFactory = Producer.$adapt(/**  @return {!*}*/ (() =>{
   return MethodReferences.m_m__java_lang_Object();
  }));
  let /** MethodReferences<T> */ $$q, /** MethodReferences<!*> */ $$q_1, /** MethodReferences<!*> */ $$q_2;
  objectFactory = ($$q = (/**@type {!MethodReferences<T>}*/ (MethodReferences.$create__())), Producer.$adapt(/**  @return {!*}*/ (() =>{
   return $$q.m_isA__java_lang_Boolean();
  })));
  let parameterizedInstance = /**@type {!MethodReferences<string>}*/ (MethodReferences.$create__());
  let parameterizedFactory = Producer.$adapt(/**  @return {string}*/ (() =>{
   return /**@type {string}*/ ($Casts.$to(parameterizedInstance.m_t__java_lang_Object_$pp_methodreferences(), j_l_String));
  }));
  let biFunction = BiFunction.$adapt(/**  @return {boolean}*/ ((/** !MethodReferences<T> */ arg0, /** !(Number|number) */ arg1) =>{
   let arg0_1 = /**@type {!MethodReferences<T>}*/ ($Casts.$to(arg0, MethodReferences));
   let arg1_1 = /**@type {!(Number|number)}*/ ($Casts.$to(arg1, Number));
   return arg0_1.m_sameAs__java_lang_Number__java_lang_Boolean_$pp_methodreferences(arg1_1);
  }));
  let functionWithParameters = MethodReferences_Function.$adapt(/**  @return {boolean}*/ ((/** !(Number|number) */ arg0_2) =>{
   let arg0_3 = /**@type {!(Number|number)}*/ ($Casts.$to(arg0_2, Number));
   return this.m_sameAs__java_lang_Number__java_lang_Boolean_$pp_methodreferences(arg0_3);
  }));
  let objectPredicate = Predicate.$adapt(/**  @return {boolean}*/ ((/** !MethodReferences<T> */ arg0_4) =>{
   let arg0_5 = /**@type {!MethodReferences<T>}*/ ($Casts.$to(arg0_4, MethodReferences));
   return Boolean.m_booleanValue__java_lang_Boolean__boolean(arg0_5.m_isA__java_lang_Boolean());
  }));
  let objectCapturingOuterProducer = Producer.$adapt(/**  @return {!ObjectCapturingOuter<T>}*/ (() =>{
   return /**@type {!ObjectCapturingOuter<T>}*/ (ObjectCapturingOuter.$create__methodreferences_MethodReferences(this));
  }));
  let arrayProducer = ArrayProducer.$adapt(/**  @return {!Array<!*>}*/ ((/** number */ arg0_6) =>{
   return /**@type {!Array<?number>}*/ ($Arrays.$create([arg0_6], Double));
  }));
  objectFactory = ($$q_1 = (/**@type {!MethodReferences<!*>}*/ (MethodReferences.$create__())), Producer.$adapt(/**  @return {!*}*/ (() =>{
   return $$q_1.m_self__java_lang_Object_$pp_methodreferences();
  })));
  let function_1 = MethodReferences_Function.$adapt(/**  @return {!*}*/ ((/** !MethodReferences<T> */ arg0_7) =>{
   let arg0_8 = /**@type {!MethodReferences<T>}*/ ($Casts.$to(arg0_7, MethodReferences));
   return arg0_8.m_self__java_lang_Object_$pp_methodreferences();
  }));
  let booleanArrayFactory = MethodReferences_Function.$adapt(/**  @return {!Array<boolean>}*/ ((/** !Integer */ arg0_9) =>{
   let arg0_10 = /**@type {!Integer}*/ ($Casts.$to(arg0_9, Integer));
   return /**@type {!Array<boolean>}*/ ($Arrays.$create([arg0_10.m_intValue__int()], $$boolean));
  }));
  let charArrayFactory = MethodReferences_Function.$adapt(/**  @return {!Array<number>}*/ ((/** !Integer */ arg0_11) =>{
   let arg0_12 = /**@type {!Integer}*/ ($Casts.$to(arg0_11, Integer));
   return /**@type {!Array<number>}*/ ($Arrays.$create([arg0_12.m_intValue__int()], $$char));
  }));
  let byteArrayFactory = MethodReferences_Function.$adapt(/**  @return {!Array<number>}*/ ((/** !Integer */ arg0_13) =>{
   let arg0_14 = /**@type {!Integer}*/ ($Casts.$to(arg0_13, Integer));
   return /**@type {!Array<number>}*/ ($Arrays.$create([arg0_14.m_intValue__int()], $$byte));
  }));
  let shortArrayFactory = MethodReferences_Function.$adapt(/**  @return {!Array<number>}*/ ((/** !Integer */ arg0_15) =>{
   let arg0_16 = /**@type {!Integer}*/ ($Casts.$to(arg0_15, Integer));
   return /**@type {!Array<number>}*/ ($Arrays.$create([arg0_16.m_intValue__int()], $$short));
  }));
  let intArrayFactory = MethodReferences_Function.$adapt(/**  @return {!Array<number>}*/ ((/** !Integer */ arg0_17) =>{
   let arg0_18 = /**@type {!Integer}*/ ($Casts.$to(arg0_17, Integer));
   return /**@type {!Array<number>}*/ ($Arrays.$create([arg0_18.m_intValue__int()], $$int));
  }));
  let longArrayFactory = MethodReferences_Function.$adapt(/**  @return {!Array<!$Long>}*/ ((/** !Integer */ arg0_19) =>{
   let arg0_20 = /**@type {!Integer}*/ ($Casts.$to(arg0_19, Integer));
   return /**@type {!Array<!$Long>}*/ ($Arrays.$create([arg0_20.m_intValue__int()], $$long));
  }));
  let floatArrayFactory = MethodReferences_Function.$adapt(/**  @return {!Array<number>}*/ ((/** !Integer */ arg0_21) =>{
   let arg0_22 = /**@type {!Integer}*/ ($Casts.$to(arg0_21, Integer));
   return /**@type {!Array<number>}*/ ($Arrays.$create([arg0_22.m_intValue__int()], $$float));
  }));
  let doubleArrayFactory = MethodReferences_Function.$adapt(/**  @return {!Array<number>}*/ ((/** !Integer */ arg0_23) =>{
   let arg0_24 = /**@type {!Integer}*/ ($Casts.$to(arg0_23, Integer));
   return /**@type {!Array<number>}*/ ($Arrays.$create([arg0_24.m_intValue__int()], $$double));
  }));
  let objectArrayFactory = MethodReferences_Function.$adapt(/**  @return {!Array<!*>}*/ ((/** !Integer */ arg0_25) =>{
   let arg0_26 = /**@type {!Integer}*/ ($Casts.$to(arg0_25, Integer));
   return new Array(arg0_26.m_intValue__int());
  }));
  let nullableObjectArrayFactory = MethodReferences_Function.$adapt(/**  @return {!Array<*>}*/ ((/** !Integer */ arg0_27) =>{
   let arg0_28 = /**@type {!Integer}*/ ($Casts.$to(arg0_27, Integer));
   return new Array(arg0_28.m_intValue__int());
  }));
  let stringArrayFactory = MethodReferences_Function.$adapt(/**  @return {!Array<string>}*/ ((/** !Integer */ arg0_29) =>{
   let arg0_30 = /**@type {!Integer}*/ ($Casts.$to(arg0_29, Integer));
   return /**@type {!Array<?string>}*/ ($Arrays.$create([arg0_30.m_intValue__int()], j_l_String));
  }));
  let nullableStringArrayFactory = MethodReferences_Function.$adapt(/**  @return {!Array<?string>}*/ ((/** !Integer */ arg0_31) =>{
   let arg0_32 = /**@type {!Integer}*/ ($Casts.$to(arg0_31, Integer));
   return /**@type {!Array<?string>}*/ ($Arrays.$create([arg0_32.m_intValue__int()], j_l_String));
  }));
  let superToStringProducer = Producer.$adapt(/**  @return {?string}*/ (() =>{
   return j_l_Object.prototype.toString.call(this);
  }));
  let jsobjectFactory = /**  @return {!*}*/ (() =>{
   return j_l_Object.$create__();
  });
  jsobjectFactory = /**  @return {!*}*/ (() =>{
   return MethodReferences.m_m__java_lang_Object();
  });
  jsobjectFactory = ($$q_2 = (/**@type {!MethodReferences<!*>}*/ (MethodReferences.$create__())), /**  @return {!*}*/ (() =>{
   return $$q_2.m_self__java_lang_Object_$pp_methodreferences();
  }));
  let jsfunction = /**  @return {!*}*/ ((/** !MethodReferences<T> */ arg0_33) =>{
   let arg0_34 = /**@type {!MethodReferences<T>}*/ ($Casts.$to(arg0_33, MethodReferences));
   return arg0_34.m_self__java_lang_Object_$pp_methodreferences();
  });
  let jsarrayFactory = /**  @return {!Array<!*>}*/ ((/** !Integer */ arg0_35) =>{
   let arg0_36 = /**@type {!Integer}*/ ($Casts.$to(arg0_35, Integer));
   return new Array(arg0_36.m_intValue__int());
  });
  let jsSuperToStringProducer = /**  @return {?string}*/ (() =>{
   return j_l_Object.prototype.toString.call(this);
  });
  let jsbiFunction = /**  @return {boolean}*/ ((/** !MethodReferences<T> */ arg0_37, /** !(Number|number) */ arg1_2) =>{
   let arg0_38 = /**@type {!MethodReferences<T>}*/ ($Casts.$to(arg0_37, MethodReferences));
   let arg1_3 = /**@type {!(Number|number)}*/ ($Casts.$to(arg1_2, Number));
   return arg0_38.m_sameAs__java_lang_Number__java_lang_Boolean_$pp_methodreferences(arg1_3);
  });
  let jsFunctionWithParameters = /**  @return {boolean}*/ ((/** !(Number|number) */ arg0_39) =>{
   let arg0_40 = /**@type {!(Number|number)}*/ ($Casts.$to(arg0_39, Number));
   return this.m_sameAs__java_lang_Number__java_lang_Boolean_$pp_methodreferences(arg0_40);
  });
  objectFactory = (/**@type {!Producer<!*>}*/ (Producer.$adapt(/**  @return {?}*/ (() =>{
   return MethodReferences.m_m__java_lang_Object();
  }))));
  MethodReferences.m_acceptFunctionSuperVariance__methodreferences_MethodReferences_Function__void(MethodReferences_Function.$adapt(/**  @return {!*}*/ ((/** ? */ arg0_41) =>{
   let arg0_42 = /**@type {!MethodReferences<!*>}*/ ($Casts.$to(arg0_41, MethodReferences));
   return arg0_42.m_self__java_lang_Object_$pp_methodreferences();
  })));
 }
 /** @nodts @return {!Producer<string>} */
 static get f_staticStringProducer__methodreferences_MethodReferences() {
  return (MethodReferences.$clinit(), MethodReferences.$static_staticStringProducer__methodreferences_MethodReferences);
 }
 /** @nodts */
 static set f_staticStringProducer__methodreferences_MethodReferences(/** !Producer<string> */ value) {
  (MethodReferences.$clinit(), MethodReferences.$static_staticStringProducer__methodreferences_MethodReferences = value);
 }
 /** @nodts */
 static $clinit() {
  MethodReferences.$clinit = () =>{};
  MethodReferences.$loadModules();
  j_l_Object.$clinit();
  let /** * */ $$q;
  MethodReferences.$static_staticStringProducer__methodreferences_MethodReferences = ($$q = MethodReferences.m_m__java_lang_Object(), Producer.$adapt(/**  @return {string}*/ (() =>{
   return $Objects.m_toString__java_lang_Object__java_lang_String($$q);
  })));
 }
 /** @nodts @return {boolean} */
 static $isInstance(/** ? */ instance) {
  return instance instanceof MethodReferences;
 }
 
 /** @nodts */
 static $loadModules() {
  Boolean = goog.module.get('java.lang.Boolean$impl');
  Double = goog.module.get('java.lang.Double$impl');
  Integer = goog.module.get('java.lang.Integer$impl');
  Number = goog.module.get('java.lang.Number$impl');
  j_l_String = goog.module.get('java.lang.String$impl');
  ArrayProducer = goog.module.get('methodreferences.MethodReferences.ArrayProducer$impl');
  BiFunction = goog.module.get('methodreferences.MethodReferences.BiFunction$impl');
  MethodReferences_Function = goog.module.get('methodreferences.MethodReferences.Function$impl');
  ObjectCapturingOuter = goog.module.get('methodreferences.MethodReferences.ObjectCapturingOuter$impl');
  Predicate = goog.module.get('methodreferences.MethodReferences.Predicate$impl');
  Producer = goog.module.get('methodreferences.MethodReferences.Producer$impl');
  $Arrays = goog.module.get('vmbootstrap.Arrays$impl');
  $Casts = goog.module.get('vmbootstrap.Casts$impl');
  $Objects = goog.module.get('vmbootstrap.Objects$impl');
  $$boolean = goog.module.get('vmbootstrap.primitives.$boolean$impl');
  $$byte = goog.module.get('vmbootstrap.primitives.$byte$impl');
  $$char = goog.module.get('vmbootstrap.primitives.$char$impl');
  $$double = goog.module.get('vmbootstrap.primitives.$double$impl');
  $$float = goog.module.get('vmbootstrap.primitives.$float$impl');
  $$int = goog.module.get('vmbootstrap.primitives.$int$impl');
  $$long = goog.module.get('vmbootstrap.primitives.$long$impl');
  $$short = goog.module.get('vmbootstrap.primitives.$short$impl');
 }
}
/**@private {!Producer<string>} @nodts*/
MethodReferences.$static_staticStringProducer__methodreferences_MethodReferences;
$Util.$setClassMetadata(MethodReferences, 'methodreferences.MethodReferences');

exports = MethodReferences;

//# sourceMappingURL=MethodReferences.js.map
