public static ColumnarStructObjectInspector getColumnarStructObjectInspector(
      List<String> structFieldNames,
      List<ObjectInspector> structFieldObjectInspectors, List<String> structFieldComments) {
    ArrayList<Object> signature = new ArrayList<Object>(3);
    signature.add(structFieldNames);
    signature.add(structFieldObjectInspectors);
    if(structFieldComments != null) {
      signature.add(structFieldComments);
    }
    ColumnarStructObjectInspector result = cachedColumnarStructObjectInspector.asMap()
        .get(signature);
    if (result == null) {
      result = new ColumnarStructObjectInspector(structFieldNames,
          structFieldObjectInspectors, structFieldComments);
      ColumnarStructObjectInspector prev =
        cachedColumnarStructObjectInspector.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