public static Map.Entry<String,BulletInfo> calcBulletSrc(long now,Bullet bullet,Map<String,BulletInfo> list ) {
        Point dst = new Point(bullet.getX(),bullet.getY());
        double bulletRadians = bullet.getHeadingRadians();
        String bulletOwner = bullet.getName();

        Map.Entry<String,BulletInfo> cur = null;
        double curDiffDistance = 0;
        double curDiffRadians = 0;
        for(Map.Entry<String,BulletInfo> e : list.entrySet() ) {
            String key = e.getKey();
            BulletInfo bulletInfo = e.getValue();
            double radians = bulletInfo.src.calcRadians(dst);
            double diffRadians = Math.abs(Util.calcTurnRadians(radians, bulletRadians));
            double diffDistance = Math.abs((now - bulletInfo.src.timeStamp)*bullet.getVelocity() - bulletInfo.src.calcDistance(dst));
            if ( bulletOwner.equals(bulletInfo.owner) ) {
                if ( diffRadians < Math.PI/6 && diffDistance < 40 && (cur == null || diffRadians < curDiffRadians &&  diffDistance < curDiffDistance) ) {
                    cur = e;
                    curDiffRadians = diffRadians;
                    curDiffDistance = diffDistance;
                }
            }
        }
        if ( cur != null ) {
            return cur;
        }
        return null;
    }