Output and sourcecode lineup General constraints:


Your program should not take any input.
Your program should output words, 1 word/line.
Only capital letters (A-Z) in the output.
A word must be atleast 2 letters in length.
A word can never be a palindrome. That is forbidden.


Rules for word-manipulations, one or more of these operations in any individual order for each new line:


Change one or more letter(-s) in the word 1 char distance (example: A->B, F->E) from the previous word. 'A' can not be 'Z' and 'Z' can not be 'A'.
Insert the letter "A" at any position.
Remove any letter at any position.


Output validation:

Your program must output the following words: OUTPUT, YOUR, SOURCECODE, TODAY atleast (but not limited to) once each, in any order.

Sourcecode validation:

The first and the last letter of all output words should also be part of your sourcecode in the same order as scopes: first and last letter for the first word has the highest scope, example pseudo-code:

&lt;any or no code&gt;&lt;first letter, first word&gt;
&lt;any or no code&gt;&lt;first letter, second word&gt;
&lt;any or no code&gt;&lt;,...              ...,&gt;&lt;any or no code&gt;
&lt;last letter, second word&gt;&lt;any or no code&gt;
&lt;last letter, first word&gt;&lt;any or no code&gt;



For any word # where the actual word number is a fibonacci-number, the first and last letters must be lower-case in the sourcecode.
For any word # where the actual word number is not a fibonacci-number, the first and last letters must be upper-case in the sourcecode.


There is no restriction of the actual letters in the sourcecode, they can be inside strings or part of a command or anything, it is only the order that counts.

Example valid output (only the words YOUR and TODAY in the example):

YOUR
XOUAS
WOAAT
VOBAU
UOCAV
TODAW
TODAX
TODAY


Example valid sourcecode for the above output:

Since words 1, 2, 3, 5 and 8 in the example output is "fibonacci words", their first and last letter-representation in the sourcecode is lower case, leaving us with this constraint on the sourcecode:

yxwVuTTtyXWvUtsr


There could be any code around or between the letters in the sourcecode as long as the representation is there somewhere in that order.

This is code-golf, smallest sourcecode size in counted bytes wins. Competition ends: 2014-02-31.
Java, 1091 1039 bytes
Probably not very good, but I'll give it a try. (Formatting worse will give less Bytes, but for now, let's leave it)
edit 1: used names for Vars to make comment shorter.
public class t {
public static void main(String[] V){
    StringBuilder w = new StringBuilder(&quot;SOURCECODE&quot;);
    X(w);
    for(int Y=0; Y&lt;6; Y++){
        w.deleteCharAt(4);
        w.setCharAt(0,(char)(w.charAt(0)+1));
        X(w);
    }
    w.deleteCharAt(0);
    for(int o=0;o&lt;2;o++){
        w.setCharAt(2,(char)(w.charAt(2)+1));
        w.append('A');
        w.append('A');
        X(w);}
    for(int O=0;O&lt;20;O++){
        if (O&lt;15) w.setCharAt(3,(char)(w.charAt(3)+1));
        w.setCharAt(4,(char)(w.charAt(4)+1));
        if (O&lt;19) w.setCharAt(5,(char)(w.charAt(5)+1));
        X(w);}
    w.deleteCharAt(6);
    X(w);//o
    for(int O=0;O&lt;6;O++){
        if (O&lt;5) w.setCharAt(0,(char)(w.charAt(0)+1));
        w.setCharAt(1,(char)(w.charAt(1)-1));
        X(w);}
    for(int O=1;O&lt;4;O++){
    w.deleteCharAt(2);//o
    if (O&lt;3) w.insert(4, 'A');
    X(w);}
    for(int O=0;O&lt;5;O++){
        if (O&lt;3) w.setCharAt(2,(char)(w.charAt(2)+1));
        w.setCharAt(4,(char)(w.charAt(4)+1));
        X(w);}
    //OOOOPQRsTTTTTTTTTT
    //yxwVuTTtTTTTtTTAAAAAaAAAAAAAAAAAAaAAREEEEEEE
}
static void X(StringBuilder b){System.out.println(b.toString());}}

outputs:
SOURCECODE
TOURECODE
UOURCODE
VOURODE
WOURDE
XOURE
YOUR
OUSAA
OUTAAAA
OUTBBBA
OUTCCCA
OUTDDDA
OUTEEEA
OUTFFFA
OUTGGGA
OUTHHHA
OUTIIIA
OUTJJJA
OUTKKKA
OUTLLLA
OUTMMMA
OUTNNNA
OUTOOOA
OUTPPPA
OUTPQQA
OUTPRRA
OUTPSSA
OUTPTTA
OUTPUTA
OUTPUT
PTTPUT
QSTPUT
RRTPUT
SQTPUT
TPTPUT
TOTPUT
TOPUAT
TOUAAT
TOAAT
TOBAU
TOCAV
TODAW
TODAX
TODAY