anchor.diff:      return completerPreprocessor.future;
     }
   }
  -
  -main(){
  -	return (String type,Function pathResolver) => new Preprocessor(type,pathResolver);
  -}
positive.code:           
            var before = stack.removeFirst();
            var include = match.input.substring(before['end'], match.start);
            if(before['include'] == 1 || before['include'] == 2){
              if(include[0]=='(' && include.substring(include.length-1)==')') include = include.substring(1,include.length-1);
              include = include.split('||');
              if(include.length != 2) return completer.completeError(new Exception('ifelse : '+include.length+' != 2 : '+include.join('||')));
              include = include[before['include']-1];
            }else if(!before['include']) include='';
            match.replacePart(before['start'], match.end, include);
            if (instruction == "else" || instruction == "elif" || instruction == "elseif") {
              if(instruction=='else') include=!before['include'];
              else{
                if(content[0]=='!') include = !defines[content.substring(1).trim()];
                else include = defines[content];
              }
              stack.add({ "include": !before["include"], "start": match.lastIndex, "lastIndex": match.lastIndex });
            }
  
negative.code:          
          case 'ifdef': case 'ifndef': case 'if': case 'ifelse':
            var include;
            if (instruction=='ifdef') {
              include = defines.containsKey(content);//!!defines[match2[2]];
            } else if (instruction=='ifndef') {
              include = !defines.containsKey(content);//!defines[match2[2]];
            } else if (instruction=='ifelse') {
              include = defines[content] ? 1 : 2;
            } else{
              Match ifThenMatch = regExpIfThen.firstMatch(content);
              if(ifThenMatch != null){
                include = defines[ifThenMatch[1]] ? ifThenMatch[2] : '';
  