public static StandardStructObjectInspector getStandardStructObjectInspector(
      List<String> structFieldNames,
      List<ObjectInspector> structFieldObjectInspectors,
      List<String> structComments) {
    ArrayList<List<?>> signature = new ArrayList<List<?>>(3);
    StringInternUtils.internStringsInList(structFieldNames);
    signature.add(structFieldNames);
    signature.add(structFieldObjectInspectors);
    if (structComments != null) {
      StringInternUtils.internStringsInList(structComments);
      signature.add(structComments);
    }
    StandardStructObjectInspector result = cachedStandardStructObjectInspector.asMap().get(signature);
    if (result == null) {
      result = new StandardStructObjectInspector(structFieldNames, structFieldObjectInspectors, structComments);
      StandardStructObjectInspector prev =
        cachedStandardStructObjectInspector.asMap().putIfAbsent(signature, result);
      if (prev != null) {
        result = prev;
      }
    }
    return result;
  }
Verify that we don't have an unexpected type of object inspector.
@param option The option to verify
@param oi The ObjectInspector to verify
@param checkOption We're only interested in this option type
@param classes ObjectInspector should not be of these types
serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorFactory.java