def instance=(thing)
      if instance_variable_defined?(:@instance)
        raise(JSI::Bug, "overwriting instance is not supported")
      end
      if thing.is_a?(Base)
        warn "assigning instance to a Base instance is incorrect. received: #{thing.pretty_inspect.chomp}"
        @instance = thing.instance
      elsif thing.is_a?(JSI::JSON::Node)
        @instance = thing
      else
        @instance = JSI::JSON::Node.new_doc(thing)
      end
    end
def instance=(thing)
      if instance_variable_defined?(:@instance)
        raise(JSI::Bug, "overwriting instance is not supported")
      end
      if thing.is_a?(Base)
        warn "assigning instance to a Base instance is incorrect. received: #{thing.pretty_inspect.chomp}"
        @instance = thing.instance
      elsif thing.is_a?(JSI::JSON::Node)
        @instance = thing
      else
        @instance = JSI::JSON::Node.new_doc(thing)
      end
    end
assigns @instance to the given thing, raising if the thing is not appropriate for a JSI instance
 @param thing [Object] a JSON schema instance for this class's schema