whole_func_string: function(callback,compilationSource){
  		if( compilationSource && this.cache.compilationSource && this.cache.compilationSource === compilationSource ) return;
  		var callbackError=function(type,strOrErr){
  			/*if(strOrErr instanceof Array){
  				var i,finalStr='Errors :';
  				for(i in strOrErr){
  					console.error(strOrErr[i].stack);
  					finalStr+=+"\n"+strOrErr[i].toString().slice(7);
  				}
  				strOrErr=finalStr;
  			}*/
  			//var error=new Error(strOrErr instanceof Error ? strOrErr.toString().slice(7) : strOrErr);
  			var error=strOrErr instanceof Error ? strOrErr : new Error(strOrErr);
  			error._Type=type;
  			t.cache.error=error;
  			callback(error);
  		},t=this;
  		
  		if(t.compiler){
  			(t.compiler.read||function(path,callback){
  				fs.readFile(t.srcPath,function(err,buffer){
  					if(err) return callback(err);
  					callback(null,buffer.toString());
  				});
  			})(t.srcPath,function(err,fileContent){
  				if(err) return callbackError('Reading',err);
  				t.lint(t,fileContent,function(err){
  					if(err) return callbackError('Linting',err);
  					
  					t.parse(fileContent,function(err,data){
  						if(err) return callbackError('Parsing',err);
  						try{
  							t._compile(data,function(err,results,dependencies){
  								if(err) return callbackError('Compiling',err);
  								if(err===false) return callback();
  								t.optimize(t,results,function(err,optimizedResults){
  									if(err) return callbackError('Optimizing',err);
  									t.cache.error=null;
  									t.cache.compilationTime=Date.now();
  									t.cache.compilationSource=compilationSource;
  									if(err===false){
  										t.cache.dependencies=null;
  										return callback();
  									}
  									t.cache.dependencies=!dependencies || dependencies.app ? dependencies : {app:dependencies};
  									t.write(optimizedResults,callback);
  								});
  							});
  						}catch(err){
  							return callbackError('Compiling',err);
  						}
  					});
  				});
  			});
  		}else{
  			t.copy(callback);
  		}
  	}
func_code_string: function(callback,compilationSource){
  		if( compilationSource && this.cache.compilationSource && this.cache.compilationSource === compilationSource ) return;
  		var callbackError=function(type,strOrErr){
  			/*if(strOrErr instanceof Array){
  				var i,finalStr='Errors :';
  				for(i in strOrErr){
  					console.error(strOrErr[i].stack);
  					finalStr+=+"\n"+strOrErr[i].toString().slice(7);
  				}
  				strOrErr=finalStr;
  			}*/
  			//var error=new Error(strOrErr instanceof Error ? strOrErr.toString().slice(7) : strOrErr);
  			var error=strOrErr instanceof Error ? strOrErr : new Error(strOrErr);
  			error._Type=type;
  			t.cache.error=error;
  			callback(error);
  		},t=this;
  		
  		if(t.compiler){
  			(t.compiler.read||function(path,callback){
  				fs.readFile(t.srcPath,function(err,buffer){
  					if(err) return callback(err);
  					callback(null,buffer.toString());
  				});
  			})(t.srcPath,function(err,fileContent){
  				if(err) return callbackError('Reading',err);
  				t.lint(t,fileContent,function(err){
  					if(err) return callbackError('Linting',err);
  					
  					t.parse(fileContent,function(err,data){
  						if(err) return callbackError('Parsing',err);
  						try{
  							t._compile(data,function(err,results,dependencies){
  								if(err) return callbackError('Compiling',err);
  								if(err===false) return callback();
  								t.optimize(t,results,function(err,optimizedResults){
  									if(err) return callbackError('Optimizing',err);
  									t.cache.error=null;
  									t.cache.compilationTime=Date.now();
  									t.cache.compilationSource=compilationSource;
  									if(err===false){
  										t.cache.dependencies=null;
  										return callback();
  									}
  									t.cache.dependencies=!dependencies || dependencies.app ? dependencies : {app:dependencies};
  									t.write(optimizedResults,callback);
  								});
  							});
  						}catch(err){
  							return callbackError('Compiling',err);
  						}
  					});
  				});
  			});
  		}else{
  			t.copy(callback);
  		}
  	}
func_documentation_string: Reads file and compiles it with compiler. Data is cached