public override void executa(IOrganismo o) { o.fillTemplate(getStep()); if (o.sizeBuffer == 0) { o.criticalError(); return; } int posF = -1; int posB = -1; if (fwd && bwd) { posF = o.searchTemplateFwd(); posB = o.searchTemplateBwd(); if (posB < 0) { returnPos(o, posF); return; } if (posF < 0) { returnPos(o, posB); return; } int difF = posF - o.ip; int difB = o.ip - posB; returnPos(o, difF < difB ? posF : posB); } else { if (fwd) { posF = o.searchTemplateFwd(); returnPos(o, posF); } if (bwd) { posB = o.searchTemplateBwd(); returnPos(o, posB); } } }