goog.module('typeannotations.ChildWithNullableParent$impl');

const $Util = goog.require('nativebootstrap.Util$impl');
const ParametricType = goog.require('typeannotations.ParametricType$impl');
const Parent = goog.require('typeannotations.Parent$impl');

let List = goog.forwardDeclare('java.util.List$impl');
let Map = goog.forwardDeclare('java.util.Map$impl');
let $Casts = goog.forwardDeclare('vmbootstrap.Casts$impl');

/**
 * @implements {ParametricType<Parent>}
 */
class ChildWithNullableParent extends Parent {
 /** @protected @nodts */
 constructor() {
  super();
 }
 /** @nodts @return {!ChildWithNullableParent} */
 static $create__() {
  ChildWithNullableParent.$clinit();
  let $instance = new ChildWithNullableParent();
  $instance.$ctor__typeannotations_ChildWithNullableParent__void();
  return $instance;
 }
 /** @nodts */
 $ctor__typeannotations_ChildWithNullableParent__void() {
  this.$ctor__typeannotations_Parent__void();
 }
 //Default method forwarding stub.
 /** @override @nodts @return {!List<Parent>} */
 m_m__java_util_List__java_util_List(/** !List<!Map<!Array<string>, Map<Array<!List<string>>, !Array<?string>>>> */ arg0) {
  return /**@type {!List<Parent>}*/ (ParametricType.m_m__$default__typeannotations_ParametricType__java_util_List__java_util_List(this, arg0));
 }
 //Bridge method.
 /** @final @override @nodts @return {Parent} */
 m_m__java_lang_String__java_lang_Object__java_lang_Object(/** string */ arg0, /** Parent */ arg1) {
  return this.m_m__java_lang_String__typeannotations_Parent__typeannotations_Parent(arg0, /**@type {Parent}*/ ($Casts.$to(arg1, Parent)));
 }
 //Bridge method.
 /** @final @override @nodts @return {List<!Parent>} */
 m_m__java_util_List__java_lang_Object__java_util_List(/** List<string> */ arg0, /** Parent */ arg1) {
  return this.m_m__java_util_List__typeannotations_Parent__java_util_List(arg0, /**@type {Parent}*/ ($Casts.$to(arg1, Parent)));
 }
 /** @nodts */
 static $clinit() {
  ChildWithNullableParent.$clinit = () =>{};
  ChildWithNullableParent.$loadModules();
  Parent.$clinit();
  ParametricType.$clinit();
 }
 /** @nodts @return {boolean} */
 static $isInstance(/** ? */ instance) {
  return instance instanceof ChildWithNullableParent;
 }
 
 /** @nodts */
 static $loadModules() {
  $Casts = goog.module.get('vmbootstrap.Casts$impl');
 }
}
ParametricType.$markImplementor(ChildWithNullableParent);
$Util.$setClassMetadata(ChildWithNullableParent, 'typeannotations.ChildWithNullableParent');

exports = ChildWithNullableParent;

//# sourceMappingURL=ChildWithNullableParent.js.map
