pragma solidity ^0.4.0;

contract InfoFeed {
    uint c;
    function info() constant returns (uint ret) {return c;} 
    function call1(uint a) constant returns (bool) {return true;}
}

// THIS CONTRACT CONTAINS A BUG - DO NOT USE
contract Fund {
    /// Mapping of ether shares of the contract.
    //mapping(address => uint) shares;
    /// Withdraw your share.
    
    uint c = 0;
    function withdraw() constant {
        InfoFeed f;
        
       
        //shares[msg.sender] /= 1;
        
        f.info();
       
        //if (msg.sender.send(shares[msg.sender])) throw;
        //    shares[msg.sender] = 0;
            
       
       b(true, false);
        //shares[msg.sender]++;
        //c++;
        
    }
    mapping(address => uint) shares;
    
    function b(bool a, bool b) returns (bool) {
        mapping(address => uint) c = shares;
        c[msg.sender] = 0;
        //f();
        //withdraw();
        //shares[msg.sender]++;
        //c++;
        return true;
    }
    
    function f() {
        c++;
        withdraw();
    }
}
