public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      if (!hasMapWidth()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasMapHeight()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasMapFilename()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasMapName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasMapHash()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getStaticMineralsCount(); i++) {
        if (!getStaticMinerals(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getStaticGeysersCount(); i++) {
        if (!getStaticGeysers(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getStaticNeutralUnitsCount(); i++) {
        if (!getStaticNeutralUnits(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getUnitTypesCount(); i++) {
        if (!getUnitTypes(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getWeaponsCount(); i++) {
        if (!getWeapons(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getUpgradesCount(); i++) {
        if (!getUpgrades(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getTechsCount(); i++) {
        if (!getTechs(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getRacesCount(); i++) {
        if (!getRaces(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getStartLocationsCount(); i++) {
        if (!getStartLocations(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }