anchor.diff:  
     num team = 0;
   
  -  Vector2 separationForce = new Vector2.zero();
  -
     num maxSpeed = 4;
     num turningAngle = 1;
   
  
positive.code: 
    num targetAcquisitionRange = 30;
    BattleUnit target = null;
    num minimumTargetDistance = 10000;
  
    Vector2 destination = new Vector2.zero();
  
  
negative.code:           target = battleUnit;
            action = Goal.KILL_TARGET;
            minimumTargetDistance = distance;
            foundTarget = true;
          }
        }
      }
  
      return foundTarget;
    }
  
    void update(BattleSystem battleSystem, num dt) {
  
      // Momentum
      velocity.scale(0.1);
      accumulator.setZero();
      separationForce.setZero();
      enemyAttractionForce.setZero();
  
      battleSystem.battleUnits.forEach((BattleUnit battleUnit) {
        if (this != battleUnit && this.position.distanceTo(battleUnit.position) < 1) {
          separationForce = position - battleUnit.position;
          num distSq = separationForce.length2 + 0.000001; // To prevent divide by zero
          num distanceScale = 0.5 / (distSq);
          separationForce.normalize();
          separationForce.scale(distanceScale);
          separationForce.copyInto(separationForce);
        }
      });
  
      accumulator += separationForce;
  
      if (action == Goal.IDLE) {
        acquireTarget(battleSystem, dt);
  