Source Code Metamorphosis
Befunge-98, 602 bytes
                                        &quot;^@&lt;&quot;v@@
                                     &quot;'I'&quot;00v&gt;00g::
                                   &quot;@v&quot;0v@@@&gt;g::a&quot;&gt;#&quot;
                                 &quot;a&quot;&gt;v@@&gt;      0g::'&quot;1&gt;                                 /
                             &quot;:\&quot;'&quot;v@&gt;            'm'&quot;00g:a                       &gt;&quot;@v$&quot;
 &quot;lufituaeb&quot;'&quot;'v00ga&quot;@v\&quot;'&quot;:'b\00v@&gt;                :'a\&quot;:*84&gt;&quot;00ga&quot;\&gt;@@@@_,#:&gt;&quot;00g:a'&lt;'&quot;
&quot;et&quot;'&quot;'va'v'&quot;:'l\00g5k:'&quot;&quot;y!&quot;&gt;&gt;v@&gt;                    g::'''&quot;&quot;ut&quot;'&quot;'&gt;a'&lt;'&quot;&quot;fr&quot;'&quot;00g3k:'&quot;&gt;
 &quot;ma&quot;00g&gt;'I~48*-~48*-+#@_&gt;:#,_@&gt;                        '&quot;aa&quot;---&quot;aa&quot;!rallipretac&quot;00g:'a\

Tested in PyFunge.
When run with a string not starting with 2 spaces (probability well over 95% when random) outputs nothing. This isn't exactly what the OP is looking for, but fits the specification.
When passed a string starting with 2 spaces (like itself) outputs this:
I am a caterpillar!

---

&quot;!y&quot;       &quot;l&quot;v
v&quot;te&quot;     &quot;rf&quot;&lt;
&gt;&quot;tu&quot;'   &quot;b&quot;\v@
 v&quot;beautiful&quot;&lt;
  &gt;:#,_@@@@&gt;\
 &gt;48*:&quot;a&quot;\:$v@
  &quot;ma&quot;   v@#&gt;
   'I'   &lt;@^

The lower part of that, in turn, outputs:
I am a beautiful butterfly!