whole_func_string: function compute2(a,b){
  	if(!a || !b) return []
  	if(a.length > b.length){
  		var t = b
  		b = a
  		a = t
  	}
  	
  	if(a.length === 0) return []
  	if(a.length === 1){
  		if(b.indexOf(a[0]) === -1){
  			return []
  		}else{
  			return a
  		}
  	}
  	
  	var ma = {}
  	for(var j=0;j<a.length;++j){
  		ma[a[j]] = true
  	}
  	
  	var result = []
  	for(var j=0;j<b.length;++j){
  		var v = b[j]
  		if(ma[v]){
  			result.push(v)
  		}
  	}
  	//console.log('intersection ' + JSON.stringify([a,b,result]))
  	
  	//console.log('*big intersection of ' + JSON.stringify(_.map([a,b], function(p){return p.length})) + ' -> ' + result.length + ' (' + typeof(a[0]||b[0]) + ')')
  	return result
  }
func_code_string: function compute2(a,b){
  	if(!a || !b) return []
  	if(a.length > b.length){
  		var t = b
  		b = a
  		a = t
  	}
  	
  	if(a.length === 0) return []
  	if(a.length === 1){
  		if(b.indexOf(a[0]) === -1){
  			return []
  		}else{
  			return a
  		}
  	}
  	
  	var ma = {}
  	for(var j=0;j<a.length;++j){
  		ma[a[j]] = true
  	}
  	
  	var result = []
  	for(var j=0;j<b.length;++j){
  		var v = b[j]
  		if(ma[v]){
  			result.push(v)
  		}
  	}
  	//console.log('intersection ' + JSON.stringify([a,b,result]))
  	
  	//console.log('*big intersection of ' + JSON.stringify(_.map([a,b], function(p){return p.length})) + ' -> ' + result.length + ' (' + typeof(a[0]||b[0]) + ')')
  	return result
  }
func_documentation_string: /*
  var intersections = 0
  setInterval(function(){
  console.log('intersections: ' + intersections)
  },1000)