public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;
      
      if (!hasType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasLocalAnchorA()) {
        if (!getLocalAnchorA().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasLocalAnchorB()) {
        if (!getLocalAnchorB().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasLocalAxisA()) {
        if (!getLocalAxisA().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasGroundAnchorA()) {
        if (!getGroundAnchorA().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasGroundAnchorB()) {
        if (!getGroundAnchorB().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasTarget()) {
        if (!getTarget().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }