@Override
 protected UnboundTypeReference getUnboundTypeReference(Object handle) {
   UnboundTypeReference result = basicGetTypeParameters().get(handle);
   if (result == null) {
     result = parent.getUnboundTypeReference(handle);
     if (result.internalIsResolved())
       throw new IllegalStateException("Cannot query unbound reference that was already resolved");
     return (UnboundTypeReference) result.copyInto(getReferenceOwner());
   }
   return result;
 }