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

      if (!hasId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasPosition()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasAngle()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasVelocityX()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasVelocityY()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasTargetPosition()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasRemoveTimer()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasExists()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasIsVisible()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasSource()) {
        if (!getSource().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!getPosition().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasTarget()) {
        if (!getTarget().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!getTargetPosition().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }