
=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

