public static ObjectInspector getReflectionObjectInspector(Type t,
      ObjectInspectorOptions options) {
    return getReflectionObjectInspector(t, options, true);
  }
ObjectInspectorOptions describes what ObjectInspector to use. JAVA is to
use pure JAVA reflection. THRIFT is to use JAVA reflection and filter out
__isset fields, PROTOCOL_BUFFERS filters out has*.
New ObjectInspectorOptions can be added here when available.

We choose to use a single HashMap objectInspectorCache to cache all
situations for efficiency and code simplicity. And we don't expect a case
that a user need to create 2 or more different types of ObjectInspectors
for the same Java type.
serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorFactory.java