►
From YouTube: .NET Design Review: Nullable Annotation Attributes
Description
-10:-23:-04 - Approved: Attributes for nullable annotations https://github.com/dotnet/corefx/issues/37826#issuecomment-494505569
A
A
A
C
A
D
Yeah,
these
are
generally
in
the
same
ordering
so
I'm
the
first
category.
First
two
are
about
regulating
input
beyond
what
the
nullable
annotations
are
right.
So
it's
about
saying
and
all
it's
allowed
in
here,
even
though,
even
if
then,
you
know
sometimes
use
a
generic
contact
right,
even
even
if
the
type
would
normally
allow
it,
so
it
expresses
especially
Nancy
or
the
opposite
null
is
not
allowed
here.
Even
if
the
type
of
house,
those
are
fruit,
antigens
I,
was.
B
Gonna
say,
and
it's
relevant
for
both
generics
and
non
generics.
Generics
is
obvious
because
the
define
you
know
the
person
defining
the
class
if
it's
unconstrained,
doesn't
get
to
specify
question
marks
on
things
and
non
generics
in
a
variety
of
situations.
If
a
property
is
defined
to
be
say,
string,
but
the
getter
and
the
setter
disagree
on
what
can
be
returned,
you
know
null
versus
non
null
and
what
can
be
set
null
versus
non
null.
These
allow
you
to
override
what
you
set
us,
but
the
property
level
or.
D
There
might
be
an
argument
as
to
could
we
make
do
with
fewer
like
why?
Why
is
allow
null,
and
maybe
now
why?
Why
are
they
different?
One
describe
one
describes
preconditions:
restrictions
on
certain,
the
other
describes
what
can
be
expected
of
output
and,
in
certain
cases
like
ref
parameters,
for
instance,
they
really
have
to
it
really
do
mean
different
things
on
the
same
entity.
So
you
can't
like
elapsed.
I
mean
to
wanna
know,
is
it
the
same
thing?
Is.
D
F
D
D
Like-
and
that
goes
to
one
of
your
open
questions,
I
guess,
which
is
when
these
go
on
property,
should
they
go
on
the
accessors,
or
should
they
go
on
the
property
itself,
but
Steve
Derrick
for
now?
But
it's
done
something
we
it's
something
we
could
close
on
here
is
to
a
lot
of
the
money
accesses,
which
is
why
you
need
the
meta
thing
right,
but
we,
if
we
had
them
instead
go
directly
on
the
attribute
just
like
they
would
go
directly
I'm
sorry,
they
recommend
the
probably
just
like
they
would
go
directly
on
the
field.
F
G
A
E
H
A
G
A
A
D
I
mean
it's,
it's
just
I
think
it's
mostly
just
a
design
decision.
That's
on
the
one
side,
if
you
have
a
field
for
sure
you
have
to
put
it
on
the
field
itself,
you're
not
get
to
put
it
on
the
input
or
the
output
side
of
the
field
visit.
There's
no
context
in
distinction,
so
we
can
either
use
the
field
analogy
and
say:
property
should
be
annotated
at
the
same
way.
The
fields
are,
let's
change
the
field
to
a
property.
D
You
know
the
attribute
states
in
the
same
place
or
you
can
say
well,
attributes
properties
have
more
specific
places.
They
actually
have
a
place
where
input
and
a
place
for
output,
and
it
should
go
there
either
principle
makes
sense
to
me
and
I'm
I'm
vaguely
in
favor
of
the
analogy
with
with
the
fields,
but
no
I,
don't
think
I.
Think.
A
D
I
G
G
J
D
G
G
B
B
Iii
know
I'm,
the
one
who
you
know
default
is
putting
them
on
the
accessories,
but
I
would
actually
sort
of
lean
with
Mads
and
say
we
get
rid
of
the
message
thing
on
the
top
four:
it
prohibits
you
from
using
it
in
places
that
don't
make
sense
and
the
first
to
apply
to
the
indirection.
They
always
apply
to
the
indirection
there's
really
only
regardless
of
language.
There's
really
only
one
thing
on
properties
that
has
an
indirection
and
there's
really
only
one
thing
in
properties
that
has
announced
direction.
B
E
D
B
A
I
B
E
B
D
F
B
I
D
A
little
I
get
what
you
say,
but
there's
say
the
problem
here
is
that
it
sort
of
gives
the
illusion
that
there
are
only
those
two
possibilities,
but
there's
a
third
option
which
is
leaving
it
off,
which
means
neither
of
those
two
sometimes
right,
especially
in
a
generic
setting.
That's
allowing
all
true
and
I
Arnold
false
and
there's
allowing
all
whatever
it
said.
Whatever
it,
you
know,
it
resolves
to
from
the
type.
D
A
D
G
G
G
D
A
Though
he
wasn't
asking
if
the
chant
should
be
I,
think
apparently
in
the
salad
notation
of
the
native
side,
they
have.
You
know
it's
all
underscores
all
over
the
plate,
so,
but
they
all
start
with
in
or
out
to
make
it
clear
where,
where
they
go,
did
we
think
about
that
at
all?
Let
me
not
when
everything
for
the
first
time
also
I
had
to
read
the
comments
to
understand
which
one
goes
where
wasn't
super
clear,
just
by
the
naming,
which
one
is
the
opener,
which
one
is
in
summer.
B
E
A
We
could
have
in
order
I
didn't
really
care,
but
I
guess
at
that
point
it
will
be
very
way
to
say
no
because
you
would
have
to
well.
It's
been
faithful
to
me
and
my
only
concern
is
like
I
mean
I
wrote
this
in
the
in
this
issue
and
I
said
like
I
want
to
group
them
somehow,
because
compiler
service
already
is
pretty
large
in
terms
of
API
surface
I.
Think
a
prefix
would
just
make
the
API
it's
really
submitter
long
again
and
then
same
problem.
It
gets
very
busy
when
you
have
actually
signatures.
A
C
H
A
D
They
also
an
encode
because
they
can
be
applied.
They
they
are
post-conditions,
so
they
talk
about
what
is
what
is
known
after
the
method
has
been
called
right,
but
but
they
can
either
be.
They
can
either
be
mutating
and
now
producing
an
output
and
saying
something
about
that
output,
or
they
can
be
testing
an
input
and
saying
something
about
that
input.
So
for.
D
A
D
D
A
B
A
A
E
B
I
A
B
A
I
D
B
E
The
other
thing
is:
if
it
was
inherited,
we
might
run
into
scenarios
where
someone's
trying
to
loosen
an
assertion.
For
example,
someone
has
disallowed
null
on
that
on
the
top
level
one,
but
you
would
have
an
implementation
and
you
want
to
allow
no
for
that
one,
because
you
Andale
it
correctly.
We
might,
we
might
run
into
a
scenario
where
we
have
both
don't
know
which
one
is
the
real
one.
I
would
actually
probably.
D
Then
suggest
that
we
don't
have
a
married
and
then
people
will
have
to
specified
manually
we
we
sort
of
intended
to
have
given
the
compiler
that
would
actually
regulate
this,
compare
overrides
and
make
sure
that
they
were
in
accordance
with
what
they
all
were
overriding
but
not
necessarily
the
same,
but
we
probably
won't
get
to
implementing
that.
They.
A
Recently,
actually,
the
data
I
think
that
both
present
present
many
foggy
custom
attitudes
but
I'm
not
sure
all
the
competitors
ever
the
symbol.
Api
has
been
I
would
say
if
you
couldn't
tell
which
time
they
were
applied
to.
You
would
basically
just
say
if
any
other
attributes
are
applied
on
the
on
the
inherited
one.
You
basically
ignore
all
the
ones
from
the
base.
If
none
of
them
are
one
on
the
inherited
wanted
to
take
all
the
ones
from
the
base.
All.
D
B
G
To
narrative,
well,
you
could
you
could
have
the
compiler
detected
another
way
such
as
like.
If
the
entire
type
is
annotated,
then
you
can
avoid
omitting
the
attributes
of
the
method
again
provided
that
they
match
of
what
their
inherited.
So,
if
you
could
use
it,
you
could
still
detected
the
compiler
while
reducing
metadata,
which
other
is
also
hurting
startup
time.
A
But
think
but
but
if
no
novel
attributes
are
present,
if
I
basically
put
you
back
to,
you
have
no
annotations
that
everything
would
be
but
you're
calling
button
people
managers
they
oblivious
right,
but
would
you
ever
want
that
I,
don't
think
you
were
doing
okay
I
can
see.
We
want
to
loosen
it
from
not
now
to
now
or
the
other
way
around
but
like.
Why
would
you
ever
go
back
to
I,
don't
know
well.
G
It's
an
existing
libraries
in
here
they
a
type
so
there's
an
oblivious
library,
that's
referencing
in
all
the
where
library,
yes
and
they're
overriding
a
tight
consider
normal
where
library,
but
they're
still
oblivious.
If
so,
you
don't
want,
you
wouldn't
have
any
attributes
neck,
but
like
I
was
saying
the
compiler
could
have
an
attribute
on
the
type
that
says
the
type
stole
a
little
air
and
if
it's
aware,
but
there's
no
afternoon
on
the
method,
it
could
say.
G
D
D
Then
we
need
the
attributes
to
be
different
things.
We
need
to
be
able
to
express
all
the
options
for
that
review,
not
just
with
the
absence
of
that
reviews,
and
we
need
to
the
ability
for
when
you
do
supply
an
attribute
to
contradicts
a
previous
one.
We
need
to
compiler
to
be
smart
enough
to
replace
the
meaning
and
sort
of.
G
So
so,
given
a
type
in
a
null
oblivious
library,
there
will
be
no
nullable.
Actually
what
so
I
released
it,
so
the
compiler
can
detect
it.
This.
D
Is
not
about
null
obliviousness.
This
is
about
I
want
to
make
it
more
permissive,
overwrite
I'm
totally,
even
in
total
null
aware,
land
I
want
to
make
it
more
permissive
override
right,
so
I
want
to
no
longer
have
the
disallow
null
attribute
on
my
generic
brand
I'm,
a
parameter
that
has
a
generic
type.
I
can't
could
allow
null,
because
that's
truly
I
and
my
only
option
with
the
current
set
we're
proposing
areas
believe
it
all.
But
if
the
attributes
inherit,
then
that
won't
work
either
because
I
mean
still
inheriting
the
disallow.
D
B
H
D
A
B
Yeah
I
mean
if
you
look
at
the
draft
PR
I
put
up
I'm
gonna,
wait
my
hands
or
something
like
400
of
these
attributes
applied,
approximately
300
of
which
were
does
not
return.
So
there
aren't
that
many
compared
to
the
literally
there's
a
nullable
attribute
being
generated
by
the
compiler
right
now
on
every
single
method.
Right.
Every.
L
C
H
D
Yeah,
the
reason
being
that
this
this
clicks
in
with
the
compilers
flow
analysis
or
the
compiler
both
when
it
does
a
definite
assignment
analysis,
but
also
the
null
analysis.
It's
able
to
have
a
maybe
null
when
true
and
maybe
know
when
false
state,
where,
if
you
then
branch
on
the
result
of
the
method,
it
can
keep
track
of
the
different
null
States
in
the
two
branches
is.
M
E
B
Eric's
question
there
are
just
using
Korolev
as
an
example,
we
talked
about
this
yesterday
or
the
day
before
offline.
There
are
a
few
cases
in
Cortland,
for
example,
where
we
returned
any
new
instead
of
a
pool,
and
so
the
you
know
ends
up
being
if
foo
equals
success
or
something
like
that,
and
so
we
were
talked
about
well,
you
know,
could
we
add
instead
of
taking
a
pool
here?
B
Can
do
that
or
I
mean
or
it
could
just
be-
maybe
no
one
attribute
I
take
some
object
in
a
return
value
object
or
something
like
that.
Also
I
mean
I
added
these.
Let
me
run
that
note.
I
added
these
properties
to
the
attributes,
because
it's
sort
of
you
know
good
style,
hygiene
bunion.
It's
not
clear
to
me
that
they're
actually
useful.
A
F
E
D
B
E
B
A
B
D
D
D
H
B
What's
that
it
is
so,
for
example,
interlocked
exchange
or
volatile
right,
they
would
go
on.
You
would
put
not
null
if
not
null
on
the
first.
The
first
parameter
specifying
the
second
parameter,
because
it
writes
the
second
parameter
to
the
first,
and
so,
if
the
second
is
non
null
than
the
first
wall,
so
become
non
null
upon
the
other
post
condition.
Yeah.
E
B
B
D
B
D
That
returned
you,
one
of
the
keys
yes
and
then.
N
K
B
J
B
A
E
D
D
A
E
I
D
B
Is
pretty
where
I
think
I
I
think
that's
the
only
case
there?
There
are
several
cases
where
there
are
multiple,
not
null
of
not
in
allatra
buttes,
on
various
aspects
of
a
method
like
the
two
I
mentioned
before
interlock
exchange
and
volatile
I'm.
Sorry
interlocked
exchange
has
not
knoweth
not
null
as
on
both
the
return
and
on
the
first
argument,
the
first
parameter
but
I
think
delegate
combined
is
the
only
one
in
correlate
that
has
to
not
know
if
not
nulls,
on
the
same,
like
both
for
unn
return,
for
example
on
this.
C
N
F
N
N
N
N
Okay,
that's
I'm,
saying
it's
like
that.
Now,
that's
that's
a
sure
see
sharpen
core
FX
should
agree
on
whether
not
that's
a
good
idea
or
not,
because
one
thing
is,
they
cannot
put
it
now
and
that's
easy
to
choose
to
do
it
later
in
the
min
conjunction
with
the
C
sharp
feature.
It
add
that
to
that
with
it,
I
mean.
N
A
G
N
D
G
N
Of
the
the
language
makes
it
appear
as
if
the
next
statement
in
reality
you
do
not
have
BB,
doesn't
knock
you
over
their
nose
lesson.
Okay,
doesn't
have
permanent
control.
A
A
D
D
G
E
E
D
B
E
A
So
then,
the
only
question
that,
having
are
many
two
minutes,
it
should
be
have
a
base
type
for
all
of
them.
The
reason
I
suggest
the
basis
of
all
of
them
is
that
when
you
go
to
MST
and
you
can
click
on
the
base
time-
and
we
show
you
all
of
them
neatly
combined.
If
you
don't
hide
it,
then
you
basically
have
to
have
a
documentation
paper.
Somebody
created,
you
know
something
by
hand.
Basically,
if.
D
E
A
G
B
B
D
E
D
E
And
can
choose.
The
point
is
that
you
can't
write
nullable
or
taught,
and
that's
that's
the
theory
is
that
you
can,
when
you're
looking
for
this
stuff,
if
you're
looking
to
look
through
metadata,
you
can
you
know
we
can,
we
can
put
a
link
in
the
documentation,
but
if
we're
talking
about
a
page
of
these
are
the
things
I
can
write,
that's
I
think
what
we
were
talking
about
here.
Well,.
A
I
think
that
was
inaudible
like
I
think
attribute
is
not
a
signatory
think
it
is
it's
in
the
menu
in
the
source
one,
but
if
you
do
reflection
or
if
you
look
at
things
and
I'll
spy
until
the
actually
supported
that
gets
visible
to
people
read
and
that
sends
I,
don't
think
it's
bad
if
it
extends
that
it
just
means.
Yet
you
cannot
turn
in
source
code.
If
you
try,
you
get
a
copepod
I.
Also
don't
like
it.
So.
N
The
white
services
namespace,
like
that's
a
that's
a
name
say
so
we
generally
tell
customers,
don't
go
there
like
we
tell
customers.
It's
like
this
is
where
we
put
things
that
the
compiler
needs
as
a
function
of
its
hosted.
Job
right
here
is
different.
This
is
one
more
saying.
No,
we
want
you
to
oh
I,
think
that
I,
don't
I,
don't
doing
the
classic
like
this
is
bad
and
I.
Don't
have
a
better
suggestion.
A
A
F
F
A
A
N
Pepa
dental
is
in
right,
definitely
yeah
see
those.
So
if
I
wanted
to
rationalize
them
being
at
a
different
name,
space
I
would
say
it's
because
they
took
the
the
home
and
though
the
attributes
that
are
there
affect
how
the
compiler
he
observably
affects
how
the
compiler
mix
code,
whereas
this
just
changes
the
Diagnostics
I,
guess.
A
D
N
N
We
want,
if
you
want
the
compiler
to
have
if
the
intent
of
that
is
to
change
how
the
compiler,
in
its
code,
I,
think
that
we
would
have
to
do
something
stronger
than
an
attribute
or
we'd
have
to
like
that
did
not
meet
what
my
understanding
the
attribute
so
because
we
would
have
like
there's.
That
is
it's
unavoidable.
B
N
Way
the
only
thing
that
I
my
understanding
of
that
attribute
what
I
envisioned
it
was
that
that
affects
on
gullibility
analysis,
meaning
that
for
the
purpose
of
flow
analysis,
we
pretend
things
like
throw
helpers.
Bah
blah
does
not
actually
return,
and
so
we
consider
everything
knowable
beyond
that.
We
would
not
change
like
region
right
for
reach
ability.
So.
B
N
G
N
Reno
you're
presuming
an
implementation,
don't
do
that
I
can
mob
wrap
the
out
of
it
and
after
it
doesn't
respect
water.
No,
they
do
because
we
mod
wreck
so
much
crap
and
switch
everything
to
do.
They
respect
my
rights
now,
okay,
specifically
because
we
started
telling
them
you
have
to,
because
this
is
dangerous
as
I'm
saying
like
we
can,
we
can
do
what
we,
if
we,
if
we
actually
want.
N
We
have
options
if
we
want
to
do
the
thing
that
Steve
said,
but
I
would
think
just
a
simple
attributes,
not
enough,
because
we
like
the
way
we
do
read
like
dead
code
and
stuff
like
we,
the
compiler
alternates
between,
for
instance,
like
if
you
do,
while
true
like.
If
you
ever
return,
you
can
have
return
value
in
c-sharp
and
do-while.
True,
there's
no
RET
instruction
and
I'll
like
we.
N
We
know
because
the
CLR
we
there's
an
overlap
between
like
CLR
does
not
return
an
hour
analysis,
and
we
know,
for
instance,
that
while
true
never
returns,
therefore,
you
don't
need
a
dot
read,
whereas
if
we
called
another
method,
that
head
does
not
return
like
what
do
we
do?
Do
we
just
say
well
we'll
put
like
a
dot
throw
no
after
that,
like?
How
do
we
react
in
the
case
where
it
does
return,
because.
N
A
method
by
that
has
a
return
value
and
something
which
just
does
not
return.
What
do
we
do?
We
have
to
admit
some
code
there
to
have
a
legal
eye
out
and
that's
why
we've
never
like
that's
the
trick
of
this
feature
is
that
you
do
that
and
that's
why
I
thought
that
the
attribute
was
just
affecting
all
ability,
analysis,
I'm,
not
saying
you
can't
do
the
full
feature,
but
that
was
a
different
feature
than
I
was
imagining
when
I
read
that
dog.
N
E
B
Evident
but
I
think
there
are
two
things
are
one
that
if
it's
Diagnostics
and
the
attribute
is
affecting
reach
ability.
That's
no
longer
diagnostics
and
two
I
made
a
comment
earlier
about
the
attribute
not
deriving
from
nullable
annotation.
If
it's
only
affecting
null
ability
than
I
think
it
has
to
derive
from
nullable
annotation.
A
So
let
me
just
point
out
that
nobody
showed
up
yet
so
I'm
mildly,
confident
that
nobody
will
kick
us
out
in
the
next
twenty
minutes
either.
So
maybe
just
close
on
that-
let's
just
try
to
close
on
this,
then
so
like
so.
First
of
all,
what
do
people
think
of
the
system?
Diagnostics?
Our
code
knows
his
name
space
because
it
already
exists
and
has
two
things
in
it:
it's
not
like
a
super
used
name
space.
A
I
mean
they
are
I,
mean
the
grand
scheme
of
things,
that's
what
they
are
at
their
base.
It
is
support
for
Diagnostics
at
compile-time
right,
so
that
seems
largely
in
line
with
what
their
two
kids
are
used
for.
A
A
C
E
B
A
D
D
L
I'm
sure
it
was
still
something
month
about
the
naming,
because
I
can
definitely
imagine,
for
example,
all
the
cases
we
have
semi.
We
generate
code
that
as
soon
as
the
guys,
you
see
the
attributes,
they
were
kind
of
user
attribute
and
just
generated
everywhere.
Simply
because
the
name
is
so
nice,
it
might
not
be
exactly
what
the
sous-chef
will
use
it
for
what
kind
of
Philby
just
abused,
because
it
says
in
the
framework.
L
A
A
G
Like
the
Roscommon
cases,
you
have
an
attack
that
throws
and
you
might
have
a
helper
method.
And
today,
if
you
throw
in
line
the
compiler
uses
that
for
reach
ability
and
initialization
of
variables
below
right,
but
you
might
have
to
do
an
explicit
else
statement
or
something
else
if
you
use
a
helper
method.
So
the
thing
compiler
understand
that
today,
yeah.
A
D
N
E
N
Actually,
another
thing
we
could
do
is
the
compiler
doesn't
care.
If
stuff
is
public
or
private,
not
in
L,
don't
grunt,
sorry,
I'm,
making
internal
I
have
put
it
on
there.
We
can
do
the
Mel
ability
analysis
and
do
the
real
feature
later.
No.
A
G
N
Do
if
mod
rec
say
give
me
a
tight
name,
you
can
put
this
tight
name
in
the
namespace
and
if
we
use
this,
if
we,
if
we
use
a
syntax
solution,
we
use
my
breath
on
top
of
that,
so
we
could
use
the
name.
I
mean
honestly
I
find
it
hard
to
believe
that
we
would
ever
do
the
feature
that
steamin
wants
without
a
syntax
solution,
because
it
is
so
like
it's
like
change
the
way
to
generate.
E
E
E
B
A
B
A
B
A
B
A
B
So
because,
because
the
common
pattern,
it's
it's
a
little,
it's
really
surprising
but,
like
let's
say
you
have
a
method
that
has
a
non
knowable
string
as
an
argument.
Well,
we
can't
be
sure
that
someone's
using
a
null
ability
feature
it
isn't
passing.
No,
so
we
have
to
say
if
string
equals,
no
and
we've
been
say,
throw
help
or
throw
the
compiler
helpfully
says.
Oh
this
does
not
know,
but
then
you
checked
it
for
no,
so
it
might
actually
be
no
and
then
you're
not
provably.
Doing
anything.
B
B
L
B
But
the
the
code
isn't
just
like
when
the
code
you're
talking
about
is
all
the
code
associated
with
constructing
you
know:
loading
the
resources,
loading,
the
string
loading.
The
argument
Spock,
like
that's
a
huge
amount
of
code,
often
to
generate
these
exceptions,
that
we
throw
that
all
has
to
be
separated
out
so.
D
A
All
right
so
I
think
like
as
far
as
I'm
concerned,
I
I
see
the
problem
with
the
name.
People
will
probably
try
it,
they
will
get
disappointed
and
life
will
go
on.
I,
think
that's
I
think
the
I
don't
know
an
alternative.
Obviously,
to
that
we
can
try
to
name
these
guys,
better,
more
scope
towards
knowledge,
but,
like
I've
seen.
A
A
A
C
L
A
E
G
A
A
N
D
A
B
For
ya,
so
I'm
not
entirely
sure.
We
want
to
do,
though,
because
I'm
pretty
sure
that
there's
going
to
be
analysis,
that
the
compiler
does
that
creates
warnings
that
I
haven't
either
thought
about
or
flagged
or
fixed.
So
if
I
were
to
merge
this,
and
then
we
took
the
compiler
update,
I
am
expecting
there's
gonna,
be
a
reasonable
amount
of
fix-up
work
to
be
done.
Yeah
so
I'm
wondering
if
I
should
I've
got
the
draft
PR
I'm
wondering
if
I
should
just
sit
on
it
until
we
take
the
compiler
update,
I,
think.
E
N
I
think,
if
you
guys
have
the
shape
the
API,
then
we
can
tighten
place
that
into
our
code
and
start
going
and
then
I
sent
you
an
email,
Steve
you're
on
the
issue
where
I
have
a
schedule.
Wait
out.
Okay,
I'll
take
a
look
yeah,
but
it's
what
the
goal
is
to
get
a
compiler
done
by
610,
as
that
should
hopefully
give
three
weeks
or
core
effects
that
come
adopt
a
nice
work
please,
before.
M
N
M
G
N
N
B
G
B
Because
I'm
assuming
there's
gonna,
be
a
little
bit
of
back
and
forth
on
this
to
kind
of
nail
things
down
the
way
we
all
expect
them
to
be
so
the
sooner
we
can
get
that
the
better
right
and
then
I'll
give
a
slight
thing.
As
I
was
saying,
you
know
two
weeks
or
something
to
work
through
probably
do
another.
You
know
one
or
two
rounds
of
find
issues
fix
the
compiler
find
issues
fixed
to
compiler.