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

      if (!hasId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasPosition()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasTilePosition()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasRegion()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasNumMinerals()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasNumGas()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIsland()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasMineralOnly()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasStartLocation()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getPosition().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getTilePosition().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getMineralsCount(); i++) {
        if (!getMinerals(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getStaticMineralsCount(); i++) {
        if (!getStaticMinerals(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getGeysersCount(); i++) {
        if (!getGeysers(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }