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

      if (!hasId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasRace()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasNeutral()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasStartLocation()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasLeftGame()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasMinerals()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasGas()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasCumulativeMinerals()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasCumulativeGas()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasSupplyTotal()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasSupplyUsed()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasVictorious()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasDefeated()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getUnitsCount(); i++) {
        if (!getUnits(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getStancesCount(); i++) {
        if (!getStances(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!getStartLocation().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getAllUnitCountCount(); i++) {
        if (!getAllUnitCount(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getCompletedUnitCountCount(); i++) {
        if (!getCompletedUnitCount(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getIncompleteUnitCountCount(); i++) {
        if (!getIncompleteUnitCount(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getDeadUnitCountCount(); i++) {
        if (!getDeadUnitCount(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getKilledUnitCountCount(); i++) {
        if (!getKilledUnitCount(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getUpgradeLevelsCount(); i++) {
        if (!getUpgradeLevels(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getResearchedTechsCount(); i++) {
        if (!getResearchedTechs(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getResearchingCount(); i++) {
        if (!getResearching(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getUpgradingCount(); i++) {
        if (!getUpgrading(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }