►
From YouTube: .NET Design Review: GitHub Quick Reviews
Description
00:00:00 - Approved: Native Library Loader API https://github.com/dotnet/corefx/issues/32015
00:22:27 - Approved: IAsyncEnumerable(T).WithCancellation extension method https://github.com/dotnet/corefx/issues/33909
00:41:18 - Approved: PlaceholderText API addition to TextBox control https://github.com/dotnet/winforms/issues/134#issuecomment-452412351
00:45:02 - Approved: string.Concat(ReadOnlySpan(char), ...) https://github.com/dotnet/corefx/issues/34330
A
C
A
D
D
C
E
Is
thick:
let's
just
try
to
catch
me
if
you're,
if
you
want,
if
you
need
the
resolver
to
be
the
one,
you
want,
that's
set
it
and
if
you
don't
get
that
one
throws
I,
don't
see
a
need
for
exposing.
You
know:
here's
a
notice
that,
because
most
behaviors
would
be
if
it's
set
throw
and
that's
just
called
that's
just
on
the
set
method.
E
D
C
Extension
and
plugin
capabilities
so
like
paint
on
that
or
something
and
you
want
to
be
able
to
as
a
plugin
into
paint
on
that
be
able
to
search
for
your
own
chains
that
you
can
load
and
then
perform
operations
on
which
is
separate
from
the
plugins
that
paint.net
one's
to
load
and
so
paint.net
itself.
Critics
could
expose
a
mechanism
to
chain
into,
but
you
might
want
to
check
and
see
if
someone
is
already
registered.
So
you
know
what
you
want
to
do.
D
D
D
D
D
A
I
think
that
one
tennis
example
like
that's
the
thing
they
will
fall
on
the
belly
eventually
right,
like
I,
think
it
works
fine
if
you're
the
app
right
as
soon
as
you
have
plugins
the
polymers.
What
is
your
assembly
like
unification,
have
to
at
some
point
and
like
yeah,
three
plugins
happens
to
have
the
same
as
I'm
the
internet
right,
but
then
at
that
point
your
school
regardless
because
well,
what?
What
are
the
three
photos?
Do
you
want
to
use
to
those
native
dependencies
right
there?
It's
not
that
you
can
like
at
this
point.
A
You
have
to
decide
who
the
who
the
one
is
and
probably
they're
only
sent
to
the
model
as
well.
Whoever
registers
the
assembly,
whoever
those
see
assembly
first,
that
location
should
probably
need
for
the
location,
but
that
might
not
be
something
that
this
API
shape
will
allow
you
to
do,
because
you
kind
of
want
to
you
basically
want
to
register
almost
like,
if
you
know
them
to
send
over
that
identity.
Whatever
that
thing
returns,
that
thing
should
register
the
callback
right
by
like
there's
no
way
to
do
that.
D
And
that
is
left
up
to
the
initial
process.
To
do
for
itself,
like
our
model,
is
just
that
in
a
lot
of
ways
like
new
info.
If
we
just
we
don't
support,
changing,
explicitly
says
that
process
has
to
do
it's
not
changing,
you
could
add
again
but
easily,
but
the
fact
that
we
don't
allow
for
writing
well.
C
Cuz
like,
if
you
don't
allow
overriding,
but
you
do
a
lot
of
training,
then
it
works
the
same
way.
A
lot
of
our
other
resolvers
have
worked,
which
is
that
the
first,
the
first
delegate
in
the
chain
it
will
either
return
something
or
not,
and
if
it
doesn't,
then
the
next
thing
in
the
chain
gets
invoked
until
someone
returns.
True.
D
Yeah
one
of
the
early
versions
of
this
API
was
written
such
that
it
actually
returns
the
progresses
over.
If
one
is
already
said.
Otherwise,
it
returns
the
and
said
said
so.
If
we
think
chaining
I
don't
know,
there
is
no
known
use
case
for
chaining,
so
we
thought
of
just
doing
a
set.
I
didn't
know
what,
but
it.
D
G
E
E
E
E
If
the
library,
so
the
library
somewhere
in
a
static
initializers,
would
call
this
as,
like.
Oh
you've,
woken
up
a
plug-in
library.
I
need
to
know
what
I
do
so
in
a
static
initializer
that
fired
in
there
somewhere
before
any
PM
votes
ever
would
have
got
to
touch.
It
says
now,
here's
the
way
you
resolve
things
for
me.
So
again
it
passed
this
not
get
executing
assembly
like
who
is
the
line
of
code
right
now.
That
is
college,
but.
C
The
libraries,
the
libraries
probably
more
often
than
not
going
to
be
in
thing
calling
this
mess
right,
and
that
means
that
there's
a
lot
of
boilerplate
that
the
main
app
has
to
pass
down
through
to
the
calling
library
to
be
able
to
say
here's
where
I
land.
Here's
where
you
need
to
look
for
for
default
stuff,
in
addition
to
wherever
you're
going
to
want
to
look
yourself.
D
C
You
have
an
app
that
exists
in
the
root
folder
and
then
you've
got
plugins
in
a
subfolder
you're
going
to
want
to
tell
the
root
app
is
going
to
want
to
tell
the
plug-in
you
want
to
look
in
these
folders
for
any
additional
dependencies.
In
addition
to
these
other
places
that
you
might
be
looking
into
by
default,
nobody.
H
C
E
C
That's
what
chaining
is:
if
you
have
training,
then
the
then
the
route
map
registers
and
then
the
the
other
one
registers
as
well,
and
then
both
can
do
their
searches
independently
and
whichever
one
returns
true,
depending
on
the
desired
ordering
yeah
and
then
when
they
don't
they
don't
both
return
true
week.
So
that's
order,
you
know
no
one
returns
true
and
then
the
second
one
never
gets
a
home
right
and.
A
A
Is
that
if
you,
if
you
are
applying
for
painter
and
then
then
paint
it
might
gives
you
an
API
that
says,
give
me
you
know,
give
locations
when
they
do
dependencies
right
and
then
there
was
all
the
you
you
register
for
your
plugin
just
has
to
do
through
the
for
each
there,
because
I
think
the
problem
is
is
if
Jeremy
said
I'm,
not
sure
there
is
a
single
policy
level
always
work
like.
Maybe
the
plug-in
wants
to
use
a
different
implementation
for
me,
what
the
whole
sermon
he
has
right,
like.
A
Maybe
you
bring
a
new
original,
whatever
dated
module
you
have,
or
you
might
be,
because
you're
running
on,
like
three
different
versions
of
paint.net
and
you're,
saying
well,
certain
versions:
I
want
to
prefer
mine
one
over
the
one
that
they
have
like
I.
Don't
know
like
that.
That's
one
of
those
things
where,
like
there's,
not
a
good
answer
and.
F
A
Only
thing,
I
would
say
is
like
I'm
concerned.
If
you
make
statements
like
the
app
has
to
decide
right,
because,
because
I'm
in
practice,
like
it
maybe
I
like
this
I
agree
with
tanner
like
the
most
likely
color
will
be.
The
library
like,
like
the
app
will
not
call
these
methods
ever
right.
So
that
means
you
need
to
live
in
a
world
where
you
have
a
bunch
of
it
assemblies
that
are
loaded
into
your
process.
A
A
Works
like
if
you,
if
you
write
a
console,
app
or
web
right
and
let's
say
you
had
a
nuclear
package
dependency
on
sequel,
I'd,
right,
yeah
sequel,
like
gives
you
an
x86
folder,
it
gives
you
an
X.
64
folder
has
some
content
items
in
your
project
and
when
you
build
your
app,
your
app
happens
to
have
two
sub
directories
for
the
x64
and
x86
byte
arrays
right
and
then
all
you
do.
A
A
D
C
D
If,
for
native
it's
already
global
I
mean
our
story,
nobody
goes
right
right,
most
likely
to
a
polluted
and
it's
already
loaded.
We
don't
actually
get
into
any
of
this
like
if
you
like
libraries,
already
loaded,
you
can
only
load
one
version
of
the
native
library,
then,
if
the
app
and
the
plug-in
don't
agree.
D
D
C
So
we
can't
this
is
that
we
can't
unregister
and
resolver.
How
is
that
going
to
work
when
assembly
unloading
happens
and
people
are
able
to
unload
assemblies?
Then
they
load
it
again,
and
then
they
want
to
set
a
new
resolver,
because
it's
a
possibly
different,
it's
the
same
assembly,
but
they
need
to
do
initialization,
logic,
etc.
I.
D
C
Iii
think
that,
like
just
having
an
additional
either,
is
it
already
said,
or
even
a
public
static,
DLL
import
was
over
to
get
DLL
import
resolver
would
satisfy
extensibility
the
ability
to
determine
if
it's
already
said
they
were
allowed
chaining.
If
users
want
or
need
it
doesn't
watch
it.
Yes,
it
does.
If
you
expose
get
DLL
importers
over,
then
you
can
train
because
you
can
change
elegance.
It.
F
C
G
And
then
you
would
and
then
you
would
write
the
existing
delegate.
You
wouldn't
have
so
what
you
would
do
is
you
would
get
the
existing
delegate
and
you
would
insert
your
new
hook
wherever
in
that
chain
and
you
need
to
go
and
then
you
would
replace
the
entire
chain
right,
but
this
doesn't
allow
overwrite
exactly.
A
A
E
G
G
E
G
E
H
A
E
G
F
D
B
Okay,
so
yeah,
so
we
added
this
cancellation,
token
parameter
to
optional
parameter
to
get
a
sink
a
numerator,
and
the
idea
is
that
if
you
want
to
write
a
wait
for
each,
you
do
a
wait
for
each
of
our
item
in
source
and
if
you
want
to
add
a
cancellation
token,
there's
no
language
support
for
saying.
Take
this
token
and
pass
it
into
the
get
async
enumerator
method
the
compiler
generates.
So
we
need
an
API
that'll,
basically
sort
of
funnel
it
through,
and
so
we
need
some
sort
of
talk
with
cancellation.
B
B
So
previously,
we'd
approved
adding
configure
weight
via
basically
an
extension
method
online,
a
signal
source
that
returns
a
configured
async
enumerable
like
this,
you
know,
custom
struct,
but
now
we
need
one
that
also
can
accommodate
cancellation,
and
so
you
need
to
be
able
to
do
like
duck,
configure
await
down
with
cancellation,
or
you
know,
Don,
with
cancellation,
configure,
wait,
etc,
which
really
means
you
kind
of
need
them.
You
kind
of
want
them
to
both
be
operating
on
the
same
struct.
B
So
what
I'm
proposing
is
basically
getting
rid
of
the
current
one
that
we
added,
so
they
scroll
down
a
little
bit
further
and
having
the
single
struck.
That's
returned
both
with
cancellation
and
configure,
wait
both
return
it
and
then
that
thing
has
instance,
methods
as
well.
That
return.
You
know
another
of
itself,
that's
been
configured
appropriately.
The
upside
of
this
is
allows
you
to
say
dot
with
cancellation
dot,
configure
a
way
that,
with
cancellation,
dot,
configure
await
or
dot
configure
await
dot
with
cancellation.
So
you
kind
of
get
you
know
all
possible
combinations.
G
Already
called
we
have
other
places
in
the
framework
where
we
use
fluent
syntax,
like
this
main
counter
string,
string,
builder,
I,
guess
like
configure
way
full
of
like
I,
wouldn't
really
say,
link
is
fluent
syntax
to
because
it's
actually
it's
returning
I
guess
this
is
returning
a
different
object.
Every
time
is
left
organic.
E
A
B
B
If
you
ended
up
casting
this
via
the
interface
you,
your
move,
next
async
would
just
return
a
value
task,
a
bool
and
then
configure
await,
wouldn't
actually
take
any
and
have
any
effect
because
configure
wait,
works
via
pattern,
matching
or
yellow
strongly
type
pattern
from
the
compiler,
picking
up
the
right
configured,
value
tasks
available
and
therefore
picking
up
the
right.
A
wait
pattern
on
that.
Oh.
E
B
It's
so
imma
get
II
think
in
America,
it's
optional,
and
so
in
the
case
of
this
struct
we're
not
specifying
it.
The
compiler
will
match,
as
if
no
cancellation
token
was
being
passed
in
so
it'll
match,
either
again
async
a
numerator,
that's
parameterless
or
again
async
a
numerator
that
takes
an
optional
token
and
in
this
case,
because
the
only
for
using
this
whole
API
is
with
is
that
you've
passed
the
cancellation
token
into
with
cancellation.
A
B
I
think
someone
else
raised
the
question
of
whether
it's
also
kind
of
strange
to
be
on
task
extensions
for
with
cancellation,
because
you're
no
longer
like
configure
when
you
kind
of
wave
your
hands
and
say
alright.
Well,
it's
about
configuring.
The
await
on
the
task,
but
with
cancellation
really
isn't
about
the
task
at
all.
B
A
A
E
Just
going
with
like,
if
somebody's
writing
there
for
each
like
yes
system,
threading
tasks,
I
think
is
in
the
default
template
from
BS
but
like
if
you,
if
you
are
in
a
context
where
you
don't
have
this
use
it
like?
Is
it
reasonable
to
be
doing
a
cinema
bow
and
not
have
a
system
threading
tasks
using
because
if
so,
then
you
get
the
funk
I'm
writing
this
line
of
code.
It
says
in
the
sample,
but
even
you
can't
find
it
though
I
do
think.
Yes
is
better
at
like
sniffing
for
missing
using
snail.
A
Well,
it
definitely
gives
you
mean
if
you
type
it
correctly,
they
give
you
the
right
suggestion.
The
problem
is
still
that
you
don't
get
like
if
it
yeah.
If
you
don't
know
the
name
exactly
then,
but
the
question
is
like
I
mean
if
you
use
the
cancellation
technically
ever
using
full
system
of
threading,
because
that's
what
cancellation
token
is,
then
then
figure
out,
wait,
I,
don't
know
if
you
do
configure
wait,
you're
likely
to
be
using
for
anything.
A
A
Fair
enough,
although
like
yeah
I
mean
I'm
finally
putting
in
system
setting
I
wouldn't
put
in
system
collections
in
air
because
that's
relatively
clean,
there's
a
namespace,
yeah
and
I
would
not
put
in
some
some
stuff
that
has
to
do
with
cancellation
and
configure
a
way
that
does
not
seem
to
be
long
way
at
all.
So
would
either
put
it
in
system
threading
of
system,
fitting
tasks
so
I,
don't
know,
I
mean
creating
a
new
type,
seems
a
bit
I,
don't
know,
I
mean
tasks.
A
A
A
Try
to
collective
problem
is
that
I
think
you
also
need
to
consider
the
nice,
because
you
put
it
in
right.
Thank
you.
If
the
namespace
is
already
super
clean
and
very
small,
like
adding
a
type
in
there,
that
is
just
a
grab.
Bag
for
stuff
seems
wrong
right
and,
like
you,
can
look
at
a
new
mobile,
for
example,
in
your
mobile.
It's
not
in
the
same
age
position
I
anymore
and.
B
E
B
E
E
A
E
B
B
E
A
B
I
think
he's
referring
to
the
fact
that
we're
gonna
have
an
async
enumerable
for
link,
probably
living
not
not
in
cortex
it'll
be
and
likes.
You
know,
reactive
somewhere,
they'll
be
async,
innumerable
dot,
select
and
asynchrony,
and
so
I
create
a
type
called
async
enumerable
that
has
configure
await
and
what
on
it,
but
we're
not
planning
to
define.
You
know
all
the
various
link
methods
and
those
would
probably
be
on
an
async
in
a
normal
type.
A
A
To
I
it's
nonsensical
to
chain
them
in
in
various
ways.
I
agree
with
that.
That's
unfortunate,
but
we
have
said
many
other
areas,
happy
much
anything
that's
flu
and
you
can
always
change
it
in
like
weird
way.
It's
right
or
any
instance,
method
that
returns
itself,
but
I
mean,
like
my
clinic
example,
looks
like
to
string
and
string.
While
you
can
two
stranded
four
times
and
it's
nonsensical,
but
also
there's
nothing
prevents
that
and.
B
It's
there
any
I
can
go
either
way
on
this
from
a
design
perspective.
Is
there
any
benefit
to
detecting
that
you've
done
something
nonsensical
and
throwing
or
we
don't
care
like
you
can
imagine
the
struct,
storing
whether
it
is
called
weather
with
cancellation
has
been
used
and
whether
the
figure
weight
has
been
used,
and
it
it's
true,
and
you
call
that
same
method
throw
well.
We
care
just
over.
A
It
what's
the
behavior
that
I
would
get
I
would
assume
the
last
one
would
win.
Alright
last
one
would
win
yeah,
which
seems,
and
what
you
would
expect
I
connected
to
this
being
useful
in
debugging
right
when
you
just
want
to
add
something
quickly
to
the
end,
to
hole
right,
something
is
it
earlier
and
then
he
gets
to
remove
it.
I
mean.
E
If
it
was
returning
the
thing
that
could
be,
you
know,
sit
back
to
the
interface,
then
I
would
say
it
definitely
should
prevent
the
the
hoops
behavior,
but
the
fact
that
this
pulls
you
out
of
interface
land
and
pretty
much
locks
you
into
the
for
each
statement
now
means
you,
you
literally
wrote
it
twice
on
the
same
line
or
you
you
understood
that
you
had
a
configured
can
sablée
sync
enumerable.
The
only
exception
would
be
if
you
barred
it
and
I
have
opinions
on
bar
well,.
G
J
E
E
I
B
Can't
control
how
the
task
is
operating,
but
you
could
choose
to
cancel
the
wait
operation.
You
can
call
dot
wait
cancellation
token
today,
which
cancels
the
wait,
not
the
thing
you're
waiting.
So
if
you
imagine,
we
wanted
to
be
able
to
do
a
weight
task
in
the
past.
We've
always
talked
about
that
as
doing
a
weight
task,
dot,
configure
away
cancellation
token,
in
which
case
the
cancellation
token
is
about
me
because,
if
you're
configuring,
the
await
to
be
cancelable
by
here,
that's
not
at
all
what
the
cancellation
token
would
be.
I
say.
B
A
B
A
D
A
Enter
your
name
and
then
you
as
soon
as
you
focus
it
or
as
soon
as
there's
text
inside
of
the
what
they
call
the
the
the
placeholder
text
disappears
right
it
so
that
all
they
need
to
do
is
basically
explore
the
property
on
on
text
box.
It
says:
what
do
you
want
the
text
to
be
order,
that's
typical
and
give
it
right.
We.
B
B
B
C
H
A
E
A
G
C
C
H
E
E
When
writing
the
script,
our
compiler,
that
I
got
really
annoyed,
that
CSC
went
up
to
like
6
and
it
blind
call
that
they
didn't
basket
the
framework
support
of
it.
It's
like
well
CSC.
You
just
violated
the
language
spec.
So
then
I
added
one
but
yeah.
We
could
have
more
when
we
keep
them
and
we
certainly
can't
find
the
prince
cause.
You
can't
blocks
the
same
yep.
E
E
A
E
G
E
So
the
difference
is
from
last
time.
So
if
we
start
up
at
the
adjacent
document
part,
would
you
just
throw
up
top
there's
now
a
parse
that
takes
a
sequence,
yeah,
so
I
added
sequence,
a
bike
in
this
API
proposal?
And
so
this
is
contrasting
a
little
bit
with
what
Asselin
has
the
PR
right
now
invasion.
H
H
E
H
E
In
the
Jason
element,
the
string
based
property
indexers
are
gone
and
they're
now
just
a
method.
This
was
because
when
I
was
talking
about
something
with
emo,
he
got
upset
that
the
property
indexer
was
order
in
times
in
being
the
number
of
properties
times,
M
being
the
number
of
characters
in
the
string,
you're
looking
up
operation,
and
so
it
moved
to
a
method
to
make
it
be
more
obvious
that
it's
medium
expensive
instead
of
like
expensive.
B
One
is,
you
know,
other
places
in
the
framework
where
we
have
xx
document
they're,
not
I,
disposable
and
so
I'm,
a
little
concerned
that
we
sort
of
established
that
you
you
don't
need
to
be
concerned
about
disposing
these
things,
but
I
could
get
over
like
I
could
I
get
to
see
the
argument
being
made?
Well,
this
is
just
a
new
thing
and
people
have
to
learn.
The
second
thing,
though,
is
I'm
a
little
concerned.
B
E
B
A
little
concerned
that
this
might
be
coming
in
for
some
usage
scenarios,
this
might
become
a
resource
hog,
and
might
you
know
you
might
create
a
long
live
JSON
document
and
it's
just
gonna
hold
on
to
arrays
from
the
pool
for
a
indeterminate
amount
of
time?
Is
that
a
valid
concern
or
am
I
just
making
trouble
I
mean.
E
All
so,
unless
I
misunderstand
how
the
rifle
works,
all
that
that
would
mean
is
that
the
next
call
to
array
pool
rinse.
It
has
to
allocate
a
new
array
which
that
has
this
slowly
cycle
its
way
into
Jim
too,
but
that's
just
true
of
any
parallel
load
factor
and
eventually,
when
you're
done
with
this
and
you
dispose
it,
it
go
back
in
and
now
there's
just
the
next
identity
buffer.
They
write
us.
E
E
K
E
Okay,
so
then
the
Jason
element,
the
type,
is
no
longer
the
Jason
token
type.
It's
now
a
new
thing
called
Jason
value
type,
which
is
a
copy
of
there's
a
second
type
with
without
in
the
Ray
and
end
object
and
start
a
range
start
object
or
just
call
the
right
object.
Okay,
great
so
there's
the
new
enum
for
telling
you
what
you're
at
any
worried,
object
at
anymore
array
now,
which
are
different
enumerators.
K
I
E
E
G
E
E
E
E
E
E
Object,
enumerator
returns
it
enumerates
over
this
new
structure,
which
is
Jason
property
property,
has
two
properties.
One
is
the
element
that
is
the
value,
and
the
other
is
a
string.
That
is
the
name.
The
structure
itself
is
read-only
as
an
implementation
detail
for
those
who
care
name
is
delay.
The
the
name
property
just
calls
into
the
document
and
says,
give
me
what
the
name
is,
so
it
can
use
a
a
delay.
G
E
K
E
K
K
E
E
E
G
H
E
K
K
G
So
I
sort
of
Elvis
he
does
have
a
limitation
on
how
large
any
individual
incoming
string
can
be,
and
the
reason
for
that
is
because
he
pessimistically
computes
the
maximum
length
that
that
string
will
expand
into
after
escaping
and
then
does
a
bunch
of
work
under
the
covers
to
make
sure
that
the
I
buffer
writer
can
actually
give
him
a
properly
sized
snap.
So
it
should
work.
Unless
you
have
some.
Unless
you're
trying
to
write
a
gigabyte,
long
string,
it
should
work
well.
K
It's
not
going
to
come
back
to
long
string,
so
I
think
this
is
almost
a
problem
that
we
should
head
of
discussing
a
larger
group,
okay,
which
is,
if
I'm
using
JSON
writers
directly
and
I'm.
Writing.
You
know
property
by
property
from
time
to
time.
I
would
flash
that
the
actual
stream
well
flash
I
think
is
not
on
my
path
right.
It's
on
pipe
right!
K
So
now
we
are
introducing
a
bunch
of
ID.
Is
that
potential?
You
can
write
massive
amounts
of
data
if
I
have
no
way
to
flush,
I
think
periodically
between
you
know
every
hundred
megabytes
whenever
I
think
one
gigabyte,
tracer
I
mean
you
should
be
flashing
so
Yuri
quickly,
then
once
every
hundred
megabyte,
but.
G
C
I
K
I
kind
of
agree:
that's
what
I
said
it's
it's!
This
whole
thing
that
pipe
writer
has
classic
same
exactly.
For
this
reason,
it's
basically
periodically
also
call
it
after
writing
some
amount
of
data,
and
then
you
can
get
more
buffers
right
to
them,
advance
them
and
then
flashes
yeah.
Well
now
we
are
introducing
ap.
Is
that
that
kind
of
high
level
ideas
that
potentially
can
write
large
amount
of
data?
They
should
be
flashing
a
sync
from
time
to
time,
but
it's
not
me
Dean,
there's
no
way
to
do
it.
K
E
Could
I
mean
so
we
can
also
drop
this
entirely,
because
one
of
the
things
we
talked
about
was
how
it
was
going
to
be
so
great
because
we
passed
this
in
and
it
still
has
a
functor
back
to
what
the
raw
text
was
and
I
can
just
copy
it.
The
problem
is:
if
we
care
about
the
way
that
were
escaping
if
we
care
about
the
representation
of
the
state
values,
we
don't
want
to
do
that
and
at
one
point
this
just
becomes
that's.
G
K
G
E
E
D
E
E
Is
James
had
suggested
that
he
wanted
an
API
that
returns
nullable
and
the
problem
is
in
nowhere
in
the
framework?
Do
we
have
in
a
method
that
has
the
word
nullable
in
it,
and
we've
already
have
used
get
in
32
to
be
a
nominal
in
32
and
I?
Don't
think
that
nullable
would
be
the
default
that
we
would
want
so
I
said
no,
unless
Christoph
right
now,
once
the
end
wants
to
decide
that
we
can
have
given
32
and
get
knowable
with.
K
I
E
To
the
notion
that
a
property
is
either
a
number
or
null
and
say
that
an
element
is
either
a
number
or
no
and
then
because
what
he
does
is
he
has
conversion
operators
with
no
make
alternatives,
so
he
has
a
cast
to
end
and
a
guest
to
nullable
and
you
just
use
whichever
one
you
wanted
and
you
get
the
thing
the
following
the
guideline
that
any
conversion
operators
should
also
have
a
method.
That
is
the
same
thing
as
the
conversion
operator.
Well,
what
do
we
call
that
method?
E
E
A
His
argument
is
I.
Remember
what
what
James
said
it
said
like
in
JSON
null
is
often
used
in
the
context
of
the
videos
absent
because
you're
civilizing,
for
example,
database
structures
or
other
things,
and
the
the
polymer
in
practice
is.
If
we,
if
we
give
you
these
two,
a
few
I
get
property
in
whatever.
That
makes
that
useful,
slightly
more
cumbersome
to
use
any
editor
yeah.
I
E
E
K
G
E
So
so
here's
the
evolution
of
how
we
got
to
here,
yeah
jason
net,
has
conversion
operators
with
no
named
methods
yeah,
so
Absalom
had
conversion
operators
with
no
name
methods
in
the
prototype
yeah
when
I
was
moving
it
into
core
FX
I
followed
the
guideline
that
says.
If
you
have
a
conversion
operator,
you
need
to
have
a
named
alternative
to
the
conversion
operator.
Steve
asked
why
I
have
both
so
I
deleted
the
conversion
on.
K
This
is
that
don't
conversion
operators
are
very
cute,
but
they
are
not
visible
in
intellisense
and
the
indian
people
don't
know
how
to
use
the
ideas.
Okay,
I
get
that
element
and
they
like
color,
corrector,
I,
get
now
in
the
end
yeah,
and
they
don't
see
in
methods.
They
see.
You
can't
value
that
returns
a
string,
they
call
it
and
then
they
parse
the
end
and
then
it's
everything
yes
super.
So,
okay.
So
if.
E
E
E
A
E
E
B
Jeremy,
when
Venus
got
the
reader,
maybe
was
writer
around
big
integer
if
I
want,
if
I
had
a
an
element
that
contained
you
know,
data
that
was
too
large
to
fit
in
along,
for
example,
but
I
still
wanted
to
use
Jason
document.
How
would
I
create
my
own
being
at
the
jurors
they're
like
a
Jets
fan
or
something
that
I
would
use
to
then
pass
to
being
integer
parse
or
something?
How
does
that
work?
We.
E
E
G
K
E
E
G
G
K
E
Need
things
from
a
song
which
he
says
that
he
will
get
to
this
week
and
then
I
will
open
the
PM
or
at
in
fact
it's
I
might
open
the
PR
blocked
on
and
those
two
bugs
awesome.
So
that's
this
is
everything
is
implemented.
Everything
is
ready
accepted.
It
gives
you
illegally
form
strings
because
we
don't
have
on
escaping
and
it
depends
on
beheading
half
fixed,
a
bug
in
the
reader
that
I
want
ass
on
to
Pittsburgh
and.
K
I
E
B
Pushed
for
us
to
have
just
easy
stream
support,
but
I
was
told
no,
so
the
next
best
thing
is
one
of
the
issues
that
showed
up
on
emos
list
that
we
skipped
over
was
from
David
about
creating
an
adapter
between
streams
and
pipelines
and
there's
pipelines
to
sequence.
You'd
go
stream
to
pipeline
to
sequence.
B
K
Like
you
know,
there's
one
question:
what
I
want
I
need
and
what
yeah
a
majority
of
our
developers
I,
don't
care
whether
it's
a
you
know
helper,
that
takes
a
stream
or
it's
an
adapter.
Well,
but
I
need
one
of
those
otherwise
again,
I'm.
Writing
lots
of
PCL
libraries
to
be
able
to
parse
JSON,
but
if
you're.
So,
if
we
don't
think
that
we're
going
to.
E
B
B
The
reason
I
heard
you
know
we're
not
gonna,
do
it
for
Jason
reader/writer
is
this
is
low-level
and
as
such,
we're
using
refs
trucks
and
all
that
kind
of
stuff,
and
so
I
could
kind
of
get
okay.
We
need
something
higher
level,
but
Jason
document
is
already
higher
level
and
I.
Don't
believe,
there's
any
reasons.
It's
already
pulling
everything
into
memory
anyway,
and
it
would
just
be
a
single
method
that
goes
from
stream
to
JSON
document.
I,
don't
see
anything
stopping
us
from
and
as.
D
E
K
G
Can
we
go
back
to
the
first
method,
real
fast,
the
person
that
has
overloads
to
take
away
the
most
and
bite
right,
yeah?
Okay,
that
would
probably
the
reason
I'm
asking
is.
Historically,
it's
been
very
common
for
people
to
take
like
a
byte
array,
wrap
it
inside
a
memory
stream
and
then
pass
it
to
an
API
that
takes
a
string
as
an
input.
G
B
E
K
H
E
K
E
K
E
K
G
E
E
Have
a
private,
yes,
apparently
I,
you
know,
I
wrote
this
one
by
hand
instead
of
copying.
You
know
the
bottom
double
to
her.
Yes,
the
the
type
because
you
can't
change
it
once
it's
built.
It
makes
no
sense
anyway.
He
or
she
did
activate
your
create
instance.
One
mood
elements
just
gonna
throw
up
I,
I,
think
I'm
disposed
perfect
section,
because.
G
That
way,
we
can
also,
if
we
need
to
in
the
future
on
the
steel,
this
just
make
it
abstract
and
still
give
it
a
an
internal
constructor
or
something
yeah.
K
B
K
B
E
K
B
That's
what
I
was
asking
it's
like:
on
the
one
hand,
you
get
that
reaction,
though
I
have
pre
parse
at
first
and
then,
if
we
switch
to
saying
no,
you
don't
we're.
Just
gonna
represent
the
first
one.
Well
then,
with
a
stream,
you
kind
of
do
want
to
leave
open
because
you
might
have
stream
that
contains
multiple
documents.
Well,.
E
C
E
The
easy
answer
is
I'm.
Not
there
is
I,
none,
nothing
that
ever
disposes.
The
stream
ever
should
have
disposed
the
stream,
especially
this
shouldn't,
because
it's
a
method
and
amount
of
constructor,
which
means
our
convention,
is,
it
would
not
put
it
in
using
a
statement.
So
it
does
not
leave
leave
open
cuz,
it
won't
hold
it
yeah.
K
E
K
E
E
K
G
G
G
Why
do
we
have
tried
in
232
tryparse?
My
understanding
is
because
for
performance
reasons
we
wanted
to
be
able
to
tell
if
a
value
coming
in
and
such
such
as
you
know,
coming
over
the
network
or
something
was
a.
It
was
something
that
we
could
very
easily
throw
an
error
for
or
report
an
error
for.
So.
K
E
H
A
Say
like
if
you
get
an
exception
and
says
you
know,
string
is
one
another.
It's
probably
easy
to
tell
why
it's
when
I
run
it
in.
If
you
have
an
error
in
the
entire
document
and
says
the
document
valid
Jason
you're
like
where's
the
problem,
it's
a
1099,
wait
I!
Think
when
Adam
is
my
semicolon
right,
so
Falls
is
not
going
to
be
super
useful.
There.
That's.
G
E
A
E
So
yes
for
the
problem,
the
tureen
with
read
first
7
or
higher
is
we
now
have
a
either
we
throw
because
we
unconditionally
call
seek
back
5,
bytes
and
it
says
I'm,
sorry,
I'm
not
see
Keable
or
we
say.
If
you
give
me
an
unsuitable
stream.
I
have
corrupted
your
data
party
on
and
so
I
think
that
if
we're
adding
the
stream
overload
that
is
always
bringing
in
and
that
what
I
wanted
anyone,
which
means
we
shouldn't
have.
H
H
A
A
G
H
E
G
K
K
G
E
We
could
do
that
and
then
that
would
also
be
that
if
we
don't
do
that,
that
would
be
the
extension
me.
The
stream
one
again
complicates
things
were
freed
first,
because
not
all
stream
support,
crap
I
went
too
much
you
know
and,
and
that
one
feels
to
me
like
we
would
not
have
the
consumed
one.
It
would.
B
Considering
the
implementation
right
now
is
just
gonna
basically
offer
everything
into
a
giant
array.
Until
we
have
a
better
option,
a
better
implementation.
We
could
just
externalize
this
and
have
you
know
stream,
read
or
read
to
end
or
something
that
returns
the
binary
from
the
stream?
And
then
you
just
pass
it
into
one
of
these
existing
overloads
and
leave
it
entirely
outside
of
jason
document.
And
if
you
do
that,
then
this
whole
discussion
about
seeking
and
whatnot
entirely
goes
away.
K
K
E
G
A
Mean
I
think
I
think
the
collection
in
general
is
that
if
you,
if
you
do
this
like
what
what
are
the
sizes,
you
expect
to
be
passed
in
right.
If
you
expect
this
to
be
like
gigabytes
of
data,
then
maybe
that's
not
quite
but
I,
don't
they
will
be
gigabytes
of
data
in
practice,
but
it
will
be
in
the
megabyte.
Well,
no.
D
K
A
Maybe
I
don't
understand
how
this
thing
would
differ
from
you
allocated
buffer
that
you
guess
for
K.
You
can
copying
and
then
well
you
keep
calling
like.
You
know,
lead
into
that
thing.
Once
you
want
out
of
thing,
you
relocate
you
by
the
way
of
growing
it
by
whatever,
whatever
number
you
come
up
with,
you
keep
doing
this
and
eventually
every
byte
array.
They
whose
length
you
know
and
then
you
just
feed
one
more
one
sizing.
K
G
A
G
A
A
Difference
Amy
needs
a
pub
label,
yeah
I'm,
saying
I'm
all
agree
with
you.
We
should
have
the
API
I
think
in
practice
for
the
people
that
need
a
portable
API,
that
it's
not
that
many
people
and
those
can
copy
deploy.
They
really
care
that
much
like
I
think
that's.
It
doesn't
strike
me
as
a
necessarily
bad
idea.
I
think
it
would
be
way
of
friends
to
expose
a
single
method
and
Apollo
professionally,
just
because
we
cannot
have
streamed
or
you
know
which
end
of
something
which
is
where
the
API
or
duty
belong.
I.
K
A
K
E
The
question
is:
what's
what's
the
policy
on
so
if
we,
if
we
do
parse
as
we
throw
the
moment
that
there's
something
passed,
the
final
semantic
token
then,
but
then
that
one
is
fine,
I'm
easy
to
do
as
a
stream.
The
problem
is:
if
it's,
if
it's
the
one
that
does
only
the
first
Jason
payload,
then
either
we
throw
in
non
suitable
streams
or
we
have
some
notion
of
if
it's
not
secret,
but
we
corrupt
or
or
whatever.
So
it's
it's
about.
The
policy
of
this
we
add
parts.
K
K
We
have
the
following
options:
we
could,
as
Jeremy
said
in
this
case,
we
throw
we
only
throw
if
it's
Nancy
Kabul,
which
is
we
unconditionally
third
option.
We
mean
we,
no,
no,
we
believe
the
stream
as
it
is,
and
we
say
we
don't
care.
You
should
have
passed
that
see
Kabul
stream
and
for
a
function.
Is
we
give
you
the
data
back,
that
we
over
read.
K
A
Honestly,
the
one
that
I
think,
if
the
most
logical
one
would
be
the
you
basically
check
in
parts
in
the
stream,
see
cable
and
if
not
you
English
Lords,
that
you
do.
You
can't
do
that.
But
if
we
do
that,
then
by
definition,
that
stream
has
a
length
which
no
means
creating
a
by
the
rate
of
the
right
size
and
copying
all
the
data
in
this
video.
Well.
E
K
A
K
K
G
Think
you
would
want
to
throw
a
road
network
stream
into
this
API,
to
be
honest
generally,
if
you're,
if
you're
getting
Jason
from
the
network.
Generally,
it's
going
to
be
like
within
a
mile
envelope
as
part
of
an
HTTP
request
which
will
have
its
own
inner
stream,
which
represents
just
so
request
payload,
which
means
it
right
upstream
terminates
non-sequel
wrapping
the
underlying
stream.
That's
not
suitable.
G
That's
fine
because
you
expect
the
stream
only
to
ever
have
a
JSON
document
and
absolutely
nothing
else
ever
so
shouldn't
be,
throwing
if
parse
is
called
the
non
sequel
stream
know
that
that
actually
goes
back
to
what
we
were
saying
earlier.
Oh,
if
there's
anything
at
the
end
of
the
document
fail
just
straight
up
for.