public ResolvedObjectType(
      Class<?> erased, TypeBindings bindings, ResolvedType superClass, ResolvedType[] interfaces) {
    super(erased, bindings);
    /* 19-Aug-2014, tatu: bit unclean, but has to do for now.
     *   Problem is, there is no common super-type, nor can we yet
     *   force or coerce recursive types. Rather, they may only get
     *   resolved only slightly after construction. So... need to
     *   keep a reference.
     */
    if (superClass != null) {
      if (!(superClass instanceof ResolvedObjectType)
          && !(superClass instanceof ResolvedRecursiveType)) {
        throw new IllegalArgumentException(
            "Unexpected parent type for "
                + erased.getName()
                + ": "
                + superClass.getClass().getName());
      }
    }

    _superClass = superClass;
    _superInterfaces = (interfaces == null) ? NO_TYPES : interfaces;
    _modifiers = erased.getModifiers();
  }