fails:Kernel#open is a private method
fails:Kernel#open opens a file when given a valid filename
fails:Kernel#open opens a file when called with a block
fails:Kernel#open opens an io when path starts with a pipe
fails:Kernel#open opens an io when called with a block
fails:Kernel#open opens an io for writing
fails:Kernel#open raises an ArgumentError if not passed one argument
fails:Kernel#open raises a TypeError if passed a non-String that does not respond to #to_open
fails:Kernel#open accepts nil for mode and permission
fails:Kernel#open when given an object that responds to to_open calls #to_path to covert the argument to a String before calling #to_str
fails:Kernel#open when given an object that responds to to_open calls #to_str to convert the argument to a String
fails:Kernel#open when given an object that responds to to_open calls #to_open on argument
fails:Kernel#open when given an object that responds to to_open returns the value from #to_open
fails:Kernel#open when given an object that responds to to_open passes its arguments onto #to_open
fails:Kernel#open when given an object that responds to to_open passes the return value from #to_open to a block
fails:Kernel.open needs to be reviewed for spec completeness
