=head1 OVERWRITTEN CODE
How to make the same method with different code?
It sounds weird for normal programmer, who never hacks the Perl and does the
regular job.
Before this auto code generators appear, there is already such problem that one
methods in a Perl module can be overwritten.
=head2 Terminology
CG - Code Generator
AM = AccessorMaker
=head1 Black-box v.s. White-box overwritting
=over
=item * Black-box
The code is known neither on what the code inside is, nor what it does at all.
=item * Gray-box
Parially the function of the code is known, but the implementation of it remains concealed.
=item * White-box
The implementation of it can be detected by human or other code.
=back
=head1 How AutoCode tries to avoid or intend to overwrite the method?
=head2 Principle
Supposed the user understands what AM does.
The priority of user's code is always higher than the one generated by AM.
CG may never overwrite the existing code, while user's code may overwrite
CG'ed code.
Can we do anything to avoid user overwrite CG's code?
Potentially, other CG may overwrite the existing code, even the user written ones.
Users are suggested to overwrite AM generated code by subclassing the class
and override them.
=head2 Solution 1
In AM, there is a %MADE_ACCESSORS hash with keys as the fully qualified method
names and keys as whatever non-zero values.
$MADE_ACCESSORS{$glob}=1;
=head2 Solution 2
The assisted modeul/class, CG addes a %MADE_BY for each of them.
$MADE_BY{$method_name}='AM';
=head1 AM
AM is the lowest level CG.
=cut