protected boolean isFullyInited(Set<Type> checkedTypes) {
    if (type != null && // when type is not set, init hasn't been called yet
        ObjectInspectorFactory.objectInspectorCache.asMap().get(type) != this) {
      // This object should be the same as in cache, otherwise, it must be removed due to init error
      throw new RuntimeException("Cached object inspector is gone while waiting for it to initialize");
    }

    if (!inited) {
      return false;
    }

    // We don't want to check types already checked
    checkedTypes.add(type);

    // This inspector is initialized, we still need
    // to check if all field inspectors are initialized
    for (StructField field: getAllStructFieldRefs()) {
      ObjectInspector oi = field.getFieldObjectInspector();
      if (oi instanceof ReflectionStructObjectInspector) {
        ReflectionStructObjectInspector soi = (ReflectionStructObjectInspector) oi;
        if (!checkedTypes.contains(soi.type) && !soi.isFullyInited(checkedTypes)) {
          return false;
        }
      }
    }
    return true;
  }
Check if this inspector and all its field inspectors are initialized.
serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ReflectionStructObjectInspector.java